Commit Graph

1541 Commits

Author SHA1 Message Date
Robert Schulze
e275da1d31
Remove deprecated logic for ccache 2023-05-07 15:41:56 +00:00
Alexey Milovidov
5b8b3c04bf
Merge pull request #49224 from ClickHouse/rs/cmake-gnu
CMake: Remove some GCC-specific code
2023-04-27 14:44:20 +03:00
Alexey Milovidov
7333e964bc Update autogenerated version to 23.5.1.1 and contributors 2023-04-27 01:40:57 +02:00
Robert Schulze
150ea22a12
CMake: Remove dead code paths 2023-04-26 19:40:59 +00:00
alesapin
bb21461145 Try to fix with pie 2023-04-25 15:45:23 +02:00
Robert Schulze
a1ff8a0679
Remove the obvious 2023-04-11 16:27:32 +00:00
Robert Schulze
1477887259
Initial removal of logic under COMPILER_GCC 2023-04-11 16:27:32 +00:00
Alexey Milovidov
dd79bf0a03 Update autogenerated version to 23.4.1.1 and contributors 2023-03-31 12:20:50 +02:00
Mikhail f. Shiryaev
7ff582b963
Deprecate ENABLE_CCACHE and replace it by COMPILER_CACHE 2023-03-29 23:33:31 +02:00
Mikhail f. Shiryaev
e1531688bc
Add sccache to cmake configuration 2023-03-29 23:33:24 +02:00
Robert Schulze
1845bfc644
Revert change to ld64.lld linker on Mac
This reverts PRs #42470, #47673 and #47744. The problem was that after
the switch to ld64.lld, server binaries build in Debug mode no longer
came up, see the discussion after (*). My attempt to fix it with
`-no_compact_unwind` didn't help.

I also tried
- `-keep_dwarf_unwind`,
- `-unwindlib` (to use the OS unwinder),
- the unwinder in contrib (CMake variable EXCEPTION_HANDLING_LIBRARY)
but w/o success. Just tons of wasted time.

Rolling back to lld as linker on Mac. This will bring back many linker
warnings (#42282) but I rather accept that (temporarily, maybe someone
can figure out how to fix them) than have a broken Debug binary.

(*) https://github.com/ClickHouse/ClickHouse/pull/42470#issuecomment-1312344068
2023-03-27 15:26:54 +02:00
Robert Schulze
5d5308e060
CMake cleanup: Remove configuration of CMAKE_SHARED_LINKER_FLAGS
Follow-up to #44828
2023-03-26 17:59:39 +00:00
Alexey Milovidov
4f33033b4d
Merge pull request #47673 from ClickHouse/rs/restore-mac-build
Restore native macos build
2023-03-20 04:27:22 +03:00
Robert Schulze
0e01e912fe
Preparation for libcxx(abi), llvm, clang-tidy 16 2023-03-19 17:25:41 +00:00
Robert Schulze
67ebad488f
Small refactoring of linker selection code 2023-03-19 18:16:20 +01:00
Robert Schulze
f72a337074
Remove cruft from build
No need to check compiler flags, clang >= 15 supports all of them.
2023-03-17 13:44:04 +00:00
Robert Schulze
bf99d624e7
cmake: remove support for gold linker
It's dead since 5+ years.
2023-03-16 21:16:13 +00:00
Alexey Milovidov
97c0f8a0e0
Merge pull request #47027 from amosbird/clang16
Prepare to build with clang 16
2023-03-02 02:10:03 +03:00
Robert Schulze
ac7caace8a
Update comments 2023-03-01 09:34:46 +00:00
Amos Bird
7b4f489837
Update flags 2023-02-28 22:45:33 +08:00
Robert Schulze
c78e99eb56
ARM: Activate LDAPR with -march flag instead via -XClang
The `-XClang ... -Xclang ...` flag is internal, undocumented and also
needs `-Wno-unused-command-line-argument`. Enable LDAPR instructions on
ARM via "official" -march. For more informations, see

