From ac633da0504909e97efa8245389a112a2e1a015b Mon Sep 17 00:00:00 2001 From: Myk Taylor Date: Fri, 28 Jul 2023 23:58:54 -0700 Subject: [PATCH] de-duplicate stonesense resources --- .github/workflows/steam.yml | 28 ++++++++++------ CMakeLists.txt | 5 +-- plugins/Plugins.cmake | 66 +++++++++++++++++++------------------ 3 files changed, 53 insertions(+), 46 deletions(-) diff --git a/.github/workflows/steam.yml b/.github/workflows/steam.yml index 5cdcebfb1..9fdac4c24 100644 --- a/.github/workflows/steam.yml +++ b/.github/workflows/steam.yml @@ -70,16 +70,24 @@ jobs: run: | echo "CCACHE_DIR=${HOME}/.ccache" >> $GITHUB_ENV - name: Configure DFHack (common files) + env: + CC: gcc-10 + CXX: g++-10 run: | cmake \ -S . \ -B build \ -G Ninja \ + -DCMAKE_INSTALL_PREFIX=build/common-output \ + -DCMAKE_C_COMPILER_LAUNCHER=ccache \ + -DCMAKE_CXX_COMPILER_LAUNCHER=ccache \ -DDFHACK_BUILD_ARCH=64 \ - -DBUILD_LIBRARY:BOOL=0 \ - -DBUILD_BINARIES:BOOL=0 \ -DBUILD_DOCS:BOOL=1 \ - -DCMAKE_INSTALL_PREFIX=build/common-output + -DBUILD_LIBRARY:BOOL=0 \ + -DBUILD_PLUGINS:BOOL=0 \ + -DBUILD_STONESENSE:BOOL=1 \ + -DINSTALL_DATA_FILES:BOOL=1 \ + -DINSTALL_SCRIPTS:BOOL=1 - name: Build DFHack (common files) run: | ninja -C build install @@ -92,16 +100,16 @@ jobs: -S . \ -B build \ -G Ninja \ - -DDFHACK_BUILD_ARCH=64 \ - -DBUILD_STONESENSE:BOOL=1 \ + -DCMAKE_INSTALL_PREFIX=build/linux-output \ -DCMAKE_C_COMPILER_LAUNCHER=ccache \ -DCMAKE_CXX_COMPILER_LAUNCHER=ccache \ - -DBUILD_LIBRARY:BOOL=1 \ - -DBUILD_BINARIES:BOOL=1 \ + -DDFHACK_BUILD_ARCH=64 \ -DBUILD_DOCS:BOOL=0 \ - -DINSTALL_SCRIPTS:BOOL=0 \ + -DBUILD_LIBRARY:BOOL=1 \ + -DBUILD_PLUGINS:BOOL=1 \ + -DBUILD_STONESENSE:BOOL=1 \ -DINSTALL_DATA_FILES:BOOL=0 \ - -DCMAKE_INSTALL_PREFIX=build/linux-output + -DINSTALL_SCRIPTS:BOOL=0 - name: Build DFHack (linux build) run: | ninja -C build install @@ -110,7 +118,7 @@ jobs: ccache --show-stats - name: Cross-compile win64 artifacts env: - CMAKE_EXTRA_ARGS: '-DBUILD_STONESENSE:BOOL=1 -DBUILD_DFLAUNCH:BOOL=1 -DBUILD_DOCS:BOOL=0 -DINSTALL_SCRIPTS:BOOL=0 -DINSTALL_DATA_FILES:BOOL=0' + CMAKE_EXTRA_ARGS: '-DBUILD_STONESENSE:BOOL=1 -DBUILD_DFLAUNCH:BOOL=1 -DBUILD_DOCS:BOOL=0 -DINSTALL_DATA_FILES:BOOL=0 -DINSTALL_SCRIPTS:BOOL=0' steam_username: ${{ secrets.STEAM_SDK_USERNAME }} steam_password: ${{ secrets.STEAM_SDK_PASSWORD }} run: | diff --git a/CMakeLists.txt b/CMakeLists.txt index 3e1685d4f..5da7e4aa3 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -217,7 +217,6 @@ set(DFHACK_USERDOC_DESTINATION ${DFHACK_DATA_DESTINATION}) # some options for the user/developer to play with option(BUILD_LIBRARY "Build the DFHack library." ON) option(BUILD_PLUGINS "Build the DFHack plugins." ON) -option(BUILD_BINARIES "Build the DFHack binary tools." ON) option(INSTALL_SCRIPTS "Install DFHack scripts." ON) option(INSTALL_DATA_FILES "Install DFHack common data files." ON) @@ -418,9 +417,7 @@ file(WRITE "${CMAKE_BINARY_DIR}/dfhack_setarch.txt" ${DFHACK_SETARCH}) install(FILES "${CMAKE_BINARY_DIR}/dfhack_setarch.txt" DESTINATION "${DFHACK_DATA_DESTINATION}") # build the plugins -if(BUILD_LIBRARY AND BUILD_PLUGINS) - add_subdirectory(plugins) -endif() +add_subdirectory(plugins) if(INSTALL_DATA_FILES) add_subdirectory(data) diff --git a/plugins/Plugins.cmake b/plugins/Plugins.cmake index a0cea765f..e058d2281 100644 --- a/plugins/Plugins.cmake +++ b/plugins/Plugins.cmake @@ -115,42 +115,44 @@ macro(dfhack_plugin) endif() endif() - add_library(${PLUGIN_NAME} MODULE ${PLUGIN_SOURCES}) - ide_folder(${PLUGIN_NAME} "Plugins") + if(BUILD_LIBRARY AND BUILD_PLUGINS) + add_library(${PLUGIN_NAME} MODULE ${PLUGIN_SOURCES}) + ide_folder(${PLUGIN_NAME} "Plugins") + + target_include_directories(${PLUGIN_NAME} PRIVATE "${dfhack_SOURCE_DIR}/library/include") + target_include_directories(${PLUGIN_NAME} PRIVATE "${dfhack_SOURCE_DIR}/library/proto") + target_include_directories(${PLUGIN_NAME} PRIVATE "${CMAKE_CURRENT_SOURCE_DIR}/proto") + target_include_directories(${PLUGIN_NAME} PRIVATE "${dfhack_SOURCE_DIR}/library/depends/xgetopt") + + if(NUM_PROTO) + add_dependencies(${PLUGIN_NAME} generate_proto_${PLUGIN_NAME}) + target_link_libraries(${PLUGIN_NAME} dfhack protobuf-lite dfhack-version ${PLUGIN_LINK_LIBRARIES}) + else() + target_link_libraries(${PLUGIN_NAME} dfhack dfhack-version ${PLUGIN_LINK_LIBRARIES}) + endif() - target_include_directories(${PLUGIN_NAME} PRIVATE "${dfhack_SOURCE_DIR}/library/include") - target_include_directories(${PLUGIN_NAME} PRIVATE "${dfhack_SOURCE_DIR}/library/proto") - target_include_directories(${PLUGIN_NAME} PRIVATE "${CMAKE_CURRENT_SOURCE_DIR}/proto") - target_include_directories(${PLUGIN_NAME} PRIVATE "${dfhack_SOURCE_DIR}/library/depends/xgetopt") + add_dependencies(${PLUGIN_NAME} dfhack-version) - if(NUM_PROTO) - add_dependencies(${PLUGIN_NAME} generate_proto_${PLUGIN_NAME}) - target_link_libraries(${PLUGIN_NAME} dfhack protobuf-lite dfhack-version ${PLUGIN_LINK_LIBRARIES}) - else() - target_link_libraries(${PLUGIN_NAME} dfhack dfhack-version ${PLUGIN_LINK_LIBRARIES}) - endif() + # Make sure the source is generated before the executable builds. + add_dependencies(${PLUGIN_NAME} generate_proto) - add_dependencies(${PLUGIN_NAME} dfhack-version) + if(UNIX) + set(PLUGIN_COMPILE_FLAGS "${PLUGIN_COMPILE_FLAGS} ${PLUGIN_COMPILE_FLAGS_GCC}") + else() + set(PLUGIN_COMPILE_FLAGS "${PLUGIN_COMPILE_FLAGS} ${PLUGIN_COMPILE_FLAGS_MSVC}") + endif() + set_target_properties(${PLUGIN_NAME} PROPERTIES COMPILE_FLAGS "${PLUGIN_COMPILE_FLAGS}") - # Make sure the source is generated before the executable builds. - add_dependencies(${PLUGIN_NAME} generate_proto) + if(APPLE) + set_target_properties(${PLUGIN_NAME} PROPERTIES SUFFIX .plug.dylib PREFIX "") + elseif(UNIX) + set_target_properties(${PLUGIN_NAME} PROPERTIES SUFFIX .plug.so PREFIX "") + else() + set_target_properties(${PLUGIN_NAME} PROPERTIES SUFFIX .plug.dll) + endif() - if(UNIX) - set(PLUGIN_COMPILE_FLAGS "${PLUGIN_COMPILE_FLAGS} ${PLUGIN_COMPILE_FLAGS_GCC}") - else() - set(PLUGIN_COMPILE_FLAGS "${PLUGIN_COMPILE_FLAGS} ${PLUGIN_COMPILE_FLAGS_MSVC}") + install(TARGETS ${PLUGIN_NAME} + LIBRARY DESTINATION ${DFHACK_PLUGIN_DESTINATION} + RUNTIME DESTINATION ${DFHACK_PLUGIN_DESTINATION}) endif() - set_target_properties(${PLUGIN_NAME} PROPERTIES COMPILE_FLAGS "${PLUGIN_COMPILE_FLAGS}") - - if(APPLE) - set_target_properties(${PLUGIN_NAME} PROPERTIES SUFFIX .plug.dylib PREFIX "") - elseif(UNIX) - set_target_properties(${PLUGIN_NAME} PROPERTIES SUFFIX .plug.so PREFIX "") - else() - set_target_properties(${PLUGIN_NAME} PROPERTIES SUFFIX .plug.dll) - endif() - - install(TARGETS ${PLUGIN_NAME} - LIBRARY DESTINATION ${DFHACK_PLUGIN_DESTINATION} - RUNTIME DESTINATION ${DFHACK_PLUGIN_DESTINATION}) endmacro()