Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

CMake: general cleanup and fixes #19969

Merged
merged 9 commits into from
May 20, 2024
Merged

Conversation

BratishkaErik
Copy link
Contributor

Revival of #12747, with more splitted commits.

Signed-off-by: Eric Joldasov <bratishkaerik@landless-city.net>
Signed-off-by: Eric Joldasov <bratishkaerik@landless-city.net>
* Localize most of the global properties and functions, for some time
  they are only needed for "zigcpp" static library (sometimes with PUBLIC
  keyword, so that it will propagate to zig2): `CMAKE_*_OUTPUT_DIRECTORY`
  and two calls to `include_directories`. This removes useless flags when
  building other targets and cleans build log a bit.
* Remove `EXE_CXX_FLAGS` variable, instead use more appropriate specific
  properties and functions for this target. This gives better errors if
  compiler does not support some of them, and CMake also handles for us
  duplicate flags. It's also easier to read side-by-side with same
  flags from build.zig .
* Add some comments.

Signed-off-by: Eric Joldasov <bratishkaerik@landless-city.net>
Signed-off-by: Eric Joldasov <bratishkaerik@landless-city.net>
They were introduced in ziglang#3467 and
5b51f41 , and become obsolete since
C++-based compiler was removed: all C or C++ sources built by CMake
are just intermediate steps in bootstrapping.

Signed-off-by: Eric Joldasov <bratishkaerik@landless-city.net>
Replace `CMAKE_SOURCE_DIR` and `CMAKE_BUILD_DIR` with different variables,
or in some cases just remove them.

For some function arguments, prepended `CMAKE_SOURCE_DIR` was removed without
replacement. This includes:
 * Sources for `add_library` and `add_executable` (`ZIG_CPP_SOURCES` and `ZIG_WASM2C_SOURCES`)
 * Inputs for `configure_file` and `target_include_directory`
 * For arguments above, CMake already prepends
   `CMAKE_CURRENT_SOURCE_DIR` to them by default, if they are relative paths.
   Additionaly, it was removed from arguments of commands that have `WORKING_DIRECTORY` set to
   `PROJECT_SOURCE_DIR`, they will be similarly converted by CMake for us.

Also:
 * Move project declaration to the top so that these variables are
available earlier.
 * Avoid calling "git" executable if ".git" directory does not exist.
 * Swap "--prefix" and `ZIG_BUILD_ARGS` arguments in cmake/install.cmake
   to match same "zig2 build" command in CMakeLists.txt and allow
   overriding "--prefix" argument

Signed-off-by: Eric Joldasov <bratishkaerik@landless-city.net>
Set `ZIG_PIE` default to be same as `CMAKE_POSITION_INDEPENDENT_CODE`, and
add check for situation when `ZIG_PIE` is set to True but CMake does not
support compiling position independent code. CMake's support is needed
for "zigcpp" target.

Also remove temporary variables for constructing `ZIG_BUILD_ARGS`,
instead use `list(APPEND ...)` functions.

Also remove long unused `ZIG_NO_LANGREF` variable.

Signed-off-by: Eric Joldasov <bratishkaerik@landless-city.net>
Not really useful after old C++ compiler removal, and
zig build has own cache system. If someone still wants it,
`CMAKE_C_COMPILER_LAUNCHER` and `CMAKE_CXX_COMPILER_LAUNCHER` exist.

From CMake docs:

> RULE_LAUNCH_COMPILE
> Note: This property is intended for internal use by ctest(1).
> Projects and developers should use the <LANG>_COMPILER_LAUNCHER
> target properties or the associated CMAKE_<LANG>_COMPILER_LAUNCHER
> variables instead.

Signed-off-by: Eric Joldasov <bratishkaerik@landless-city.net>
@BratishkaErik
Copy link
Contributor Author

BratishkaErik commented May 15, 2024

Build log before:

