authorgravatar for kcbanner@gmail.comCasey Banner <kcbanner@gmail.com> 2023-01-04 02:18:51-05:00
committergravatar for kcbanner@gmail.comCasey Banner <kcbanner@gmail.com> 2023-01-04 21:45:06-05:00
log3cacbea95b2052f0dffd0a412f5e99ff61397826
tree671ec5fb9f60c34d7a615f73e40e7297d9cd3391
parentf5135f8e3b0d7a23d44944c720b6a6f3410a2b3a

build: simplify llvm-config provided system library parsing

- Revert the addition of CLANG_SYSTEM_LIBARIES and LLVM_SYSTEM_LIBRARIES - Change addCMakeLibraryList to parse non-absolute path .lib dependencies as system libraries

5 files changed, 11 insertions(+), 49 deletions(-)

CMakeLists.txt+5-6
...@@ -133,9 +133,9 @@ find_package(lld 15)...@@ -133,9 +133,9 @@ find_package(lld 15)
133133
134if(ZIG_STATIC_ZLIB)134if(ZIG_STATIC_ZLIB)
135 if (MSVC)135 if (MSVC)
136 list(REMOVE_ITEM LLVM_SYSTEM_LIBRARIES "z.lib")136 list(REMOVE_ITEM LLVM_LIBRARIES "z.lib")
137 else()137 else()
138 list(REMOVE_ITEM LLVM_SYSTEM_LIBRARIES "-lz")138 list(REMOVE_ITEM LLVM_LIBRARIES "-lz")
139 endif()139 endif()
140140
141 find_library(ZLIB NAMES libz.a libzlibstatic.a z zlib libz NAMES_PER_DIR)141 find_library(ZLIB NAMES libz.a libzlibstatic.a z zlib libz NAMES_PER_DIR)
...@@ -144,9 +144,9 @@ endif()...@@ -144,9 +144,9 @@ endif()
144144
145if(ZIG_STATIC_ZSTD)145if(ZIG_STATIC_ZSTD)
146 if (MSVC)146 if (MSVC)
147 list(REMOVE_ITEM LLVM_SYSTEM_LIBRARIES "zstd.lib")147 list(REMOVE_ITEM LLVM_LIBRARIES "zstd.lib")
148 else()148 else()
149 list(REMOVE_ITEM LLVM_SYSTEM_LIBRARIES "-lzstd")149 list(REMOVE_ITEM LLVM_LIBRARIES "-lzstd")
150 endif()150 endif()
151151
152 find_library(ZSTD NAMES libzstd.a libzstdstatic.a zstd NAMES_PER_DIR)152 find_library(ZSTD NAMES libzstd.a libzstdstatic.a zstd NAMES_PER_DIR)
...@@ -154,7 +154,7 @@ if(ZIG_STATIC_ZSTD)...@@ -154,7 +154,7 @@ if(ZIG_STATIC_ZSTD)
154endif()154endif()
155155
156if(APPLE AND ZIG_STATIC)156if(APPLE AND ZIG_STATIC)
157 list(REMOVE_ITEM LLVM_SYSTEM_LIBRARIES "-lcurses")157 list(REMOVE_ITEM LLVM_LIBRARIES "-lcurses")
158 find_library(CURSES NAMES libcurses.a libncurses.a NAMES_PER_DIR158 find_library(CURSES NAMES libcurses.a libncurses.a NAMES_PER_DIR
159 PATHS159 PATHS
160 /usr/local/opt/ncurses/lib160 /usr/local/opt/ncurses/lib
...@@ -710,7 +710,6 @@ target_link_libraries(zigcpp LINK_PUBLIC...@@ -710,7 +710,6 @@ target_link_libraries(zigcpp LINK_PUBLIC
710 ${CLANG_LIBRARIES}710 ${CLANG_LIBRARIES}
711 ${LLD_LIBRARIES}711 ${LLD_LIBRARIES}
712 ${LLVM_LIBRARIES}712 ${LLVM_LIBRARIES}
713 ${LLVM_SYSTEM_LIBRARIES}
714 ${CMAKE_THREAD_LIBS_INIT}713 ${CMAKE_THREAD_LIBS_INIT}
715)714)
716715
build.zig+2-31
...@@ -552,8 +552,6 @@ fn addCmakeCfgOptionsToExe(...@@ -552,8 +552,6 @@ fn addCmakeCfgOptionsToExe(
552 addCMakeLibraryList(exe, cfg.clang_libraries);552 addCMakeLibraryList(exe, cfg.clang_libraries);
553 addCMakeLibraryList(exe, cfg.lld_libraries);553 addCMakeLibraryList(exe, cfg.lld_libraries);
554 addCMakeLibraryList(exe, cfg.llvm_libraries);554 addCMakeLibraryList(exe, cfg.llvm_libraries);
555 addCMakeSystemLibraryList(exe, cfg.clang_system_libraries);
556 addCMakeSystemLibraryList(exe, cfg.llvm_system_libraries);
557555
558 if (use_zig_libcxx) {556 if (use_zig_libcxx) {
559 exe.linkLibCpp();557 exe.linkLibCpp();
...@@ -683,29 +681,14 @@ fn addCMakeLibraryList(exe: *std.build.LibExeObjStep, list: []const u8) void {...@@ -683,29 +681,14 @@ fn addCMakeLibraryList(exe: *std.build.LibExeObjStep, list: []const u8) void {
683 while (it.next()) |lib| {681 while (it.next()) |lib| {
684 if (mem.startsWith(u8, lib, "-l")) {682 if (mem.startsWith(u8, lib, "-l")) {
685 exe.linkSystemLibrary(lib["-l".len..]);683 exe.linkSystemLibrary(lib["-l".len..]);
684 } else if (exe.target.isWindows() and mem.endsWith(u8, lib, ".lib") and !fs.path.isAbsolute(lib)) {
685 exe.linkSystemLibrary(lib[0 .. lib.len - ".lib".len]);
686 } else {686 } else {
687 exe.addObjectFile(lib);687 exe.addObjectFile(lib);
688 }688 }
689 }689 }
690}690}
691691
692fn addCMakeSystemLibraryList(exe: *std.build.LibExeObjStep, list: []const u8) void {
693 var it = mem.tokenize(u8, list, ";");
694 while (it.next()) |lib| {
695 var start_offset: usize = 0;
696 var end_offset: usize = 0;
697 if (mem.startsWith(u8, lib, "-l")) {
698 start_offset = "-l".len;
699 }
700
701 if (exe.target.isWindows() and mem.endsWith(u8, lib, ".lib")) {
702 end_offset = ".lib".len;
703 }
704
705 exe.linkSystemLibrary(lib[start_offset .. lib.len - end_offset]);
706 }
707}
708
709const CMakeConfig = struct {692const CMakeConfig = struct {
710 llvm_linkage: std.build.LibExeObjStep.Linkage,693 llvm_linkage: std.build.LibExeObjStep.Linkage,
711 cmake_binary_dir: []const u8,694 cmake_binary_dir: []const u8,
...@@ -716,11 +699,9 @@ const CMakeConfig = struct {...@@ -716,11 +699,9 @@ const CMakeConfig = struct {
716 lld_include_dir: []const u8,699 lld_include_dir: []const u8,
717 lld_libraries: []const u8,700 lld_libraries: []const u8,
718 clang_libraries: []const u8,701 clang_libraries: []const u8,
719 clang_system_libraries: []const u8,
720 llvm_lib_dir: []const u8,702 llvm_lib_dir: []const u8,
721 llvm_include_dir: []const u8,703 llvm_include_dir: []const u8,
722 llvm_libraries: []const u8,704 llvm_libraries: []const u8,
723 llvm_system_libraries: []const u8,
724 dia_guids_lib: []const u8,705 dia_guids_lib: []const u8,
725};706};
726707
...@@ -783,11 +764,9 @@ fn parseConfigH(b: *Builder, config_h_text: []const u8) ?CMakeConfig {...@@ -783,11 +764,9 @@ fn parseConfigH(b: *Builder, config_h_text: []const u8) ?CMakeConfig {
783 .lld_include_dir = undefined,764 .lld_include_dir = undefined,
784 .lld_libraries = undefined,765 .lld_libraries = undefined,
785 .clang_libraries = undefined,766 .clang_libraries = undefined,
786 .clang_system_libraries = undefined,
787 .llvm_lib_dir = undefined,767 .llvm_lib_dir = undefined,
788 .llvm_include_dir = undefined,768 .llvm_include_dir = undefined,
789 .llvm_libraries = undefined,769 .llvm_libraries = undefined,
790 .llvm_system_libraries = undefined,
791 .dia_guids_lib = undefined,770 .dia_guids_lib = undefined,
792 };771 };
793772
...@@ -824,18 +803,10 @@ fn parseConfigH(b: *Builder, config_h_text: []const u8) ?CMakeConfig {...@@ -824,18 +803,10 @@ fn parseConfigH(b: *Builder, config_h_text: []const u8) ?CMakeConfig {
824 .prefix = "#define ZIG_CLANG_LIBRARIES ",803 .prefix = "#define ZIG_CLANG_LIBRARIES ",
825 .field = "clang_libraries",804 .field = "clang_libraries",
826 },805 },
827 .{
828 .prefix = "#define ZIG_CLANG_SYSTEM_LIBRARIES ",
829 .field = "clang_system_libraries",
830 },
831 .{806 .{
832 .prefix = "#define ZIG_LLVM_LIBRARIES ",807 .prefix = "#define ZIG_LLVM_LIBRARIES ",
833 .field = "llvm_libraries",808 .field = "llvm_libraries",
834 },809 },
835 .{
836 .prefix = "#define ZIG_LLVM_SYSTEM_LIBRARIES ",
837 .field = "llvm_system_libraries",
838 },
839 .{810 .{
840 .prefix = "#define ZIG_DIA_GUIDS_LIB ",811 .prefix = "#define ZIG_DIA_GUIDS_LIB ",
841 .field = "dia_guids_lib",812 .field = "dia_guids_lib",
cmake/Findclang.cmake+1-2
...@@ -5,7 +5,6 @@...@@ -5,7 +5,6 @@
5# CLANG_FOUND5# CLANG_FOUND
6# CLANG_INCLUDE_DIRS6# CLANG_INCLUDE_DIRS
7# CLANG_LIBRARIES7# CLANG_LIBRARIES
8# CLANG_SYSTEM_LIBRARIES
9# CLANG_LIBDIRS8# CLANG_LIBDIRS
109
11find_path(CLANG_INCLUDE_DIRS NAMES clang/Frontend/ASTUnit.h10find_path(CLANG_INCLUDE_DIRS NAMES clang/Frontend/ASTUnit.h
...@@ -70,7 +69,7 @@ else()...@@ -70,7 +69,7 @@ else()
70endif()69endif()
7170
72if (MSVC)71if (MSVC)
73 set(CLANG_SYSTEM_LIBRARIES "version.lib")72 set(CLANG_LIBRARIES ${CLANG_LIBRARIES} "version.lib")
74endif()73endif()
7574
76include(FindPackageHandleStandardArgs)75include(FindPackageHandleStandardArgs)
cmake/Findllvm.cmake+3-8
...@@ -5,7 +5,6 @@...@@ -5,7 +5,6 @@
5# LLVM_FOUND5# LLVM_FOUND
6# LLVM_INCLUDE_DIRS6# LLVM_INCLUDE_DIRS
7# LLVM_LIBRARIES7# LLVM_LIBRARIES
8# LLVM_SYSTEM_LIBRARIES
9# LLVM_LIBDIRS8# LLVM_LIBDIRS
10# LLVM_LINK_MODE9# LLVM_LINK_MODE
1110
...@@ -173,9 +172,9 @@ if(ZIG_USE_LLVM_CONFIG)...@@ -173,9 +172,9 @@ if(ZIG_USE_LLVM_CONFIG)
173 OUTPUT_STRIP_TRAILING_WHITESPACE)172 OUTPUT_STRIP_TRAILING_WHITESPACE)
174 string(REPLACE " " ";" LLVM_STATIC_SYSTEM_LIBS "${LLVM_STATIC_SYSTEM_LIBS_SPACES}")173 string(REPLACE " " ";" LLVM_STATIC_SYSTEM_LIBS "${LLVM_STATIC_SYSTEM_LIBS_SPACES}")
175174
176 set(LLVM_SYSTEM_LIBRARIES ${LLVM_SYSTEM_LIBS} ${LLVM_STATIC_SYSTEM_LIBS})175 set(LLVM_LIBRARIES ${LLVM_LIBRARIES} ${LLVM_SYSTEM_LIBS} ${LLVM_STATIC_SYSTEM_LIBS})
177 else()176 else()
178 set(LLVM_SYSTEM_LIBRARIES ${LLVM_SYSTEM_LIBS})177 set(LLVM_LIBRARIES ${LLVM_LIBRARIES} ${LLVM_SYSTEM_LIBS})
179 endif()178 endif()
180179
181 execute_process(180 execute_process(
...@@ -370,11 +369,7 @@ else()...@@ -370,11 +369,7 @@ else()
370 find_path(LLVM_INCLUDE_DIRS NAMES llvm/IR/IRBuilder.h)369 find_path(LLVM_INCLUDE_DIRS NAMES llvm/IR/IRBuilder.h)
371endif()370endif()
372371
373if(NOT LLVM_SYSTEM_LIBRARIES)
374 set(LLVM_SYSTEM_LIBRARIES "")
375endif()
376
377include(FindPackageHandleStandardArgs)372include(FindPackageHandleStandardArgs)
378find_package_handle_standard_args(llvm DEFAULT_MSG LLVM_LIBRARIES LLVM_INCLUDE_DIRS)373find_package_handle_standard_args(llvm DEFAULT_MSG LLVM_LIBRARIES LLVM_INCLUDE_DIRS)
379374
380mark_as_advanced(LLVM_INCLUDE_DIRS LLVM_LIBRARIES LLVM_SYSTEM_LIBRARIES LLVM_LIBDIRS)375mark_as_advanced(LLVM_INCLUDE_DIRS LLVM_LIBRARIES LLVM_LIBDIRS)
stage1/config.h.in-2
...@@ -16,7 +16,6 @@...@@ -16,7 +16,6 @@
1616
17// Used by build.zig for communicating build information to self hosted build.17// Used by build.zig for communicating build information to self hosted build.
18#define ZIG_CLANG_LIBRARIES "@CLANG_LIBRARIES@"18#define ZIG_CLANG_LIBRARIES "@CLANG_LIBRARIES@"
19#define ZIG_CLANG_SYSTEM_LIBRARIES "@CLANG_SYSTEM_LIBRARIES@"
20#define ZIG_CMAKE_BINARY_DIR "@CMAKE_BINARY_DIR@"19#define ZIG_CMAKE_BINARY_DIR "@CMAKE_BINARY_DIR@"
21#define ZIG_CMAKE_PREFIX_PATH "@ZIG_CMAKE_PREFIX_PATH@"20#define ZIG_CMAKE_PREFIX_PATH "@ZIG_CMAKE_PREFIX_PATH@"
22#define ZIG_CMAKE_STATIC_LIBRARY_PREFIX "@CMAKE_STATIC_LIBRARY_PREFIX@"21#define ZIG_CMAKE_STATIC_LIBRARY_PREFIX "@CMAKE_STATIC_LIBRARY_PREFIX@"
...@@ -29,6 +28,5 @@...@@ -29,6 +28,5 @@
29#define ZIG_LLVM_LIBRARIES "@LLVM_LIBRARIES@"28#define ZIG_LLVM_LIBRARIES "@LLVM_LIBRARIES@"
30#define ZIG_LLVM_LIB_PATH "@LLVM_LIBDIRS@"29#define ZIG_LLVM_LIB_PATH "@LLVM_LIBDIRS@"
31#define ZIG_LLVM_LINK_MODE "@LLVM_LINK_MODE@"30#define ZIG_LLVM_LINK_MODE "@LLVM_LINK_MODE@"
32#define ZIG_LLVM_SYSTEM_LIBRARIES "@LLVM_SYSTEM_LIBRARIES@"
3331
34#endif32#endif