| author | |
| committer | |
| log | 8f92a49dfde5e8690525da028844cb7c1188d397 |
| tree | 6974ac66da2a301b8a845bb9008de02ecc4ed39e |
| parent | c0b4121ff2d31b2ef37e480eec18f0bd063d7a2d |
| signature |
8 files changed, 59 insertions(+), 34 deletions(-)
README.md+5-5| ... | ... | @@ -26,14 +26,14 @@ Note that you can |
| 26 | 26 | |
| 27 | 27 | * cmake >= 2.8.5 |
| 28 | 28 | * gcc >= 5.0.0 or clang >= 3.6.0 |
| 29 | * LLVM, Clang, LLD development libraries == 8.x, compiled with the same gcc or clang version above | |
| 29 | * LLVM, Clang, LLD development libraries == 9.x, compiled with the same gcc or clang version above | |
| 30 | 30 | - Use the system package manager, or [build from source](https://github.com/ziglang/zig/wiki/How-to-build-LLVM,-libclang,-and-liblld-from-source#posix). |
| 31 | 31 | |
| 32 | 32 | ##### Windows |
| 33 | 33 | |
| 34 | 34 | * cmake >= 2.8.5 |
| 35 | 35 | * Microsoft Visual Studio 2017 (version 15.8) |
| 36 | * LLVM, Clang, LLD development libraries == 8.x, compiled with the same MSVC version above | |
| 36 | * LLVM, Clang, LLD development libraries == 9.x, compiled with the same MSVC version above | |
| 37 | 37 | - Use the [pre-built binaries](https://github.com/ziglang/zig/wiki/How-to-build-LLVM,-libclang,-and-liblld-from-source#pre-built-binaries) or [build from source](https://github.com/ziglang/zig/wiki/How-to-build-LLVM,-libclang,-and-liblld-from-source#windows). |
| 38 | 38 | |
| 39 | 39 | #### Instructions |
| ... | ... | @@ -50,11 +50,11 @@ make install |
| 50 | 50 | ##### MacOS |
| 51 | 51 | |
| 52 | 52 | ``` |
| 53 | brew install cmake llvm@8 | |
| 54 | brew outdated llvm@8 || brew upgrade llvm@8 | |
| 53 | brew install cmake llvm@9 | |
| 54 | brew outdated llvm@9 || brew upgrade llvm@9 | |
| 55 | 55 | mkdir build |
| 56 | 56 | cd build |
| 57 | cmake .. -DCMAKE_PREFIX_PATH=/usr/local/Cellar/llvm/8.0.0_1 | |
| 57 | cmake .. -DCMAKE_PREFIX_PATH=/usr/local/Cellar/llvm/9.0.0 | |
| 58 | 58 | make install |
| 59 | 59 | ``` |
| 60 | 60 |
cmake/Findclang.cmake+8-8| ... | ... | @@ -38,10 +38,10 @@ if(MSVC) |
| 38 | 38 | else() |
| 39 | 39 | find_path(CLANG_INCLUDE_DIRS NAMES clang/Frontend/ASTUnit.h |
| 40 | 40 | PATHS |
| 41 | /usr/lib/llvm/8/include | |
| 42 | /usr/lib/llvm-8/include | |
| 43 | /usr/lib/llvm-8.0/include | |
| 44 | /usr/local/llvm80/include | |
| 41 | /usr/lib/llvm/9/include | |
| 42 | /usr/lib/llvm-9/include | |
| 43 | /usr/lib/llvm-9.0/include | |
| 44 | /usr/local/llvm90/include | |
| 45 | 45 | /mingw64/include) |
| 46 | 46 | |
| 47 | 47 | macro(FIND_AND_ADD_CLANG_LIB _libname_) |
| ... | ... | @@ -49,10 +49,10 @@ else() |
| 49 | 49 | find_library(CLANG_${_prettylibname_}_LIB NAMES ${_libname_} |
| 50 | 50 | PATHS |
| 51 | 51 | ${CLANG_LIBDIRS} |
| 52 | /usr/lib/llvm/8/lib | |
| 53 | /usr/lib/llvm-8/lib | |
| 54 | /usr/lib/llvm-8.0/lib | |
| 55 | /usr/local/llvm80/lib | |
| 52 | /usr/lib/llvm/9/lib | |
| 53 | /usr/lib/llvm-9/lib | |
| 54 | /usr/lib/llvm-9.0/lib | |
| 55 | /usr/local/llvm90/lib | |
| 56 | 56 | /mingw64/lib |
| 57 | 57 | /c/msys64/mingw64/lib |
| 58 | 58 | c:\\msys64\\mingw64\\lib) |
cmake/Findlld.cmake+7-7| ... | ... | @@ -8,14 +8,14 @@ |
| 8 | 8 | |
| 9 | 9 | find_path(LLD_INCLUDE_DIRS NAMES lld/Common/Driver.h |
| 10 | 10 | PATHS |
| 11 | /usr/lib/llvm-8.0/include | |
| 12 | /usr/local/llvm80/include | |
| 11 | /usr/lib/llvm-9.0/include | |
| 12 | /usr/local/llvm90/include | |
| 13 | 13 | /mingw64/include) |
| 14 | 14 | |
| 15 | find_library(LLD_LIBRARY NAMES lld-8.0 lld80 lld | |
| 15 | find_library(LLD_LIBRARY NAMES lld-9.0 lld90 lld | |
| 16 | 16 | PATHS |
| 17 | /usr/lib/llvm-8.0/lib | |
| 18 | /usr/local/llvm80/lib | |
| 17 | /usr/lib/llvm-9.0/lib | |
| 18 | /usr/local/llvm90/lib | |
| 19 | 19 | ) |
| 20 | 20 | if(EXISTS ${LLD_LIBRARY}) |
| 21 | 21 | set(LLD_LIBRARIES ${LLD_LIBRARY}) |
| ... | ... | @@ -24,8 +24,8 @@ else() |
| 24 | 24 | string(TOUPPER ${_libname_} _prettylibname_) |
| 25 | 25 | find_library(LLD_${_prettylibname_}_LIB NAMES ${_libname_} |
| 26 | 26 | PATHS |
| 27 | /usr/lib/llvm-8.0/lib | |
| 28 | /usr/local/llvm80/lib | |
| 27 | /usr/lib/llvm-9.0/lib | |
| 28 | /usr/local/llvm90/lib | |
| 29 | 29 | /mingw64/lib |
| 30 | 30 | /c/msys64/mingw64/lib |
| 31 | 31 | c:/msys64/mingw64/lib) |
cmake/Findllvm.cmake+9-9| ... | ... | @@ -8,12 +8,12 @@ |
| 8 | 8 | # LLVM_LIBDIRS |
| 9 | 9 | |
| 10 | 10 | find_program(LLVM_CONFIG_EXE |
| 11 | NAMES llvm-config-8 llvm-config-8.0 llvm-config80 llvm-config | |
| 11 | NAMES llvm-config-9 llvm-config-9.0 llvm-config90 llvm-config | |
| 12 | 12 | PATHS |
| 13 | 13 | "/mingw64/bin" |
| 14 | 14 | "/c/msys64/mingw64/bin" |
| 15 | 15 | "c:/msys64/mingw64/bin" |
| 16 | "C:/Libraries/llvm-8.0.0/bin") | |
| 16 | "C:/Libraries/llvm-9.0.0/bin") | |
| 17 | 17 | |
| 18 | 18 | if ("${LLVM_CONFIG_EXE}" STREQUAL "LLVM_CONFIG_EXE-NOTFOUND") |
| 19 | 19 | message(FATAL_ERROR "unable to find llvm-config") |
| ... | ... | @@ -28,14 +28,14 @@ execute_process( |
| 28 | 28 | 	OUTPUT_VARIABLE LLVM_CONFIG_VERSION |
| 29 | 29 | 	OUTPUT_STRIP_TRAILING_WHITESPACE) |
| 30 | 30 | |
| 31 | if("${LLVM_CONFIG_VERSION}" VERSION_LESS 8) | |
| 32 | message(FATAL_ERROR "expected LLVM 8.x but found ${LLVM_CONFIG_VERSION}") | |
| 31 | if("${LLVM_CONFIG_VERSION}" VERSION_LESS 9) | |
| 32 | message(FATAL_ERROR "expected LLVM 9.x but found ${LLVM_CONFIG_VERSION}") | |
| 33 | 33 | endif() |
| 34 | if("${LLVM_CONFIG_VERSION}" VERSION_EQUAL 9) | |
| 35 | message(FATAL_ERROR "expected LLVM 8.x but found ${LLVM_CONFIG_VERSION}") | |
| 34 | if("${LLVM_CONFIG_VERSION}" VERSION_EQUAL 10) | |
| 35 | message(FATAL_ERROR "expected LLVM 9.x but found ${LLVM_CONFIG_VERSION}") | |
| 36 | 36 | endif() |
| 37 | if("${LLVM_CONFIG_VERSION}" VERSION_GREATER 9) | |
| 38 | message(FATAL_ERROR "expected LLVM 8.x but found ${LLVM_CONFIG_VERSION}") | |
| 37 | if("${LLVM_CONFIG_VERSION}" VERSION_GREATER 10) | |
| 38 | message(FATAL_ERROR "expected LLVM 9.x but found ${LLVM_CONFIG_VERSION}") | |
| 39 | 39 | endif() |
| 40 | 40 | |
| 41 | 41 | execute_process( |
| ... | ... | @@ -112,7 +112,7 @@ execute_process( |
| 112 | 112 | set(LLVM_LIBRARIES ${LLVM_LIBRARIES} ${LLVM_SYSTEM_LIBS}) |
| 113 | 113 | |
| 114 | 114 | if(NOT LLVM_LIBRARIES) |
| 115 | find_library(LLVM_LIBRARIES NAMES LLVM LLVM-8 LLVM-8.0) | |
| 115 | find_library(LLVM_LIBRARIES NAMES LLVM LLVM-9 LLVM-9.0) | |
| 116 | 116 | endif() |
| 117 | 117 | |
| 118 | 118 | link_directories("${CMAKE_PREFIX_PATH}/lib") |
src/target.cpp+7| ... | ... | @@ -33,6 +33,7 @@ static const ZigLLVM_SubArchType subarch_list_arm32[] = { |
| 33 | 33 | ZigLLVM_ARMSubArch_v8r, |
| 34 | 34 | ZigLLVM_ARMSubArch_v8m_baseline, |
| 35 | 35 | ZigLLVM_ARMSubArch_v8m_mainline, |
| 36 | ZigLLVM_ARMSubArch_v8_1m_mainline, | |
| 36 | 37 | ZigLLVM_ARMSubArch_v7, |
| 37 | 38 | ZigLLVM_ARMSubArch_v7em, |
| 38 | 39 | ZigLLVM_ARMSubArch_v7m, |
| ... | ... | @@ -76,6 +77,7 @@ static const ZigLLVM_ArchType arch_list[] = { |
| 76 | 77 | ZigLLVM_armeb, // ARM (big endian): armeb |
| 77 | 78 | ZigLLVM_aarch64, // AArch64 (little endian): aarch64 |
| 78 | 79 | ZigLLVM_aarch64_be, // AArch64 (big endian): aarch64_be |
| 80 | ZigLLVM_aarch64_32, // AArch64 (little endian) ILP32: aarch64_32 | |
| 79 | 81 | ZigLLVM_arc, // ARC: Synopsys ARC |
| 80 | 82 | ZigLLVM_avr, // AVR: Atmel AVR microcontroller |
| 81 | 83 | ZigLLVM_bpfel, // eBPF or extended BPF or 64-bit BPF (little endian) |
| ... | ... | @@ -176,6 +178,7 @@ static const Os os_list[] = { |
| 176 | 178 | OsHermitCore, |
| 177 | 179 | OsHurd, |
| 178 | 180 | OsWASI, |
| 181 | OsEmscripten, | |
| 179 | 182 | OsZen, |
| 180 | 183 | OsUefi, |
| 181 | 184 | }; |
| ... | ... | @@ -193,15 +196,19 @@ static const ZigLLVM_EnvironmentType abi_list[] = { |
| 193 | 196 | ZigLLVM_CODE16, |
| 194 | 197 | ZigLLVM_EABI, |
| 195 | 198 | ZigLLVM_EABIHF, |
| 199 | ZigLLVM_ELFv1, | |
| 200 | ZigLLVM_ELFv2, | |
| 196 | 201 | ZigLLVM_Android, |
| 197 | 202 | ZigLLVM_Musl, |
| 198 | 203 | ZigLLVM_MuslEABI, |
| 199 | 204 | ZigLLVM_MuslEABIHF, |
| 205 | ||
| 200 | 206 | ZigLLVM_MSVC, |
| 201 | 207 | ZigLLVM_Itanium, |
| 202 | 208 | ZigLLVM_Cygnus, |
| 203 | 209 | ZigLLVM_CoreCLR, |
| 204 | 210 | ZigLLVM_Simulator, |
| 211 | ZigLLVM_MacABI, | |
| 205 | 212 | }; |
| 206 | 213 | |
| 207 | 214 | static const ZigLLVM_ObjectFormatType oformat_list[] = { |
src/target.hpp+1| ... | ... | @@ -48,6 +48,7 @@ enum Os { |
| 48 | 48 | OsHermitCore, |
| 49 | 49 | OsHurd, |
| 50 | 50 | OsWASI, |
| 51 | OsEmscripten, | |
| 51 | 52 | OsZen, |
| 52 | 53 | OsUefi, |
| 53 | 54 | }; |
src/zig_llvm.cpp+11-1| ... | ... | @@ -176,7 +176,6 @@ bool ZigLLVMTargetMachineEmitToFile(LLVMTargetMachineRef targ_machine_ref, LLVMM |
| 176 | 176 | PMBuilder->SizeLevel = is_small ? 2 : 0; |
| 177 | 177 | |
| 178 | 178 | PMBuilder->DisableTailCalls = is_debug; |
| 179 | PMBuilder->DisableUnitAtATime = is_debug; | |
| 180 | 179 | PMBuilder->DisableUnrollLoops = is_debug; |
| 181 | 180 | PMBuilder->SLPVectorize = !is_debug; |
| 182 | 181 | PMBuilder->LoopVectorize = !is_debug; |
| ... | ... | @@ -805,6 +804,8 @@ const char *ZigLLVMGetSubArchTypeName(ZigLLVM_SubArchType sub_arch) { |
| 805 | 804 | return "v8m_baseline"; |
| 806 | 805 | case ZigLLVM_ARMSubArch_v8m_mainline: |
| 807 | 806 | return "v8m_mainline"; |
| 807 | case ZigLLVM_ARMSubArch_v8_1m_mainline: | |
| 808 | return "v8_1m_mainline"; | |
| 808 | 809 | case ZigLLVM_ARMSubArch_v7: |
| 809 | 810 | return "v7"; |
| 810 | 811 | case ZigLLVM_ARMSubArch_v7em: |
| ... | ... | @@ -964,6 +965,7 @@ bool ZigLLDLink(ZigLLVM_ObjectFormatType oformat, const char **args, size_t arg_ |
| 964 | 965 | |
| 965 | 966 | switch (oformat) { |
| 966 | 967 | case ZigLLVM_UnknownObjectFormat: |
| 968 | case ZigLLVM_XCOFF: | |
| 967 | 969 | assert(false); // unreachable |
| 968 | 970 | |
| 969 | 971 | case ZigLLVM_COFF: |
| ... | ... | @@ -1043,6 +1045,7 @@ static_assert((Triple::SubArchType)ZigLLVM_ARMSubArch_v8 == Triple::ARMSubArch_v |
| 1043 | 1045 | static_assert((Triple::SubArchType)ZigLLVM_ARMSubArch_v8r == Triple::ARMSubArch_v8r, ""); |
| 1044 | 1046 | static_assert((Triple::SubArchType)ZigLLVM_ARMSubArch_v8m_baseline == Triple::ARMSubArch_v8m_baseline, ""); |
| 1045 | 1047 | static_assert((Triple::SubArchType)ZigLLVM_ARMSubArch_v8m_mainline == Triple::ARMSubArch_v8m_mainline, ""); |
| 1048 | static_assert((Triple::SubArchType)ZigLLVM_ARMSubArch_v8_1m_mainline == Triple::ARMSubArch_v8_1m_mainline, ""); | |
| 1046 | 1049 | static_assert((Triple::SubArchType)ZigLLVM_ARMSubArch_v7 == Triple::ARMSubArch_v7, ""); |
| 1047 | 1050 | static_assert((Triple::SubArchType)ZigLLVM_ARMSubArch_v7em == Triple::ARMSubArch_v7em, ""); |
| 1048 | 1051 | static_assert((Triple::SubArchType)ZigLLVM_ARMSubArch_v7m == Triple::ARMSubArch_v7m, ""); |
| ... | ... | @@ -1115,6 +1118,10 @@ static_assert((Triple::OSType)ZigLLVM_WatchOS == Triple::WatchOS, ""); |
| 1115 | 1118 | static_assert((Triple::OSType)ZigLLVM_Mesa3D == Triple::Mesa3D, ""); |
| 1116 | 1119 | static_assert((Triple::OSType)ZigLLVM_Contiki == Triple::Contiki, ""); |
| 1117 | 1120 | static_assert((Triple::OSType)ZigLLVM_AMDPAL == Triple::AMDPAL, ""); |
| 1121 | static_assert((Triple::OSType)ZigLLVM_HermitCore == Triple::HermitCore, ""); | |
| 1122 | static_assert((Triple::OSType)ZigLLVM_Hurd == Triple::Hurd, ""); | |
| 1123 | static_assert((Triple::OSType)ZigLLVM_WASI == Triple::WASI, ""); | |
| 1124 | static_assert((Triple::OSType)ZigLLVM_Emscripten == Triple::Emscripten, ""); | |
| 1118 | 1125 | static_assert((Triple::OSType)ZigLLVM_LastOSType == Triple::LastOSType, ""); |
| 1119 | 1126 | |
| 1120 | 1127 | static_assert((Triple::EnvironmentType)ZigLLVM_UnknownEnvironment == Triple::UnknownEnvironment, ""); |
| ... | ... | @@ -1127,6 +1134,8 @@ static_assert((Triple::EnvironmentType)ZigLLVM_GNUX32 == Triple::GNUX32, ""); |
| 1127 | 1134 | static_assert((Triple::EnvironmentType)ZigLLVM_CODE16 == Triple::CODE16, ""); |
| 1128 | 1135 | static_assert((Triple::EnvironmentType)ZigLLVM_EABI == Triple::EABI, ""); |
| 1129 | 1136 | static_assert((Triple::EnvironmentType)ZigLLVM_EABIHF == Triple::EABIHF, ""); |
| 1137 | static_assert((Triple::EnvironmentType)ZigLLVM_ELFv1 == Triple::ELFv1, ""); | |
| 1138 | static_assert((Triple::EnvironmentType)ZigLLVM_ELFv2 == Triple::ELFv2, ""); | |
| 1130 | 1139 | static_assert((Triple::EnvironmentType)ZigLLVM_Android == Triple::Android, ""); |
| 1131 | 1140 | static_assert((Triple::EnvironmentType)ZigLLVM_Musl == Triple::Musl, ""); |
| 1132 | 1141 | static_assert((Triple::EnvironmentType)ZigLLVM_MuslEABI == Triple::MuslEABI, ""); |
| ... | ... | @@ -1143,3 +1152,4 @@ static_assert((Triple::ObjectFormatType)ZigLLVM_COFF == Triple::COFF, ""); |
| 1143 | 1152 | static_assert((Triple::ObjectFormatType)ZigLLVM_ELF == Triple::ELF, ""); |
| 1144 | 1153 | static_assert((Triple::ObjectFormatType)ZigLLVM_MachO == Triple::MachO, ""); |
| 1145 | 1154 | static_assert((Triple::ObjectFormatType)ZigLLVM_Wasm == Triple::Wasm, ""); |
| 1155 | static_assert((Triple::ObjectFormatType)ZigLLVM_XCOFF == Triple::XCOFF, ""); |
src/zig_llvm.h+11-4| ... | ... | @@ -227,6 +227,7 @@ enum ZigLLVM_ArchType { |
| 227 | 227 | ZigLLVM_armeb, // ARM (big endian): armeb |
| 228 | 228 | ZigLLVM_aarch64, // AArch64 (little endian): aarch64 |
| 229 | 229 | ZigLLVM_aarch64_be, // AArch64 (big endian): aarch64_be |
| 230 | ZigLLVM_aarch64_32, // AArch64 (little endian) ILP32: aarch64_32 | |
| 230 | 231 | ZigLLVM_arc, // ARC: Synopsys ARC |
| 231 | 232 | ZigLLVM_avr, // AVR: Atmel AVR microcontroller |
| 232 | 233 | ZigLLVM_bpfel, // eBPF or extended BPF or 64-bit BPF (little endian) |
| ... | ... | @@ -289,6 +290,7 @@ enum ZigLLVM_SubArchType { |
| 289 | 290 | ZigLLVM_ARMSubArch_v8r, |
| 290 | 291 | ZigLLVM_ARMSubArch_v8m_baseline, |
| 291 | 292 | ZigLLVM_ARMSubArch_v8m_mainline, |
| 293 | ZigLLVM_ARMSubArch_v8_1m_mainline, | |
| 292 | 294 | ZigLLVM_ARMSubArch_v7, |
| 293 | 295 | ZigLLVM_ARMSubArch_v7em, |
| 294 | 296 | ZigLLVM_ARMSubArch_v7m, |
| ... | ... | @@ -370,11 +372,12 @@ enum ZigLLVM_OSType { |
| 370 | 372 | ZigLLVM_HermitCore, // HermitCore Unikernel/Multikernel |
| 371 | 373 | ZigLLVM_Hurd, // GNU/Hurd |
| 372 | 374 | ZigLLVM_WASI, // Experimental WebAssembly OS |
| 375 | ZigLLVM_Emscripten, | |
| 373 | 376 | |
| 374 | ZigLLVM_LastOSType = ZigLLVM_WASI | |
| 377 | ZigLLVM_LastOSType = ZigLLVM_Emscripten | |
| 375 | 378 | }; |
| 376 | 379 | |
| 377 | // Synchronize with target.cpp::environ_list | |
| 380 | // Synchronize with target.cpp::abi_list | |
| 378 | 381 | enum ZigLLVM_EnvironmentType { |
| 379 | 382 | ZigLLVM_UnknownEnvironment, |
| 380 | 383 | |
| ... | ... | @@ -387,6 +390,8 @@ enum ZigLLVM_EnvironmentType { |
| 387 | 390 | ZigLLVM_CODE16, |
| 388 | 391 | ZigLLVM_EABI, |
| 389 | 392 | ZigLLVM_EABIHF, |
| 393 | ZigLLVM_ELFv1, | |
| 394 | ZigLLVM_ELFv2, | |
| 390 | 395 | ZigLLVM_Android, |
| 391 | 396 | ZigLLVM_Musl, |
| 392 | 397 | ZigLLVM_MuslEABI, |
| ... | ... | @@ -396,9 +401,10 @@ enum ZigLLVM_EnvironmentType { |
| 396 | 401 | ZigLLVM_Itanium, |
| 397 | 402 | ZigLLVM_Cygnus, |
| 398 | 403 | ZigLLVM_CoreCLR, |
| 399 | ZigLLVM_Simulator, | |
| 404 | ZigLLVM_Simulator, // Simulator variants of other systems, e.g., Apple's iOS | |
| 405 | ZigLLVM_MacABI, // Mac Catalyst variant of Apple's iOS deployment target. | |
| 400 | 406 | |
| 401 | ZigLLVM_LastEnvironmentType = ZigLLVM_Simulator | |
| 407 | ZigLLVM_LastEnvironmentType = ZigLLVM_MacABI | |
| 402 | 408 | }; |
| 403 | 409 | |
| 404 | 410 | enum ZigLLVM_ObjectFormatType { |
| ... | ... | @@ -408,6 +414,7 @@ enum ZigLLVM_ObjectFormatType { |
| 408 | 414 | ZigLLVM_ELF, |
| 409 | 415 | ZigLLVM_MachO, |
| 410 | 416 | ZigLLVM_Wasm, |
| 417 | ZigLLVM_XCOFF, | |
| 411 | 418 | }; |
| 412 | 419 | |
| 413 | 420 | #define ZigLLVM_DIFlags_Zero 0U |