authorgravatar for inbox-121@johnlate.scnr.netjohnLate <inbox-121@johnlate.scnr.net> 2020-11-11 16:12:17+01:00
committergravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2020-11-16 17:45:13-07:00
log77d67aa662d425c997df9323bb958b9ae6192117
tree010dc1fd7f7c91cb1a9dd056115250d5aca0638c
parentf9d209787bbf55fac828508f18396a4cf9b6b41c

CMake: try to avoid compilation for `install` target

This is andrewrk's patch from ziglang#6724 (rebased) CMake: Fix dependency problem I don't know whether the error was expected cmake behavior or a bug. This change seems to fix the issue. See ziglang#6724 for details.

1 files changed, 14 insertions(+), 8 deletions(-)

CMakeLists.txt+14-8
...@@ -299,6 +299,11 @@ set(ZIG_CPP_SOURCES...@@ -299,6 +299,11 @@ set(ZIG_CPP_SOURCES
299 # https://github.com/ziglang/zig/issues/6363299 # 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.
303set(ZIG_STAGE2_SOURCES
304 "${CMAKE_SOURCE_DIR}/src/main.zig"
305 "${CMAKE_SOURCE_DIR}/src/Module.zig"
306)
302307
303if(MSVC)308if(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)
469474
470if("${ZIG_EXECUTABLE}" STREQUAL "")475if("${ZIG_EXECUTABLE}" STREQUAL "")
471 add_custom_target(zig_build_zig1 ALL476 add_custom_command(
477 OUTPUT "${ZIG1_OBJECT}"
472 COMMAND zig0 ${BUILD_ZIG1_ARGS}478 COMMAND zig0 ${BUILD_ZIG1_ARGS}
473 DEPENDS zig0479 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()
482else()487else()
483 add_custom_target(zig_build_zig1 ALL488 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 )
489endif()496endif()
490497
491# cmake won't let us configure an executable without C sources.498# cmake won't let us configure an executable without C sources.
492add_executable(zig "${CMAKE_SOURCE_DIR}/src/stage1/empty.cpp")499add_executable(zig "${CMAKE_SOURCE_DIR}/src/stage1/empty.cpp" "${ZIG1_OBJECT}")
493500
494set_target_properties(zig PROPERTIES501set_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)
498target_link_libraries(zig "${ZIG1_OBJECT}" zigstage1)505target_link_libraries(zig zigstage1)
499if(MSVC)506if(MSVC)
500 target_link_libraries(zig ntdll.lib)507 target_link_libraries(zig ntdll.lib)
501elseif(MINGW)508elseif(MINGW)
502 target_link_libraries(zig ntdll)509 target_link_libraries(zig ntdll)
503endif()510endif()
504add_dependencies(zig zig_build_zig1)
505511
506install(TARGETS zig DESTINATION bin)512install(TARGETS zig DESTINATION bin)
507513