- https://developer.arm.com/documentation/101754/0619/armclang-Reference/armclang-Command-line-Options/-march?_ga=2.24245759.493510493.1644226748-1698312558.1644226748
- https://developer.arm.com/documentation/dui0801/g/A64-Data-Transfer-Instructions/LDAPR?lang=en
2023-02-27 12:46:58 +00:00
Robert Schulze
db3fbc871c
Merge pull request #46803 from ClickHouse/rs/cmake-too-old-arm
CMake: Add best effort checks that the build machine isn't too old
2023-02-26 20:28:53 +01:00
Robert Schulze
c34b4c8ed1
Fix grammar 2023-02-24 09:43:02 +00:00
Robert Schulze
032dae5d29
Quick-n-dirty --> best effort 2023-02-24 09:41:02 +00:00
Robert Schulze
329abe28ba
Same check for x86 2023-02-24 09:38:32 +00:00
Robert Schulze
2f47046fe1
CMake: Add quick-n-dirty check that the build machine isn't too old 2023-02-23 23:05:55 +00:00
Antonio Andelic
1efba8995d Update version to 23.3.1.2537 2023-02-23 19:35:57 +00:00
Robert Schulze
16d61832fb
Bump minimum required Clang from 12 to 15
Needed due to https://github.com/ClickHouse/ClickHouse/pull/46247#discussion_r1109855435
2023-02-22 10:03:08 +00:00
bkuschel
55e9322612 Fixes for OpenSSL and s390x 2023-02-17 16:20:21 -05:00
Suzy Wang
64313d7020
Merge branch 'master' into z-build-0120 2023-02-09 14:49:22 -05:00
Suzy Wang
716d2c4ffb Update as suggested 2023-02-02 20:41:06 +00:00
Mikhail f. Shiryaev
53d89844be
Update version to 23.2.1.1 2023-01-25 23:57:29 +01:00
Dmitry Novik
94abb84d0d Fix version in autogenerated_versions.txt 2023-01-25 18:58:40 +00:00
Suzy Wang
19d26828a0 s390x build support 2023-01-20 21:16:55 +00:00
Alexey Milovidov
3a027d285f
Merge pull request #44828 from ClickHouse/remove-two-lines-of-code
What if I will remove two lines of code?
2023-01-04 04:50:52 +03:00
Robert Schulze
27f5aad49e
What happens if I remove 156 lines of code? 2023-01-03 18:51:16 +00:00
Robert Schulze
d67a3b9faa
Document usage of check_cxx_source_compiles instead of check_cxx_source_runs
Cf. #42754
2023-01-02 22:20:20 +00:00
Robert Schulze
44fa78e742
Merge pull request #44122 from azat/build/toolchain-quirks
Avoid loading toolchain files multiple times
2022-12-16 10:22:52 +01:00
Mikhail f. Shiryaev
8a145f7000
Update version to 22.13.1.1 2022-12-15 18:00:42 +01:00
Azat Khuzhin
3505b5a10b Avoid loading toolchain files multiple times
Previously, in #39387, this protection had been added only for linux x86_64.

And use include_guard() instead of manual if()+set().

Signed-off-by: Azat Khuzhin <a.khuzhin@semrush.com>
2022-12-13 10:38:23 +01:00
Alexey Milovidov
9a48cf0da8
Merge pull request #40422 from pkubaj/patch-1
Add FreeBSD/powerpc64le support
2022-12-11 09:38:04 +03:00
Robert Schulze
eba6a79afa
Merge pull request #43863 from ClickHouse/faster-clang-tidy
Temporarily disable misc-* slow clang-tidy checks
2022-12-08 13:19:03 +01:00
Robert Schulze
8eb4e22d80
Prefer recent clang-tidy over old-ish system clang-tidy 2022-12-07 11:43:42 +00:00
Nikolay Degterinsky
bfccdb130e
Small typo 2022-12-07 00:43:37 +01:00
Nikolay Degterinsky
57ca6ad60b
Make massages about GCC fatal 2022-12-07 00:40:41 +01:00
Alexey Milovidov
75dbd6828a
Merge pull request #43082 from Algunenano/werror_base
Add global flags to base/ libraries
2022-11-22 19:18:44 +01:00
Alexey Milovidov
f42be5ffd3
Merge pull request #43275 from azat/build/sanitize-targets
Sanitize thirdparty libraries for public flags
2022-11-22 19:18:26 +01:00
Mikhail f. Shiryaev
f942ab1bd2
Update version to 22.12.1.1 2022-11-17 22:15:12 +01:00
Azat Khuzhin
c3f3078884 Sanitize thirdparty libraries for public flags
Public flags, especially -Wxx (i.e. -Wno-XX) can hide some warnings,
that had been added in the main cmake rules of ClickHouse.

This patch had been tested manually with the following patch:

    ```patch
    diff --git a/contrib/jemalloc-cmake/CMakeLists.txt b/contrib/jemalloc-cmake/CMakeLists.txt
    index d5ea69d4926..7e79fba0c16 100644
    --- a/contrib/jemalloc-cmake/CMakeLists.txt
    +++ b/contrib/jemalloc-cmake/CMakeLists.txt
    @@ -158,6 +158,7 @@ target_include_directories(_jemalloc SYSTEM PRIVATE
         "${CMAKE_CURRENT_BINARY_DIR}/${JEMALLOC_INCLUDE_PREFIX}/jemalloc/internal")

     target_compile_definitions(_jemalloc PRIVATE -DJEMALLOC_NO_PRIVATE_NAMESPACE)
    +target_compile_options(_jemalloc INTERFACE -Wno-error) # also PUBLIC had been checked

     if (CMAKE_BUILD_TYPE_UC STREQUAL "DEBUG")
         target_compile_definitions(_jemalloc PRIVATE
    ```

And cmake gave:

    CMake Error at cmake/sanitize_targets.cmake:69 (message):
      _jemalloc set INTERFACE_COMPILE_OPTIONS to -Wno-error.  This is forbidden.
    Call Stack (most recent call first):
      cmake/sanitize_targets.cmake:79 (sanitize_interface_flags)
      CMakeLists.txt:595 (include)

