Skip to content

Commit 4fa24af

Browse files
giladreichSiegeLord
authored andcommitted
Implement generating cmake package config files.
1 parent aaf0b5f commit 4fa24af

File tree

3 files changed

+66
-0
lines changed

3 files changed

+66
-0
lines changed

CMakeLists.txt

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1208,6 +1208,44 @@ if(INSTALL_PKG_CONFIG_FILES)
12081208
endforeach(versuffix)
12091209
endif(INSTALL_PKG_CONFIG_FILES)
12101210

1211+
# Generate CMake package-config files
1212+
include(CMakePackageConfigHelpers)
1213+
1214+
set(PKG_NAME "Allegro")
1215+
string(TOLOWER ${PKG_NAME} PKG_NAME_LOWER)
1216+
1217+
set(PKG_CONFIG_INSTALL_DIR "lib/cmake/${PKG_NAME_LOWER}")
1218+
set(PKG_GENERATED_DIR "${CMAKE_CURRENT_BINARY_DIR}/generated")
1219+
set(PKG_TARGETS_NAME "${PKG_NAME}Targets")
1220+
set(PKG_CONFIG_FILE "${PKG_GENERATED_DIR}/${PKG_NAME}Config.cmake")
1221+
set(PKG_VERSION_FILE "${PKG_GENERATED_DIR}/${PKG_NAME}ConfigVersion.cmake")
1222+
1223+
configure_package_config_file(
1224+
"${CMAKE_CURRENT_LIST_DIR}/cmake/${PKG_NAME}Config.cmake.in"
1225+
${PKG_CONFIG_FILE}
1226+
INSTALL_DESTINATION ${PKG_CONFIG_INSTALL_DIR}
1227+
NO_SET_AND_CHECK_MACRO
1228+
NO_CHECK_REQUIRED_COMPONENTS_MACRO
1229+
)
1230+
write_basic_package_version_file(${PKG_VERSION_FILE}
1231+
VERSION ${ALLEGRO_VERSION}
1232+
COMPATIBILITY AnyNewerVersion
1233+
)
1234+
install(
1235+
TARGETS ${ALLEGRO_TARGETS}
1236+
EXPORT ${PKG_TARGETS_NAME}
1237+
)
1238+
install(
1239+
EXPORT ${PKG_TARGETS_NAME}
1240+
NAMESPACE ${PKG_NAME}::
1241+
DESTINATION ${PKG_CONFIG_INSTALL_DIR}
1242+
)
1243+
install(
1244+
FILES ${PKG_CONFIG_FILE} ${PKG_VERSION_FILE}
1245+
DESTINATION ${PKG_CONFIG_INSTALL_DIR}
1246+
)
1247+
1248+
12111249
#-----------------------------------------------------------------------------#
12121250
#
12131251
# Documentation

cmake/AllegroConfig.cmake.in

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
#
2+
# Allegro Package Config
3+
#
4+
@PACKAGE_INIT@
5+
6+
set(ALLEGRO_PKG_BUGREPORT "@PROJECT_HOMEPAGE_URL@/issues")
7+
8+
# Allegro Targets
9+
set(ALLEGRO_PKG_TARGETS "@ALLEGRO_TARGETS@")
10+
11+
# Allegro Package Version
12+
set(ALLEGRO_PKG_VERSION_MAJOR @PROJECT_VERSION_MAJOR@)
13+
set(ALLEGRO_PKG_VERSION_MINOR @PROJECT_VERSION_MINOR@)
14+
set(ALLEGRO_PKG_VERSION_PATCH @PROJECT_VERSION_PATCH@)
15+
set(ALLEGRO_PKG_VERSION @PROJECT_VERSION@)
16+
17+
# Architecture, compiler and other low level flags
18+
set(ALLEGRO_PKG_LIBRARY_ARCHITECTURE "@CMAKE_LIBRARY_ARCHITECTURE@")
19+
set(ALLEGRO_PKG_COMPILER "@CMAKE_C_COMPILER_ID@")
20+
set(ALLEGRO_PKG_COMPILER_VERSION "@CMAKE_C_COMPILER_VERSION@")
21+
set(ALLEGRO_PKG_HOST_SYSTEM "@CMAKE_HOST_SYSTEM@")
22+
23+
# Targets
24+
include("${CMAKE_CURRENT_LIST_DIR}/@[email protected]")

cmake/Common.cmake

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -85,6 +85,10 @@ endfunction(sanitize_cmake_link_flags)
8585
function(add_our_library target framework_name sources extra_flags link_with)
8686
# BUILD_SHARED_LIBS controls whether this is a shared or static library.
8787
add_library(${target} ${sources})
88+
target_include_directories(${target} INTERFACE $<INSTALL_INTERFACE:include>)
89+
list(APPEND ALLEGRO_TARGETS "${target}")
90+
list(REMOVE_DUPLICATES ALLEGRO_TARGETS)
91+
set(ALLEGRO_TARGETS "${ALLEGRO_TARGETS}" CACHE STRING "Available allegro libraries" FORCE)
8892

8993
if(MSVC)
9094
# Compile with multiple processors

0 commit comments

Comments
 (0)