| ... | @@ -299,6 +299,11 @@ set(ZIG_CPP_SOURCES | ... | @@ -299,6 +299,11 @@ set(ZIG_CPP_SOURCES |
| 299 | # https://github.com/ziglang/zig/issues/6363 | 299 | # https://github.com/ziglang/zig/issues/6363 |
| 300 | "${CMAKE_SOURCE_DIR}/src/windows_sdk.cpp" | 300 | "${CMAKE_SOURCE_DIR}/src/windows_sdk.cpp" |
| 301 | ) | 301 | ) |
| | 302 | # Needed because we use cmake, not the zig build system, to build zig1.o. |
| | 303 | set(ZIG_STAGE2_SOURCES |
| | 304 | "${CMAKE_SOURCE_DIR}/src/main.zig" |
| | 305 | "${CMAKE_SOURCE_DIR}/src/Module.zig" |
| | 306 | ) |
| 302 | | 307 | |
| 303 | if(MSVC) | 308 | if(MSVC) |
| 304 | set(MSVC_DIA_SDK_DIR "$ENV{VSINSTALLDIR}DIA SDK") | 309 | set(MSVC_DIA_SDK_DIR "$ENV{VSINSTALLDIR}DIA SDK") |
| ... | @@ -468,10 +473,10 @@ set(BUILD_ZIG1_ARGS | ... | @@ -468,10 +473,10 @@ set(BUILD_ZIG1_ARGS |
| 468 | ) | 473 | ) |
| 469 | | 474 | |
| 470 | if("${ZIG_EXECUTABLE}" STREQUAL "") | 475 | if("${ZIG_EXECUTABLE}" STREQUAL "") |
| 471 | add_custom_target(zig_build_zig1 ALL | 476 | add_custom_command( |
| | 477 | OUTPUT "${ZIG1_OBJECT}" |
| 472 | COMMAND zig0 ${BUILD_ZIG1_ARGS} | 478 | COMMAND zig0 ${BUILD_ZIG1_ARGS} |
| 473 | DEPENDS zig0 | 479 | DEPENDS zig0 "${ZIG_STAGE2_SOURCES}" |
| 474 | BYPRODUCTS "${ZIG1_OBJECT}" | | |
| 475 | COMMENT STATUS "Building self-hosted component ${ZIG1_OBJECT}" | 480 | COMMENT STATUS "Building self-hosted component ${ZIG1_OBJECT}" |
| 476 | WORKING_DIRECTORY "${CMAKE_SOURCE_DIR}" | 481 | WORKING_DIRECTORY "${CMAKE_SOURCE_DIR}" |
| 477 | ) | 482 | ) |
| ... | @@ -480,28 +485,29 @@ if("${ZIG_EXECUTABLE}" STREQUAL "") | ... | @@ -480,28 +485,29 @@ if("${ZIG_EXECUTABLE}" STREQUAL "") |
| 480 | set(ZIG_EXECUTABLE "${ZIG_EXECUTABLE}.exe") | 485 | set(ZIG_EXECUTABLE "${ZIG_EXECUTABLE}.exe") |
| 481 | endif() | 486 | endif() |
| 482 | else() | 487 | else() |
| 483 | add_custom_target(zig_build_zig1 ALL | 488 | add_custom_command( |
| 484 | COMMAND "${ZIG_EXECUTABLE}" "build-obj" ${BUILD_ZIG1_ARGS} | 489 | OUTPUT "${ZIG1_OBJECT}" |
| 485 | BYPRODUCTS "${ZIG1_OBJECT}" | 490 | BYPRODUCTS "${ZIG1_OBJECT}" |
| | 491 | COMMAND "${ZIG_EXECUTABLE}" "build-obj" ${BUILD_ZIG1_ARGS} |
| | 492 | DEPENDS ${ZIG_STAGE2_SOURCES} |
| 486 | COMMENT STATUS "Building self-hosted component ${ZIG1_OBJECT}" | 493 | COMMENT STATUS "Building self-hosted component ${ZIG1_OBJECT}" |
| 487 | WORKING_DIRECTORY "${CMAKE_SOURCE_DIR}" | 494 | WORKING_DIRECTORY "${CMAKE_SOURCE_DIR}" |
| 488 | ) | 495 | ) |
| 489 | endif() | 496 | endif() |
| 490 | | 497 | |
| 491 | # cmake won't let us configure an executable without C sources. | 498 | # cmake won't let us configure an executable without C sources. |
| 492 | add_executable(zig "${CMAKE_SOURCE_DIR}/src/stage1/empty.cpp") | 499 | add_executable(zig "${CMAKE_SOURCE_DIR}/src/stage1/empty.cpp" "${ZIG1_OBJECT}") |
| 493 | | 500 | |
| 494 | set_target_properties(zig PROPERTIES | 501 | set_target_properties(zig PROPERTIES |
| 495 | COMPILE_FLAGS ${EXE_CFLAGS} | 502 | COMPILE_FLAGS ${EXE_CFLAGS} |
| 496 | LINK_FLAGS ${EXE_LDFLAGS} | 503 | LINK_FLAGS ${EXE_LDFLAGS} |
| 497 | ) | 504 | ) |
| 498 | target_link_libraries(zig "${ZIG1_OBJECT}" zigstage1) | 505 | target_link_libraries(zig zigstage1) |
| 499 | if(MSVC) | 506 | if(MSVC) |
| 500 | target_link_libraries(zig ntdll.lib) | 507 | target_link_libraries(zig ntdll.lib) |
| 501 | elseif(MINGW) | 508 | elseif(MINGW) |
| 502 | target_link_libraries(zig ntdll) | 509 | target_link_libraries(zig ntdll) |
| 503 | endif() | 510 | endif() |
| 504 | add_dependencies(zig zig_build_zig1) | | |
| 505 | | 511 | |
| 506 | install(TARGETS zig DESTINATION bin) | 512 | install(TARGETS zig DESTINATION bin) |
| 507 | | 513 | |