$ rm -r build
$ mkdir build
$ cd build
$ cmake -DZIG_SHARED_LLVM=ON -DCMAKE_INSTALL_PREFIX=stage4 -GNinja ..
-- The C compiler identification is GNU 12.3.1
-- The CXX compiler identification is GNU 12.3.1
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working C compiler: /usr/bin/cc - skipped
-- Detecting C compile features
-- Detecting C compile features - done
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Check for working CXX compiler: /usr/bin/c++ - skipped
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Configuring zig version 0.13.0-dev.211+6a65561e3
-- Found llvm: /usr/lib/llvm/18/lib64/libLLVM-18.so (Required is at least version "18") 
-- Found clang: /usr/lib/llvm/18/lib64/libclang-cpp.so (Required is at least version "18") 
-- Found lld: /usr/lib/llvm/18/lib64/liblldMinGW.so;/usr/lib/llvm/18/lib64/liblldELF.so;/usr/lib/llvm/18/lib64/liblldCOFF.so;/usr/lib/llvm/18/lib64/liblldWasm.so;/usr/lib/llvm/18/lib64/liblldMachO.so;/usr/lib/llvm/18/lib64/liblldCommon.so (Required is at least version "18") 
-- Performing Test CMAKE_HAVE_LIBC_PTHREAD
-- Performing Test CMAKE_HAVE_LIBC_PTHREAD - Success
-- Found Threads: TRUE  
-- Configuring done (0.4s)
-- Generating done (0.0s)
-- Build files have been written to: /home/bratishkaerik/github.com/zig/build
$ cmake --build . --verbose
Change Dir: '/home/bratishkaerik/github.com/zig/build'

