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.master
parent
f9d209787b
commit
77d67aa662
|
@ -299,6 +299,11 @@ set(ZIG_CPP_SOURCES
|
||||||
# https://github.com/ziglang/zig/issues/6363
|
# https://github.com/ziglang/zig/issues/6363
|
||||||
"${CMAKE_SOURCE_DIR}/src/windows_sdk.cpp"
|
"${CMAKE_SOURCE_DIR}/src/windows_sdk.cpp"
|
||||||
)
|
)
|
||||||
|
# Needed because we use cmake, not the zig build system, to build zig1.o.
|
||||||
|
set(ZIG_STAGE2_SOURCES
|
||||||
|
"${CMAKE_SOURCE_DIR}/src/main.zig"
|
||||||
|
"${CMAKE_SOURCE_DIR}/src/Module.zig"
|
||||||
|
)
|
||||||
|
|
||||||
if(MSVC)
|
if(MSVC)
|
||||||
set(MSVC_DIA_SDK_DIR "$ENV{VSINSTALLDIR}DIA SDK")
|
set(MSVC_DIA_SDK_DIR "$ENV{VSINSTALLDIR}DIA SDK")
|
||||||
|
@ -468,10 +473,10 @@ set(BUILD_ZIG1_ARGS
|
||||||
)
|
)
|
||||||
|
|
||||||
if("${ZIG_EXECUTABLE}" STREQUAL "")
|
if("${ZIG_EXECUTABLE}" STREQUAL "")
|
||||||
add_custom_target(zig_build_zig1 ALL
|
add_custom_command(
|
||||||
|
OUTPUT "${ZIG1_OBJECT}"
|
||||||
COMMAND zig0 ${BUILD_ZIG1_ARGS}
|
COMMAND zig0 ${BUILD_ZIG1_ARGS}
|
||||||
DEPENDS zig0
|
DEPENDS zig0 "${ZIG_STAGE2_SOURCES}"
|
||||||
BYPRODUCTS "${ZIG1_OBJECT}"
|
|
||||||
COMMENT STATUS "Building self-hosted component ${ZIG1_OBJECT}"
|
COMMENT STATUS "Building self-hosted component ${ZIG1_OBJECT}"
|
||||||
WORKING_DIRECTORY "${CMAKE_SOURCE_DIR}"
|
WORKING_DIRECTORY "${CMAKE_SOURCE_DIR}"
|
||||||
)
|
)
|
||||||
|
@ -480,28 +485,29 @@ if("${ZIG_EXECUTABLE}" STREQUAL "")
|
||||||
set(ZIG_EXECUTABLE "${ZIG_EXECUTABLE}.exe")
|
set(ZIG_EXECUTABLE "${ZIG_EXECUTABLE}.exe")
|
||||||
endif()
|
endif()
|
||||||
else()
|
else()
|
||||||
add_custom_target(zig_build_zig1 ALL
|
add_custom_command(
|
||||||
COMMAND "${ZIG_EXECUTABLE}" "build-obj" ${BUILD_ZIG1_ARGS}
|
OUTPUT "${ZIG1_OBJECT}"
|
||||||
BYPRODUCTS "${ZIG1_OBJECT}"
|
BYPRODUCTS "${ZIG1_OBJECT}"
|
||||||
|
COMMAND "${ZIG_EXECUTABLE}" "build-obj" ${BUILD_ZIG1_ARGS}
|
||||||
|
DEPENDS ${ZIG_STAGE2_SOURCES}
|
||||||
COMMENT STATUS "Building self-hosted component ${ZIG1_OBJECT}"
|
COMMENT STATUS "Building self-hosted component ${ZIG1_OBJECT}"
|
||||||
WORKING_DIRECTORY "${CMAKE_SOURCE_DIR}"
|
WORKING_DIRECTORY "${CMAKE_SOURCE_DIR}"
|
||||||
)
|
)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
# cmake won't let us configure an executable without C sources.
|
# cmake won't let us configure an executable without C sources.
|
||||||
add_executable(zig "${CMAKE_SOURCE_DIR}/src/stage1/empty.cpp")
|
add_executable(zig "${CMAKE_SOURCE_DIR}/src/stage1/empty.cpp" "${ZIG1_OBJECT}")
|
||||||
|
|
||||||
set_target_properties(zig PROPERTIES
|
set_target_properties(zig PROPERTIES
|
||||||
COMPILE_FLAGS ${EXE_CFLAGS}
|
COMPILE_FLAGS ${EXE_CFLAGS}
|
||||||
LINK_FLAGS ${EXE_LDFLAGS}
|
LINK_FLAGS ${EXE_LDFLAGS}
|
||||||
)
|
)
|
||||||
target_link_libraries(zig "${ZIG1_OBJECT}" zigstage1)
|
target_link_libraries(zig zigstage1)
|
||||||
if(MSVC)
|
if(MSVC)
|
||||||
target_link_libraries(zig ntdll.lib)
|
target_link_libraries(zig ntdll.lib)
|
||||||
elseif(MINGW)
|
elseif(MINGW)
|
||||||
target_link_libraries(zig ntdll)
|
target_link_libraries(zig ntdll)
|
||||||
endif()
|
endif()
|
||||||
add_dependencies(zig zig_build_zig1)
|
|
||||||
|
|
||||||
install(TARGETS zig DESTINATION bin)
|
install(TARGETS zig DESTINATION bin)
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue