Skip to content

Commit 3cacbea

Browse files
committed
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
1 parent f5135f8 commit 3cacbea

5 files changed

Lines changed: 11 additions & 49 deletions

File tree

CMakeLists.txt

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -133,9 +133,9 @@ find_package(lld 15)
133133

134134
if(ZIG_STATIC_ZLIB)
135135
if (MSVC)
136-
list(REMOVE_ITEM LLVM_SYSTEM_LIBRARIES "z.lib")
136+
list(REMOVE_ITEM LLVM_LIBRARIES "z.lib")
137137
else()
138-
list(REMOVE_ITEM LLVM_SYSTEM_LIBRARIES "-lz")
138+
list(REMOVE_ITEM LLVM_LIBRARIES "-lz")
139139
endif()
140140

141141
find_library(ZLIB NAMES libz.a libzlibstatic.a z zlib libz NAMES_PER_DIR)
@@ -144,17 +144,17 @@ endif()
144144

145145
if(ZIG_STATIC_ZSTD)
146146
if (MSVC)
147-
list(REMOVE_ITEM LLVM_SYSTEM_LIBRARIES "zstd.lib")
147+
list(REMOVE_ITEM LLVM_LIBRARIES "zstd.lib")
148148
else()
149-
list(REMOVE_ITEM LLVM_SYSTEM_LIBRARIES "-lzstd")
149+
list(REMOVE_ITEM LLVM_LIBRARIES "-lzstd")
150150
endif()
151151

152152
find_library(ZSTD NAMES libzstd.a libzstdstatic.a zstd NAMES_PER_DIR)
153153
list(APPEND LLVM_LIBRARIES "${ZSTD}")
154154
endif()
155155