Run Build Command(s): /usr/bin/ninja -v
[1/19] /usr/bin/cc  -I/usr/lib/llvm/18/include -I/home/bratishkaerik/github.com/zig -I/home/bratishkaerik/github.com/zig/build -I/home/bratishkaerik/github.com/zig/src -g -std=c99 -O2 -MD -MT CMakeFiles/zig-wasm2c.dir/stage1/wasm2c.c.o -MF CMakeFiles/zig-wasm2c.dir/stage1/wasm2c.c.o.d -o CMakeFiles/zig-wasm2c.dir/stage1/wasm2c.c.o -c /home/bratishkaerik/github.com/zig/stage1/wasm2c.c
[2/19] : && /usr/bin/cc -g  CMakeFiles/zig-wasm2c.dir/stage1/wasm2c.c.o -o zig-wasm2c -L/usr/lib/llvm/18/lib64  && :
[3/19] /usr/bin/c++  -I/usr/lib/llvm/18/include -I/home/bratishkaerik/github.com/zig -I/home/bratishkaerik/github.com/zig/build -I/home/bratishkaerik/github.com/zig/src -g -std=c++17 -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS -D_GNU_SOURCE -fvisibility-inlines-hidden -fno-exceptions -fno-rtti -Wno-type-limits -Wno-missing-braces -Wno-comment -fno-stack-protector -MD -MT CMakeFiles/zigcpp.dir/src/zig_llvm-ar.cpp.o -MF CMakeFiles/zigcpp.dir/src/zig_llvm-ar.cpp.o.d -o CMakeFiles/zigcpp.dir/src/zig_llvm-ar.cpp.o -c /home/bratishkaerik/github.com/zig/src/zig_llvm-ar.cpp
[4/19] cd /home/bratishkaerik/github.com/zig && /home/bratishkaerik/github.com/zig/build/zig-wasm2c /home/bratishkaerik/github.com/zig/stage1/zig1.wasm /home/bratishkaerik/github.com/zig/build/zig1.c
[5/19] /usr/bin/cc  -I/usr/lib/llvm/18/include -I/home/bratishkaerik/github.com/zig -I/home/bratishkaerik/github.com/zig/build -I/home/bratishkaerik/github.com/zig/src -g -std=c99 -Os -MD -MT CMakeFiles/zig1.dir/stage1/wasi.c.o -MF CMakeFiles/zig1.dir/stage1/wasi.c.o.d -o CMakeFiles/zig1.dir/stage1/wasi.c.o -c /home/bratishkaerik/github.com/zig/stage1/wasi.c
[6/19] /usr/bin/c++  -I/usr/lib/llvm/18/include -I/home/bratishkaerik/github.com/zig -I/home/bratishkaerik/github.com/zig/build -I/home/bratishkaerik/github.com/zig/src -g -std=c++17 -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS -D_GNU_SOURCE -fvisibility-inlines-hidden -fno-exceptions -fno-rtti -Wno-type-limits -Wno-missing-braces -Wno-comment -fno-stack-protector -MD -MT CMakeFiles/zigcpp.dir/src/zig_clang_cc1as_main.cpp.o -MF CMakeFiles/zigcpp.dir/src/zig_clang_cc1as_main.cpp.o.d -o CMakeFiles/zigcpp.dir/src/zig_clang_cc1as_main.cpp.o -c /home/bratishkaerik/github.com/zig/src/zig_clang_cc1as_main.cpp
[7/19] /usr/bin/c++  -I/usr/lib/llvm/18/include -I/home/bratishkaerik/github.com/zig -I/home/bratishkaerik/github.com/zig/build -I/home/bratishkaerik/github.com/zig/src -g -std=c++17 -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS -D_GNU_SOURCE -fvisibility-inlines-hidden -fno-exceptions -fno-rtti -Wno-type-limits -Wno-missing-braces -Wno-comment -fno-stack-protector -MD -MT CMakeFiles/zigcpp.dir/src/zig_clang_driver.cpp.o -MF CMakeFiles/zigcpp.dir/src/zig_clang_driver.cpp.o.d -o CMakeFiles/zigcpp.dir/src/zig_clang_driver.cpp.o -c /home/bratishkaerik/github.com/zig/src/zig_clang_driver.cpp
[8/19] /usr/bin/c++  -I/usr/lib/llvm/18/include -I/home/bratishkaerik/github.com/zig -I/home/bratishkaerik/github.com/zig/build -I/home/bratishkaerik/github.com/zig/src -g -std=c++17 -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS -D_GNU_SOURCE -fvisibility-inlines-hidden -fno-exceptions -fno-rtti -Wno-type-limits -Wno-missing-braces -Wno-comment -fno-stack-protector -MD -MT CMakeFiles/zigcpp.dir/src/zig_llvm.cpp.o -MF CMakeFiles/zigcpp.dir/src/zig_llvm.cpp.o.d -o CMakeFiles/zigcpp.dir/src/zig_llvm.cpp.o -c /home/bratishkaerik/github.com/zig/src/zig_llvm.cpp
[9/19] /usr/bin/c++  -I/usr/lib/llvm/18/include -I/home/bratishkaerik/github.com/zig -I/home/bratishkaerik/github.com/zig/build -I/home/bratishkaerik/github.com/zig/src -g -std=c++17 -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS -D_GNU_SOURCE -fvisibility-inlines-hidden -fno-exceptions -fno-rtti -Wno-type-limits -Wno-missing-braces -Wno-comment -fno-stack-protector -MD -MT CMakeFiles/zigcpp.dir/src/zig_clang.cpp.o -MF CMakeFiles/zigcpp.dir/src/zig_clang.cpp.o.d -o CMakeFiles/zigcpp.dir/src/zig_clang.cpp.o -c /home/bratishkaerik/github.com/zig/src/zig_clang.cpp
[10/19] /usr/bin/c++  -I/usr/lib/llvm/18/include -I/home/bratishkaerik/github.com/zig -I/home/bratishkaerik/github.com/zig/build -I/home/bratishkaerik/github.com/zig/src -g -std=c++17 -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS -D_GNU_SOURCE -fvisibility-inlines-hidden -fno-exceptions -fno-rtti -Wno-type-limits -Wno-missing-braces -Wno-comment -fno-stack-protector -MD -MT CMakeFiles/zigcpp.dir/src/zig_clang_cc1_main.cpp.o -MF CMakeFiles/zigcpp.dir/src/zig_clang_cc1_main.cpp.o.d -o CMakeFiles/zigcpp.dir/src/zig_clang_cc1_main.cpp.o -c /home/bratishkaerik/github.com/zig/src/zig_clang_cc1_main.cpp
[11/19] : && /usr/bin/cmake -E rm -f zigcpp/libzigcpp.a && /usr/bin/ar qc zigcpp/libzigcpp.a  CMakeFiles/zigcpp.dir/src/zig_llvm.cpp.o CMakeFiles/zigcpp.dir/src/zig_llvm-ar.cpp.o CMakeFiles/zigcpp.dir/src/zig_clang.cpp.o CMakeFiles/zigcpp.dir/src/zig_clang_driver.cpp.o CMakeFiles/zigcpp.dir/src/zig_clang_cc1_main.cpp.o CMakeFiles/zigcpp.dir/src/zig_clang_cc1as_main.cpp.o && /usr/bin/ranlib zigcpp/libzigcpp.a && :
[12/19] /usr/bin/cc  -I/usr/lib/llvm/18/include -I/home/bratishkaerik/github.com/zig -I/home/bratishkaerik/github.com/zig/build -I/home/bratishkaerik/github.com/zig/src -g -std=c99 -Os -MD -MT CMakeFiles/zig1.dir/zig1.c.o -MF CMakeFiles/zig1.dir/zig1.c.o.d -o CMakeFiles/zig1.dir/zig1.c.o -c /home/bratishkaerik/github.com/zig/build/zig1.c
[13/19] : && /usr/bin/cc -g  CMakeFiles/zig1.dir/zig1.c.o CMakeFiles/zig1.dir/stage1/wasi.c.o -o zig1 -L/usr/lib/llvm/18/lib64 -Wl,-rpath,/usr/lib/llvm/18/lib64  -lm && :
[14/19] cd /home/bratishkaerik/github.com/zig && /home/bratishkaerik/github.com/zig/build/zig1 /home/bratishkaerik/github.com/zig/lib build-obj -ofmt=c -OReleaseSmall --name compiler_rt -femit-bin="/home/bratishkaerik/github.com/zig/build/compiler_rt.c" -target x86_64-linux --dep build_options --mod root lib/compiler_rt.zig --mod build_options /home/bratishkaerik/github.com/zig/build/config.zig
[15/19] cd /home/bratishkaerik/github.com/zig && /home/bratishkaerik/github.com/zig/build/zig1 /home/bratishkaerik/github.com/zig/lib build-exe -ofmt=c -lc -OReleaseSmall --name zig2 -femit-bin="/home/bratishkaerik/github.com/zig/build/zig2.c" -target x86_64-linux --dep build_options --dep aro --mod root src/main.zig --mod build_options /home/bratishkaerik/github.com/zig/build/config.zig --mod aro lib/compiler/aro/aro.zig
[16/19] /usr/bin/cc  -I/usr/lib/llvm/18/include -I/home/bratishkaerik/github.com/zig -I/home/bratishkaerik/github.com/zig/build -I/home/bratishkaerik/github.com/zig/src -I/home/bratishkaerik/github.com/zig/stage1 -g -std=c99 -O0 -fno-stack-protector -MD -MT CMakeFiles/zig2.dir/compiler_rt.c.o -MF CMakeFiles/zig2.dir/compiler_rt.c.o.d -o CMakeFiles/zig2.dir/compiler_rt.c.o -c /home/bratishkaerik/github.com/zig/build/compiler_rt.c
[17/19] /usr/bin/cc  -I/usr/lib/llvm/18/include -I/home/bratishkaerik/github.com/zig -I/home/bratishkaerik/github.com/zig/build -I/home/bratishkaerik/github.com/zig/src -I/home/bratishkaerik/github.com/zig/stage1 -g -std=c99 -O0 -fno-stack-protector -MD -MT CMakeFiles/zig2.dir/zig2.c.o -MF CMakeFiles/zig2.dir/zig2.c.o.d -o CMakeFiles/zig2.dir/zig2.c.o -c /home/bratishkaerik/github.com/zig/build/zig2.c
[18/19] : && /usr/bin/c++ -g -Wl,-z,stack-size=0x10000000 CMakeFiles/zig2.dir/zig2.c.o CMakeFiles/zig2.dir/compiler_rt.c.o -o zig2 -L/usr/lib/llvm/18/lib64 -Wl,-rpath,/usr/lib/llvm/18/lib64  zigcpp/libzigcpp.a  /usr/lib/llvm/18/lib64/libclang-cpp.so  /usr/lib/llvm/18/lib64/liblldMinGW.so  /usr/lib/llvm/18/lib64/liblldELF.so  /usr/lib/llvm/18/lib64/liblldCOFF.so  /usr/lib/llvm/18/lib64/liblldWasm.so  /usr/lib/llvm/18/lib64/liblldMachO.so  /usr/lib/llvm/18/lib64/liblldCommon.so  /usr/lib/llvm/18/lib64/libLLVM-18.so && :
[19/19] cd /home/bratishkaerik/github.com/zig && /home/bratishkaerik/github.com/zig/build/zig2 build --prefix /home/bratishkaerik/github.com/zig/build/stage3 --zig-lib-dir /home/bratishkaerik/github.com/zig/lib -Dconfig_h=/home/bratishkaerik/github.com/zig/build/config.h -Denable-llvm -Dno-langref -Dtarget=native -Dcpu=native -Dversion-string=0.13.0-dev.211+6a65561e3

