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()