diff --git a/CMakeLists.txt b/CMakeLists.txt index 9de0a71..dc35b6f 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -72,3 +72,38 @@ if(NOT SQ_DISABLE_INSTALLER AND NOT SQ_DISABLE_HEADER_INSTALLER) COMPONENT Development ) endif() + +include(CMakePackageConfigHelpers) + +write_basic_package_version_file( + "${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_INSTALL_LIBDIR}/cmake/squirrel/squirrel-config-version.cmake" + VERSION "${squirrel_VERSION}" + COMPATIBILITY AnyNewerVersion + ) + +configure_package_config_file( + "${CMAKE_CURRENT_SOURCE_DIR}/squirrel-config.cmake.in" + "${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_INSTALL_LIBDIR}/cmake/squirrel/squirrel-config.cmake" + INSTALL_DESTINATION "${CMAKE_INSTALL_LIBDIR}/cmake/squirrel" + ) + +export(EXPORT squirrel + NAMESPACE squirrel:: + FILE "${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_INSTALL_LIBDIR}/cmake/squirrel/squirrel-targets.cmake" + ) + +if(NOT SQ_DISABLE_INSTALLER AND NOT SQ_DISABLE_CMAKE_INSTALLER) + install(FILES + "${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_INSTALL_LIBDIR}/cmake/squirrel/squirrel-config-version.cmake" + "${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_INSTALL_LIBDIR}/cmake/squirrel/squirrel-config.cmake" + DESTINATION "${CMAKE_INSTALL_LIBDIR}/cmake/squirrel" + COMPONENT Development + ) + + install(EXPORT squirrel + NAMESPACE squirrel:: + DESTINATION "${CMAKE_INSTALL_LIBDIR}/cmake/squirrel" + FILE "squirrel-targets.cmake" + COMPONENT Development + ) +endif() diff --git a/sq/CMakeLists.txt b/sq/CMakeLists.txt index ba37d85..bdea07d 100644 --- a/sq/CMakeLists.txt +++ b/sq/CMakeLists.txt @@ -2,7 +2,7 @@ set(CMAKE_C_STANDARD 99) if(NOT DISABLE_DYNAMIC) add_executable(sq sq.c) add_executable(squirrel::interpreter ALIAS sq) - set_target_properties(sq PROPERTIES LINKER_LANGUAGE C) + set_target_properties(sq PROPERTIES LINKER_LANGUAGE C EXPORT_NAME interpreter) target_link_libraries(sq squirrel sqstdlib) if(NOT SQ_DISABLE_INSTALLER) install(TARGETS sq EXPORT squirrel RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} COMPONENT Runtime) @@ -16,7 +16,7 @@ endif() if(NOT DISABLE_STATIC) add_executable(sq_static sq.c) add_executable(squirrel::interpreter_static ALIAS sq) - set_target_properties(sq_static PROPERTIES LINKER_LANGUAGE C) + set_target_properties(sq_static PROPERTIES LINKER_LANGUAGE C EXPORT_NAME interpreter_static) target_link_libraries(sq_static squirrel_static sqstdlib_static) if(NOT SQ_DISABLE_INSTALLER) install(TARGETS sq_static EXPORT squirrel RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} COMPONENT Runtime) diff --git a/sqstdlib/CMakeLists.txt b/sqstdlib/CMakeLists.txt index b4cbf87..34fba82 100644 --- a/sqstdlib/CMakeLists.txt +++ b/sqstdlib/CMakeLists.txt @@ -10,6 +10,7 @@ set(SQSTDLIB_SRC sqstdaux.cpp if(NOT DISABLE_DYNAMIC) add_library(sqstdlib SHARED ${SQSTDLIB_SRC}) add_library(squirrel::sqstdlib ALIAS sqstdlib) + set_property(TARGET sqstdlib PROPERTY EXPORT_NAME sqstdlib) target_link_libraries(sqstdlib squirrel) if(NOT SQ_DISABLE_INSTALLER) install(TARGETS sqstdlib EXPORT squirrel @@ -30,6 +31,7 @@ endif() if(NOT DISABLE_STATIC) add_library(sqstdlib_static STATIC ${SQSTDLIB_SRC}) add_library(squirrel::sqstdlib_static ALIAS sqstdlib_static) + set_property(TARGET sqstdlib_static PROPERTY EXPORT_NAME sqstdlib_static) if(NOT SQ_DISABLE_INSTALLER) install(TARGETS sqstdlib_static EXPORT squirrel ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} COMPONENT Development) endif() diff --git a/squirrel-config.cmake.in b/squirrel-config.cmake.in new file mode 100644 index 0000000..6ed4a8a --- /dev/null +++ b/squirrel-config.cmake.in @@ -0,0 +1,4 @@ +@PACKAGE_INIT@ + +include("${CMAKE_CURRENT_LIST_DIR}/squirrel-config-version.cmake") +include("${CMAKE_CURRENT_LIST_DIR}/squirrel-targets.cmake") diff --git a/squirrel/CMakeLists.txt b/squirrel/CMakeLists.txt index 78091c3..f96b958 100644 --- a/squirrel/CMakeLists.txt +++ b/squirrel/CMakeLists.txt @@ -14,6 +14,7 @@ set(SQUIRREL_SRC sqapi.cpp if(NOT DISABLE_DYNAMIC) add_library(squirrel SHARED ${SQUIRREL_SRC}) add_library(squirrel::squirrel ALIAS squirrel) + set_property(TARGET squirrel PROPERTY EXPORT_NAME squirrel) if(NOT SQ_DISABLE_INSTALLER) install(TARGETS squirrel EXPORT squirrel RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} COMPONENT Libraries @@ -33,6 +34,7 @@ endif() if(NOT DISABLE_STATIC) add_library(squirrel_static STATIC ${SQUIRREL_SRC}) add_library(squirrel::squirrel_static ALIAS squirrel_static) + set_property(TARGET squirrel_static PROPERTY EXPORT_NAME squirrel_static) if(NOT SQ_DISABLE_INSTALLER) install(TARGETS squirrel_static EXPORT squirrel ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} COMPONENT Development) endif()