$ cmake --install . --verbose
-- Install configuration: "Debug"
$ exa
build.ninja  cmake_install.cmake  CMakeCache.txt  CMakeFiles  compiler_rt.c  config.h  config.zig  install_manifest.txt  stage3  stage4  zig-wasm2c  zig1  zig1.c  zig2  zig2.c  zigcpp
$ tree -L 3 stage3 stage4
stage3
├── bin
│   └── zig
└── lib
    └── zig
        ├── compiler
        ├── compiler_rt
        ├── compiler_rt.zig
        ├── c.zig
        ├── docs
        ├── include
        ├── init
        ├── init-exe
        ├── init-lib
        ├── libc
        ├── libcxx
        ├── libcxxabi
        ├── libunwind
        ├── std
        ├── tsan
        └── zig.h
stage4
├── bin
│   └── zig
└── lib
    └── zig
        ├── compiler
        ├── compiler_rt
        ├── compiler_rt.zig
        ├── c.zig
        ├── docs
        ├── include
        ├── init
        ├── init-exe
        ├── init-lib
        ├── libc
        ├── libcxx
        ├── libcxxabi
        ├── libunwind
        ├── std
        ├── tsan
        └── zig.h

34 directories, 8 files

Build log after (notice shorter commands):

$ rm -r build
$ mkdir build
$ cd build
$ cmake -DZIG_SHARED_LLVM=ON -DCMAKE_INSTALL_PREFIX=stage4 -GNinja ..
-- The C compiler identification is GNU 12.3.1
-- The CXX compiler identification is GNU 12.3.1
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working C compiler: /usr/bin/cc - skipped
-- Detecting C compile features
-- Detecting C compile features - done
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Check for working CXX compiler: /usr/bin/c++ - skipped
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Configuring zig version 0.13.0-dev.219+1079b5fe6
-- Found llvm: /usr/lib/llvm/18/lib64/libLLVM-18.so (Required is at least version "18") 
-- Found clang: /usr/lib/llvm/18/lib64/libclang-cpp.so (Required is at least version "18") 
-- Found lld: /usr/lib/llvm/18/lib64/liblldMinGW.so;/usr/lib/llvm/18/lib64/liblldELF.so;/usr/lib/llvm/18/lib64/liblldCOFF.so;/usr/lib/llvm/18/lib64/liblldWasm.so;/usr/lib/llvm/18/lib64/liblldMachO.so;/usr/lib/llvm/18/lib64/liblldCommon.so (Required is at least version "18") 
-- Performing Test CMAKE_HAVE_LIBC_PTHREAD
c-- Performing Test CMAKE_HAVE_LIBC_PTHREAD - Success
-- Found Threads: TRUE  
-- Configuring done (0.7s)
-- Generating done (0.0s)
-- Build files have been written to: /home/bratishkaerik/github.com/zig/build
$ cmake --build . --verbose
Change Dir: '/home/bratishkaerik/github.com/zig/build'

