@@ -22,6 +22,9 @@ set(ZIG_EACH_LIB_RPATH off CACHE BOOL "Add each dynamic library to rpath for nat
22
22
23
23
option (ZIG_TEST_COVERAGE "Build Zig with test coverage instrumentation" OFF )
24
24
25
+ # To see what patches have been applied to LLD in this repository:
26
+ # git log -p -- deps/lld
27
+ option (ZIG_FORCE_EXTERNAL_LLD "If your system has the LLD patches use it instead of the embedded LLD" OFF )
25
28
26
29
27
30
find_package (llvm)
@@ -31,8 +34,137 @@ link_directories(${LLVM_LIBDIRS})
31
34
find_package (clang)
32
35
include_directories (${CLANG_INCLUDE_DIRS} )
33
36
34
- find_package (lld)
35
- include_directories (${LLD_INCLUDE_DIRS} )
37
+ if (ZIG_FORCE_EXTERNAL_LLD)
38
+ find_package (lld)
39
+ include_directories (${LLD_INCLUDE_DIRS} )
40
+ else ()
41
+ set (EMBEDDED_LLD_LIB_SOURCES
42
+ "${CMAKE_SOURCE_DIR} /deps/lld/lib/Driver/DarwinLdDriver.cpp"
43
+ "${CMAKE_SOURCE_DIR} /deps/lld/lib/Config/Version.cpp"
44
+ "${CMAKE_SOURCE_DIR} /deps/lld/lib/ReaderWriter/YAML/ReaderWriterYAML.cpp"
45
+ "${CMAKE_SOURCE_DIR} /deps/lld/lib/ReaderWriter/MachO/LayoutPass.cpp"
46
+ "${CMAKE_SOURCE_DIR} /deps/lld/lib/ReaderWriter/MachO/ArchHandler.cpp"
47
+ "${CMAKE_SOURCE_DIR} /deps/lld/lib/ReaderWriter/MachO/ArchHandler_arm64.cpp"
48
+ "${CMAKE_SOURCE_DIR} /deps/lld/lib/ReaderWriter/MachO/ObjCPass.cpp"
49
+ "${CMAKE_SOURCE_DIR} /deps/lld/lib/ReaderWriter/MachO/MachONormalizedFileBinaryReader.cpp"
50
+ "${CMAKE_SOURCE_DIR} /deps/lld/lib/ReaderWriter/MachO/CompactUnwindPass.cpp"
51
+ "${CMAKE_SOURCE_DIR} /deps/lld/lib/ReaderWriter/MachO/MachONormalizedFileToAtoms.cpp"
52
+ "${CMAKE_SOURCE_DIR} /deps/lld/lib/ReaderWriter/MachO/TLVPass.cpp"
53
+ "${CMAKE_SOURCE_DIR} /deps/lld/lib/ReaderWriter/MachO/MachONormalizedFileYAML.cpp"
54
+ "${CMAKE_SOURCE_DIR} /deps/lld/lib/ReaderWriter/MachO/GOTPass.cpp"
55
+ "${CMAKE_SOURCE_DIR} /deps/lld/lib/ReaderWriter/MachO/ArchHandler_x86.cpp"
56
+ "${CMAKE_SOURCE_DIR} /deps/lld/lib/ReaderWriter/MachO/MachONormalizedFileBinaryWriter.cpp"
57
+ "${CMAKE_SOURCE_DIR} /deps/lld/lib/ReaderWriter/MachO/ArchHandler_x86_64.cpp"
58
+ "${CMAKE_SOURCE_DIR} /deps/lld/lib/ReaderWriter/MachO/MachOLinkingContext.cpp"
59
+ "${CMAKE_SOURCE_DIR} /deps/lld/lib/ReaderWriter/MachO/ShimPass.cpp"
60
+ "${CMAKE_SOURCE_DIR} /deps/lld/lib/ReaderWriter/MachO/WriterMachO.cpp"
61
+ "${CMAKE_SOURCE_DIR} /deps/lld/lib/ReaderWriter/MachO/StubsPass.cpp"
62
+ "${CMAKE_SOURCE_DIR} /deps/lld/lib/ReaderWriter/MachO/ArchHandler_arm.cpp"
63
+ "${CMAKE_SOURCE_DIR} /deps/lld/lib/ReaderWriter/MachO/MachONormalizedFileFromAtoms.cpp"
64
+ "${CMAKE_SOURCE_DIR} /deps/lld/lib/ReaderWriter/FileArchive.cpp"
65
+ "${CMAKE_SOURCE_DIR} /deps/lld/lib/Core/TargetOptionsCommandFlags.cpp"
66
+ "${CMAKE_SOURCE_DIR} /deps/lld/lib/Core/File.cpp"
67
+ "${CMAKE_SOURCE_DIR} /deps/lld/lib/Core/Error.cpp"
68
+ "${CMAKE_SOURCE_DIR} /deps/lld/lib/Core/SymbolTable.cpp"
69
+ "${CMAKE_SOURCE_DIR} /deps/lld/lib/Core/Reader.cpp"
70
+ "${CMAKE_SOURCE_DIR} /deps/lld/lib/Core/Reproduce.cpp"
71
+ "${CMAKE_SOURCE_DIR} /deps/lld/lib/Core/Writer.cpp"
72
+ "${CMAKE_SOURCE_DIR} /deps/lld/lib/Core/LinkingContext.cpp"
73
+ "${CMAKE_SOURCE_DIR} /deps/lld/lib/Core/Resolver.cpp"
74
+ "${CMAKE_SOURCE_DIR} /deps/lld/lib/Core/DefinedAtom.cpp"
75
+ )
76
+ set (EMBEDDED_LLD_ELF_SOURCES
77
+ "${CMAKE_SOURCE_DIR} /deps/lld/ELF/ScriptLexer.cpp"
78
+ "${CMAKE_SOURCE_DIR} /deps/lld/ELF/Arch/AMDGPU.cpp"
79
+ "${CMAKE_SOURCE_DIR} /deps/lld/ELF/Arch/PPC.cpp"
80
+ "${CMAKE_SOURCE_DIR} /deps/lld/ELF/Arch/ARM.cpp"
81
+ "${CMAKE_SOURCE_DIR} /deps/lld/ELF/Arch/AVR.cpp"
82
+ "${CMAKE_SOURCE_DIR} /deps/lld/ELF/Arch/SPARCV9.cpp"
83
+ "${CMAKE_SOURCE_DIR} /deps/lld/ELF/Arch/Mips.cpp"
84
+ "${CMAKE_SOURCE_DIR} /deps/lld/ELF/Arch/AArch64.cpp"
85
+ "${CMAKE_SOURCE_DIR} /deps/lld/ELF/Arch/X86_64.cpp"
86
+ "${CMAKE_SOURCE_DIR} /deps/lld/ELF/Arch/PPC64.cpp"
87
+ "${CMAKE_SOURCE_DIR} /deps/lld/ELF/Arch/MipsArchTree.cpp"
88
+ "${CMAKE_SOURCE_DIR} /deps/lld/ELF/Arch/X86.cpp"
89
+ "${CMAKE_SOURCE_DIR} /deps/lld/ELF/GdbIndex.cpp"
90
+ "${CMAKE_SOURCE_DIR} /deps/lld/ELF/Driver.cpp"
91
+ "${CMAKE_SOURCE_DIR} /deps/lld/ELF/Relocations.cpp"
92
+ "${CMAKE_SOURCE_DIR} /deps/lld/ELF/Error.cpp"
93
+ "${CMAKE_SOURCE_DIR} /deps/lld/ELF/LTO.cpp"
94
+ "${CMAKE_SOURCE_DIR} /deps/lld/ELF/Strings.cpp"
95
+ "${CMAKE_SOURCE_DIR} /deps/lld/ELF/ScriptParser.cpp"
96
+ "${CMAKE_SOURCE_DIR} /deps/lld/ELF/MarkLive.cpp"
97
+ "${CMAKE_SOURCE_DIR} /deps/lld/ELF/SyntheticSections.cpp"
98
+ "${CMAKE_SOURCE_DIR} /deps/lld/ELF/SymbolTable.cpp"
99
+ "${CMAKE_SOURCE_DIR} /deps/lld/ELF/LinkerScript.cpp"
100
+ "${CMAKE_SOURCE_DIR} /deps/lld/ELF/EhFrame.cpp"
101
+ "${CMAKE_SOURCE_DIR} /deps/lld/ELF/Target.cpp"
102
+ "${CMAKE_SOURCE_DIR} /deps/lld/ELF/Filesystem.cpp"
103
+ "${CMAKE_SOURCE_DIR} /deps/lld/ELF/OutputSections.cpp"
104
+ "${CMAKE_SOURCE_DIR} /deps/lld/ELF/Symbols.cpp"
105
+ "${CMAKE_SOURCE_DIR} /deps/lld/ELF/ICF.cpp"
106
+ "${CMAKE_SOURCE_DIR} /deps/lld/ELF/InputFiles.cpp"
107
+ "${CMAKE_SOURCE_DIR} /deps/lld/ELF/Thunks.cpp"
108
+ "${CMAKE_SOURCE_DIR} /deps/lld/ELF/DriverUtils.cpp"
109
+ "${CMAKE_SOURCE_DIR} /deps/lld/ELF/Writer.cpp"
110
+ "${CMAKE_SOURCE_DIR} /deps/lld/ELF/InputSection.cpp"
111
+ "${CMAKE_SOURCE_DIR} /deps/lld/ELF/MapFile.cpp"
112
+ )
113
+ set (EMBEDDED_LLD_COFF_SOURCES
114
+ "${CMAKE_SOURCE_DIR} /deps/lld/COFF/DLL.cpp"
115
+ "${CMAKE_SOURCE_DIR} /deps/lld/COFF/Driver.cpp"
116
+ "${CMAKE_SOURCE_DIR} /deps/lld/COFF/Chunks.cpp"
117
+ "${CMAKE_SOURCE_DIR} /deps/lld/COFF/PDB.cpp"
118
+ "${CMAKE_SOURCE_DIR} /deps/lld/COFF/Error.cpp"
119
+ "${CMAKE_SOURCE_DIR} /deps/lld/COFF/LTO.cpp"
120
+ "${CMAKE_SOURCE_DIR} /deps/lld/COFF/Strings.cpp"
121
+ "${CMAKE_SOURCE_DIR} /deps/lld/COFF/MarkLive.cpp"
122
+ "${CMAKE_SOURCE_DIR} /deps/lld/COFF/SymbolTable.cpp"
123
+ "${CMAKE_SOURCE_DIR} /deps/lld/COFF/Symbols.cpp"
124
+ "${CMAKE_SOURCE_DIR} /deps/lld/COFF/ICF.cpp"
125
+ "${CMAKE_SOURCE_DIR} /deps/lld/COFF/InputFiles.cpp"
126
+ "${CMAKE_SOURCE_DIR} /deps/lld/COFF/DriverUtils.cpp"
127
+ "${CMAKE_SOURCE_DIR} /deps/lld/COFF/Writer.cpp"
128
+ "${CMAKE_SOURCE_DIR} /deps/lld/COFF/MapFile.cpp"
129
+ )
130
+ add_library (embedded_lld_lib ${EMBEDDED_LLD_LIB_SOURCES} )
131
+ add_library (embedded_lld_elf ${EMBEDDED_LLD_ELF_SOURCES} )
132
+ add_library (embedded_lld_coff ${EMBEDDED_LLD_COFF_SOURCES} )
133
+ set_target_properties (embedded_lld_lib PROPERTIES
134
+ COMPILE_FLAGS "-std=c++11 -fno-exceptions -fno-rtti -Wno-comment"
135
+ LINK_FLAGS " "
136
+ )
137
+ set_target_properties (embedded_lld_elf PROPERTIES
138
+ COMPILE_FLAGS "-std=c++11 -fno-exceptions -fno-rtti -Wno-comment"
139
+ LINK_FLAGS " "
140
+ )
141
+ set_target_properties (embedded_lld_coff PROPERTIES
142
+ COMPILE_FLAGS "-std=c++11 -fno-exceptions -fno-rtti -Wno-comment"
143
+ LINK_FLAGS " "
144
+ )
145
+ target_include_directories (embedded_lld_lib PUBLIC
146
+ "${CMAKE_SOURCE_DIR} /deps/lld/include"
147
+ "${CMAKE_SOURCE_DIR} /deps/lld-prebuilt"
148
+ )
149
+ target_include_directories (embedded_lld_elf PUBLIC
150
+ "${CMAKE_SOURCE_DIR} /deps/lld/ELF"
151
+ "${CMAKE_SOURCE_DIR} /deps/lld/include"
152
+ "${CMAKE_SOURCE_DIR} /deps/lld-prebuilt/ELF"
153
+ "${CMAKE_SOURCE_DIR} /deps/lld-prebuilt"
154
+ )
155
+ target_include_directories (embedded_lld_coff PUBLIC
156
+ "${CMAKE_SOURCE_DIR} /deps/lld/COFF"
157
+ "${CMAKE_SOURCE_DIR} /deps/lld/include"
158
+ "${CMAKE_SOURCE_DIR} /deps/lld-prebuilt/COFF"
159
+ "${CMAKE_SOURCE_DIR} /deps/lld-prebuilt"
160
+ )
161
+ set (LLD_INCLUDE_DIRS "" )
162
+ set (LLD_LIBRARIES
163
+ embedded_lld_elf
164
+ embedded_lld_coff
165
+ embedded_lld_lib
166
+ )
167
+ endif ()
36
168
37
169
find_package (Threads)
38
170
@@ -65,26 +197,6 @@ set(ZIG_SOURCES
65
197
"${CMAKE_SOURCE_DIR} /src/zig_llvm.cpp"
66
198
)
67
199
68
- set (ZIG_HOST_LINK_VERSION)
69
- if (APPLE )
70
- set (LD_V_OUTPUT)
71
- execute_process (
72
- COMMAND sh -c "${CMAKE_LINKER} -v 2>&1 | head -1"
73
- RESULT_VARIABLE HAD_ERROR
74
- OUTPUT_VARIABLE LD_V_OUTPUT
75
- )
76
- if (NOT HAD_ERROR)
77
- if ("${LD_V_OUTPUT} " MATCHES ".*ld64-([0-9.]+).*" )
78
- string (REGEX REPLACE ".*ld64-([0-9.]+).*" "\\ 1" ZIG_HOST_LINK_VERSION ${LD_V_OUTPUT} )
79
- elseif ("${LD_V_OUTPUT} " MATCHES "[^0-9]*([0-9.]+).*" )
80
- string (REGEX REPLACE "[^0-9]*([0-9.]+).*" "\\ 1" ZIG_HOST_LINK_VERSION ${LD_V_OUTPUT} )
81
- endif ()
82
- else ()
83
- message (FATAL_ERROR "${CMAKE_LINKER} failed with status ${HAD_ERROR} " )
84
- endif ()
85
- endif ()
86
-
87
-
88
200
set (C_HEADERS_DEST "lib/zig/include" )
89
201
set (ZIG_STD_DEST "lib/zig/std" )
90
202
set (CONFIGURE_OUT_FILE "${CMAKE_BINARY_DIR} /config.h" )
@@ -297,10 +409,10 @@ install(FILES "${CMAKE_SOURCE_DIR}/std/mem.zig" DESTINATION "${ZIG_STD_DEST}")
297
409
install (FILES "${CMAKE_SOURCE_DIR} /std/net.zig" DESTINATION "${ZIG_STD_DEST} " )
298
410
install (FILES "${CMAKE_SOURCE_DIR} /std/os/child_process.zig" DESTINATION "${ZIG_STD_DEST} /os" )
299
411
install (FILES "${CMAKE_SOURCE_DIR} /std/os/darwin.zig" DESTINATION "${ZIG_STD_DEST} /os" )
300
- install (FILES "${CMAKE_SOURCE_DIR} /std/os/darwin_x86_64.zig" DESTINATION "${ZIG_STD_DEST} /os" )
301
- install (FILES "${CMAKE_SOURCE_DIR} /std/os/errno.zig" DESTINATION "${ZIG_STD_DEST} /os" )
412
+ install (FILES "${CMAKE_SOURCE_DIR} /std/os/darwin_errno.zig" DESTINATION "${ZIG_STD_DEST} /os" )
302
413
install (FILES "${CMAKE_SOURCE_DIR} /std/os/index.zig" DESTINATION "${ZIG_STD_DEST} /os" )
303
414
install (FILES "${CMAKE_SOURCE_DIR} /std/os/linux.zig" DESTINATION "${ZIG_STD_DEST} /os" )
415
+ install (FILES "${CMAKE_SOURCE_DIR} /std/os/linux_errno.zig" DESTINATION "${ZIG_STD_DEST} /os" )
304
416
install (FILES "${CMAKE_SOURCE_DIR} /std/os/linux_i386.zig" DESTINATION "${ZIG_STD_DEST} /os" )
305
417
install (FILES "${CMAKE_SOURCE_DIR} /std/os/linux_x86_64.zig" DESTINATION "${ZIG_STD_DEST} /os" )
306
418
install (FILES "${CMAKE_SOURCE_DIR} /std/os/path.zig" DESTINATION "${ZIG_STD_DEST} /os" )
0 commit comments