From fd4440bb2f6e079ddc686ca182078c4e4f7e600f Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Wed, 3 Dec 2025 01:46:52 +0000 Subject: [PATCH 01/11] Initial plan From 59da5d35825ea489800b51773f61e80f45d244e9 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Wed, 3 Dec 2025 01:52:16 +0000 Subject: [PATCH 02/11] Add vcpkg support with port files and CMake install targets Co-authored-by: hzhangxyz <11623447+hzhangxyz@users.noreply.github.com> --- CMakeLists.txt | 62 +++++++++++++++++++++++++++++++++------- cmake/ds-config.cmake.in | 5 ++++ ports/ds/portfile.cmake | 20 +++++++++++++ ports/ds/vcpkg.json | 18 ++++++++++++ 4 files changed, 94 insertions(+), 11 deletions(-) create mode 100644 cmake/ds-config.cmake.in create mode 100644 ports/ds/portfile.cmake create mode 100644 ports/ds/vcpkg.json diff --git a/CMakeLists.txt b/CMakeLists.txt index b02fd18..ed60044 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -2,25 +2,63 @@ cmake_minimum_required(VERSION 3.30) project(ds LANGUAGES CXX) set(CMAKE_EXPORT_COMPILE_COMMANDS ON) +include(GNUInstallDirs) +include(CMakePackageConfigHelpers) + +option(DS_ENABLE_LTO "Enable link-time optimization" ON) +option(DS_BUILD_EXAMPLES "Build example executables" ON) + file(GLOB_RECURSE SOURCES "${CMAKE_CURRENT_SOURCE_DIR}/src/*.cc") add_library(${PROJECT_NAME} STATIC ${SOURCES}) -target_include_directories(${PROJECT_NAME} PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/include) +target_include_directories(${PROJECT_NAME} PUBLIC + $ + $) target_compile_features(${PROJECT_NAME} PUBLIC cxx_std_20) -set_property(TARGET ${PROJECT_NAME} PROPERTY INTERPROCEDURAL_OPTIMIZATION True) +if(DS_ENABLE_LTO) + set_property(TARGET ${PROJECT_NAME} PROPERTY INTERPROCEDURAL_OPTIMIZATION True) +endif() + +install(TARGETS ${PROJECT_NAME} + EXPORT ${PROJECT_NAME}-targets + ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} + LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} + RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}) + +install(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/include/ + DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}) -file(GLOB EXECUTABLE_SOURCES "${CMAKE_CURRENT_SOURCE_DIR}/examples/*.cc") -foreach(EXEC_FILE ${EXECUTABLE_SOURCES}) - get_filename_component(EXEC_NAME ${EXEC_FILE} NAME_WE) - add_executable(${EXEC_NAME} ${EXEC_FILE}) - target_link_libraries(${EXEC_NAME} PRIVATE ${PROJECT_NAME}) - set_property(TARGET ${EXEC_NAME} PROPERTY INTERPROCEDURAL_OPTIMIZATION True) -endforeach() +install(EXPORT ${PROJECT_NAME}-targets + FILE ${PROJECT_NAME}-targets.cmake + NAMESPACE ${PROJECT_NAME}:: + DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME}) + +configure_package_config_file( + ${CMAKE_CURRENT_SOURCE_DIR}/cmake/${PROJECT_NAME}-config.cmake.in + ${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}-config.cmake + INSTALL_DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME}) + +install(FILES ${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}-config.cmake + DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME}) + +if(DS_BUILD_EXAMPLES) + file(GLOB EXECUTABLE_SOURCES "${CMAKE_CURRENT_SOURCE_DIR}/examples/*.cc") + foreach(EXEC_FILE ${EXECUTABLE_SOURCES}) + get_filename_component(EXEC_NAME ${EXEC_FILE} NAME_WE) + add_executable(${EXEC_NAME} ${EXEC_FILE}) + target_link_libraries(${EXEC_NAME} PRIVATE ${PROJECT_NAME}) + if(DS_ENABLE_LTO) + set_property(TARGET ${EXEC_NAME} PROPERTY INTERPROCEDURAL_OPTIMIZATION True) + endif() + endforeach() +endif() find_package(pybind11) if(pybind11_FOUND) pybind11_add_module(apyds ${CMAKE_CURRENT_SOURCE_DIR}/apyds/ds.cc) target_link_libraries(apyds PRIVATE ${PROJECT_NAME}) - set_property(TARGET apyds PROPERTY INTERPROCEDURAL_OPTIMIZATION True) + if(DS_ENABLE_LTO) + set_property(TARGET apyds PROPERTY INTERPROCEDURAL_OPTIMIZATION True) + endif() set_target_properties(apyds PROPERTIES OUTPUT_NAME _ds) install(TARGETS apyds DESTINATION apyds) else() @@ -36,7 +74,9 @@ if(GTest_FOUND) get_filename_component(TEST_NAME ${TEST_FILE} NAME_WE) add_executable(${TEST_NAME} ${TEST_FILE}) target_link_libraries(${TEST_NAME} PRIVATE ${PROJECT_NAME} GTest::gtest_main) - set_property(TARGET ${TEST_NAME} PROPERTY INTERPROCEDURAL_OPTIMIZATION True) + if(DS_ENABLE_LTO) + set_property(TARGET ${TEST_NAME} PROPERTY INTERPROCEDURAL_OPTIMIZATION True) + endif() gtest_discover_tests(${TEST_NAME}) add_dependencies(test_executables ${TEST_NAME}) endforeach() diff --git a/cmake/ds-config.cmake.in b/cmake/ds-config.cmake.in new file mode 100644 index 0000000..ffca991 --- /dev/null +++ b/cmake/ds-config.cmake.in @@ -0,0 +1,5 @@ +@PACKAGE_INIT@ + +include("${CMAKE_CURRENT_LIST_DIR}/ds-targets.cmake") + +check_required_components(ds) diff --git a/ports/ds/portfile.cmake b/ports/ds/portfile.cmake new file mode 100644 index 0000000..f00ab55 --- /dev/null +++ b/ports/ds/portfile.cmake @@ -0,0 +1,20 @@ +vcpkg_from_github( + OUT_SOURCE_PATH SOURCE_PATH + REPO USTC-KnowledgeComputingLab/ds + REF "${VERSION}" + SHA512 0 +) + +vcpkg_cmake_configure( + SOURCE_PATH "${SOURCE_PATH}" + OPTIONS + -DDS_BUILD_EXAMPLES=OFF +) + +vcpkg_cmake_build() + +vcpkg_cmake_install() + +vcpkg_cmake_config_fixup(PACKAGE_NAME ds CONFIG_PATH lib/cmake/ds) + +vcpkg_install_copyright(FILE_LIST "${SOURCE_PATH}/LICENSE.md") diff --git a/ports/ds/vcpkg.json b/ports/ds/vcpkg.json new file mode 100644 index 0000000..f94f9ff --- /dev/null +++ b/ports/ds/vcpkg.json @@ -0,0 +1,18 @@ +{ + "name": "ds", + "version-string": "0.0.0", + "description": "A deductive system for logical inference", + "homepage": "https://github.com/USTC-KnowledgeComputingLab/ds", + "license": "AGPL-3.0-or-later", + "supports": "!uwp", + "dependencies": [ + { + "name": "vcpkg-cmake", + "host": true + }, + { + "name": "vcpkg-cmake-config", + "host": true + } + ] +} From 619768adc6d1187a7982c22efb9df3bf986fdabc Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Wed, 3 Dec 2025 01:53:22 +0000 Subject: [PATCH 03/11] Add clarifying comments to portfile.cmake about placeholder values Co-authored-by: hzhangxyz <11623447+hzhangxyz@users.noreply.github.com> --- ports/ds/portfile.cmake | 3 +++ 1 file changed, 3 insertions(+) diff --git a/ports/ds/portfile.cmake b/ports/ds/portfile.cmake index f00ab55..712c57d 100644 --- a/ports/ds/portfile.cmake +++ b/ports/ds/portfile.cmake @@ -1,3 +1,6 @@ +# Note: When submitting to the official vcpkg registry, update the REF +# to the git tag and calculate the SHA512 hash of the source archive. +# For local overlay ports testing, SHA512 can be set to 0. vcpkg_from_github( OUT_SOURCE_PATH SOURCE_PATH REPO USTC-KnowledgeComputingLab/ds From 36280b78db0aa75392e14605368a09680f8fa8c1 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Wed, 3 Dec 2025 02:01:18 +0000 Subject: [PATCH 04/11] Simplify CMakeLists.txt: remove LTO option and config template file Co-authored-by: hzhangxyz <11623447+hzhangxyz@users.noreply.github.com> --- CMakeLists.txt | 44 ++++++++++------------------------------ cmake/ds-config.cmake.in | 5 ----- 2 files changed, 11 insertions(+), 38 deletions(-) delete mode 100644 cmake/ds-config.cmake.in diff --git a/CMakeLists.txt b/CMakeLists.txt index ed60044..385b253 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -3,10 +3,6 @@ project(ds LANGUAGES CXX) set(CMAKE_EXPORT_COMPILE_COMMANDS ON) include(GNUInstallDirs) -include(CMakePackageConfigHelpers) - -option(DS_ENABLE_LTO "Enable link-time optimization" ON) -option(DS_BUILD_EXAMPLES "Build example executables" ON) file(GLOB_RECURSE SOURCES "${CMAKE_CURRENT_SOURCE_DIR}/src/*.cc") add_library(${PROJECT_NAME} STATIC ${SOURCES}) @@ -14,9 +10,7 @@ target_include_directories(${PROJECT_NAME} PUBLIC $ $) target_compile_features(${PROJECT_NAME} PUBLIC cxx_std_20) -if(DS_ENABLE_LTO) - set_property(TARGET ${PROJECT_NAME} PROPERTY INTERPROCEDURAL_OPTIMIZATION True) -endif() +set_property(TARGET ${PROJECT_NAME} PROPERTY INTERPROCEDURAL_OPTIMIZATION True) install(TARGETS ${PROJECT_NAME} EXPORT ${PROJECT_NAME}-targets @@ -28,37 +22,23 @@ install(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/include/ DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}) install(EXPORT ${PROJECT_NAME}-targets - FILE ${PROJECT_NAME}-targets.cmake + FILE ${PROJECT_NAME}-config.cmake NAMESPACE ${PROJECT_NAME}:: DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME}) -configure_package_config_file( - ${CMAKE_CURRENT_SOURCE_DIR}/cmake/${PROJECT_NAME}-config.cmake.in - ${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}-config.cmake - INSTALL_DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME}) - -install(FILES ${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}-config.cmake - DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME}) - -if(DS_BUILD_EXAMPLES) - file(GLOB EXECUTABLE_SOURCES "${CMAKE_CURRENT_SOURCE_DIR}/examples/*.cc") - foreach(EXEC_FILE ${EXECUTABLE_SOURCES}) - get_filename_component(EXEC_NAME ${EXEC_FILE} NAME_WE) - add_executable(${EXEC_NAME} ${EXEC_FILE}) - target_link_libraries(${EXEC_NAME} PRIVATE ${PROJECT_NAME}) - if(DS_ENABLE_LTO) - set_property(TARGET ${EXEC_NAME} PROPERTY INTERPROCEDURAL_OPTIMIZATION True) - endif() - endforeach() -endif() +file(GLOB EXECUTABLE_SOURCES "${CMAKE_CURRENT_SOURCE_DIR}/examples/*.cc") +foreach(EXEC_FILE ${EXECUTABLE_SOURCES}) + get_filename_component(EXEC_NAME ${EXEC_FILE} NAME_WE) + add_executable(${EXEC_NAME} ${EXEC_FILE}) + target_link_libraries(${EXEC_NAME} PRIVATE ${PROJECT_NAME}) + set_property(TARGET ${EXEC_NAME} PROPERTY INTERPROCEDURAL_OPTIMIZATION True) +endforeach() find_package(pybind11) if(pybind11_FOUND) pybind11_add_module(apyds ${CMAKE_CURRENT_SOURCE_DIR}/apyds/ds.cc) target_link_libraries(apyds PRIVATE ${PROJECT_NAME}) - if(DS_ENABLE_LTO) - set_property(TARGET apyds PROPERTY INTERPROCEDURAL_OPTIMIZATION True) - endif() + set_property(TARGET apyds PROPERTY INTERPROCEDURAL_OPTIMIZATION True) set_target_properties(apyds PROPERTIES OUTPUT_NAME _ds) install(TARGETS apyds DESTINATION apyds) else() @@ -74,9 +54,7 @@ if(GTest_FOUND) get_filename_component(TEST_NAME ${TEST_FILE} NAME_WE) add_executable(${TEST_NAME} ${TEST_FILE}) target_link_libraries(${TEST_NAME} PRIVATE ${PROJECT_NAME} GTest::gtest_main) - if(DS_ENABLE_LTO) - set_property(TARGET ${TEST_NAME} PROPERTY INTERPROCEDURAL_OPTIMIZATION True) - endif() + set_property(TARGET ${TEST_NAME} PROPERTY INTERPROCEDURAL_OPTIMIZATION True) gtest_discover_tests(${TEST_NAME}) add_dependencies(test_executables ${TEST_NAME}) endforeach() diff --git a/cmake/ds-config.cmake.in b/cmake/ds-config.cmake.in deleted file mode 100644 index ffca991..0000000 --- a/cmake/ds-config.cmake.in +++ /dev/null @@ -1,5 +0,0 @@ -@PACKAGE_INIT@ - -include("${CMAKE_CURRENT_LIST_DIR}/ds-targets.cmake") - -check_required_components(ds) From 5214a77051977e028028133ef968c956698d918c Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Wed, 3 Dec 2025 02:03:34 +0000 Subject: [PATCH 05/11] Update portfile.cmake: remove unused options and fixup call Co-authored-by: hzhangxyz <11623447+hzhangxyz@users.noreply.github.com> --- ports/ds/portfile.cmake | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/ports/ds/portfile.cmake b/ports/ds/portfile.cmake index 712c57d..116d944 100644 --- a/ports/ds/portfile.cmake +++ b/ports/ds/portfile.cmake @@ -10,14 +10,12 @@ vcpkg_from_github( vcpkg_cmake_configure( SOURCE_PATH "${SOURCE_PATH}" - OPTIONS - -DDS_BUILD_EXAMPLES=OFF ) vcpkg_cmake_build() vcpkg_cmake_install() -vcpkg_cmake_config_fixup(PACKAGE_NAME ds CONFIG_PATH lib/cmake/ds) +file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/debug/include") vcpkg_install_copyright(FILE_LIST "${SOURCE_PATH}/LICENSE.md") From e783f5a517a35f38c4847ce46462144a6dadb90b Mon Sep 17 00:00:00 2001 From: Hao Zhang Date: Wed, 3 Dec 2025 10:13:26 +0800 Subject: [PATCH 06/11] Update vcpkg.json. --- ports/ds/vcpkg.json | 31 +++++++++++++++---------------- 1 file changed, 15 insertions(+), 16 deletions(-) diff --git a/ports/ds/vcpkg.json b/ports/ds/vcpkg.json index f94f9ff..1368277 100644 --- a/ports/ds/vcpkg.json +++ b/ports/ds/vcpkg.json @@ -1,18 +1,17 @@ { - "name": "ds", - "version-string": "0.0.0", - "description": "A deductive system for logical inference", - "homepage": "https://github.com/USTC-KnowledgeComputingLab/ds", - "license": "AGPL-3.0-or-later", - "supports": "!uwp", - "dependencies": [ - { - "name": "vcpkg-cmake", - "host": true - }, - { - "name": "vcpkg-cmake-config", - "host": true - } - ] + "name": "ds", + "version-string": "0.0.0", + "description": "A deductive system for logical inference", + "homepage": "https://github.com/USTC-KnowledgeComputingLab/ds", + "license": "AGPL-3.0-or-later", + "dependencies": [ + { + "name": "vcpkg-cmake", + "host": true + }, + { + "name": "vcpkg-cmake-config", + "host": true + } + ] } From c7f694e2de0d34da22a86a8b0aa266540a817a27 Mon Sep 17 00:00:00 2001 From: Hao Zhang Date: Wed, 3 Dec 2025 10:14:10 +0800 Subject: [PATCH 07/11] Update portfile.cmake. --- ports/ds/portfile.cmake | 3 --- 1 file changed, 3 deletions(-) diff --git a/ports/ds/portfile.cmake b/ports/ds/portfile.cmake index 116d944..9be0f34 100644 --- a/ports/ds/portfile.cmake +++ b/ports/ds/portfile.cmake @@ -1,6 +1,3 @@ -# Note: When submitting to the official vcpkg registry, update the REF -# to the git tag and calculate the SHA512 hash of the source archive. -# For local overlay ports testing, SHA512 can be set to 0. vcpkg_from_github( OUT_SOURCE_PATH SOURCE_PATH REPO USTC-KnowledgeComputingLab/ds From 7bd982707acaea8051ee30d2b9e9bb00c80be443 Mon Sep 17 00:00:00 2001 From: Hao Zhang Date: Wed, 3 Dec 2025 10:19:31 +0800 Subject: [PATCH 08/11] Update CMakeLists.txt. --- CMakeLists.txt | 12 ++++-------- 1 file changed, 4 insertions(+), 8 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 385b253..2c55663 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -3,12 +3,10 @@ project(ds LANGUAGES CXX) set(CMAKE_EXPORT_COMPILE_COMMANDS ON) include(GNUInstallDirs) - -file(GLOB_RECURSE SOURCES "${CMAKE_CURRENT_SOURCE_DIR}/src/*.cc") -add_library(${PROJECT_NAME} STATIC ${SOURCES}) -target_include_directories(${PROJECT_NAME} PUBLIC - $ - $) +file(GLOB_RECURSE SOURCES CONFIGURE_DEPENDS "${CMAKE_CURRENT_SOURCE_DIR}/src/*.cc") +add_library(${PROJECT_NAME} STATIC) +target_sources(${PROJECT_NAME} PRIVATE ${SOURCES}) +target_include_directories(${PROJECT_NAME} PUBLIC $ $) target_compile_features(${PROJECT_NAME} PUBLIC cxx_std_20) set_property(TARGET ${PROJECT_NAME} PROPERTY INTERPROCEDURAL_OPTIMIZATION True) @@ -17,10 +15,8 @@ install(TARGETS ${PROJECT_NAME} ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}) - install(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/include/ DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}) - install(EXPORT ${PROJECT_NAME}-targets FILE ${PROJECT_NAME}-config.cmake NAMESPACE ${PROJECT_NAME}:: From 3ddedbe46d021b86f2dc121d0278660b939d8672 Mon Sep 17 00:00:00 2001 From: Hao Zhang Date: Wed, 3 Dec 2025 10:54:46 +0800 Subject: [PATCH 09/11] Update vcpkg.json. --- ports/ds/vcpkg.json | 11 +---------- 1 file changed, 1 insertion(+), 10 deletions(-) diff --git a/ports/ds/vcpkg.json b/ports/ds/vcpkg.json index 1368277..2aa21be 100644 --- a/ports/ds/vcpkg.json +++ b/ports/ds/vcpkg.json @@ -4,14 +4,5 @@ "description": "A deductive system for logical inference", "homepage": "https://github.com/USTC-KnowledgeComputingLab/ds", "license": "AGPL-3.0-or-later", - "dependencies": [ - { - "name": "vcpkg-cmake", - "host": true - }, - { - "name": "vcpkg-cmake-config", - "host": true - } - ] + "dependencies": [] } From 0571e14ad2ede15c22d3a6021da773763460b545 Mon Sep 17 00:00:00 2001 From: Hao Zhang Date: Wed, 3 Dec 2025 10:55:14 +0800 Subject: [PATCH 10/11] Update portfile.cmake. --- ports/ds/portfile.cmake | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/ports/ds/portfile.cmake b/ports/ds/portfile.cmake index 9be0f34..b867d89 100644 --- a/ports/ds/portfile.cmake +++ b/ports/ds/portfile.cmake @@ -1,8 +1,7 @@ vcpkg_from_github( OUT_SOURCE_PATH SOURCE_PATH REPO USTC-KnowledgeComputingLab/ds - REF "${VERSION}" - SHA512 0 + REF main ) vcpkg_cmake_configure( @@ -13,6 +12,8 @@ vcpkg_cmake_build() vcpkg_cmake_install() -file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/debug/include") - vcpkg_install_copyright(FILE_LIST "${SOURCE_PATH}/LICENSE.md") + +vcpkg_cmake_config_fixup(PACKAGE_NAME ds CONFIG_PATH lib/cmake/ds) + +file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/debug/include") From 3411a2aa6bc91164299c6284d0146335dbe0f8a4 Mon Sep 17 00:00:00 2001 From: Hao Zhang Date: Wed, 3 Dec 2025 11:05:11 +0800 Subject: [PATCH 11/11] Update vcpkg.json. --- ports/ds/vcpkg.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ports/ds/vcpkg.json b/ports/ds/vcpkg.json index 2aa21be..f2c68c6 100644 --- a/ports/ds/vcpkg.json +++ b/ports/ds/vcpkg.json @@ -1,7 +1,7 @@ { "name": "ds", "version-string": "0.0.0", - "description": "A deductive system for logical inference", + "description": "A deductive system", "homepage": "https://github.com/USTC-KnowledgeComputingLab/ds", "license": "AGPL-3.0-or-later", "dependencies": []