Repository navigation
Expand file tree
/
Copy pathCMakeLists.txt
More file actions
127 lines (102 loc) · 3.1 KB
/
Copy pathCMakeLists.txt
File metadata and controls
127 lines (102 loc) · 3.1 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
cmake_minimum_required(VERSION 3.15)
set(KOI_VERSION 1.03)
set(KOI_SOVERSION 1)
project(koi
VERSION ${KOI_VERSION}
LANGUAGES C
DESCRIPTION "stb-like single-file, public domain (or MIT-licensed) image processing libraries for C/C++"
HOMEPAGE_URL https://github.com/Muppetsg2/koi
)
# Configuration Options
option(KOI_ENABLE_IMAGE "Enable koi_image.h" ON)
option(KOI_ENABLE_IMAGE_WRITE "Enable koi_image_write.h" ON)
set(LIBRARY_NAME ${PROJECT_NAME})
set(KOI_SOURCES
${CMAKE_CURRENT_SOURCE_DIR}/koi.c
)
if(KOI_ENABLE_IMAGE)
list(APPEND KOI_SOURCES
${CMAKE_CURRENT_SOURCE_DIR}/koi_image.h
)
endif()
if(KOI_ENABLE_IMAGE_WRITE)
list(APPEND KOI_SOURCES
${CMAKE_CURRENT_SOURCE_DIR}/koi_image_write.h
)
endif()
# Install destinations
include(GNUInstallDirs)
set(KOI_CMAKE_DIR ${CMAKE_INSTALL_LIBDIR}/${PROJECT_NAME}/cmake)
set(KOI_DOC_DIR ${CMAKE_INSTALL_DOCDIR})
set(KOI_INCLUDE_DIR ${CMAKE_INSTALL_INCLUDEDIR})
set(KOI_LIBRARY_DIR ${CMAKE_INSTALL_LIBDIR})
set(KOI_PKGCONFIG_DIR ${CMAKE_INSTALL_LIBDIR}/pkgconfig)
set(KOI_RUNTIME_DIR ${CMAKE_INSTALL_BINDIR})
add_library(${LIBRARY_NAME} ${KOI_SOURCES})
add_library(${PROJECT_NAME}::${LIBRARY_NAME} ALIAS ${LIBRARY_NAME})
# Include headers
target_include_directories(${LIBRARY_NAME} PUBLIC
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}>
$<INSTALL_INTERFACE:${KOI_INCLUDE_DIR}>
)
# Compile definitions
if(KOI_ENABLE_IMAGE)
target_compile_definitions(${LIBRARY_NAME} PUBLIC KOI_ENABLE_IMAGE)
endif()
if(KOI_ENABLE_IMAGE_WRITE)
target_compile_definitions(${LIBRARY_NAME} PUBLIC KOI_ENABLE_IMAGE_WRITE)
endif()
if(BUILD_SHARED_LIBS)
set_target_properties(${LIBRARY_NAME} PROPERTIES
SOVERSION ${KOI_SOVERSION}
WINDOWS_EXPORT_ALL_SYMBOLS ON
)
endif()
set_target_properties(${LIBRARY_NAME} PROPERTIES VERSION ${KOI_VERSION})
# Write CMake package config files
include(CMakePackageConfigHelpers)
configure_package_config_file(
${PROJECT_NAME}-config.cmake.in
${PROJECT_NAME}-config.cmake
INSTALL_DESTINATION ${KOI_CMAKE_DIR}
PATH_VARS KOI_INCLUDE_DIR KOI_LIBRARY_DIR
NO_CHECK_REQUIRED_COMPONENTS_MACRO
)
write_basic_package_version_file(
${PROJECT_NAME}-config-version.cmake
VERSION ${KOI_VERSION}
COMPATIBILITY SameMajorVersion
)
# pkg-config file
configure_file(${PROJECT_NAME}.pc.in ${LIBRARY_NAME}.pc @ONLY)
# Installation
install(TARGETS
${PROJECT_NAME}
EXPORT ${PROJECT_NAME}-targets
DESTINATION ${KOI_LIBRARY_DIR}
PUBLIC_HEADER DESTINATION ${KOI_INCLUDE_DIR}
RUNTIME DESTINATION ${KOI_RUNTIME_DIR}
)
install(EXPORT
${PROJECT_NAME}-targets
NAMESPACE ${PROJECT_NAME}::
DESTINATION ${KOI_CMAKE_DIR}
)
install(FILES
koi_image.h
koi_image_write.h
DESTINATION ${KOI_INCLUDE_DIR}
)
install(FILES
LICENSE
DESTINATION ${KOI_DOC_DIR}
)
install(FILES
"${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}-config.cmake"
"${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}-config-version.cmake"
DESTINATION ${KOI_CMAKE_DIR}
)
install(FILES
"${CMAKE_CURRENT_BINARY_DIR}/${LIBRARY_NAME}.pc"
DESTINATION ${KOI_PKGCONFIG_DIR}
)