Fixes: #12447
Signed-off-by: Azat Khuzhin <a.khuzhin@semrush.com>
2022-11-16 07:20:24 +01:00
Raúl Marín
5caba7000a Try a different approach 2022-11-15 17:53:24 +01:00
Alexey Milovidov
f5270a6ebe A workaround for LLVM bug, https://github.com/llvm/llvm-project/issues/58633 2022-11-13 04:51:46 +01:00
Robert Schulze
cb1aede694
Merge pull request #42470 from Lloyd-Pottiger/suppress-ld-warning-in-macos
Suppress ld warning in macOS
2022-11-08 19:34:10 +01:00
Lloyd-Pottiger
9ec313b05c remove generic driver lld
Signed-off-by: Lloyd-Pottiger <yan1579196623@gmail.com>
2022-11-08 18:32:53 +08:00
Mikhail f. Shiryaev
150ceb7d37
Use matus-chochlik/ctcache for clang-tidy 2022-11-03 11:53:11 +01:00
Mikhail f. Shiryaev
52a34cecda
Reformat the cmake a bit 2022-11-03 10:16:08 +01:00
Lloyd-Pottiger
7419a3bd58 fix
Signed-off-by: Lloyd-Pottiger <yan1579196623@gmail.com>
2022-10-29 18:58:11 +08:00
Mikhail f. Shiryaev
d3461abd1f
Update version to 22.11.1.1 2022-10-26 15:27:09 +02:00
Alexey Milovidov
c48127534b
Merge pull request #41753 from pkit/morton_coding
add Morton Coding (ZCurve)
2022-10-25 06:10:37 +02:00
Nikita Mikhaylov
8fcbef938b
Fix typo in cmake code related to fuzzing (#42627) 2022-10-24 23:01:06 +02:00
Alexey Milovidov
729692f862
Merge pull request #42462 from ClibMouse/power_build_fix
Fix power8+ support add power9+ support
2022-10-24 09:30:38 +02:00
Alexey Milovidov
5fd7409ce1
Merge branch 'master' into morton_coding 2022-10-22 04:39:13 +02:00
Azat Khuzhin
4eeb7337ed Merge remote-tracking branch 'upstream/master' into build/shorten-64-to-32
Conflicts:
- src/Common/intExp.h
- src/Functions/DateTimeTransforms.h
- src/Functions/FunctionsConversion.h
2022-10-21 22:51:56 +02:00
Ilya Yatsishin
6e15b20c40
Merge pull request #42430 from qoega/llvm-15-for-gcc 2022-10-21 16:54:26 +02:00
Azat Khuzhin
19715f1542 Enable -Wshorten-64-to-32
Signed-off-by: Azat Khuzhin <a.khuzhin@semrush.com>
2022-10-21 13:22:39 +02:00
Constantine Peresypkin
5b3b11b517 add Morton Coding (ZCurve) 2022-10-19 15:59:25 +02:00
Boris Kuschel
e45c800cdf Fix power8+ support add power9+ support 2022-10-18 17:14:43 -05:00
Azat Khuzhin
65cd040d15 Better workaround for emitting .debug_aranges section
Note, that this is just a syntastic change, that should not makes any
difference (well the only difference is that now it supports gold and
other links, since the option is handled by the plugin itself instead of
the linker).

Refs: https://reviews.llvm.org/D133092
Signed-off-by: Azat Khuzhin <a.khuzhin@semrush.com>
2022-10-18 21:09:07 +02:00
Ilya Yatsishin
0404c960c6 add -15 tools to cmake.tools 2022-10-18 13:19:16 +02:00
Alexey Milovidov
8e4531d135 Preparation for Musl build, part 4 2022-10-01 16:29:41 +02:00
Alexey Milovidov
7099602d5e
Merge pull request #41778 from danlark1/master
Add ldapr to AArch64 server builds
2022-09-28 14:23:33 +03:00
Robert Schulze
de3264691c
Merge pull request #41790 from ClickHouse/print-git-hash
Log git hash during startup
2022-09-28 09:43:17 +02:00
Robert Schulze
1f3f86e5bf
Cosmetics 2022-09-27 11:46:56 +00:00
Robert Schulze
823d8fb6cd
Move git calls back into git.cmake
+ renamed the file from originally "git_status.cmake" to "git.cmake"
  (because we not longer run only "git status")
2022-09-27 11:45:58 +00:00
Daniel Kutenin
9825b4d1f9
Move unused command line arguments to a proper place 2022-09-26 20:56:52 +01:00
Daniel Kutenin
46d45607c8
Disable unused command line as it does not work for assembly files 2022-09-26 15:53:03 +01:00
Robert Schulze
ec35ff9cd6
Log git hash during startup
We currently only log a compiler-generated "build id" at startup which
is different for each build. That makes it useless to determine the
exact source code state in tests (e.g. BC test) and from user log files
(e.g. if someone compiled an intermediate version of ClickHouse).

Current log message:
  Starting ClickHouse 22.10.1.1 with revision 54467, build id: 6F35820328F89C9F36E91C447FF9E61CAF0EF019, PID 42633

New log message:
  Starting ClickHouse 22.10.1.1 (revision 54467, git hash: b6b1f7f763f94ffa12133679a6f80342dd1c3afe, build id: 47B12BE61151926FBBD230DE42F3B7A6652AC482), PID 981813
2022-09-26 14:12:36 +00:00
Daniel Kutenin
cec641a71b
Add ldapr for Arm instances 2022-09-26 13:00:18 +01:00
Alexey Milovidov
62ebf397d2
Merge pull request #41610 from ClickHouse/upgrade-arm-requirement
Bump minimum required ARM ISA to v8.2 and add v8.0 compat build
2022-09-26 14:08:48 +03:00
Alexey Milovidov
93ed8e0c7b Update version to 22.10.1.1 2022-09-22 09:32:38 +02:00
Robert Schulze
49c4f1f9c6
Document flags 2022-09-21 21:18:53 +00:00
Robert Schulze
cfd8d4e1f1
Add CRC32 to compat build 2022-09-21 14:52:27 +00:00
Robert Schulze
971cef8bd2
Provide x86 SIMD flag options only on x86 2022-09-21 09:30:51 +00:00
Alexey Milovidov
84f42e0874 Fix 3/4 of trash 2022-09-19 08:50:53 +02:00
Azat Khuzhin
64bb490460 Add a note about why sentry turned off for musl
Signed-off-by: Azat Khuzhin <a.khuzhin@semrush.com>
2022-09-10 21:38:34 +02:00
Azat Khuzhin
ced30a2072 Switch to llvm/clang 15
It had been released few hours ago, and I want to check how clang-15
generates DWARF-5

Signed-off-by: Azat Khuzhin <a.khuzhin@semrush.com>
2022-09-10 21:38:34 +02:00
Robert Schulze
9d4de0cbaa
Merge pull request #40999 from ClickHouse/sse2-special-build
Add special x86-SSE2-only build
2022-09-08 09:06:29 +02:00
Robert Schulze
e1def723f8
Add special x86-SSE2-only build 2022-09-05 12:51:44 +00:00
Azat Khuzhin
26f1c1504a Do not compress debug sections (internal DWARF parser cannot handle such)
Although this increase debug symbol size from 510MB to 1.8GB, but it is
not a problem for packages, since they are compressed anyway.
Checked deb package, and size slightly increased though, 834M -> 962M.

Signed-off-by: Azat Khuzhin <a.khuzhin@semrush.com>
2022-09-02 23:22:25 +02:00
Azat Khuzhin
2d3fb36a62 Fix debug symbols (Add a quirk to force clang emit .debug_aranges with ThinLTO)
Wrap a linker into a script that will add some settings (`-mllvm
-generate-arange-section`) in case of ThinLTO to emit `.debug_aranges`
symbols.

Dicussion in the LLVM can be found here [1].

  [1]: https://discourse.llvm.org/t/clang-does-not-produce-full-debug-aranges-section-with-thinlto/64898

Signed-off-by: Azat Khuzhin <a.khuzhin@semrush.com>
2022-09-02 23:22:25 +02:00
Alexey Milovidov
8ca6025833
Merge branch 'master' into riscv-in-ci 2022-08-22 01:37:53 +03:00
Alexey Milovidov
ad8a1751ac
Merge branch 'master' into riscv-in-ci 2022-08-21 16:56:11 +03:00
Alexey Milovidov
6fbff6d1f6
Revert "Avx enablement" 2022-08-21 15:47:02 +03:00
pkubaj
17f757a94c Add FreeBSD/powerpc64le support 2022-08-19 21:41:03 +02:00
Alexey Milovidov
d62d3ad461 Update version to 22.9.1.1 2022-08-18 19:39:03 +02:00
Alexey Milovidov
5ebba1af33 Merge branch 'riscv64-linker' into riscv-in-ci 2022-08-14 06:10:22 +02:00
Alexey Milovidov
1bd3b8825c Fix typo 2022-08-14 06:08:50 +02:00
Alexey Milovidov
2de309c34f Add Linux RISC-V 64 build to CI 2022-08-14 06:07:31 +02:00
Alexey Milovidov
5ce6c07005 Set linker for RISC-V 64 2022-08-14 05:57:55 +02:00
Alexey Milovidov
a6a51f4fb8 Minor build changes 2022-08-13 06:39:20 +02:00
Alexey Milovidov
a716d78264 Support build with clang-16 2022-08-13 06:06:01 +02:00
Raúl Marín
11a274e990 Clean up constinit usage and add a comment 2022-08-11 13:27:53 +02:00
Maksim Kita
64b41e8676
Performance check build AVX 2022-07-22 11:53:16 +00:00
Mikhail f. Shiryaev
cf0b01b189
Update version to 22.8.1.1 2022-07-21 19:21:28 +02:00
Azat Khuzhin
40d5627510
Avoid loading toolchain file multiple times to avoid confusing ccache (#39387)
During first run of cmake the toolchain file will be loaded twice,
- /usr/share/cmake-3.23/Modules/CMakeDetermineSystem.cmake
- /bld/CMakeFiles/3.23.2/CMakeSystem.cmake

But once you already have non-empty cmake cache it will be loaded only
once:
- /bld/CMakeFiles/3.23.2/CMakeSystem.cmake

This has no harm except for double load of toolchain will add
--gcc-toolchain multiple times that will not allow ccache to reuse the
cache.

Signed-off-by: Azat Khuzhin <a.khuzhin@semrush.com>
2022-07-21 01:26:28 +02:00
Alexey Milovidov
f1256c3aef
Merge pull request #37891 from guowangy/lz4-decompress-vbmi
LZ4 decompress: add VBMI optimized copyOverlap32Shuffle
2022-07-18 00:37:59 +03:00
Robert Schulze
74fc53e5c2
Enable -Wc99-extension 2022-07-15 10:58:09 +00:00
Robert Schulze
1276bfdffd
Enable -Wsign-conversion 2022-07-15 08:54:21 +00:00
Robert Schulze
22abb97b91
Enable -Wc11-extensions 2022-07-14 14:36:23 +00:00
Robert Schulze
97aa9a7371
Enable -Wpacked 2022-07-14 12:36:57 +00:00
Robert Schulze
e7bc973ffb
Enable -Wshift-sign-overflow 2022-07-14 12:36:56 +00:00
Robert Schulze
3d734a0640
Enable -Wnested-anon-types 2022-07-14 12:36:55 +00:00
Robert Schulze
72d45bdff3
Enable -Wvla-extension 2022-07-14 12:36:53 +00:00
Robert Schulze
439b786156
Enable -Wunused-command-line-argument 2022-07-14 12:36:52 +00:00
Robert Schulze
da4724e7f5
Enable -Wreturn-std-move-in-c++11 2022-07-14 12:36:48 +00:00
Robert Schulze
87197f8f60
Enable -Wdeprecated-dynamic-exception-spec 2022-07-13 13:49:40 +00:00
mergify[bot]
62c62a2df7
Merge branch 'master' into lz4-decompress-vbmi 2022-07-11 14:23:17 +00:00
Robert Schulze
bb358617e1
Better naming for stuff related to splitted debug symbols
The previous name was slightly misleading, e.g. it is not about
"intalling stripped binaries" but about splitting debug symbols from the
binary.
2022-06-30 23:41:27 +02:00
Robert Schulze
fa6deaa0f7
Merge pull request #38294 from ClickHouse/fix_system_dot_licences_on_mac
Fix system.licenses on mac
2022-06-23 09:33:07 +02:00
Robert Schulze
a26aba792e
Assume GNU tools are installed when crosscompiling 2022-06-22 20:07:26 +02:00
Robert Schulze
1030dd305a
Correct brew install command 2022-06-22 16:59:03 +02:00
Robert Schulze
287a7f6e98
Let CMake check the presence of GNU utils
In list-licenses.sh it's too late ... the build simply continues if
list-licenses.sh returns with a non-zero exit code.
2022-06-21 23:49:29 +02:00
Robert Schulze
55b39e709d
Merge remote-tracking branch 'origin/master' into clang-tsa 2022-06-20 16:39:32 +02:00
Robert Schulze
5a4f21c50f
Support for Clang Thread Safety Analysis (TSA)
- TSA is a static analyzer build by Google which finds race conditions
  and deadlocks at compile time.

- It works by associating a shared member variable with a
  synchronization primitive that protects it. The compiler can then
  check at each access if proper locking happened before. A good
  introduction are [0] and [1].

- TSA requires some help by the programmer via annotations. Luckily,
  LLVM's libcxx already has annotations for std::mutex, std::lock_guard,
  std::shared_mutex and std::scoped_lock. This commit enables them
  (--> contrib/libcxx-cmake/CMakeLists.txt).

- Further, this commit adds convenience macros for the low-level
  annotations for use in ClickHouse (--> base/defines.h). For
  demonstration, they are leveraged in a few places.

- As we compile with "-Wall -Wextra -Weverything", the required compiler
  flag "-Wthread-safety-analysis" was already enabled. Negative checks
  are an experimental feature of TSA and disabled
  (--> cmake/warnings.cmake). Compile times did not increase noticeably.

- TSA is used in a few places with simple locking. I tried TSA also
  where locking is more complex. The problem was usually that it is
  unclear which data is protected by which lock :-(. But there was
  definitely some weird code where locking looked broken. So there is
  some potential to find bugs.

*** Limitations of TSA besides the ones listed in [1]:

- The programmer needs to know which lock protects which piece of shared
  data. This is not always easy for large classes.

- Two synchronization primitives used in ClickHouse are not annotated in
  libcxx:
  (1) std::unique_lock: A releaseable lock handle often together with
      std::condition_variable, e.g. in solve producer-consumer problems.
  (2) std::recursive_mutex: A re-entrant mutex variant. Its usage can be
      considered a design flaw + typically it is slower than a standard
      mutex. In this commit, one std::recursive_mutex was converted to
      std::mutex and annotated with TSA.

- For free-standing functions (e.g. helper functions) which are passed
  shared data members, it can be tricky to specify the associated lock.
  This is because the annotations use the normal C++ rules for symbol
  resolution.

[0] https://clang.llvm.org/docs/ThreadSafetyAnalysis.html
[1] https://static.googleusercontent.com/media/research.google.com/en//pubs/archive/42958.pdf
2022-06-20 16:13:25 +02:00
Robert Schulze
948b5b7804
Merge pull request #38170 from ClickHouse/llvm-bump-tools
Bump minimum / maximum LLVM to 12 / 14
2022-06-17 13:28:54 +02:00
Robert Schulze
26b122d9a9
Bump minimum / maximum LLVM to 12 / 14
- the CI builds were recently upgraded to Clang 14

- this commit bumps versions of other LLVM tools needed for the build

- this is important for people who have multiple LLVM versions installed
  via their package manager
2022-06-17 09:49:08 +02:00
Mikhail f. Shiryaev
06dd85f921
Update version to 22.7.1.1 2022-06-16 17:15:22 +02:00
Alexey Milovidov
c26abbfdc5
Merge pull request #38093 from danlark1/master
Optimize most important parts with NEON SIMD
2022-06-16 08:26:56 +03:00
Danila Kutenin
08e3f77a9c Optimize most important parts with NEON SIMD
First part, updated most UTF8, hashing, memory and codecs. Except
utf8lower and upper, maybe a little later.

That includes huge amount of research with movemask dealing. Exact
details and blog post TBD.
2022-06-15 13:19:29 +00:00
mergify[bot]
4bd61950db
Merge branch 'master' into stripping 2022-06-14 20:48:52 +00:00
Robert Schulze
c39f4a862c
Retain .clickhouse.hash when stripping 2022-06-14 18:14:35 +00:00
Robert Schulze
35c3944d1a
Warn when gold is used instead of lld 2022-06-13 11:31:08 +00:00
Robert Schulze
bc6f30fd40
Move binary hash to ELF section ".ClickHouse.hash" 2022-06-13 08:46:23 +00:00
Robert Schulze
b27e6cfed2
Strip less aggressively to make the embedded hash survive
- It was noticed that in (*), the crashstack says "There is no
  information about the reference checksum."

- The binaries are pulled via docker hub and upon inspection they indeed
  lack the hash embedded as ELF section ".note.ClickHouse.hash" in the
  clickhouse binary. This is weird because docker hub images are
  "official" builds which should trigger the hash embedding.

- Turns out that the docker hub binaries are also stripped which was too
  aggressive. We now no longer remove sections ".comment" and ".note"
  which are anyways only 140 bytes in size, i.e. binary size still goes
  down (on my stystem) from 2.1 GB to 0.47 + 0.40 GB binary + dbg info.

(*) https://playground.lodthe.me/ba75d494-95d1-4ff6-a0ad-60c138636c9b
2022-06-10 18:33:55 +02:00
Wangyang Guo
0cd2a6b9c3 Add ENABLE_AVX512_VBMI build flag 2022-06-06 13:45:25 +08:00
Alexey Milovidov
74f5301225
Merge pull request #37379 from azat/fix-debug-symbols
Fix debug symbols in packages
2022-05-22 00:19:34 +03:00
Alexander Gololobov
692c19b80d
Merge pull request #37369 from ClickHouse/fix_eigen_build
Fixes for eigen library build
2022-05-20 23:39:31 +02:00
Azat Khuzhin
6b7dd76fac Fix debug symbols in packages
- before: usr/lib/debug/usr/bin/clickhouse.debug/clickhouse.debug
- after : usr/lib/debug/usr/bin/clickhouse.debug

Note, clickhouse_make_empty_debug_info_for_nfpm() is fine.

Signed-off-by: Azat Khuzhin <a.khuzhin@semrush.com>
2022-05-20 17:39:27 +03:00
Robert Schulze
b475fbc9a7
Merge pull request #37300 from ClickHouse/cmake-cleanup-pt3
Various cmake cleanups
2022-05-20 10:02:36 +02:00
Robert Schulze
9b0acaa0ca
Update cmake/ccache.cmake
Co-authored-by: Azat Khuzhin <a3at.mail@gmail.com>
2022-05-20 09:57:25 +02:00
Robert Schulze
7c0e467b05
Small update of comment for SOURCE_DATE_EPOCH workaround 2022-05-20 09:46:19 +02:00
Alexander Gololobov
4350935377 Re-enable SSE2 for PowerPC 2022-05-20 08:51:48 +02:00
Alexey Milovidov
7c9df33bf8
Update warnings.cmake 2022-05-20 03:12:44 +03:00
Mikhail f. Shiryaev
d0fe794fe5
Update version to 22.6.1.1 2022-05-19 10:06:09 +02:00
Robert Schulze
b48cd13c07
Remove unused file 2022-05-18 22:25:34 +02:00
Robert Schulze
45463c27cc
Update cmake/ccache.cmake
Co-authored-by: Azat Khuzhin <a3at.mail@gmail.com>
2022-05-18 12:43:43 +02:00
Robert Schulze
6ce8947417
GLOB with CONFIGURE_DEPENDS
Globbing generally misses to pick up files which were added/deleted
after CMake's configure. This is a nuissance but can be alleviated using
CONFIGURE_DEPENDS (available since CMake 3.12) which adds a check for
new/deleted files before each compile and - if necessary - restarts the
configuration. On my system, the check takes < 0.1 sec.

(Side note: CONFIGURE_DEPENDS is not guaranteed to work accross all
generators, but at least it works for Ninja which everyone @CH seems to
use.)
2022-05-18 10:34:10 +02:00
Robert Schulze
30a01506ed
Remove weird check for not-Clang
The check activated ccache unconditionally for all non-Clang compilers
(= GCC) while allowing ancient ccache versions for these. Perhaps there
was a reason for that in the past but it's simpler to only require a
minimum ccache version.

To simplify further, also require at least ccache 3.3 (released in 2016)
instead of 3.2.1 (released in 2014).
2022-05-17 20:38:54 +02:00
Robert Schulze
4aff310a1c
Made the ccache integration more straightforward
The new logic is simpler and should do the same as before.
2022-05-17 20:38:54 +02:00
Robert Schulze
92259335b0
Use existing variable COMPILER_CLANG to identify Clang 2022-05-17 19:35:22 +02:00
Robert Schulze
6db32a3ed1
Fix externally set compiler launchers
The compiler launcher (ccache, distcc) can be set externally via
-DCMAKE_CXX_COMPILER_LAUNCHER=<tool>. We previously silently ignored
this setting and continued without any launcher (e.g. ccache). Changed
this to now respect the externally specified launcher.
2022-05-17 19:28:05 +02:00
Robert Schulze
c0a4af295c
Cosmetics 2022-05-17 19:06:13 +02:00
Robert Schulze
34af1cb116
Throw option WEVERYTHING out
WEVERYTHING enables on Clang literally every warning. People on the
internet are divided if this is a good thing or not but ClickHouse
compiles with -Weverything + some exceptions for noisy warnings since at
least a year.

I tried to build with WEVERYTHING = OFF and the build was badly broken.
It seems nobody actually turns WEVERYTHING off. Actually, why would one
if the CI builds (configured with WEVERYTHING = ON) potentially generate
errors not generated in local development.

To simplify the build scripts and to remove the need to maintain two
sets of compiler warnings, I made WEVERYTHING the default and threw
WEVERYTHING = OFF out.
2022-05-17 15:52:53 +02:00
Robert Schulze
95d28973aa
Cosmetics 2022-05-15 16:07:10 +02:00
Robert Schulze
28ae7ad9c6
Print used linker always and not only on Linux 2022-05-15 16:07:10 +02:00
Robert Schulze
7000bdb3e8
Remove condition which is always true 2022-05-15 16:07:10 +02:00
Robert Schulze
7c11f41038
Removed funny objcopy/strip finding logic on Apple
On Darwin, the build script tries to
1. use llvm-objcopy/llvm-strip from $PATH,
2. if not found by 1., use standard objcopy/strip from $PATH

The brew install instructions recommends to set $PATH to brew's binary
dir, so 2. will find something (assuming binutils is installed from
brew). If $PATH additionally points to brew's LLVM binary dir (which is
different from brew's binary dir), 1. will find the llvm versions of the
tools.

This commit removes additional logic which repeats above steps in a more
implicit way by calling brew internally and figuring out the paths once
more if 1. and 2. cannot find them in the $PATH. This removes
duplication and simplifies the script. Maybe it even helps with
reproducibility.
2022-05-15 16:06:54 +02:00
Robert Schulze
9add41efce
Log locations of ar, ranlib and install-name-tool
Makes the output consistent with other build tools
2022-05-15 16:04:32 +02:00
Robert Schulze
a982e95caf
Harmonize and clarify error messasges 2022-05-15 16:04:32 +02:00
Robert Schulze
d505bcd510
Bump AppleClang to 12.0
- previous XCode 10.2 / Clang 7.0 was horribly outdated

- XCode 12.0 corresponds to the minimally required vanilla Clang version 12.0

- remove passing of "-fchar8_t" flag (with Clang >= 9, it is part of -std=c++20)
2022-05-15 16:04:32 +02:00
Robert Schulze
ef6138a2ee
Extract minimum compiler versions 2022-05-15 16:04:32 +02:00
Robert Schulze
ce50a1531f
Abort if unsupported compiler 2022-05-15 16:04:32 +02:00
Robert Schulze
3a5c16ebbd
Fail in systems with unknown CMAKE_SYSTEM_NAME 2022-05-15 09:48:54 +02:00
Robert Schulze
e06db56c67
Move ppc cpu features out of the x86 block 2022-05-15 09:48:48 +02:00
Robert Schulze
3eb964a9f5
Simplify: Move warnings stuff into cmake/warnings.cmake 2022-05-15 09:48:03 +02:00
Robert Schulze
48e8c6185c
Remove unused check for -Wshadow
Looks like an unused leftover
2022-05-15 09:48:03 +02:00
Robert Schulze
0795b8cdb1
Fix check if ccache is already setup 2022-05-15 09:48:02 +02:00
Robert Schulze
eb9f11da3d
Replace variable ARCH_ARM by ARCH_AARCH64
Both are equivalent and removing the duplication was a leftover of PR #36614
2022-05-15 09:48:02 +02:00
Alexander Gololobov
1dc3d04837 Removed __SSE2__ flag for PPC64 2022-05-12 16:20:19 +02:00
Robert Schulze
a9215214b7
Remove switches for obsolete GCC version
GCC_MINIMUM_VERSION is 11 --> remove special logic for earlier GCCs.
2022-04-30 20:33:20 +02:00
Robert Schulze
718a173ce9
Merge remote-tracking branch 'origin/master' into clang-tidy-cleanup
Conflicts:
- cmake/clang_tidy.cmake
2022-04-26 09:42:47 +02:00
Robert Schulze
15e75e79e4
analysis.cmake --> clang_tidy.cmake 2022-04-26 09:41:56 +02:00
Alexey Milovidov
c8612d2ed6
Merge pull request #36612 from rschu1ze/ancient-cmake-cleanup
Ancient cmake version cleanup
2022-04-26 09:26:22 +03:00
Alexey Milovidov
29b286a887
Merge pull request #36614 from rschu1ze/robust-arch-detection
Make arch detection more robust
2022-04-26 09:24:54 +03:00
Robert Schulze
62aba875f5
Make arch detection more robust
- Properly handle the case that we are on an unsupported but unlisted
  arch, e.g. mips. Before, we would simply continue
  configuration/compilation with no architecture set.

- CMake variable "ARCH_ARM" could in theory be replaced by
  "ARCH_AARCH64". This would need refactoring in dependent CMakeLists,
  therefore not doing it now.
2022-04-25 13:08:17 +02:00
Robert Schulze
730ce1806c
Simplify using RECONFIGURE_MESSAGE_LEVEL
The behavior stays the same, but we are using the same logic that is
used elsewhere too.
2022-04-25 12:56:57 +02:00
Robert Schulze
c33d66a31a
Sync allowed clang-tidy versions with documentation 2022-04-25 12:56:21 +02:00
Robert Schulze
2b3340861b
Remove support for ancient CMake
The first line in CMakeLists.txt says the minimum CMake version is
3.14. Therefore removing special code for earlier CMake versions.
2022-04-25 12:48:24 +02:00
Alexey Milovidov
380f1a0052 Limit PowerPC code generation to Power8 2022-04-22 06:26:40 +02:00
Mikhail f. Shiryaev
5997d7af60
Update version to 22.5.1.1 2022-04-21 17:39:40 +02:00
bharatnc
6b07105de6 fix typo in cmake message 2022-04-11 22:38:23 -07:00
alesapin
b838a7dcb0 Remove outdated links from CI 2022-03-28 15:53:22 +02:00
Mikhail f. Shiryaev
572b15a63c
Fix paths and some cmake typos 2022-03-24 23:11:19 +01:00
Mikhail f. Shiryaev
81b2e0bfd9
Fix multiple installation, use a final path for gnu-debuglink 2022-03-23 23:15:08 +01:00
alesapin
9e6f0ae9f2 Fix strip path 2022-03-23 18:44:09 +01:00
alesapin
e790a73081 Simplify strip for new packages 2022-03-23 15:14:30 +01:00
alesapin
d2e10cfa87
Strip like dh_strip 2022-03-22 11:11:39 +01:00
alesapin
a2efb1c2fa
Strip in a different way 2022-03-22 11:11:39 +01:00
Mikhail f. Shiryaev
1d362796df
Fix strip bug 2022-03-22 11:10:02 +01:00
Mikhail f. Shiryaev
22bf232325
Update version to 22.4.1.1 2022-03-17 16:53:06 +01:00
alesapin
fe8df7128e Add comment 2022-03-10 22:29:18 +01:00
alesapin
d4def2c6c9 Remove comment 2022-03-10 22:26:01 +01:00
alesapin
e53578910b Add ability to strip binaries in cmake 2022-03-10 22:23:28 +01:00
Robert Schulze
ec6e58536f
Print number of available logical cores in configuration
Really just for convenience so the developer can choose appropriate
values for CMake options PARALLEL_COMPILE_JOBS and PARALLEL_LINK_JOBS.
Might also help to find out why builds are slow.
2022-03-01 21:24:22 +01:00
Mikhail f. Shiryaev
ddc0939a4b
Update version to 22.3.1.1 2022-02-17 11:21:11 +01:00
Azat Khuzhin
b90cf4e7ff Move cmake/find/ccache.cmake -> cmake/ccache.cmake
Signed-off-by: Azat Khuzhin <a.khuzhin@semrush.com>
2022-01-31 16:01:19 +03:00
Azat Khuzhin
116af7dfb9 Move cmake/find/unwind.cmake -> cmake/unwind.cmake
Signed-off-by: Azat Khuzhin <a.khuzhin@semrush.com>
2022-01-31 16:01:12 +03:00
Azat Khuzhin
3e5ad1a138 Move cmake/find/cxx.cmake -> cmake/cxx.cmake
Signed-off-by: Azat Khuzhin <a.khuzhin@semrush.com>
2022-01-31 16:01:11 +03:00
Amos Bird
6adb3aa49a
Fix missing -Werror 2022-01-28 02:07:43 +08:00
Azat Khuzhin
4a0facd341 Remove MAKE_STATIC_LIBRARIES (in favor of USE_STATIC_LIBRARIES)
There is no more MAKE_*, so remove this alias.

Signed-off-by: Azat Khuzhin <a.khuzhin@semrush.com>
2022-01-24 17:28:33 +03:00
alexey-milovidov
f3053d3727
Merge pull request #33706 from hanqf-git/avx512_memcmpSmall
Avx512 memcmp small
2022-01-22 13:02:47 +03:00