motiejus/zig

fork of https://codeberg.org/ziglang/zig
git clone https://git.jakstys.lt/motiejus/zig.git
Log | Tree | Refs | README | LICENSE

CMakeLists.txt (48421B) - Raw


      1 cmake_minimum_required(VERSION 2.8.12)
      2 
      3 # Use ccache if possible
      4 FIND_PROGRAM(CCACHE_PROGRAM ccache)
      5 IF(CCACHE_PROGRAM)
      6     MESSAGE(STATUS "Found ccache ${CCACHE_PROGRAM}")
      7 ENDIF()
      8 
      9 if(NOT CMAKE_BUILD_TYPE)
     10     set(CMAKE_BUILD_TYPE "Debug" CACHE STRING
     11         "Choose the type of build, options are: None Debug Release RelWithDebInfo MinSizeRel." FORCE)
     12 endif()
     13 
     14 if(NOT CMAKE_INSTALL_PREFIX)
     15     set(CMAKE_INSTALL_PREFIX "${CMAKE_BINARY_DIR}/stage1" CACHE STRING
     16       "Directory to install zig to" FORCE)
     17 endif()
     18 
     19 set(CMAKE_USER_MAKE_RULES_OVERRIDE
     20    ${CMAKE_CURRENT_SOURCE_DIR}/cmake/c_flag_overrides.cmake)
     21 set(CMAKE_USER_MAKE_RULES_OVERRIDE_CXX
     22    ${CMAKE_CURRENT_SOURCE_DIR}/cmake/cxx_flag_overrides.cmake)
     23 
     24 project(zig C CXX)
     25 set(CMAKE_MODULE_PATH ${CMAKE_SOURCE_DIR}/cmake ${CMAKE_MODULE_PATH})
     26 
     27 set(ZIG_VERSION_MAJOR 0)
     28 set(ZIG_VERSION_MINOR 10)
     29 set(ZIG_VERSION_PATCH 0)
     30 set(ZIG_VERSION "" CACHE STRING "Override Zig version string. Default is to find out with git.")
     31 
     32 if("${ZIG_VERSION}" STREQUAL "")
     33     set(ZIG_VERSION "${ZIG_VERSION_MAJOR}.${ZIG_VERSION_MINOR}.${ZIG_VERSION_PATCH}")
     34     find_program(GIT_EXE NAMES git NAMES_PER_DIR)
     35     if(GIT_EXE)
     36         execute_process(
     37             COMMAND ${GIT_EXE} -C ${CMAKE_SOURCE_DIR} describe --match *.*.* --tags
     38             RESULT_VARIABLE EXIT_STATUS
     39             OUTPUT_VARIABLE GIT_DESCRIBE
     40             OUTPUT_STRIP_TRAILING_WHITESPACE
     41             ERROR_QUIET)
     42         if(EXIT_STATUS EQUAL "0")
     43             if(GIT_DESCRIBE MATCHES "^v?([0-9]+\\.[0-9]+\\.[0-9]+)$")
     44                 # Tagged release version.
     45                 set(GIT_TAG ${CMAKE_MATCH_1})
     46                 if(NOT GIT_TAG VERSION_EQUAL ZIG_VERSION)
     47                     message(SEND_ERROR "Zig version (${ZIG_VERSION}) does not match Git tag (${GIT_TAG}).")
     48                 endif()
     49             elseif(GIT_DESCRIBE MATCHES "^v?([0-9]+\\.[0-9]+\\.[0-9]+)-([0-9]+)-g(.+)$")
     50                 # Untagged pre-release. The Zig version is updated to include the number of commits
     51                 # since the last tagged version and the commit hash. The version is formatted in
     52                 # accordance with the https://semver.org specification.
     53                 set(GIT_TAG ${CMAKE_MATCH_1})
     54                 set(GIT_COMMITS_AFTER_TAG ${CMAKE_MATCH_2})
     55                 set(GIT_COMMIT ${CMAKE_MATCH_3})
     56                 if(NOT ZIG_VERSION VERSION_GREATER GIT_TAG)
     57                     message(SEND_ERROR "Zig version (${ZIG_VERSION}) must be greater than tagged ancestor (${GIT_TAG}).")
     58                 endif()
     59                 set(ZIG_VERSION "${ZIG_VERSION}-dev.${GIT_COMMITS_AFTER_TAG}+${GIT_COMMIT}")
     60             else()
     61                 message(WARNING "Failed to parse version from output of `git describe`.")
     62             endif()
     63         endif()
     64     endif()
     65 endif()
     66 message(STATUS "Configuring zig version ${ZIG_VERSION}")
     67 
     68 set(ZIG_STATIC off CACHE BOOL "Attempt to build a static zig executable (not compatible with glibc)")
     69 set(ZIG_STATIC_LLVM off CACHE BOOL "Prefer linking against static LLVM libraries")
     70 set(ZIG_STATIC_ZLIB off CACHE BOOL "Prefer linking against static zlib")
     71 set(ZIG_PREFER_CLANG_CPP_DYLIB off CACHE BOOL "Try to link against -lclang-cpp")
     72 set(ZIG_USE_CCACHE off CACHE BOOL "Use ccache if available")
     73 
     74 if(CCACHE_PROGRAM AND ZIG_USE_CCACHE)
     75     SET_PROPERTY(GLOBAL PROPERTY RULE_LAUNCH_COMPILE "${CCACHE_PROGRAM}")
     76 endif()
     77 
     78 if(ZIG_STATIC)
     79     set(ZIG_STATIC_LLVM ON)
     80     set(ZIG_STATIC_ZLIB ON)
     81 endif()
     82 
     83 string(REGEX REPLACE "\\\\" "\\\\\\\\" ZIG_LIBC_LIB_DIR_ESCAPED "${ZIG_LIBC_LIB_DIR}")
     84 string(REGEX REPLACE "\\\\" "\\\\\\\\" ZIG_LIBC_STATIC_LIB_DIR_ESCAPED "${ZIG_LIBC_STATIC_LIB_DIR}")
     85 string(REGEX REPLACE "\\\\" "\\\\\\\\" ZIG_LIBC_INCLUDE_DIR_ESCAPED "${ZIG_LIBC_INCLUDE_DIR}")
     86 
     87 option(ZIG_TEST_COVERAGE "Build Zig with test coverage instrumentation" OFF)
     88 
     89 set(ZIG_TARGET_TRIPLE "native" CACHE STRING "arch-os-abi to output binaries for")
     90 set(ZIG_TARGET_MCPU "baseline" CACHE STRING "-mcpu parameter to output binaries for")
     91 set(ZIG_EXECUTABLE "" CACHE STRING "(when cross compiling) path to already-built zig binary")
     92 set(ZIG_SINGLE_THREADED off CACHE BOOL "limit the zig compiler to use only 1 thread")
     93 set(ZIG_OMIT_STAGE2 off CACHE BOOL "omit the stage2 backend from stage1")
     94 
     95 if("${CMAKE_BUILD_TYPE}" STREQUAL "Debug")
     96     set(ZIG_ENABLE_LOGGING ON CACHE BOOL "enable logging")
     97 else()
     98     set(ZIG_ENABLE_LOGGING OFF CACHE BOOL "enable logging")
     99 endif()
    100 
    101 if("${ZIG_TARGET_TRIPLE}" STREQUAL "native")
    102     set(ZIG_USE_LLVM_CONFIG ON CACHE BOOL "use llvm-config to find LLVM libraries")
    103 else()
    104     set(ZIG_USE_LLVM_CONFIG OFF CACHE BOOL "use llvm-config to find LLVM libraries")
    105 endif()
    106 
    107 find_package(llvm 14)
    108 find_package(clang 14)
    109 find_package(lld 14)
    110 
    111 if(ZIG_STATIC_ZLIB)
    112     list(REMOVE_ITEM LLVM_LIBRARIES "-lz")
    113     find_library(ZLIB NAMES libz.a libzlibstatic.a z zlib libz NAMES_PER_DIR)
    114     list(APPEND LLVM_LIBRARIES "${ZLIB}")
    115 endif()
    116 
    117 if(APPLE AND ZIG_STATIC)
    118     list(REMOVE_ITEM LLVM_LIBRARIES "-lcurses")
    119     find_library(CURSES NAMES libcurses.a libncurses.a NAMES_PER_DIR
    120       PATHS
    121         /usr/local/opt/ncurses/lib
    122         /opt/homebrew/opt/ncurses/lib)
    123     list(APPEND LLVM_LIBRARIES "${CURSES}")
    124 endif()
    125 
    126 set(ZIG_CPP_LIB_DIR "${CMAKE_BINARY_DIR}/zigcpp")
    127 
    128 # Handle multi-config builds and place each into a common lib. The VS generator
    129 # for example will append a Debug folder by default if not explicitly specified.
    130 set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${ZIG_CPP_LIB_DIR})
    131 set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${ZIG_CPP_LIB_DIR})
    132 foreach(CONFIG_TYPE ${CMAKE_CONFIGURATION_TYPES})
    133     string(TOUPPER ${CONFIG_TYPE} CONFIG_TYPE)
    134     set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY_${CONFIG_TYPE} ${ZIG_CPP_LIB_DIR})
    135     set(CMAKE_LIBRARY_OUTPUT_DIRECTORY_${CONFIG_TYPE} ${ZIG_CPP_LIB_DIR})
    136 endforeach(CONFIG_TYPE CMAKE_CONFIGURATION_TYPES)
    137 
    138 include_directories(${LLVM_INCLUDE_DIRS})
    139 include_directories(${LLD_INCLUDE_DIRS})
    140 include_directories(${CLANG_INCLUDE_DIRS})
    141 
    142 # No patches have been applied to SoftFloat-3e
    143 set(EMBEDDED_SOFTFLOAT_SOURCES
    144     "${CMAKE_SOURCE_DIR}/deps/SoftFloat-3e/source/8086/f128M_isSignalingNaN.c"
    145     "${CMAKE_SOURCE_DIR}/deps/SoftFloat-3e/source/8086/extF80M_isSignalingNaN.c"
    146     "${CMAKE_SOURCE_DIR}/deps/SoftFloat-3e/source/8086/s_commonNaNToF128M.c"
    147     "${CMAKE_SOURCE_DIR}/deps/SoftFloat-3e/source/8086/s_commonNaNToExtF80M.c"
    148     "${CMAKE_SOURCE_DIR}/deps/SoftFloat-3e/source/8086/s_commonNaNToF16UI.c"
    149     "${CMAKE_SOURCE_DIR}/deps/SoftFloat-3e/source/8086/s_commonNaNToF32UI.c"
    150     "${CMAKE_SOURCE_DIR}/deps/SoftFloat-3e/source/8086/s_commonNaNToF64UI.c"
    151     "${CMAKE_SOURCE_DIR}/deps/SoftFloat-3e/source/8086/s_f128MToCommonNaN.c"
    152     "${CMAKE_SOURCE_DIR}/deps/SoftFloat-3e/source/8086/s_extF80MToCommonNaN.c"
    153     "${CMAKE_SOURCE_DIR}/deps/SoftFloat-3e/source/8086/s_f16UIToCommonNaN.c"
    154     "${CMAKE_SOURCE_DIR}/deps/SoftFloat-3e/source/8086/s_f32UIToCommonNaN.c"
    155     "${CMAKE_SOURCE_DIR}/deps/SoftFloat-3e/source/8086/s_f64UIToCommonNaN.c"
    156     "${CMAKE_SOURCE_DIR}/deps/SoftFloat-3e/source/8086/s_propagateNaNF128M.c"
    157     "${CMAKE_SOURCE_DIR}/deps/SoftFloat-3e/source/8086/s_propagateNaNExtF80M.c"
    158     "${CMAKE_SOURCE_DIR}/deps/SoftFloat-3e/source/8086/s_propagateNaNF16UI.c"
    159     "${CMAKE_SOURCE_DIR}/deps/SoftFloat-3e/source/8086/softfloat_raiseFlags.c"
    160     "${CMAKE_SOURCE_DIR}/deps/SoftFloat-3e/source/f128M_add.c"
    161     "${CMAKE_SOURCE_DIR}/deps/SoftFloat-3e/source/f128M_div.c"
    162     "${CMAKE_SOURCE_DIR}/deps/SoftFloat-3e/source/f128M_eq.c"
    163     "${CMAKE_SOURCE_DIR}/deps/SoftFloat-3e/source/f128M_eq_signaling.c"
    164     "${CMAKE_SOURCE_DIR}/deps/SoftFloat-3e/source/f128M_le.c"
    165     "${CMAKE_SOURCE_DIR}/deps/SoftFloat-3e/source/f128M_le_quiet.c"
    166     "${CMAKE_SOURCE_DIR}/deps/SoftFloat-3e/source/f128M_lt.c"
    167     "${CMAKE_SOURCE_DIR}/deps/SoftFloat-3e/source/f128M_lt_quiet.c"
    168     "${CMAKE_SOURCE_DIR}/deps/SoftFloat-3e/source/f128M_mul.c"
    169     "${CMAKE_SOURCE_DIR}/deps/SoftFloat-3e/source/f128M_mulAdd.c"
    170     "${CMAKE_SOURCE_DIR}/deps/SoftFloat-3e/source/f128M_rem.c"
    171     "${CMAKE_SOURCE_DIR}/deps/SoftFloat-3e/source/f128M_roundToInt.c"
    172     "${CMAKE_SOURCE_DIR}/deps/SoftFloat-3e/source/f128M_sqrt.c"
    173     "${CMAKE_SOURCE_DIR}/deps/SoftFloat-3e/source/f128M_sub.c"
    174     "${CMAKE_SOURCE_DIR}/deps/SoftFloat-3e/source/f128M_to_f16.c"
    175     "${CMAKE_SOURCE_DIR}/deps/SoftFloat-3e/source/f128M_to_f32.c"
    176     "${CMAKE_SOURCE_DIR}/deps/SoftFloat-3e/source/f128M_to_f64.c"
    177     "${CMAKE_SOURCE_DIR}/deps/SoftFloat-3e/source/f128M_to_extF80M.c"
    178     "${CMAKE_SOURCE_DIR}/deps/SoftFloat-3e/source/f128M_to_i32.c"
    179     "${CMAKE_SOURCE_DIR}/deps/SoftFloat-3e/source/f128M_to_i32_r_minMag.c"
    180     "${CMAKE_SOURCE_DIR}/deps/SoftFloat-3e/source/f128M_to_i64.c"
    181     "${CMAKE_SOURCE_DIR}/deps/SoftFloat-3e/source/f128M_to_i64_r_minMag.c"
    182     "${CMAKE_SOURCE_DIR}/deps/SoftFloat-3e/source/f128M_to_ui32.c"
    183     "${CMAKE_SOURCE_DIR}/deps/SoftFloat-3e/source/f128M_to_ui32_r_minMag.c"
    184     "${CMAKE_SOURCE_DIR}/deps/SoftFloat-3e/source/f128M_to_ui64.c"
    185     "${CMAKE_SOURCE_DIR}/deps/SoftFloat-3e/source/f128M_to_ui64_r_minMag.c"
    186     "${CMAKE_SOURCE_DIR}/deps/SoftFloat-3e/source/extF80M_add.c"
    187     "${CMAKE_SOURCE_DIR}/deps/SoftFloat-3e/source/extF80M_div.c"
    188     "${CMAKE_SOURCE_DIR}/deps/SoftFloat-3e/source/extF80M_eq.c"
    189     "${CMAKE_SOURCE_DIR}/deps/SoftFloat-3e/source/extF80M_le.c"
    190     "${CMAKE_SOURCE_DIR}/deps/SoftFloat-3e/source/extF80M_lt.c"
    191     "${CMAKE_SOURCE_DIR}/deps/SoftFloat-3e/source/extF80M_mul.c"
    192     "${CMAKE_SOURCE_DIR}/deps/SoftFloat-3e/source/extF80M_rem.c"
    193     "${CMAKE_SOURCE_DIR}/deps/SoftFloat-3e/source/extF80M_roundToInt.c"
    194     "${CMAKE_SOURCE_DIR}/deps/SoftFloat-3e/source/extF80M_sqrt.c"
    195     "${CMAKE_SOURCE_DIR}/deps/SoftFloat-3e/source/extF80M_sub.c"
    196     "${CMAKE_SOURCE_DIR}/deps/SoftFloat-3e/source/extF80M_to_f16.c"
    197     "${CMAKE_SOURCE_DIR}/deps/SoftFloat-3e/source/extF80M_to_f32.c"
    198     "${CMAKE_SOURCE_DIR}/deps/SoftFloat-3e/source/extF80M_to_f64.c"
    199     "${CMAKE_SOURCE_DIR}/deps/SoftFloat-3e/source/extF80M_to_f128M.c"
    200     "${CMAKE_SOURCE_DIR}/deps/SoftFloat-3e/source/f16_add.c"
    201     "${CMAKE_SOURCE_DIR}/deps/SoftFloat-3e/source/f16_div.c"
    202     "${CMAKE_SOURCE_DIR}/deps/SoftFloat-3e/source/f16_eq.c"
    203     "${CMAKE_SOURCE_DIR}/deps/SoftFloat-3e/source/f16_isSignalingNaN.c"
    204     "${CMAKE_SOURCE_DIR}/deps/SoftFloat-3e/source/f16_lt.c"
    205     "${CMAKE_SOURCE_DIR}/deps/SoftFloat-3e/source/f16_mul.c"
    206     "${CMAKE_SOURCE_DIR}/deps/SoftFloat-3e/source/f16_rem.c"
    207     "${CMAKE_SOURCE_DIR}/deps/SoftFloat-3e/source/f16_roundToInt.c"
    208     "${CMAKE_SOURCE_DIR}/deps/SoftFloat-3e/source/f16_sqrt.c"
    209     "${CMAKE_SOURCE_DIR}/deps/SoftFloat-3e/source/f16_sub.c"
    210     "${CMAKE_SOURCE_DIR}/deps/SoftFloat-3e/source/f16_to_extF80M.c"
    211     "${CMAKE_SOURCE_DIR}/deps/SoftFloat-3e/source/f16_to_f128M.c"
    212     "${CMAKE_SOURCE_DIR}/deps/SoftFloat-3e/source/f16_to_f64.c"
    213     "${CMAKE_SOURCE_DIR}/deps/SoftFloat-3e/source/f32_to_extF80M.c"
    214     "${CMAKE_SOURCE_DIR}/deps/SoftFloat-3e/source/f32_to_f128M.c"
    215     "${CMAKE_SOURCE_DIR}/deps/SoftFloat-3e/source/f64_to_extF80M.c"
    216     "${CMAKE_SOURCE_DIR}/deps/SoftFloat-3e/source/f64_to_f128M.c"
    217     "${CMAKE_SOURCE_DIR}/deps/SoftFloat-3e/source/f64_to_f16.c"
    218     "${CMAKE_SOURCE_DIR}/deps/SoftFloat-3e/source/i32_to_f128M.c"
    219     "${CMAKE_SOURCE_DIR}/deps/SoftFloat-3e/source/s_add256M.c"
    220     "${CMAKE_SOURCE_DIR}/deps/SoftFloat-3e/source/s_addCarryM.c"
    221     "${CMAKE_SOURCE_DIR}/deps/SoftFloat-3e/source/s_addComplCarryM.c"
    222     "${CMAKE_SOURCE_DIR}/deps/SoftFloat-3e/source/s_addF128M.c"
    223     "${CMAKE_SOURCE_DIR}/deps/SoftFloat-3e/source/s_addExtF80M.c"
    224     "${CMAKE_SOURCE_DIR}/deps/SoftFloat-3e/source/s_addM.c"
    225     "${CMAKE_SOURCE_DIR}/deps/SoftFloat-3e/source/s_addMagsF16.c"
    226     "${CMAKE_SOURCE_DIR}/deps/SoftFloat-3e/source/s_addMagsF32.c"
    227     "${CMAKE_SOURCE_DIR}/deps/SoftFloat-3e/source/s_addMagsF64.c"
    228     "${CMAKE_SOURCE_DIR}/deps/SoftFloat-3e/source/s_approxRecip32_1.c"
    229     "${CMAKE_SOURCE_DIR}/deps/SoftFloat-3e/source/s_approxRecipSqrt32_1.c"
    230     "${CMAKE_SOURCE_DIR}/deps/SoftFloat-3e/source/s_approxRecipSqrt_1Ks.c"
    231     "${CMAKE_SOURCE_DIR}/deps/SoftFloat-3e/source/s_approxRecip_1Ks.c"
    232     "${CMAKE_SOURCE_DIR}/deps/SoftFloat-3e/source/s_compare128M.c"
    233     "${CMAKE_SOURCE_DIR}/deps/SoftFloat-3e/source/s_compare96M.c"
    234     "${CMAKE_SOURCE_DIR}/deps/SoftFloat-3e/source/s_compareNonnormExtF80M.c"
    235     "${CMAKE_SOURCE_DIR}/deps/SoftFloat-3e/source/s_countLeadingZeros16.c"
    236     "${CMAKE_SOURCE_DIR}/deps/SoftFloat-3e/source/s_countLeadingZeros32.c"
    237     "${CMAKE_SOURCE_DIR}/deps/SoftFloat-3e/source/s_countLeadingZeros64.c"
    238     "${CMAKE_SOURCE_DIR}/deps/SoftFloat-3e/source/s_countLeadingZeros8.c"
    239     "${CMAKE_SOURCE_DIR}/deps/SoftFloat-3e/source/s_eq128.c"
    240     "${CMAKE_SOURCE_DIR}/deps/SoftFloat-3e/source/s_invalidF128M.c"
    241     "${CMAKE_SOURCE_DIR}/deps/SoftFloat-3e/source/s_invalidExtF80M.c"
    242     "${CMAKE_SOURCE_DIR}/deps/SoftFloat-3e/source/s_isNaNF128M.c"
    243     "${CMAKE_SOURCE_DIR}/deps/SoftFloat-3e/source/s_le128.c"
    244     "${CMAKE_SOURCE_DIR}/deps/SoftFloat-3e/source/s_lt128.c"
    245     "${CMAKE_SOURCE_DIR}/deps/SoftFloat-3e/source/s_mul128MTo256M.c"
    246     "${CMAKE_SOURCE_DIR}/deps/SoftFloat-3e/source/s_mul64To128M.c"
    247     "${CMAKE_SOURCE_DIR}/deps/SoftFloat-3e/source/s_mulAddF128M.c"
    248     "${CMAKE_SOURCE_DIR}/deps/SoftFloat-3e/source/s_mulAddF16.c"
    249     "${CMAKE_SOURCE_DIR}/deps/SoftFloat-3e/source/s_mulAddF32.c"
    250     "${CMAKE_SOURCE_DIR}/deps/SoftFloat-3e/source/s_mulAddF64.c"
    251     "${CMAKE_SOURCE_DIR}/deps/SoftFloat-3e/source/s_negXM.c"
    252     "${CMAKE_SOURCE_DIR}/deps/SoftFloat-3e/source/s_normExtF80SigM.c"
    253     "${CMAKE_SOURCE_DIR}/deps/SoftFloat-3e/source/s_normRoundPackMToF128M.c"
    254     "${CMAKE_SOURCE_DIR}/deps/SoftFloat-3e/source/s_normRoundPackMToExtF80M.c"
    255     "${CMAKE_SOURCE_DIR}/deps/SoftFloat-3e/source/s_normRoundPackToF16.c"
    256     "${CMAKE_SOURCE_DIR}/deps/SoftFloat-3e/source/s_normRoundPackToF32.c"
    257     "${CMAKE_SOURCE_DIR}/deps/SoftFloat-3e/source/s_normRoundPackToF64.c"
    258     "${CMAKE_SOURCE_DIR}/deps/SoftFloat-3e/source/s_normSubnormalF128SigM.c"
    259     "${CMAKE_SOURCE_DIR}/deps/SoftFloat-3e/source/s_normSubnormalF16Sig.c"
    260     "${CMAKE_SOURCE_DIR}/deps/SoftFloat-3e/source/s_normSubnormalF32Sig.c"
    261     "${CMAKE_SOURCE_DIR}/deps/SoftFloat-3e/source/s_normSubnormalF64Sig.c"
    262     "${CMAKE_SOURCE_DIR}/deps/SoftFloat-3e/source/s_remStepMBy32.c"
    263     "${CMAKE_SOURCE_DIR}/deps/SoftFloat-3e/source/s_roundMToI64.c"
    264     "${CMAKE_SOURCE_DIR}/deps/SoftFloat-3e/source/s_roundMToUI64.c"
    265     "${CMAKE_SOURCE_DIR}/deps/SoftFloat-3e/source/s_roundPackMToExtF80M.c"
    266     "${CMAKE_SOURCE_DIR}/deps/SoftFloat-3e/source/s_roundPackMToF128M.c"
    267     "${CMAKE_SOURCE_DIR}/deps/SoftFloat-3e/source/s_roundPackToF16.c"
    268     "${CMAKE_SOURCE_DIR}/deps/SoftFloat-3e/source/s_roundPackToF32.c"
    269     "${CMAKE_SOURCE_DIR}/deps/SoftFloat-3e/source/s_roundPackToF64.c"
    270     "${CMAKE_SOURCE_DIR}/deps/SoftFloat-3e/source/s_roundToI32.c"
    271     "${CMAKE_SOURCE_DIR}/deps/SoftFloat-3e/source/s_roundToI64.c"
    272     "${CMAKE_SOURCE_DIR}/deps/SoftFloat-3e/source/s_roundToUI32.c"
    273     "${CMAKE_SOURCE_DIR}/deps/SoftFloat-3e/source/s_roundToUI64.c"
    274     "${CMAKE_SOURCE_DIR}/deps/SoftFloat-3e/source/s_shiftLeftM.c"
    275     "${CMAKE_SOURCE_DIR}/deps/SoftFloat-3e/source/s_shiftNormSigF128M.c"
    276     "${CMAKE_SOURCE_DIR}/deps/SoftFloat-3e/source/s_shiftRightJam256M.c"
    277     "${CMAKE_SOURCE_DIR}/deps/SoftFloat-3e/source/s_shiftRightJam32.c"
    278     "${CMAKE_SOURCE_DIR}/deps/SoftFloat-3e/source/s_shiftRightJam64.c"
    279     "${CMAKE_SOURCE_DIR}/deps/SoftFloat-3e/source/s_shiftRightJamM.c"
    280     "${CMAKE_SOURCE_DIR}/deps/SoftFloat-3e/source/s_shiftRightM.c"
    281     "${CMAKE_SOURCE_DIR}/deps/SoftFloat-3e/source/s_shortShiftLeft64To96M.c"
    282     "${CMAKE_SOURCE_DIR}/deps/SoftFloat-3e/source/s_shortShiftLeftM.c"
    283     "${CMAKE_SOURCE_DIR}/deps/SoftFloat-3e/source/s_shortShiftRightExtendM.c"
    284     "${CMAKE_SOURCE_DIR}/deps/SoftFloat-3e/source/s_shortShiftRightJam64.c"
    285     "${CMAKE_SOURCE_DIR}/deps/SoftFloat-3e/source/s_shortShiftRightJamM.c"
    286     "${CMAKE_SOURCE_DIR}/deps/SoftFloat-3e/source/s_shortShiftRightM.c"
    287     "${CMAKE_SOURCE_DIR}/deps/SoftFloat-3e/source/s_sub1XM.c"
    288     "${CMAKE_SOURCE_DIR}/deps/SoftFloat-3e/source/s_sub256M.c"
    289     "${CMAKE_SOURCE_DIR}/deps/SoftFloat-3e/source/s_subM.c"
    290     "${CMAKE_SOURCE_DIR}/deps/SoftFloat-3e/source/s_subMagsF16.c"
    291     "${CMAKE_SOURCE_DIR}/deps/SoftFloat-3e/source/s_subMagsF32.c"
    292     "${CMAKE_SOURCE_DIR}/deps/SoftFloat-3e/source/s_subMagsF64.c"
    293     "${CMAKE_SOURCE_DIR}/deps/SoftFloat-3e/source/s_tryPropagateNaNF128M.c"
    294     "${CMAKE_SOURCE_DIR}/deps/SoftFloat-3e/source/s_tryPropagateNaNExtF80M.c"
    295     "${CMAKE_SOURCE_DIR}/deps/SoftFloat-3e/source/f16_mulAdd.c"
    296     "${CMAKE_SOURCE_DIR}/deps/SoftFloat-3e/source/f128M_mulAdd.c"
    297     "${CMAKE_SOURCE_DIR}/deps/SoftFloat-3e/source/softfloat_state.c"
    298     "${CMAKE_SOURCE_DIR}/deps/SoftFloat-3e/source/ui32_to_f128M.c"
    299     "${CMAKE_SOURCE_DIR}/deps/SoftFloat-3e/source/ui64_to_f128M.c"
    300     "${CMAKE_SOURCE_DIR}/deps/SoftFloat-3e/source/ui32_to_extF80M.c"
    301     "${CMAKE_SOURCE_DIR}/deps/SoftFloat-3e/source/ui64_to_extF80M.c"
    302 )
    303 add_library(embedded_softfloat STATIC ${EMBEDDED_SOFTFLOAT_SOURCES})
    304 if(MSVC)
    305     set_target_properties(embedded_softfloat PROPERTIES
    306         COMPILE_FLAGS "/w /O2"
    307     )
    308 else()
    309     set_target_properties(embedded_softfloat PROPERTIES
    310         COMPILE_FLAGS "-std=c99 -O3"
    311     )
    312 endif()
    313 target_include_directories(embedded_softfloat PUBLIC
    314     "${CMAKE_SOURCE_DIR}/deps/SoftFloat-3e-prebuilt"
    315     "${CMAKE_SOURCE_DIR}/deps/SoftFloat-3e/source/8086"
    316 )
    317 include_directories("${CMAKE_SOURCE_DIR}/deps/SoftFloat-3e/source/include")
    318 set(SOFTFLOAT_LIBRARIES embedded_softfloat)
    319 
    320 find_package(Threads)
    321 
    322 set(ZIG_LIB_DIR "lib/zig")
    323 set(C_HEADERS_DEST "${ZIG_LIB_DIR}/include")
    324 set(LIBC_FILES_DEST "${ZIG_LIB_DIR}/libc")
    325 set(LIBUNWIND_FILES_DEST "${ZIG_LIB_DIR}/libunwind")
    326 set(LIBCXX_FILES_DEST "${ZIG_LIB_DIR}/libcxx")
    327 set(ZIG_STD_DEST "${ZIG_LIB_DIR}/std")
    328 set(ZIG_CONFIG_H_OUT "${CMAKE_BINARY_DIR}/config.h")
    329 set(ZIG_CONFIG_ZIG_OUT "${CMAKE_BINARY_DIR}/config.zig")
    330 
    331 # This is our shim which will be replaced by stage1.zig.
    332 set(ZIG0_SOURCES
    333     "${CMAKE_SOURCE_DIR}/src/stage1/zig0.cpp"
    334 )
    335 
    336 set(STAGE1_SOURCES
    337     "${CMAKE_SOURCE_DIR}/src/stage1/analyze.cpp"
    338     "${CMAKE_SOURCE_DIR}/src/stage1/astgen.cpp"
    339     "${CMAKE_SOURCE_DIR}/src/stage1/bigfloat.cpp"
    340     "${CMAKE_SOURCE_DIR}/src/stage1/bigint.cpp"
    341     "${CMAKE_SOURCE_DIR}/src/stage1/buffer.cpp"
    342     "${CMAKE_SOURCE_DIR}/src/stage1/codegen.cpp"
    343     "${CMAKE_SOURCE_DIR}/src/stage1/dump_analysis.cpp"
    344     "${CMAKE_SOURCE_DIR}/src/stage1/errmsg.cpp"
    345     "${CMAKE_SOURCE_DIR}/src/stage1/error.cpp"
    346     "${CMAKE_SOURCE_DIR}/src/stage1/heap.cpp"
    347     "${CMAKE_SOURCE_DIR}/src/stage1/ir.cpp"
    348     "${CMAKE_SOURCE_DIR}/src/stage1/ir_print.cpp"
    349     "${CMAKE_SOURCE_DIR}/src/stage1/mem.cpp"
    350     "${CMAKE_SOURCE_DIR}/src/stage1/os.cpp"
    351     "${CMAKE_SOURCE_DIR}/src/stage1/parser.cpp"
    352     "${CMAKE_SOURCE_DIR}/src/stage1/range_set.cpp"
    353     "${CMAKE_SOURCE_DIR}/src/stage1/softfloat_ext.cpp"
    354     "${CMAKE_SOURCE_DIR}/src/stage1/stage1.cpp"
    355     "${CMAKE_SOURCE_DIR}/src/stage1/target.cpp"
    356     "${CMAKE_SOURCE_DIR}/src/stage1/tokenizer.cpp"
    357     "${CMAKE_SOURCE_DIR}/src/stage1/util.cpp"
    358 )
    359 set(OPTIMIZED_C_SOURCES
    360     "${CMAKE_SOURCE_DIR}/src/stage1/parse_f128.c"
    361 )
    362 set(ZIG_CPP_SOURCES
    363     # These are planned to stay even when we are self-hosted.
    364     "${CMAKE_SOURCE_DIR}/src/zig_llvm.cpp"
    365     "${CMAKE_SOURCE_DIR}/src/zig_llvm-ar.cpp"
    366     "${CMAKE_SOURCE_DIR}/src/zig_clang.cpp"
    367     "${CMAKE_SOURCE_DIR}/src/zig_clang_driver.cpp"
    368     "${CMAKE_SOURCE_DIR}/src/zig_clang_cc1_main.cpp"
    369     "${CMAKE_SOURCE_DIR}/src/zig_clang_cc1as_main.cpp"
    370     # https://github.com/ziglang/zig/issues/6363
    371     "${CMAKE_SOURCE_DIR}/src/windows_sdk.cpp"
    372 )
    373 # Needed because we use cmake, not the zig build system, to build zig1.o.
    374 # This list is generated by building zig and then clearing the zig-cache directory,
    375 # then manually running the build-obj command (see BUILD_ZIG1_ARGS), and then looking
    376 # in the zig-cache directory for the compiler-generated list of zig file dependencies.
    377 set(ZIG_STAGE2_SOURCES
    378     "${ZIG_CONFIG_ZIG_OUT}"
    379     "${CMAKE_SOURCE_DIR}/lib/std/array_hash_map.zig"
    380     "${CMAKE_SOURCE_DIR}/lib/std/array_list.zig"
    381     "${CMAKE_SOURCE_DIR}/lib/std/ascii.zig"
    382     "${CMAKE_SOURCE_DIR}/lib/std/atomic.zig"
    383     "${CMAKE_SOURCE_DIR}/lib/std/atomic/Atomic.zig"
    384     "${CMAKE_SOURCE_DIR}/lib/std/atomic/queue.zig"
    385     "${CMAKE_SOURCE_DIR}/lib/std/atomic/stack.zig"
    386     "${CMAKE_SOURCE_DIR}/lib/std/base64.zig"
    387     "${CMAKE_SOURCE_DIR}/lib/std/buf_map.zig"
    388     "${CMAKE_SOURCE_DIR}/lib/std/builtin.zig"
    389     "${CMAKE_SOURCE_DIR}/lib/std/c.zig"
    390     "${CMAKE_SOURCE_DIR}/lib/std/c/linux.zig"
    391     "${CMAKE_SOURCE_DIR}/lib/std/c/tokenizer.zig"
    392     "${CMAKE_SOURCE_DIR}/lib/std/child_process.zig"
    393     "${CMAKE_SOURCE_DIR}/lib/std/coff.zig"
    394     "${CMAKE_SOURCE_DIR}/lib/std/comptime_string_map.zig"
    395     "${CMAKE_SOURCE_DIR}/lib/std/crypto.zig"
    396     "${CMAKE_SOURCE_DIR}/lib/std/crypto/blake3.zig"
    397     "${CMAKE_SOURCE_DIR}/lib/std/crypto/siphash.zig"
    398     "${CMAKE_SOURCE_DIR}/lib/std/debug.zig"
    399     "${CMAKE_SOURCE_DIR}/lib/std/dwarf.zig"
    400     "${CMAKE_SOURCE_DIR}/lib/std/dwarf/AT.zig"
    401     "${CMAKE_SOURCE_DIR}/lib/std/dwarf/ATE.zig"
    402     "${CMAKE_SOURCE_DIR}/lib/std/dwarf/FORM.zig"
    403     "${CMAKE_SOURCE_DIR}/lib/std/dwarf/LANG.zig"
    404     "${CMAKE_SOURCE_DIR}/lib/std/dwarf/OP.zig"
    405     "${CMAKE_SOURCE_DIR}/lib/std/dwarf/TAG.zig"
    406     "${CMAKE_SOURCE_DIR}/lib/std/elf.zig"
    407     "${CMAKE_SOURCE_DIR}/lib/std/event.zig"
    408     "${CMAKE_SOURCE_DIR}/lib/std/event/batch.zig"
    409     "${CMAKE_SOURCE_DIR}/lib/std/event/loop.zig"
    410     "${CMAKE_SOURCE_DIR}/lib/std/fifo.zig"
    411     "${CMAKE_SOURCE_DIR}/lib/std/fmt.zig"
    412     "${CMAKE_SOURCE_DIR}/lib/std/fmt/errol.zig"
    413     "${CMAKE_SOURCE_DIR}/lib/std/fmt/errol/enum3.zig"
    414     "${CMAKE_SOURCE_DIR}/lib/std/fmt/errol/lookup.zig"
    415     "${CMAKE_SOURCE_DIR}/lib/std/fmt/parse_float.zig"
    416     "${CMAKE_SOURCE_DIR}/lib/std/fs.zig"
    417     "${CMAKE_SOURCE_DIR}/lib/std/fs/file.zig"
    418     "${CMAKE_SOURCE_DIR}/lib/std/fs/get_app_data_dir.zig"
    419     "${CMAKE_SOURCE_DIR}/lib/std/fs/path.zig"
    420     "${CMAKE_SOURCE_DIR}/lib/std/hash.zig"
    421     "${CMAKE_SOURCE_DIR}/lib/std/hash/auto_hash.zig"
    422     "${CMAKE_SOURCE_DIR}/lib/std/hash/wyhash.zig"
    423     "${CMAKE_SOURCE_DIR}/lib/std/hash_map.zig"
    424     "${CMAKE_SOURCE_DIR}/lib/std/heap.zig"
    425     "${CMAKE_SOURCE_DIR}/lib/std/heap/arena_allocator.zig"
    426     "${CMAKE_SOURCE_DIR}/lib/std/io.zig"
    427     "${CMAKE_SOURCE_DIR}/lib/std/io/buffered_atomic_file.zig"
    428     "${CMAKE_SOURCE_DIR}/lib/std/io/buffered_writer.zig"
    429     "${CMAKE_SOURCE_DIR}/lib/std/io/change_detection_stream.zig"
    430     "${CMAKE_SOURCE_DIR}/lib/std/io/counting_reader.zig"
    431     "${CMAKE_SOURCE_DIR}/lib/std/io/counting_writer.zig"
    432     "${CMAKE_SOURCE_DIR}/lib/std/io/find_byte_writer.zig"
    433     "${CMAKE_SOURCE_DIR}/lib/std/io/fixed_buffer_stream.zig"
    434     "${CMAKE_SOURCE_DIR}/lib/std/io/limited_reader.zig"
    435     "${CMAKE_SOURCE_DIR}/lib/std/io/reader.zig"
    436     "${CMAKE_SOURCE_DIR}/lib/std/io/seekable_stream.zig"
    437     "${CMAKE_SOURCE_DIR}/lib/std/io/writer.zig"
    438     "${CMAKE_SOURCE_DIR}/lib/std/json.zig"
    439     "${CMAKE_SOURCE_DIR}/lib/std/json/write_stream.zig"
    440     "${CMAKE_SOURCE_DIR}/lib/std/leb128.zig"
    441     "${CMAKE_SOURCE_DIR}/lib/std/linked_list.zig"
    442     "${CMAKE_SOURCE_DIR}/lib/std/log.zig"
    443     "${CMAKE_SOURCE_DIR}/lib/std/macho.zig"
    444     "${CMAKE_SOURCE_DIR}/lib/std/math.zig"
    445     "${CMAKE_SOURCE_DIR}/lib/std/math/big.zig"
    446     "${CMAKE_SOURCE_DIR}/lib/std/math/big/int.zig"
    447     "${CMAKE_SOURCE_DIR}/lib/std/math/float.zig"
    448     "${CMAKE_SOURCE_DIR}/lib/std/math/frexp.zig"
    449     "${CMAKE_SOURCE_DIR}/lib/std/math/isinf.zig"
    450     "${CMAKE_SOURCE_DIR}/lib/std/math/isnan.zig"
    451     "${CMAKE_SOURCE_DIR}/lib/std/math/ln.zig"
    452     "${CMAKE_SOURCE_DIR}/lib/std/math/log.zig"
    453     "${CMAKE_SOURCE_DIR}/lib/std/math/log10.zig"
    454     "${CMAKE_SOURCE_DIR}/lib/std/math/log2.zig"
    455     "${CMAKE_SOURCE_DIR}/lib/std/math/nan.zig"
    456     "${CMAKE_SOURCE_DIR}/lib/std/math/signbit.zig"
    457     "${CMAKE_SOURCE_DIR}/lib/std/math/sqrt.zig"
    458     "${CMAKE_SOURCE_DIR}/lib/std/mem.zig"
    459     "${CMAKE_SOURCE_DIR}/lib/std/mem/Allocator.zig"
    460     "${CMAKE_SOURCE_DIR}/lib/std/meta.zig"
    461     "${CMAKE_SOURCE_DIR}/lib/std/meta/trailer_flags.zig"
    462     "${CMAKE_SOURCE_DIR}/lib/std/meta/trait.zig"
    463     "${CMAKE_SOURCE_DIR}/lib/std/multi_array_list.zig"
    464     "${CMAKE_SOURCE_DIR}/lib/std/os.zig"
    465     "${CMAKE_SOURCE_DIR}/lib/std/os/darwin.zig"
    466     "${CMAKE_SOURCE_DIR}/lib/std/os/linux.zig"
    467     "${CMAKE_SOURCE_DIR}/lib/std/os/linux/errno/generic.zig"
    468     "${CMAKE_SOURCE_DIR}/lib/std/os/linux/x86_64.zig"
    469     "${CMAKE_SOURCE_DIR}/lib/std/os/linux.zig"
    470     "${CMAKE_SOURCE_DIR}/lib/std/os/linux/io_uring.zig"
    471     "${CMAKE_SOURCE_DIR}/lib/std/os/linux/x86_64.zig"
    472     "${CMAKE_SOURCE_DIR}/lib/std/os/posix_spawn.zig"
    473     "${CMAKE_SOURCE_DIR}/lib/std/os/windows.zig"
    474     "${CMAKE_SOURCE_DIR}/lib/std/os/windows/ntstatus.zig"
    475     "${CMAKE_SOURCE_DIR}/lib/std/os/windows/win32error.zig"
    476     "${CMAKE_SOURCE_DIR}/lib/std/Progress.zig"
    477     "${CMAKE_SOURCE_DIR}/lib/std/pdb.zig"
    478     "${CMAKE_SOURCE_DIR}/lib/std/process.zig"
    479     "${CMAKE_SOURCE_DIR}/lib/std/rand.zig"
    480     "${CMAKE_SOURCE_DIR}/lib/std/sort.zig"
    481     "${CMAKE_SOURCE_DIR}/lib/compiler_rt.zig"
    482     "${CMAKE_SOURCE_DIR}/lib/compiler_rt/absv.zig"
    483     "${CMAKE_SOURCE_DIR}/lib/compiler_rt/absvdi2.zig"
    484     "${CMAKE_SOURCE_DIR}/lib/compiler_rt/absvsi2.zig"
    485     "${CMAKE_SOURCE_DIR}/lib/compiler_rt/absvti2.zig"
    486     "${CMAKE_SOURCE_DIR}/lib/compiler_rt/adddf3.zig"
    487     "${CMAKE_SOURCE_DIR}/lib/compiler_rt/addf3.zig"
    488     "${CMAKE_SOURCE_DIR}/lib/compiler_rt/addo.zig"
    489     "${CMAKE_SOURCE_DIR}/lib/compiler_rt/addsf3.zig"
    490     "${CMAKE_SOURCE_DIR}/lib/compiler_rt/addtf3.zig"
    491     "${CMAKE_SOURCE_DIR}/lib/compiler_rt/addxf3.zig"
    492     "${CMAKE_SOURCE_DIR}/lib/compiler_rt/arm.zig"
    493     "${CMAKE_SOURCE_DIR}/lib/compiler_rt/atomics.zig"
    494     "${CMAKE_SOURCE_DIR}/lib/compiler_rt/aulldiv.zig"
    495     "${CMAKE_SOURCE_DIR}/lib/compiler_rt/aullrem.zig"
    496     "${CMAKE_SOURCE_DIR}/lib/compiler_rt/bswap.zig"
    497     "${CMAKE_SOURCE_DIR}/lib/compiler_rt/ceil.zig"
    498     "${CMAKE_SOURCE_DIR}/lib/compiler_rt/clear_cache.zig"
    499     "${CMAKE_SOURCE_DIR}/lib/compiler_rt/cmp.zig"
    500     "${CMAKE_SOURCE_DIR}/lib/compiler_rt/cmpdf2.zig"
    501     "${CMAKE_SOURCE_DIR}/lib/compiler_rt/cmpsf2.zig"
    502     "${CMAKE_SOURCE_DIR}/lib/compiler_rt/cmptf2.zig"
    503     "${CMAKE_SOURCE_DIR}/lib/compiler_rt/cmpxf2.zig"
    504     "${CMAKE_SOURCE_DIR}/lib/compiler_rt/common.zig"
    505     "${CMAKE_SOURCE_DIR}/lib/compiler_rt/comparef.zig"
    506     "${CMAKE_SOURCE_DIR}/lib/compiler_rt/cos.zig"
    507     "${CMAKE_SOURCE_DIR}/lib/compiler_rt/count0bits.zig"
    508     "${CMAKE_SOURCE_DIR}/lib/compiler_rt/divdf3.zig"
    509     "${CMAKE_SOURCE_DIR}/lib/compiler_rt/divsf3.zig"
    510     "${CMAKE_SOURCE_DIR}/lib/compiler_rt/divtf3.zig"
    511     "${CMAKE_SOURCE_DIR}/lib/compiler_rt/divti3.zig"
    512     "${CMAKE_SOURCE_DIR}/lib/compiler_rt/divxf3.zig"
    513     "${CMAKE_SOURCE_DIR}/lib/compiler_rt/emutls.zig"
    514     "${CMAKE_SOURCE_DIR}/lib/compiler_rt/exp.zig"
    515     "${CMAKE_SOURCE_DIR}/lib/compiler_rt/exp2.zig"
    516     "${CMAKE_SOURCE_DIR}/lib/compiler_rt/extenddftf2.zig"
    517     "${CMAKE_SOURCE_DIR}/lib/compiler_rt/extenddfxf2.zig"
    518     "${CMAKE_SOURCE_DIR}/lib/compiler_rt/extendf.zig"
    519     "${CMAKE_SOURCE_DIR}/lib/compiler_rt/extendhfsf2.zig"
    520     "${CMAKE_SOURCE_DIR}/lib/compiler_rt/extendhftf2.zig"
    521     "${CMAKE_SOURCE_DIR}/lib/compiler_rt/extendhfxf2.zig"
    522     "${CMAKE_SOURCE_DIR}/lib/compiler_rt/extendsfdf2.zig"
    523     "${CMAKE_SOURCE_DIR}/lib/compiler_rt/extendsftf2.zig"
    524     "${CMAKE_SOURCE_DIR}/lib/compiler_rt/extendsfxf2.zig"
    525     "${CMAKE_SOURCE_DIR}/lib/compiler_rt/extendxftf2.zig"
    526     "${CMAKE_SOURCE_DIR}/lib/compiler_rt/fabs.zig"
    527     "${CMAKE_SOURCE_DIR}/lib/compiler_rt/fixdfdi.zig"
    528     "${CMAKE_SOURCE_DIR}/lib/compiler_rt/fixdfsi.zig"
    529     "${CMAKE_SOURCE_DIR}/lib/compiler_rt/fixdfti.zig"
    530     "${CMAKE_SOURCE_DIR}/lib/compiler_rt/fixhfdi.zig"
    531     "${CMAKE_SOURCE_DIR}/lib/compiler_rt/fixhfsi.zig"
    532     "${CMAKE_SOURCE_DIR}/lib/compiler_rt/fixhfti.zig"
    533     "${CMAKE_SOURCE_DIR}/lib/compiler_rt/fixsfdi.zig"
    534     "${CMAKE_SOURCE_DIR}/lib/compiler_rt/fixsfsi.zig"
    535     "${CMAKE_SOURCE_DIR}/lib/compiler_rt/fixsfti.zig"
    536     "${CMAKE_SOURCE_DIR}/lib/compiler_rt/fixtfdi.zig"
    537     "${CMAKE_SOURCE_DIR}/lib/compiler_rt/fixtfsi.zig"
    538     "${CMAKE_SOURCE_DIR}/lib/compiler_rt/fixtfti.zig"
    539     "${CMAKE_SOURCE_DIR}/lib/compiler_rt/fixunsdfdi.zig"
    540     "${CMAKE_SOURCE_DIR}/lib/compiler_rt/fixunsdfsi.zig"
    541     "${CMAKE_SOURCE_DIR}/lib/compiler_rt/fixunsdfti.zig"
    542     "${CMAKE_SOURCE_DIR}/lib/compiler_rt/fixunshfdi.zig"
    543     "${CMAKE_SOURCE_DIR}/lib/compiler_rt/fixunshfsi.zig"
    544     "${CMAKE_SOURCE_DIR}/lib/compiler_rt/fixunshfti.zig"
    545     "${CMAKE_SOURCE_DIR}/lib/compiler_rt/fixunssfdi.zig"
    546     "${CMAKE_SOURCE_DIR}/lib/compiler_rt/fixunssfsi.zig"
    547     "${CMAKE_SOURCE_DIR}/lib/compiler_rt/fixunssfti.zig"
    548     "${CMAKE_SOURCE_DIR}/lib/compiler_rt/fixunstfdi.zig"
    549     "${CMAKE_SOURCE_DIR}/lib/compiler_rt/fixunstfsi.zig"
    550     "${CMAKE_SOURCE_DIR}/lib/compiler_rt/fixunstfti.zig"
    551     "${CMAKE_SOURCE_DIR}/lib/compiler_rt/fixunsxfdi.zig"
    552     "${CMAKE_SOURCE_DIR}/lib/compiler_rt/fixunsxfsi.zig"
    553     "${CMAKE_SOURCE_DIR}/lib/compiler_rt/fixunsxfti.zig"
    554     "${CMAKE_SOURCE_DIR}/lib/compiler_rt/fixxfdi.zig"
    555     "${CMAKE_SOURCE_DIR}/lib/compiler_rt/fixxfsi.zig"
    556     "${CMAKE_SOURCE_DIR}/lib/compiler_rt/fixxfti.zig"
    557     "${CMAKE_SOURCE_DIR}/lib/compiler_rt/float_to_int.zig"
    558     "${CMAKE_SOURCE_DIR}/lib/compiler_rt/floatdidf.zig"
    559     "${CMAKE_SOURCE_DIR}/lib/compiler_rt/floatdihf.zig"
    560     "${CMAKE_SOURCE_DIR}/lib/compiler_rt/floatdisf.zig"
    561     "${CMAKE_SOURCE_DIR}/lib/compiler_rt/floatditf.zig"
    562     "${CMAKE_SOURCE_DIR}/lib/compiler_rt/floatdixf.zig"
    563     "${CMAKE_SOURCE_DIR}/lib/compiler_rt/floatsidf.zig"
    564     "${CMAKE_SOURCE_DIR}/lib/compiler_rt/floatsihf.zig"
    565     "${CMAKE_SOURCE_DIR}/lib/compiler_rt/floatsisf.zig"
    566     "${CMAKE_SOURCE_DIR}/lib/compiler_rt/floatsitf.zig"
    567     "${CMAKE_SOURCE_DIR}/lib/compiler_rt/floatsixf.zig"
    568     "${CMAKE_SOURCE_DIR}/lib/compiler_rt/floattidf.zig"
    569     "${CMAKE_SOURCE_DIR}/lib/compiler_rt/floattihf.zig"
    570     "${CMAKE_SOURCE_DIR}/lib/compiler_rt/floattisf.zig"
    571     "${CMAKE_SOURCE_DIR}/lib/compiler_rt/floattitf.zig"
    572     "${CMAKE_SOURCE_DIR}/lib/compiler_rt/floattixf.zig"
    573     "${CMAKE_SOURCE_DIR}/lib/compiler_rt/floatundidf.zig"
    574     "${CMAKE_SOURCE_DIR}/lib/compiler_rt/floatundihf.zig"
    575     "${CMAKE_SOURCE_DIR}/lib/compiler_rt/floatundisf.zig"
    576     "${CMAKE_SOURCE_DIR}/lib/compiler_rt/floatunditf.zig"
    577     "${CMAKE_SOURCE_DIR}/lib/compiler_rt/floatundixf.zig"
    578     "${CMAKE_SOURCE_DIR}/lib/compiler_rt/floatunsidf.zig"
    579     "${CMAKE_SOURCE_DIR}/lib/compiler_rt/floatunsihf.zig"
    580     "${CMAKE_SOURCE_DIR}/lib/compiler_rt/floatunsisf.zig"
    581     "${CMAKE_SOURCE_DIR}/lib/compiler_rt/floatunsitf.zig"
    582     "${CMAKE_SOURCE_DIR}/lib/compiler_rt/floatunsixf.zig"
    583     "${CMAKE_SOURCE_DIR}/lib/compiler_rt/floatuntidf.zig"
    584     "${CMAKE_SOURCE_DIR}/lib/compiler_rt/floatuntihf.zig"
    585     "${CMAKE_SOURCE_DIR}/lib/compiler_rt/floatuntisf.zig"
    586     "${CMAKE_SOURCE_DIR}/lib/compiler_rt/floatuntitf.zig"
    587     "${CMAKE_SOURCE_DIR}/lib/compiler_rt/floatuntixf.zig"
    588     "${CMAKE_SOURCE_DIR}/lib/compiler_rt/floor.zig"
    589     "${CMAKE_SOURCE_DIR}/lib/compiler_rt/fma.zig"
    590     "${CMAKE_SOURCE_DIR}/lib/compiler_rt/fmax.zig"
    591     "${CMAKE_SOURCE_DIR}/lib/compiler_rt/fmin.zig"
    592     "${CMAKE_SOURCE_DIR}/lib/compiler_rt/fmod.zig"
    593     "${CMAKE_SOURCE_DIR}/lib/compiler_rt/gedf2.zig"
    594     "${CMAKE_SOURCE_DIR}/lib/compiler_rt/gesf2.zig"
    595     "${CMAKE_SOURCE_DIR}/lib/compiler_rt/getf2.zig"
    596     "${CMAKE_SOURCE_DIR}/lib/compiler_rt/gexf2.zig"
    597     "${CMAKE_SOURCE_DIR}/lib/compiler_rt/int.zig"
    598     "${CMAKE_SOURCE_DIR}/lib/compiler_rt/int_to_float.zig"
    599     "${CMAKE_SOURCE_DIR}/lib/compiler_rt/log.zig"
    600     "${CMAKE_SOURCE_DIR}/lib/compiler_rt/log10.zig"
    601     "${CMAKE_SOURCE_DIR}/lib/compiler_rt/log2.zig"
    602     "${CMAKE_SOURCE_DIR}/lib/compiler_rt/modti3.zig"
    603     "${CMAKE_SOURCE_DIR}/lib/compiler_rt/muldf3.zig"
    604     "${CMAKE_SOURCE_DIR}/lib/compiler_rt/muldi3.zig"
    605     "${CMAKE_SOURCE_DIR}/lib/compiler_rt/mulf3.zig"
    606     "${CMAKE_SOURCE_DIR}/lib/compiler_rt/mulo.zig"
    607     "${CMAKE_SOURCE_DIR}/lib/compiler_rt/mulsf3.zig"
    608     "${CMAKE_SOURCE_DIR}/lib/compiler_rt/multf3.zig"
    609     "${CMAKE_SOURCE_DIR}/lib/compiler_rt/multi3.zig"
    610     "${CMAKE_SOURCE_DIR}/lib/compiler_rt/mulxf3.zig"
    611     "${CMAKE_SOURCE_DIR}/lib/compiler_rt/negXi2.zig"
    612     "${CMAKE_SOURCE_DIR}/lib/compiler_rt/negv.zig"
    613     "${CMAKE_SOURCE_DIR}/lib/compiler_rt/os_version_check.zig"
    614     "${CMAKE_SOURCE_DIR}/lib/compiler_rt/parity.zig"
    615     "${CMAKE_SOURCE_DIR}/lib/compiler_rt/popcount.zig"
    616     "${CMAKE_SOURCE_DIR}/lib/compiler_rt/rem_pio2.zig"
    617     "${CMAKE_SOURCE_DIR}/lib/compiler_rt/rem_pio2_large.zig"
    618     "${CMAKE_SOURCE_DIR}/lib/compiler_rt/rem_pio2f.zig"
    619     "${CMAKE_SOURCE_DIR}/lib/compiler_rt/round.zig"
    620     "${CMAKE_SOURCE_DIR}/lib/compiler_rt/shift.zig"
    621     "${CMAKE_SOURCE_DIR}/lib/compiler_rt/sin.zig"
    622     "${CMAKE_SOURCE_DIR}/lib/compiler_rt/sincos.zig"
    623     "${CMAKE_SOURCE_DIR}/lib/compiler_rt/sqrt.zig"
    624     "${CMAKE_SOURCE_DIR}/lib/compiler_rt/stack_probe.zig"
    625     "${CMAKE_SOURCE_DIR}/lib/compiler_rt/subo.zig"
    626     "${CMAKE_SOURCE_DIR}/lib/compiler_rt/subsf3.zig"
    627     "${CMAKE_SOURCE_DIR}/lib/compiler_rt/subdf3.zig"
    628     "${CMAKE_SOURCE_DIR}/lib/compiler_rt/subtf3.zig"
    629     "${CMAKE_SOURCE_DIR}/lib/compiler_rt/subxf3.zig"
    630     "${CMAKE_SOURCE_DIR}/lib/compiler_rt/negsf2.zig"
    631     "${CMAKE_SOURCE_DIR}/lib/compiler_rt/negdf2.zig"
    632     "${CMAKE_SOURCE_DIR}/lib/compiler_rt/negtf2.zig"
    633     "${CMAKE_SOURCE_DIR}/lib/compiler_rt/negxf2.zig"
    634     "${CMAKE_SOURCE_DIR}/lib/compiler_rt/tan.zig"
    635     "${CMAKE_SOURCE_DIR}/lib/compiler_rt/trig.zig"
    636     "${CMAKE_SOURCE_DIR}/lib/compiler_rt/trunc.zig"
    637     "${CMAKE_SOURCE_DIR}/lib/compiler_rt/truncdfhf2.zig"
    638     "${CMAKE_SOURCE_DIR}/lib/compiler_rt/truncdfsf2.zig"
    639     "${CMAKE_SOURCE_DIR}/lib/compiler_rt/truncf.zig"
    640     "${CMAKE_SOURCE_DIR}/lib/compiler_rt/truncsfhf2.zig"
    641     "${CMAKE_SOURCE_DIR}/lib/compiler_rt/trunctfdf2.zig"
    642     "${CMAKE_SOURCE_DIR}/lib/compiler_rt/trunctfhf2.zig"
    643     "${CMAKE_SOURCE_DIR}/lib/compiler_rt/trunctfsf2.zig"
    644     "${CMAKE_SOURCE_DIR}/lib/compiler_rt/trunctfxf2.zig"
    645     "${CMAKE_SOURCE_DIR}/lib/compiler_rt/truncxfdf2.zig"
    646     "${CMAKE_SOURCE_DIR}/lib/compiler_rt/truncxfhf2.zig"
    647     "${CMAKE_SOURCE_DIR}/lib/compiler_rt/truncxfsf2.zig"
    648     "${CMAKE_SOURCE_DIR}/lib/compiler_rt/udivmod.zig"
    649     "${CMAKE_SOURCE_DIR}/lib/compiler_rt/udivmodti4.zig"
    650     "${CMAKE_SOURCE_DIR}/lib/compiler_rt/udivti3.zig"
    651     "${CMAKE_SOURCE_DIR}/lib/compiler_rt/umodti3.zig"
    652     "${CMAKE_SOURCE_DIR}/lib/compiler_rt/unorddf2.zig"
    653     "${CMAKE_SOURCE_DIR}/lib/compiler_rt/unordsf2.zig"
    654     "${CMAKE_SOURCE_DIR}/lib/compiler_rt/unordtf2.zig"
    655     "${CMAKE_SOURCE_DIR}/lib/std/start.zig"
    656     "${CMAKE_SOURCE_DIR}/lib/std/std.zig"
    657     "${CMAKE_SOURCE_DIR}/lib/std/target.zig"
    658     "${CMAKE_SOURCE_DIR}/lib/std/target/aarch64.zig"
    659     "${CMAKE_SOURCE_DIR}/lib/std/target/amdgpu.zig"
    660     "${CMAKE_SOURCE_DIR}/lib/std/target/arm.zig"
    661     "${CMAKE_SOURCE_DIR}/lib/std/target/avr.zig"
    662     "${CMAKE_SOURCE_DIR}/lib/std/target/bpf.zig"
    663     "${CMAKE_SOURCE_DIR}/lib/std/target/hexagon.zig"
    664     "${CMAKE_SOURCE_DIR}/lib/std/target/mips.zig"
    665     "${CMAKE_SOURCE_DIR}/lib/std/target/msp430.zig"
    666     "${CMAKE_SOURCE_DIR}/lib/std/target/nvptx.zig"
    667     "${CMAKE_SOURCE_DIR}/lib/std/target/powerpc.zig"
    668     "${CMAKE_SOURCE_DIR}/lib/std/target/riscv.zig"
    669     "${CMAKE_SOURCE_DIR}/lib/std/target/sparc.zig"
    670     "${CMAKE_SOURCE_DIR}/lib/std/target/systemz.zig"
    671     "${CMAKE_SOURCE_DIR}/lib/std/target/wasm.zig"
    672     "${CMAKE_SOURCE_DIR}/lib/std/target/x86.zig"
    673     "${CMAKE_SOURCE_DIR}/lib/std/Thread.zig"
    674     "${CMAKE_SOURCE_DIR}/lib/std/Thread/Futex.zig"
    675     "${CMAKE_SOURCE_DIR}/lib/std/Thread/Mutex.zig"
    676     "${CMAKE_SOURCE_DIR}/lib/std/Thread/ResetEvent.zig"
    677     "${CMAKE_SOURCE_DIR}/lib/std/time.zig"
    678     "${CMAKE_SOURCE_DIR}/lib/std/treap.zig"
    679     "${CMAKE_SOURCE_DIR}/lib/std/unicode.zig"
    680     "${CMAKE_SOURCE_DIR}/lib/std/zig.zig"
    681     "${CMAKE_SOURCE_DIR}/lib/std/zig/Ast.zig"
    682     "${CMAKE_SOURCE_DIR}/lib/std/zig/CrossTarget.zig"
    683     "${CMAKE_SOURCE_DIR}/lib/std/zig/c_builtins.zig"
    684     "${CMAKE_SOURCE_DIR}/lib/std/zig/parse.zig"
    685     "${CMAKE_SOURCE_DIR}/lib/std/zig/render.zig"
    686     "${CMAKE_SOURCE_DIR}/lib/std/zig/string_literal.zig"
    687     "${CMAKE_SOURCE_DIR}/lib/std/zig/system.zig"
    688     "${CMAKE_SOURCE_DIR}/lib/std/zig/system/NativePaths.zig"
    689     "${CMAKE_SOURCE_DIR}/lib/std/zig/system/NativeTargetInfo.zig"
    690     "${CMAKE_SOURCE_DIR}/lib/std/zig/system/x86.zig"
    691     "${CMAKE_SOURCE_DIR}/lib/std/zig/tokenizer.zig"
    692     "${CMAKE_SOURCE_DIR}/src/Air.zig"
    693     "${CMAKE_SOURCE_DIR}/src/AstGen.zig"
    694     "${CMAKE_SOURCE_DIR}/src/Cache.zig"
    695     "${CMAKE_SOURCE_DIR}/src/Compilation.zig"
    696     "${CMAKE_SOURCE_DIR}/src/DepTokenizer.zig"
    697     "${CMAKE_SOURCE_DIR}/src/Liveness.zig"
    698     "${CMAKE_SOURCE_DIR}/src/Module.zig"
    699     "${CMAKE_SOURCE_DIR}/src/Package.zig"
    700     "${CMAKE_SOURCE_DIR}/src/RangeSet.zig"
    701     "${CMAKE_SOURCE_DIR}/src/Sema.zig"
    702     "${CMAKE_SOURCE_DIR}/src/ThreadPool.zig"
    703     "${CMAKE_SOURCE_DIR}/src/TypedValue.zig"
    704     "${CMAKE_SOURCE_DIR}/src/WaitGroup.zig"
    705     "${CMAKE_SOURCE_DIR}/src/Zir.zig"
    706     "${CMAKE_SOURCE_DIR}/src/arch/aarch64/CodeGen.zig"
    707     "${CMAKE_SOURCE_DIR}/src/arch/aarch64/Emit.zig"
    708     "${CMAKE_SOURCE_DIR}/src/arch/aarch64/Mir.zig"
    709     "${CMAKE_SOURCE_DIR}/src/arch/aarch64/bits.zig"
    710     "${CMAKE_SOURCE_DIR}/src/arch/aarch64/abi.zig"
    711     "${CMAKE_SOURCE_DIR}/src/arch/arm/CodeGen.zig"
    712     "${CMAKE_SOURCE_DIR}/src/arch/arm/Emit.zig"
    713     "${CMAKE_SOURCE_DIR}/src/arch/arm/Mir.zig"
    714     "${CMAKE_SOURCE_DIR}/src/arch/arm/bits.zig"
    715     "${CMAKE_SOURCE_DIR}/src/arch/arm/abi.zig"
    716     "${CMAKE_SOURCE_DIR}/src/arch/riscv64/CodeGen.zig"
    717     "${CMAKE_SOURCE_DIR}/src/arch/riscv64/Emit.zig"
    718     "${CMAKE_SOURCE_DIR}/src/arch/riscv64/Mir.zig"
    719     "${CMAKE_SOURCE_DIR}/src/arch/riscv64/bits.zig"
    720     "${CMAKE_SOURCE_DIR}/src/arch/riscv64/abi.zig"
    721     "${CMAKE_SOURCE_DIR}/src/arch/sparc64/CodeGen.zig"
    722     "${CMAKE_SOURCE_DIR}/src/arch/sparc64/Emit.zig"
    723     "${CMAKE_SOURCE_DIR}/src/arch/sparc64/Mir.zig"
    724     "${CMAKE_SOURCE_DIR}/src/arch/sparc64/bits.zig"
    725     "${CMAKE_SOURCE_DIR}/src/arch/sparc64/abi.zig"
    726     "${CMAKE_SOURCE_DIR}/src/arch/wasm/CodeGen.zig"
    727     "${CMAKE_SOURCE_DIR}/src/arch/wasm/Emit.zig"
    728     "${CMAKE_SOURCE_DIR}/src/arch/wasm/Mir.zig"
    729     "${CMAKE_SOURCE_DIR}/src/arch/x86_64/CodeGen.zig"
    730     "${CMAKE_SOURCE_DIR}/src/arch/x86_64/Emit.zig"
    731     "${CMAKE_SOURCE_DIR}/src/arch/x86_64/Mir.zig"
    732     "${CMAKE_SOURCE_DIR}/src/arch/x86_64/bits.zig"
    733     "${CMAKE_SOURCE_DIR}/src/arch/x86_64/abi.zig"
    734     "${CMAKE_SOURCE_DIR}/src/clang.zig"
    735     "${CMAKE_SOURCE_DIR}/src/clang_options.zig"
    736     "${CMAKE_SOURCE_DIR}/src/clang_options_data.zig"
    737     "${CMAKE_SOURCE_DIR}/src/codegen.zig"
    738     "${CMAKE_SOURCE_DIR}/src/codegen/c.zig"
    739     "${CMAKE_SOURCE_DIR}/src/codegen/llvm.zig"
    740     "${CMAKE_SOURCE_DIR}/src/codegen/llvm/bindings.zig"
    741     "${CMAKE_SOURCE_DIR}/src/glibc.zig"
    742     "${CMAKE_SOURCE_DIR}/src/introspect.zig"
    743     "${CMAKE_SOURCE_DIR}/src/libc_installation.zig"
    744     "${CMAKE_SOURCE_DIR}/src/libcxx.zig"
    745     "${CMAKE_SOURCE_DIR}/src/libtsan.zig"
    746     "${CMAKE_SOURCE_DIR}/src/libunwind.zig"
    747     "${CMAKE_SOURCE_DIR}/src/link.zig"
    748     "${CMAKE_SOURCE_DIR}/src/link/C.zig"
    749     "${CMAKE_SOURCE_DIR}/src/link/C/zig.h"
    750     "${CMAKE_SOURCE_DIR}/src/link/Coff.zig"
    751     "${CMAKE_SOURCE_DIR}/src/link/Elf.zig"
    752     "${CMAKE_SOURCE_DIR}/src/link/MachO.zig"
    753     "${CMAKE_SOURCE_DIR}/src/link/MachO/Archive.zig"
    754     "${CMAKE_SOURCE_DIR}/src/link/MachO/Atom.zig"
    755     "${CMAKE_SOURCE_DIR}/src/link/MachO/CodeSignature.zig"
    756     "${CMAKE_SOURCE_DIR}/src/link/MachO/DebugSymbols.zig"
    757     "${CMAKE_SOURCE_DIR}/src/link/MachO/Dylib.zig"
    758     "${CMAKE_SOURCE_DIR}/src/link/MachO/Object.zig"
    759     "${CMAKE_SOURCE_DIR}/src/link/MachO/Trie.zig"
    760     "${CMAKE_SOURCE_DIR}/src/link/MachO/bind.zig"
    761     "${CMAKE_SOURCE_DIR}/src/link/Plan9.zig"
    762     "${CMAKE_SOURCE_DIR}/src/link/Plan9/aout.zig"
    763     "${CMAKE_SOURCE_DIR}/src/link/Wasm.zig"
    764     "${CMAKE_SOURCE_DIR}/src/link/msdos-stub.bin"
    765     "${CMAKE_SOURCE_DIR}/src/link/tapi.zig"
    766     "${CMAKE_SOURCE_DIR}/src/link/tapi/Tokenizer.zig"
    767     "${CMAKE_SOURCE_DIR}/src/link/tapi/parse.zig"
    768     "${CMAKE_SOURCE_DIR}/src/link/tapi/parse/test.zig"
    769     "${CMAKE_SOURCE_DIR}/src/link/tapi/yaml.zig"
    770     "${CMAKE_SOURCE_DIR}/src/main.zig"
    771     "${CMAKE_SOURCE_DIR}/src/mingw.zig"
    772     "${CMAKE_SOURCE_DIR}/src/musl.zig"
    773     "${CMAKE_SOURCE_DIR}/src/print_air.zig"
    774     "${CMAKE_SOURCE_DIR}/src/print_env.zig"
    775     "${CMAKE_SOURCE_DIR}/src/print_targets.zig"
    776     "${CMAKE_SOURCE_DIR}/src/print_zir.zig"
    777     "${CMAKE_SOURCE_DIR}/src/register_manager.zig"
    778     "${CMAKE_SOURCE_DIR}/src/stage1.zig"
    779     "${CMAKE_SOURCE_DIR}/src/target.zig"
    780     "${CMAKE_SOURCE_DIR}/src/tracy.zig"
    781     "${CMAKE_SOURCE_DIR}/src/translate_c.zig"
    782     "${CMAKE_SOURCE_DIR}/src/translate_c/ast.zig"
    783     "${CMAKE_SOURCE_DIR}/src/type.zig"
    784     "${CMAKE_SOURCE_DIR}/src/value.zig"
    785     "${CMAKE_SOURCE_DIR}/src/wasi_libc.zig"
    786     "${CMAKE_SOURCE_DIR}/src/windows_sdk.zig"
    787 )
    788 
    789 if(MSVC)
    790     set(MSVC_DIA_SDK_DIR "$ENV{VSINSTALLDIR}DIA SDK")
    791     if(IS_DIRECTORY ${MSVC_DIA_SDK_DIR})
    792         set(ZIG_DIA_GUIDS_LIB "${MSVC_DIA_SDK_DIR}/lib/amd64/diaguids.lib")
    793         string(REGEX REPLACE "\\\\" "\\\\\\\\" ZIG_DIA_GUIDS_LIB_ESCAPED "${ZIG_DIA_GUIDS_LIB}")
    794     endif()
    795 endif()
    796 
    797 if(ZIG_OMIT_STAGE2)
    798   set(ZIG_OMIT_STAGE2_BOOL "true")
    799 else()
    800   set(ZIG_OMIT_STAGE2_BOOL "false")
    801 endif()
    802 
    803 if(ZIG_ENABLE_LOGGING)
    804   set(ZIG_ENABLE_LOGGING_BOOL "true")
    805 else()
    806   set(ZIG_ENABLE_LOGGING_BOOL "false")
    807 endif()
    808 
    809 configure_file (
    810     "${CMAKE_SOURCE_DIR}/src/stage1/config.h.in"
    811     "${ZIG_CONFIG_H_OUT}"
    812 )
    813 configure_file (
    814     "${CMAKE_SOURCE_DIR}/src/config.zig.in"
    815     "${ZIG_CONFIG_ZIG_OUT}"
    816 )
    817 
    818 include_directories(
    819     ${CMAKE_SOURCE_DIR}
    820     ${CMAKE_BINARY_DIR}
    821     "${CMAKE_SOURCE_DIR}/src"
    822     "${CMAKE_SOURCE_DIR}/src/stage1"
    823 )
    824 
    825 # These have to go before the -Wno- flags
    826 if(MSVC)
    827   set(EXE_CFLAGS "/std:c++14")
    828 else(MSVC)
    829   set(EXE_CFLAGS "-std=c++14")
    830 endif(MSVC)
    831 
    832 if(ZIG_STATIC)
    833     set(EXE_CFLAGS "${EXE_CFLAGS} -DZIG_LINK_MODE=Static")
    834 else()
    835     set(EXE_CFLAGS "${EXE_CFLAGS} -DZIG_LINK_MODE=Dynamic")
    836 endif()
    837 
    838 if("${CMAKE_BUILD_TYPE}" STREQUAL "Debug")
    839     if(MSVC)
    840         set(EXE_CFLAGS "${EXE_CFLAGS} /w")
    841     else()
    842         set(EXE_CFLAGS "${EXE_CFLAGS} -Werror -Wall")
    843         # fallthrough support was added in GCC 7.0
    844         if(NOT CMAKE_CXX_COMPILER_ID STREQUAL "GNU" OR CMAKE_CXX_COMPILER_VERSION VERSION_GREATER_EQUAL 7.0)
    845             set(EXE_CFLAGS "${EXE_CFLAGS} -Werror=implicit-fallthrough")
    846         endif()
    847         # GCC 9.2 and older are unable to detect valid variable initialization in some cases
    848         if(CMAKE_CXX_COMPILER_ID STREQUAL "GNU" AND CMAKE_CXX_COMPILER_VERSION VERSION_LESS_EQUAL 9.2)
    849             set(EXE_CFLAGS "${EXE_CFLAGS} -Wno-maybe-uninitialized")
    850         endif()
    851     endif()
    852 endif()
    853 
    854 if(MSVC)
    855     set(EXE_CFLAGS "${EXE_CFLAGS}")
    856 else()
    857     set(EXE_CFLAGS "${EXE_CFLAGS} -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS -D_GNU_SOURCE -fvisibility-inlines-hidden -fno-exceptions -fno-rtti -Werror=type-limits -Wno-missing-braces -Wno-comment -Wno-deprecated-declarations")
    858     if(MINGW)
    859         set(EXE_CFLAGS "${EXE_CFLAGS} -Wno-format")
    860     endif()
    861 endif()
    862 
    863 if(MSVC)
    864   set(OPTIMIZED_C_FLAGS "/O2")
    865 else(MSVC)
    866   set(OPTIMIZED_C_FLAGS "-std=c99 -O3")
    867 endif(MSVC)
    868 
    869 set(EXE_LDFLAGS " ")
    870 if(MSVC)
    871     set(EXE_LDFLAGS "${EXE_LDFLAGS} /STACK:16777216")
    872     if(NOT "${CMAKE_BUILD_TYPE}" STREQUAL "Release" AND NOT "${CMAKE_BUILD_TYPE}" STREQUAL "MinSizeRel")
    873         set(EXE_LDFLAGS "${EXE_LDFLAGS} /debug:fastlink")
    874     endif()
    875 elseif(MINGW)
    876     set(EXE_LDFLAGS "${EXE_LDFLAGS} -Wl,--stack,16777216")
    877 endif()
    878 
    879 if(ZIG_STATIC)
    880     if(APPLE)
    881         set(EXE_LDFLAGS "${EXE_LDFLAGS} -static-libgcc -static-libstdc++")
    882     elseif(MINGW)
    883         set(EXE_LDFLAGS "${EXE_LDFLAGS} -static-libgcc -static-libstdc++ -Wl,-Bstatic, -lwinpthread -lz3 -lz -lgomp")
    884     elseif(NOT MSVC)
    885         set(EXE_LDFLAGS "${EXE_LDFLAGS} -static")
    886     endif()
    887 else()
    888     if(MINGW)
    889         set(EXE_LDFLAGS "${EXE_LDFLAGS}")
    890     endif()
    891 endif()
    892 
    893 if(ZIG_TEST_COVERAGE)
    894     set(EXE_CFLAGS "${EXE_CFLAGS} -fprofile-arcs -ftest-coverage")
    895     set(EXE_LDFLAGS "${EXE_LDFLAGS} -fprofile-arcs -ftest-coverage")
    896 endif()
    897 
    898 add_library(zigcpp STATIC ${ZIG_CPP_SOURCES})
    899 set_target_properties(zigcpp PROPERTIES
    900     COMPILE_FLAGS ${EXE_CFLAGS}
    901 )
    902 
    903 target_link_libraries(zigcpp LINK_PUBLIC
    904     ${CLANG_LIBRARIES}
    905     ${LLD_LIBRARIES}
    906     ${LLVM_LIBRARIES}
    907     ${CMAKE_THREAD_LIBS_INIT}
    908 )
    909 
    910 add_library(opt_c_util STATIC ${OPTIMIZED_C_SOURCES})
    911 set_target_properties(opt_c_util PROPERTIES
    912     COMPILE_FLAGS "${OPTIMIZED_C_FLAGS}"
    913 )
    914 target_include_directories(opt_c_util PRIVATE
    915     "${CMAKE_SOURCE_DIR}/deps/SoftFloat-3e-prebuilt"
    916 )
    917 
    918 add_library(zigstage1 STATIC ${STAGE1_SOURCES})
    919 set_target_properties(zigstage1 PROPERTIES
    920     COMPILE_FLAGS ${EXE_CFLAGS}
    921     LINK_FLAGS ${EXE_LDFLAGS}
    922 )
    923 target_link_libraries(zigstage1 LINK_PUBLIC
    924     opt_c_util
    925     ${SOFTFLOAT_LIBRARIES}
    926     zigcpp
    927 )
    928 if(NOT MSVC)
    929     target_link_libraries(zigstage1 LINK_PUBLIC ${LIBXML2})
    930 endif()
    931 
    932 if(ZIG_DIA_GUIDS_LIB)
    933     target_link_libraries(zigstage1 LINK_PUBLIC ${ZIG_DIA_GUIDS_LIB})
    934 endif()
    935 
    936 if(MSVC OR MINGW)
    937     target_link_libraries(zigstage1 LINK_PUBLIC version)
    938 endif()
    939 
    940 if("${ZIG_EXECUTABLE}" STREQUAL "")
    941   add_executable(zig0 ${ZIG0_SOURCES})
    942   set_target_properties(zig0 PROPERTIES
    943       COMPILE_FLAGS ${EXE_CFLAGS}
    944       LINK_FLAGS ${EXE_LDFLAGS}
    945   )
    946   target_link_libraries(zig0 zigstage1)
    947 endif()
    948 
    949 if(MSVC)
    950     set(ZIG1_OBJECT "${CMAKE_BINARY_DIR}/zig1.obj")
    951 else()
    952     set(ZIG1_OBJECT "${CMAKE_BINARY_DIR}/zig1.o")
    953 endif()
    954 if("${CMAKE_BUILD_TYPE}" STREQUAL "Debug")
    955     set(ZIG1_RELEASE_ARG "")
    956 else()
    957     set(ZIG1_RELEASE_ARG -OReleaseFast --strip)
    958 endif()
    959 if(ZIG_SINGLE_THREADED)
    960   set(ZIG1_SINGLE_THREADED_ARG "-fsingle-threaded")
    961 else()
    962   set(ZIG1_SINGLE_THREADED_ARG "")
    963 endif()
    964 
    965 set(BUILD_ZIG1_ARGS
    966     "src/stage1.zig"
    967     -target "${ZIG_TARGET_TRIPLE}"
    968     "-mcpu=${ZIG_TARGET_MCPU}"
    969     --name zig1
    970     --zig-lib-dir "${CMAKE_SOURCE_DIR}/lib"
    971     "-femit-bin=${ZIG1_OBJECT}"
    972     -fcompiler-rt
    973     "${ZIG1_RELEASE_ARG}"
    974     "${ZIG1_SINGLE_THREADED_ARG}"
    975     -lc
    976     --pkg-begin build_options "${ZIG_CONFIG_ZIG_OUT}"
    977     --pkg-end
    978     --pkg-begin compiler_rt "${CMAKE_SOURCE_DIR}/lib/compiler_rt.zig"
    979     --pkg-end
    980 )
    981 
    982 if("${ZIG_EXECUTABLE}" STREQUAL "")
    983   add_custom_command(
    984       OUTPUT "${ZIG1_OBJECT}"
    985       COMMAND zig0 ${BUILD_ZIG1_ARGS}
    986       DEPENDS zig0 "${ZIG_STAGE2_SOURCES}"
    987       COMMENT STATUS "Building self-hosted component ${ZIG1_OBJECT}"
    988       WORKING_DIRECTORY "${CMAKE_SOURCE_DIR}"
    989   )
    990   set(ZIG_EXECUTABLE "${zig_BINARY_DIR}/zig")
    991   if (WIN32)
    992     set(ZIG_EXECUTABLE "${ZIG_EXECUTABLE}.exe")
    993   endif()
    994 else()
    995   add_custom_command(
    996       OUTPUT "${ZIG1_OBJECT}"
    997       COMMAND "${ZIG_EXECUTABLE}" "build-obj" ${BUILD_ZIG1_ARGS}
    998       DEPENDS ${ZIG_STAGE2_SOURCES}
    999       COMMENT STATUS "Building self-hosted component ${ZIG1_OBJECT}"
   1000       WORKING_DIRECTORY "${CMAKE_SOURCE_DIR}"
   1001   )
   1002 endif()
   1003 
   1004 # cmake won't let us configure an executable without C sources.
   1005 add_executable(zig "${CMAKE_SOURCE_DIR}/src/stage1/empty.cpp" "${ZIG1_OBJECT}")
   1006 
   1007 set_target_properties(zig PROPERTIES
   1008     COMPILE_FLAGS ${EXE_CFLAGS}
   1009     LINK_FLAGS ${EXE_LDFLAGS}
   1010 )
   1011 target_link_libraries(zig zigstage1)
   1012 if(MSVC)
   1013   target_link_libraries(zig ntdll.lib)
   1014 elseif(MINGW)
   1015   target_link_libraries(zig ntdll)
   1016 endif()
   1017 
   1018 install(TARGETS zig DESTINATION bin)
   1019 
   1020 set(ZIG_SKIP_INSTALL_LIB_FILES off CACHE BOOL
   1021     "Disable copying lib/ files to install prefix during the build phase")
   1022 
   1023 if(NOT ZIG_SKIP_INSTALL_LIB_FILES)
   1024     set(ZIG_INSTALL_ARGS "build"
   1025         --zig-lib-dir "${CMAKE_SOURCE_DIR}/lib"
   1026         "-Dlib-files-only"
   1027         --prefix "${CMAKE_INSTALL_PREFIX}"
   1028         "-Dconfig_h=${ZIG_CONFIG_H_OUT}"
   1029         install
   1030     )
   1031 
   1032     # CODE has no effect with Visual Studio build system generator, therefore
   1033     # when using Visual Studio build system generator we resort to running
   1034     # `zig build install` during the build phase.
   1035     if(MSVC)
   1036         add_custom_target(zig_install_lib_files ALL
   1037             COMMAND zig ${ZIG_INSTALL_ARGS}
   1038             DEPENDS zig
   1039             WORKING_DIRECTORY "${CMAKE_SOURCE_DIR}"
   1040         )
   1041     else()
   1042         get_target_property(zig_BINARY_DIR zig BINARY_DIR)
   1043         install(CODE "set(zig_EXE \"${ZIG_EXECUTABLE}\")")
   1044         install(CODE "set(ZIG_INSTALL_ARGS \"${ZIG_INSTALL_ARGS}\")")
   1045         install(CODE "set(CMAKE_SOURCE_DIR \"${CMAKE_SOURCE_DIR}\")")
   1046         install(SCRIPT ${CMAKE_CURRENT_SOURCE_DIR}/cmake/install.cmake)
   1047     endif()
   1048 endif()