156156
if(APPLE AND ZIG_STATIC)
157-
list(REMOVE_ITEM LLVM_SYSTEM_LIBRARIES "-lcurses")
157+
list(REMOVE_ITEM LLVM_LIBRARIES "-lcurses")
158158
find_library(CURSES NAMES libcurses.a libncurses.a NAMES_PER_DIR
159159
PATHS
160160
/usr/local/opt/ncurses/lib
@@ -710,7 +710,6 @@ target_link_libraries(zigcpp LINK_PUBLIC
710710
${CLANG_LIBRARIES}
711711
${LLD_LIBRARIES}
712712
${LLVM_LIBRARIES}
713-
${LLVM_SYSTEM_LIBRARIES}
714713
${CMAKE_THREAD_LIBS_INIT}
715714
)
716715

build.zig

Lines changed: 2 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -552,8 +552,6 @@ fn addCmakeCfgOptionsToExe(
552552
addCMakeLibraryList(exe, cfg.clang_libraries);
553553
addCMakeLibraryList(exe, cfg.lld_libraries);
554554
addCMakeLibraryList(exe, cfg.llvm_libraries);
555-
addCMakeSystemLibraryList(exe, cfg.clang_system_libraries);
556-
addCMakeSystemLibraryList(exe, cfg.llvm_system_libraries);
557555

558556
if (use_zig_libcxx) {
559557
exe.linkLibCpp();
@@ -683,29 +681,14 @@ fn addCMakeLibraryList(exe: *std.build.LibExeObjStep, list: []const u8) void {
683681
while (it.next()) |lib| {
684682
if (mem.startsWith(u8, lib, "-l")) {
685683
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]);
686686
} else {
687687
exe.addObjectFile(lib);
688688
}
689689
}
690690
}
691691

692-
fn 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-
709692
const CMakeConfig = struct {
710693
llvm_linkage: std.build.LibExeObjStep.Linkage,
711694
cmake_binary_dir: []const u8,
@@ -716,11 +699,9 @@ const CMakeConfig = struct {
716699
lld_include_dir: []const u8,
717700
lld_libraries: []const u8,
718701
clang_libraries: []const u8,
719-
clang_system_libraries: []const u8,
720702
llvm_lib_dir: []const u8,
721703
llvm_include_dir: []const u8,
722704
llvm_libraries: []const u8,
723-
llvm_system_libraries: []const u8,
724705
dia_guids_lib: []const u8,
725706
};
726707

@@ -783,11 +764,9 @@ fn parseConfigH(b: *Builder, config_h_text: []const u8) ?CMakeConfig {
783764
.lld_include_dir = undefined,
784765
.lld_libraries = undefined,
785766
.clang_libraries = undefined,
786-
.clang_system_libraries = undefined,
787767
.llvm_lib_dir = undefined,
788768
.llvm_include_dir = undefined,
789769
.llvm_libraries = undefined,
790-
.llvm_system_libraries = undefined,
791770
.dia_guids_lib = undefined,
792771
};
793772

@@ -824,18 +803,10 @@ fn parseConfigH(b: *Builder, config_h_text: []const u8) ?CMakeConfig {
824803
.prefix = "#define ZIG_CLANG_LIBRARIES ",
825804
.field = "clang_libraries",
826805
},
827-
.{
828-
.prefix = "#define ZIG_CLANG_SYSTEM_LIBRARIES ",
829-
.field = "clang_system_libraries",
830-
},
831806
.{
832807
.prefix = "#define ZIG_LLVM_LIBRARIES ",
833808
.field = "llvm_libraries",
834809
},
835-
.{
836-
.prefix = "#define ZIG_LLVM_SYSTEM_LIBRARIES ",
837-
.field = "llvm_system_libraries",
838-
},
839810
.{
840811
.prefix = "#define ZIG_DIA_GUIDS_LIB ",
841812
.field = "dia_guids_lib",

cmake/Findclang.cmake

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@
55
# CLANG_FOUND
66
# CLANG_INCLUDE_DIRS
77
# CLANG_LIBRARIES
8-
# CLANG_SYSTEM_LIBRARIES
98
# CLANG_LIBDIRS
109

1110
find_path(CLANG_INCLUDE_DIRS NAMES clang/Frontend/ASTUnit.h
@@ -70,7 +69,7 @@ else()
7069
endif()
7170

7271
if (MSVC)
73-
set(CLANG_SYSTEM_LIBRARIES "version.lib")
72+
set(CLANG_LIBRARIES ${CLANG_LIBRARIES} "version.lib")
7473
endif()
7574

7675
include(FindPackageHandleStandardArgs)

cmake/Findllvm.cmake

Lines changed: 3 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@
55
# LLVM_FOUND
66
# LLVM_INCLUDE_DIRS
77
# LLVM_LIBRARIES
8-
# LLVM_SYSTEM_LIBRARIES
98
# LLVM_LIBDIRS
109
# LLVM_LINK_MODE
1110

@@ -173,9 +172,9 @@ if(ZIG_USE_LLVM_CONFIG)
173172
OUTPUT_STRIP_TRAILING_WHITESPACE)
174173
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})
177176
else()
178-
set(LLVM_SYSTEM_LIBRARIES ${LLVM_SYSTEM_LIBS})
177+
set(LLVM_LIBRARIES ${LLVM_LIBRARIES} ${LLVM_SYSTEM_LIBS})
179178
endif()
180179

181180
execute_process(
@@ -370,11 +369,7 @@ else()
370369
find_path(LLVM_INCLUDE_DIRS NAMES llvm/IR/IRBuilder.h)
371370
endif()
372371

373-
if(NOT LLVM_SYSTEM_LIBRARIES)
374-
set(LLVM_SYSTEM_LIBRARIES "")
375-
endif()
376-
377372
include(FindPackageHandleStandardArgs)
378373
find_package_handle_standard_args(llvm DEFAULT_MSG LLVM_LIBRARIES LLVM_INCLUDE_DIRS)
379374

380-
mark_as_advanced(LLVM_INCLUDE_DIRS LLVM_LIBRARIES LLVM_SYSTEM_LIBRARIES LLVM_LIBDIRS)
375+
mark_as_advanced(LLVM_INCLUDE_DIRS LLVM_LIBRARIES LLVM_LIBDIRS)

stage1/config.h.in

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,6 @@
1616

1717
// Used by build.zig for communicating build information to self hosted build.
1818
#define ZIG_CLANG_LIBRARIES "@CLANG_LIBRARIES@"
19-
#define ZIG_CLANG_SYSTEM_LIBRARIES "@CLANG_SYSTEM_LIBRARIES@"
2019
#define ZIG_CMAKE_BINARY_DIR "@CMAKE_BINARY_DIR@"
2120
#define ZIG_CMAKE_PREFIX_PATH "@ZIG_CMAKE_PREFIX_PATH@"
2221
#define ZIG_CMAKE_STATIC_LIBRARY_PREFIX "@CMAKE_STATIC_LIBRARY_PREFIX@"
@@ -29,6 +28,5 @@
2928
#define ZIG_LLVM_LIBRARIES "@LLVM_LIBRARIES@"
3029
#define ZIG_LLVM_LIB_PATH "@LLVM_LIBDIRS@"
3130
#define ZIG_LLVM_LINK_MODE "@LLVM_LINK_MODE@"
32-
#define ZIG_LLVM_SYSTEM_LIBRARIES "@LLVM_SYSTEM_LIBRARIES@"
3331

3432
#endif

0 commit comments

Comments
 (0)