From 0ef1a475e40946fc5cf7d20e266d1a5e56ab840c Mon Sep 17 00:00:00 2001 From: Myk Taylor Date: Fri, 4 Aug 2023 16:43:58 -0700 Subject: [PATCH] allow code to be generated even when the library isn't being built --- library/CMakeLists.txt | 62 +++++++++++++++++++++--------------------- 1 file changed, 31 insertions(+), 31 deletions(-) diff --git a/library/CMakeLists.txt b/library/CMakeLists.txt index 2ea2d830f..e9ec8f717 100644 --- a/library/CMakeLists.txt +++ b/library/CMakeLists.txt @@ -4,15 +4,16 @@ cmake_minimum_required(VERSION 3.21) # prevent CMake warnings about INTERFACE_LINK_LIBRARIES vs LINK_INTERFACE_LIBRARIES cmake_policy(SET CMP0022 NEW) -if(BUILD_LIBRARY) - # build options if(UNIX) option(CONSOLE_NO_CATCH "Make the console not catch 'CTRL+C' events for easier debugging." OFF) endif() -include_directories(proto) -include_directories(include) +# Generation +set(CODEGEN_OUT ${dfapi_SOURCE_DIR}/include/df/codegen.out.xml) + +file(GLOB GENERATE_INPUT_SCRIPTS ${dfapi_SOURCE_DIR}/xml/*.pm ${dfapi_SOURCE_DIR}/xml/*.xslt) +file(GLOB GENERATE_INPUT_XMLS ${dfapi_SOURCE_DIR}/xml/df.*.xml) execute_process(COMMAND ${PERL_EXECUTABLE} xml/list.pl xml ${dfapi_SOURCE_DIR}/include/df ";" WORKING_DIRECTORY ${dfapi_SOURCE_DIR} @@ -20,6 +21,32 @@ execute_process(COMMAND ${PERL_EXECUTABLE} xml/list.pl xml ${dfapi_SOURCE_DIR}/i set_source_files_properties(${GENERATED_HDRS} PROPERTIES HEADER_FILE_ONLY TRUE GENERATED TRUE) +add_custom_command( + OUTPUT ${CODEGEN_OUT} + BYPRODUCTS ${GENERATED_HDRS} + COMMAND ${PERL_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/xml/codegen.pl + ${CMAKE_CURRENT_SOURCE_DIR}/xml + ${CMAKE_CURRENT_SOURCE_DIR}/include/df + MAIN_DEPENDENCY ${dfapi_SOURCE_DIR}/xml/codegen.pl + COMMENT "Generating codegen.out.xml and df/headers" + DEPENDS ${GENERATE_INPUT_XMLS} ${GENERATE_INPUT_SCRIPTS} +) + +if(NOT("${CMAKE_GENERATOR}" STREQUAL Ninja)) + # use BYPRODUCTS instead under Ninja to avoid rebuilds + list(APPEND CODEGEN_OUT ${GENERATED_HDRS}) +endif() + +add_custom_target(generate_headers DEPENDS ${CODEGEN_OUT}) + +include_directories(include) + +add_subdirectory(xml) + +if(BUILD_LIBRARY) + +include_directories(proto) + set(MAIN_HEADERS include/Internal.h include/DFHack.h @@ -263,33 +290,8 @@ add_custom_target(generate_proto_core DEPENDS ${PROJECT_PROTO_TMP_FILES}) # Merge headers into sources set_source_files_properties( ${PROJECT_HEADERS} PROPERTIES HEADER_FILE_ONLY TRUE ) list(APPEND PROJECT_SOURCES ${PROJECT_HEADERS}) - -# Generation list(APPEND PROJECT_SOURCES ${GENERATED_HDRS}) -file(GLOB GENERATE_INPUT_SCRIPTS ${dfapi_SOURCE_DIR}/xml/*.pm ${dfapi_SOURCE_DIR}/xml/*.xslt) -file(GLOB GENERATE_INPUT_XMLS ${dfapi_SOURCE_DIR}/xml/df.*.xml) - -set(CODEGEN_OUT ${dfapi_SOURCE_DIR}/include/df/codegen.out.xml) -if(NOT("${CMAKE_GENERATOR}" STREQUAL Ninja)) - # use BYPRODUCTS instead under Ninja to avoid rebuilds - list(APPEND CODEGEN_OUT ${GENERATED_HDRS}) -endif() - -add_custom_command( - OUTPUT ${CODEGEN_OUT} - BYPRODUCTS ${GENERATED_HDRS} - COMMAND ${PERL_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/xml/codegen.pl - ${CMAKE_CURRENT_SOURCE_DIR}/xml - ${CMAKE_CURRENT_SOURCE_DIR}/include/df - MAIN_DEPENDENCY ${dfapi_SOURCE_DIR}/xml/codegen.pl - COMMENT "Generating codegen.out.xml and df/headers" - DEPENDS ${GENERATE_INPUT_XMLS} ${GENERATE_INPUT_SCRIPTS} -) - -add_custom_target(generate_headers - DEPENDS ${dfapi_SOURCE_DIR}/include/df/codegen.out.xml) - if(REMOVE_SYMBOLS_FROM_DF_STUBS) if(UNIX) # Don't produce debug info for generated stubs @@ -443,8 +445,6 @@ install(TARGETS dfhack-run dfhack-client binpatch LIBRARY DESTINATION ${DFHACK_LIBRARY_DESTINATION} RUNTIME DESTINATION ${DFHACK_LIBRARY_DESTINATION}) -add_subdirectory(xml) - endif(BUILD_LIBRARY) # install the offset file