Run Build Command(s): /usr/bin/ninja -v
[1/19] /usr/bin/cc   -g -std=c99 -O2 -MD -MT CMakeFiles/zig-wasm2c.dir/stage1/wasm2c.c.o -MF CMakeFiles/zig-wasm2c.dir/stage1/wasm2c.c.o.d -o CMakeFiles/zig-wasm2c.dir/stage1/wasm2c.c.o -c /home/bratishkaerik/github.com/zig/stage1/wasm2c.c
[2/19] : && /usr/bin/cc -g  CMakeFiles/zig-wasm2c.dir/stage1/wasm2c.c.o -o zig-wasm2c -L/usr/lib/llvm/18/lib64  && :
[3/19] /usr/bin/c++ -D_GNU_SOURCE -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS -I/usr/lib/llvm/18/include -g -fno-exceptions -fno-rtti -fno-stack-protector -fvisibility-inlines-hidden -Wno-type-limits -Wno-missing-braces -Wno-comment -MD -MT CMakeFiles/zigcpp.dir/src/zig_llvm-ar.cpp.o -MF CMakeFiles/zigcpp.dir/src/zig_llvm-ar.cpp.o.d -o CMakeFiles/zigcpp.dir/src/zig_llvm-ar.cpp.o -c /home/bratishkaerik/github.com/zig/src/zig_llvm-ar.cpp
[4/19] cd /home/bratishkaerik/github.com/zig && /home/bratishkaerik/github.com/zig/build/zig-wasm2c /home/bratishkaerik/github.com/zig/stage1/zig1.wasm /home/bratishkaerik/github.com/zig/build/zig1.c
[5/19] /usr/bin/cc   -g -std=c99 -Os -MD -MT CMakeFiles/zig1.dir/stage1/wasi.c.o -MF CMakeFiles/zig1.dir/stage1/wasi.c.o.d -o CMakeFiles/zig1.dir/stage1/wasi.c.o -c /home/bratishkaerik/github.com/zig/stage1/wasi.c
[6/19] /usr/bin/c++ -D_GNU_SOURCE -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS -I/usr/lib/llvm/18/include -g -fno-exceptions -fno-rtti -fno-stack-protector -fvisibility-inlines-hidden -Wno-type-limits -Wno-missing-braces -Wno-comment -MD -MT CMakeFiles/zigcpp.dir/src/zig_clang_cc1as_main.cpp.o -MF CMakeFiles/zigcpp.dir/src/zig_clang_cc1as_main.cpp.o.d -o CMakeFiles/zigcpp.dir/src/zig_clang_cc1as_main.cpp.o -c /home/bratishkaerik/github.com/zig/src/zig_clang_cc1as_main.cpp
[7/19] /usr/bin/c++ -D_GNU_SOURCE -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS -I/usr/lib/llvm/18/include -g -fno-exceptions -fno-rtti -fno-stack-protector -fvisibility-inlines-hidden -Wno-type-limits -Wno-missing-braces -Wno-comment -MD -MT CMakeFiles/zigcpp.dir/src/zig_clang_driver.cpp.o -MF CMakeFiles/zigcpp.dir/src/zig_clang_driver.cpp.o.d -o CMakeFiles/zigcpp.dir/src/zig_clang_driver.cpp.o -c /home/bratishkaerik/github.com/zig/src/zig_clang_driver.cpp
[8/19] /usr/bin/c++ -D_GNU_SOURCE -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS -I/usr/lib/llvm/18/include -g -fno-exceptions -fno-rtti -fno-stack-protector -fvisibility-inlines-hidden -Wno-type-limits -Wno-missing-braces -Wno-comment -MD -MT CMakeFiles/zigcpp.dir/src/zig_clang.cpp.o -MF CMakeFiles/zigcpp.dir/src/zig_clang.cpp.o.d -o CMakeFiles/zigcpp.dir/src/zig_clang.cpp.o -c /home/bratishkaerik/github.com/zig/src/zig_clang.cpp
[9/19] /usr/bin/c++ -D_GNU_SOURCE -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS -I/usr/lib/llvm/18/include -g -fno-exceptions -fno-rtti -fno-stack-protector -fvisibility-inlines-hidden -Wno-type-limits -Wno-missing-braces -Wno-comment -MD -MT CMakeFiles/zigcpp.dir/src/zig_clang_cc1_main.cpp.o -MF CMakeFiles/zigcpp.dir/src/zig_clang_cc1_main.cpp.o.d -o CMakeFiles/zigcpp.dir/src/zig_clang_cc1_main.cpp.o -c /home/bratishkaerik/github.com/zig/src/zig_clang_cc1_main.cpp
[10/19] /usr/bin/c++ -D_GNU_SOURCE -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS -I/usr/lib/llvm/18/include -g -fno-exceptions -fno-rtti -fno-stack-protector -fvisibility-inlines-hidden -Wno-type-limits -Wno-missing-braces -Wno-comment -MD -MT CMakeFiles/zigcpp.dir/src/zig_llvm.cpp.o -MF CMakeFiles/zigcpp.dir/src/zig_llvm.cpp.o.d -o CMakeFiles/zigcpp.dir/src/zig_llvm.cpp.o -c /home/bratishkaerik/github.com/zig/src/zig_llvm.cpp
[11/19] : && /usr/bin/cmake -E rm -f zigcpp/libzigcpp.a && /usr/bin/ar qc zigcpp/libzigcpp.a  CMakeFiles/zigcpp.dir/src/zig_llvm.cpp.o CMakeFiles/zigcpp.dir/src/zig_llvm-ar.cpp.o CMakeFiles/zigcpp.dir/src/zig_clang.cpp.o CMakeFiles/zigcpp.dir/src/zig_clang_driver.cpp.o CMakeFiles/zigcpp.dir/src/zig_clang_cc1_main.cpp.o CMakeFiles/zigcpp.dir/src/zig_clang_cc1as_main.cpp.o && /usr/bin/ranlib zigcpp/libzigcpp.a && :
[12/19] /usr/bin/cc   -g -std=c99 -Os -MD -MT CMakeFiles/zig1.dir/zig1.c.o -MF CMakeFiles/zig1.dir/zig1.c.o.d -o CMakeFiles/zig1.dir/zig1.c.o -c /home/bratishkaerik/github.com/zig/build/zig1.c
[13/19] : && /usr/bin/cc -g  CMakeFiles/zig1.dir/zig1.c.o CMakeFiles/zig1.dir/stage1/wasi.c.o -o zig1 -L/usr/lib/llvm/18/lib64 -Wl,-rpath,/usr/lib/llvm/18/lib64  -lm && :
[14/19] cd /home/bratishkaerik/github.com/zig && /home/bratishkaerik/github.com/zig/build/zig1 /home/bratishkaerik/github.com/zig/lib build-obj -ofmt=c -OReleaseSmall --name compiler_rt -femit-bin="/home/bratishkaerik/github.com/zig/build/compiler_rt.c" -target x86_64-linux --dep build_options --mod root lib/compiler_rt.zig --mod build_options /home/bratishkaerik/github.com/zig/build/config.zig
[15/19] cd /home/bratishkaerik/github.com/zig && /home/bratishkaerik/github.com/zig/build/zig1 /home/bratishkaerik/github.com/zig/lib build-exe -ofmt=c -lc -OReleaseSmall --name zig2 -femit-bin="/home/bratishkaerik/github.com/zig/build/zig2.c" -target x86_64-linux --dep build_options --dep aro --mod root src/main.zig --mod build_options /home/bratishkaerik/github.com/zig/build/config.zig --mod aro lib/compiler/aro/aro.zig
[16/19] /usr/bin/cc -D_GNU_SOURCE -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS -I/home/bratishkaerik/github.com/zig/stage1 -I/usr/lib/llvm/18/include -g -std=c99 -O0 -fno-stack-protector -MD -MT CMakeFiles/zig2.dir/compiler_rt.c.o -MF CMakeFiles/zig2.dir/compiler_rt.c.o.d -o CMakeFiles/zig2.dir/compiler_rt.c.o -c /home/bratishkaerik/github.com/zig/build/compiler_rt.c
[17/19] /usr/bin/cc -D_GNU_SOURCE -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS -I/home/bratishkaerik/github.com/zig/stage1 -I/usr/lib/llvm/18/include -g -std=c99 -O0 -fno-stack-protector -MD -MT CMakeFiles/zig2.dir/zig2.c.o -MF CMakeFiles/zig2.dir/zig2.c.o.d -o CMakeFiles/zig2.dir/zig2.c.o -c /home/bratishkaerik/github.com/zig/build/zig2.c
[18/19] : && /usr/bin/c++ -g -Wl,-z,stack-size=0x10000000 CMakeFiles/zig2.dir/zig2.c.o CMakeFiles/zig2.dir/compiler_rt.c.o -o zig2 -L/usr/lib/llvm/18/lib64 -Wl,-rpath,/usr/lib/llvm/18/lib64  zigcpp/libzigcpp.a  /usr/lib/llvm/18/lib64/libclang-cpp.so  /usr/lib/llvm/18/lib64/liblldMinGW.so  /usr/lib/llvm/18/lib64/liblldELF.so  /usr/lib/llvm/18/lib64/liblldCOFF.so  /usr/lib/llvm/18/lib64/liblldWasm.so  /usr/lib/llvm/18/lib64/liblldMachO.so  /usr/lib/llvm/18/lib64/liblldCommon.so  /usr/lib/llvm/18/lib64/libLLVM-18.so && :
[19/19] cd /home/bratishkaerik/github.com/zig && /home/bratishkaerik/github.com/zig/build/zig2 build --prefix /home/bratishkaerik/github.com/zig/build/stage3 --zig-lib-dir /home/bratishkaerik/github.com/zig/lib -Dversion-string=0.13.0-dev.219+1079b5fe6 -Dtarget=native -Dcpu=native -Denable-llvm -Dconfig_h=/home/bratishkaerik/github.com/zig/build/config.h -Dno-langref -Dstd-docs=false -Doptimize=Debug

$ cmake --install . --verbose
-- Install configuration: "Debug"
$ exa
build.ninja  cmake_install.cmake  CMakeCache.txt  CMakeFiles  compiler_rt.c  config.h  config.zig  install_manifest.txt  stage3  stage4  zig-wasm2c  zig1  zig1.c  zig2  zig2.c  zigcpp
$ tree -L 3 stage3 stage4
stage3
├── bin
│   └── zig
└── lib
    └── zig
        ├── compiler
        ├── compiler_rt
        ├── compiler_rt.zig
        ├── c.zig
        ├── docs
        ├── include
        ├── init
        ├── init-exe
        ├── init-lib
        ├── libc
        ├── libcxx
        ├── libcxxabi
        ├── libunwind
        ├── std
        ├── tsan
        └── zig.h
stage4
├── bin
│   └── zig
└── lib
    └── zig
        ├── compiler
        ├── compiler_rt
        ├── compiler_rt.zig
        ├── c.zig
        ├── docs
        ├── include
        ├── init
        ├── init-exe
        ├── init-lib
        ├── libc
        ├── libcxx
        ├── libcxxabi
        ├── libunwind
        ├── std
        ├── tsan
        └── zig.h

34 directories, 8 files

As you can see all installed successfully locally, don't know why CI failed.

Maybe it's because CI uses ninja install instead of cmake --install and PROJECT_SOURCE_DIR is somehow treated in first differenty than CMAKE_SOURCE_DIR...

Signed-off-by: Eric Joldasov <bratishkaerik@landless-city.net>
@andrewrk andrewrk merged commit 9691da7 into ziglang:master May 20, 2024
10 checks passed
@andrewrk
Copy link
Member

Great work, thank you!

@BratishkaErik
Copy link
Contributor Author

Thanks!

@BratishkaErik BratishkaErik deleted the CMake/cleanup branch May 20, 2024 12:36
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

2 participants