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
299299 # https://github.com/ziglang/zig/issues/6363
300300 "${CMAKE_SOURCE_DIR}/src/windows_sdk.cpp"
301301)
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
303308if(MSVC)
304309 set(MSVC_DIA_SDK_DIR "$ENV{VSINSTALLDIR}DIA SDK")
......@@ -468,10 +473,10 @@ set(BUILD_ZIG1_ARGS
468473)
469474
470475if("${ZIG_EXECUTABLE}" STREQUAL "")
471 add_custom_target(zig_build_zig1 ALL
476 add_custom_command(
477 OUTPUT "${ZIG1_OBJECT}"
472478 COMMAND zig0 ${BUILD_ZIG1_ARGS}
473 DEPENDS zig0
474 BYPRODUCTS "${ZIG1_OBJECT}"
479 DEPENDS zig0 "${ZIG_STAGE2_SOURCES}"
475480 COMMENT STATUS "Building self-hosted component ${ZIG1_OBJECT}"
476481 WORKING_DIRECTORY "${CMAKE_SOURCE_DIR}"
477482 )
......@@ -480,28 +485,29 @@ if("${ZIG_EXECUTABLE}" STREQUAL "")
480485 set(ZIG_EXECUTABLE "${ZIG_EXECUTABLE}.exe")
481486 endif()
482487else()
483 add_custom_target(zig_build_zig1 ALL
484 COMMAND "${ZIG_EXECUTABLE}" "build-obj" ${BUILD_ZIG1_ARGS}
488 add_custom_command(
489 OUTPUT "${ZIG1_OBJECT}"
485490 BYPRODUCTS "${ZIG1_OBJECT}"
491 COMMAND "${ZIG_EXECUTABLE}" "build-obj" ${BUILD_ZIG1_ARGS}
492 DEPENDS ${ZIG_STAGE2_SOURCES}
486493 COMMENT STATUS "Building self-hosted component ${ZIG1_OBJECT}"
487494 WORKING_DIRECTORY "${CMAKE_SOURCE_DIR}"
488495 )
489496endif()
490497
491498# 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
494501set_target_properties(zig PROPERTIES
495502 COMPILE_FLAGS ${EXE_CFLAGS}
496503 LINK_FLAGS ${EXE_LDFLAGS}
497504)
498target_link_libraries(zig "${ZIG1_OBJECT}" zigstage1)
505target_link_libraries(zig zigstage1)
499506if(MSVC)
500507 target_link_libraries(zig ntdll.lib)
501508elseif(MINGW)
502509 target_link_libraries(zig ntdll)
503510endif()
504add_dependencies(zig zig_build_zig1)
505511
506512install(TARGETS zig DESTINATION bin)
507513