1- cmake_minimum_required (VERSION 3.11 ...3.14 )
1+ cmake_minimum_required (VERSION 3.14 ...4.0 )
22
33if (CMAKE_VERSION VERSION_GREATER_EQUAL "3.24.0" )
44 cmake_policy (SET CMP0135 NEW )
55endif ()
66
7- project (asio LANGUAGES C )
7+ project (asio
8+ VERSION 1.0.0
9+ DESCRIPTION "A memory safe focus `C framework`, combining RAII, libuv, coroutine, and other concurrency primitives."
10+ HOMEPAGE_URL "https://zelang-dev.github.io/c-asio/"
11+ LANGUAGES C
12+ )
813
914set (CMAKE_C_STANDARD 90)
1015
@@ -20,7 +25,7 @@ set(CMAKE_CONFIGURATION_TYPES=Debug;Release)
2025set (BUILD_DIR ${CMAKE_CURRENT_SOURCE_DIR } /build)
2126set (CMAKE_RUNTIME_OUTPUT_DIRECTORY ${BUILD_DIR} )
2227set (CMAKE_ARCHIVE_OUTPUT_DIRECTORY "${CMAKE_SOURCE_DIR } /built" )
23- set (CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR } /cmake; ${ CMAKE_MODULE_PATH } " )
28+ set (CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR } /cmake" )
2429
2530find_package (raii QUIET )
2631if (NOT raii_FOUND)
@@ -43,8 +48,8 @@ endif()
4348find_package (opentls QUIET )
4449if (NOT opentls_FOUND)
4550 FetchContent_Declare (opentls
46- URL https://github.com/zelang-dev/openTLS/archive/refs/tags/4.1.4 .zip
47- URL_MD5 8b36facb05b61b9e0b0f29c354abb520
51+ URL https://github.com/zelang-dev/openTLS/archive/refs/tags/4.1.5 .zip
52+ URL_MD5 ff135f215921480ce824c1c1f73374e7
4853 )
4954 if (WIN32 )
5055 add_definitions (-DOPENSSL_MSVC_STATIC_RT=TRUE )
@@ -62,11 +67,11 @@ set(lib_files
6267
6368add_library (${PROJECT_NAME } STATIC ${lib_files} )
6469add_library (ASIO::ASYNC ALIAS ${PROJECT_NAME } )
65- target_include_directories (${PROJECT_NAME } PUBLIC $<BUILD_INTERFACE :${RAII_INCLUDE_DIR}
70+ target_include_directories (${PROJECT_NAME } PRIVATE $<BUILD_INTERFACE :${RAII_INCLUDE_DIR}
6671 $<INSTALL_INTERFACE :${RAII_INCLUDE_DIR} )
67- target_include_directories (${PROJECT_NAME } PUBLIC $<BUILD_INTERFACE :${OPENTLS_INCLUDE_DIR}
72+ target_include_directories (${PROJECT_NAME } PRIVATE $<BUILD_INTERFACE :${OPENTLS_INCLUDE_DIR}
6873 $<INSTALL_INTERFACE :${OPENTLS_INCLUDE_DIR} )
69- target_include_directories (${PROJECT_NAME } PUBLIC $<BUILD_INTERFACE :${OPENSSL_INCLUDE_DIR}
74+ target_include_directories (${PROJECT_NAME } PRIVATE $<BUILD_INTERFACE :${OPENSSL_INCLUDE_DIR}
7075 $<INSTALL_INTERFACE :${OPENSSL_INCLUDE_DIR} )
7176target_include_directories (${PROJECT_NAME } PUBLIC
7277 $<BUILD_INTERFACE :${CMAKE_CURRENT_SOURCE_DIR } /include >
@@ -79,7 +84,7 @@ target_link_libraries(${PROJECT_NAME} PUBLIC opentls)
7984target_link_libraries (${PROJECT_NAME } PUBLIC uv_a )
8085target_link_libraries (${PROJECT_NAME } PUBLIC raii )
8186
82- set_property (TARGET asio PROPERTY POSITION_INDEPENDENT_CODE True )
87+ set_property (TARGET ${ PROJECT_NAME } PROPERTY POSITION_INDEPENDENT_CODE True )
8388
8489if (UNIX )
8590 if (APPLE )
@@ -96,7 +101,7 @@ endif()
96101
97102find_package (ZLIB CONFIG )
98103if (ZLIB_FOUND )
99- target_include_directories (${PROJECT_NAME } PUBLIC $<BUILD_INTERFACE :${ZLIB_INCLUDE_DIR} $<INSTALL_INTERFACE :${INSTALL_INC_DIR} )
104+ target_include_directories (${PROJECT_NAME } PRIVATE $<BUILD_INTERFACE :${ZLIB_INCLUDE_DIR} $<INSTALL_INTERFACE :${INSTALL_INC_DIR} )
100105 message (STATUS "Cmake FindZLIB : using ZLIB includes at : ${ZLIB_INCLUDE_DIR} ")
101106 message (STATUS "Cmake FindZLIB : using ZLIB libraries : ${ZLIB_LIBRARIES} ")
102107else ()
@@ -111,7 +116,7 @@ else()
111116 set (ZLIB_BUILD_EXAMPLES OFF CACHE BOOL "Build tests " FORCE )
112117 set (ZLIB_BUILD_MINIZIP OFF CACHE BOOL "Build libminizip " FORCE )
113118 set (ZLIB_INSTALL ON CACHE BOOL "Install zlib " FORCE )
114- target_include_directories (${PROJECT_NAME } PUBLIC $<BUILD_INTERFACE :${INSTALL_INC_DIR} $<INSTALL_INTERFACE :${INSTALL_INC_DIR} )
119+ target_include_directories (${PROJECT_NAME } PRIVATE $<BUILD_INTERFACE :${INSTALL_INC_DIR} $<INSTALL_INTERFACE :${INSTALL_INC_DIR} )
115120endif ()
116121target_link_libraries (${PROJECT_NAME } PUBLIC ${ZLIB_LIBRARIES} )
117122
@@ -129,8 +134,8 @@ if(ENABLE_ASAN AND CMAKE_BUILD_TYPE MATCHES Debug)
129134 set (ASAN_COMPILE_FLAG "-fsanitize =address ")
130135 set (ASAN_LINK_FLAG "-fsanitize =address ")
131136 endif ()
132- target_compile_options (asio PUBLIC ${ASAN_COMPILE_FLAG} )
133- target_link_options (asio PUBLIC ${ASAN_LINK_FLAG} )
137+ target_compile_options (${ PROJECT_NAME } PUBLIC ${ASAN_COMPILE_FLAG} )
138+ target_link_options (${ PROJECT_NAME } PUBLIC ${ASAN_LINK_FLAG} )
134139endif ()
135140
136141if (CMAKE_CURRENT_SOURCE_DIR STREQUAL CMAKE_SOURCE_DIR )
@@ -146,6 +151,9 @@ if(CMAKE_CURRENT_SOURCE_DIR STREQUAL CMAKE_SOURCE_DIR)
146151 endif ()
147152endif ()
148153
154+ set_target_properties (${PROJECT_NAME } PROPERTIES VERSION ${PROJECT_VERSION } )
155+ set_target_properties (${PROJECT_NAME } PROPERTIES SOVERSION ${PROJECT_VERSION_MAJOR } )
156+
149157set (_fmt TGZ )
150158if (WIN32 )
151159 set (_fmt ZIP )
@@ -161,10 +169,85 @@ set(CPACK_NSIS_MODIFY_PATH ON)
161169set (CPACK_COMPONENTS_ALL_IN_ONE_PACKAGE 1)
162170set (CPACK_VERBATIM_VARIABLES YES )
163171
164- set (CPACK_PACKAGE_VENDOR "https ://github .com /zelang -dev /c -asio ")
165- set (CPACK_PACKAGE_VERSION 1.0.0)
166- include (CPack )
172+ set (CPACK_SOURCE_IGNORE_FILES
173+ "~$"
174+ "\\\\.svn /"
175+ "/CMakeFiles /"
176+ "/CMakeCache *"
177+ "/cmake_install \\\\.cmake $"
178+ "/cmake_uninstall \\\\.cmake $"
179+ "^_CPack_ .*/"
180+ "/CPack *"
181+ "\\\\.o $"
182+ "/m4 /"
183+ "/build /"
184+ "/built /"
185+ )
186+
187+ set (INCLUDE_INSTALL_DIR ${CMAKE_INSTALL_INCLUDEDIR} /${PROJECT_NAME }
188+ CACHE PATH "Location of header files " )
189+
190+ set (SYSCONFIG_INSTALL_DIR ${CMAKE_INSTALL_SYSCONFDIR} /${PROJECT_NAME }
191+ CACHE PATH "Location of configuration files " )
192+
193+ configure_package_config_file (asioConfig .cmake .in
194+ ${CMAKE_CURRENT_BINARY_DIR } /asioConfig .cmake
195+ INSTALL_DESTINATION ${CMAKE_INSTALL_LIBDIR} /cmake /${PROJECT_NAME }
196+ PATH_VARS INCLUDE_INSTALL_DIR SYSCONFIG_INSTALL_DIR )
197+
198+ write_basic_package_version_file (
199+ ${CMAKE_CURRENT_BINARY_DIR } /asioConfigVersion .cmake
200+ VERSION ${PROJECT_VERSION }
201+ COMPATIBILITY SameMajorVersion )
202+
203+ install (FILES ${CMAKE_CURRENT_BINARY_DIR } /asioConfig .cmake
204+ ${CMAKE_CURRENT_BINARY_DIR } /asioConfigVersion .cmake
205+ DESTINATION ${CMAKE_INSTALL_LIBDIR} /cmake /${PROJECT_NAME } )
206+
207+ set (CMAKE_INSTALL_CONFIG_NAME ${CMAKE_BUILD_TYPE } )
208+
209+ set (CPACK_PACKAGE_DIRECTORY "${CMAKE_ARCHIVE_OUTPUT_DIRECTORY } /Package ")
210+ set (CPACK_PACKAGE_FILE_NAME ${CPACK_PACKAGE_NAME} )
211+ set (CPACK_PACKAGE_INSTALL_DIRECTORY ${PROJECT_NAME } )
212+
213+ set (CPACK_PACKAGE_CONTACT "lstubbs @zelang .dev ")
214+ set (CPACK_DEBIAN_PACKAGE_MAINTAINER "Lawrence Stubbs <${CPACK_PACKAGE_CONTACT} >")
215+ set (CPACK_DEBIAN_FILE_NAME DEB -DEFAULT )
216+ set (CPACK_COMPONENTS_GROUPING ALL_COMPONENTS_IN_ONE )
217+ SET (CPACK_COMPONENT_LIBRARIES_DISPLAY_NAME "C framework library ")
218+ SET (CPACK_COMPONENT_LIBRARIES_DESCRIPTION "A memory safe focus `C framework `, combining RAII , libuv , coroutine , and other concurrency primitives .")
219+
220+ set (CPACK_RESOURCE_FILE_LICENSE ${CMAKE_CURRENT_SOURCE_DIR } /LICENSE .md )
221+ set (CPACK_RESOURCE_FILE_README ${CMAKE_CURRENT_SOURCE_DIR } /README .md )
222+
223+ set (CPACK_PACKAGE_VENDOR "https ://github .com /zelang -dev ")
224+ set (CPACK_PACKAGE_VERSION ${PROJECT_VERSION } )
225+ set (CPACK_PACKAGE_DESCRIPTION ${PROJECT_DESCRIPTION } )
226+
227+ set (CPACK_RPM_PACKAGE_LICENSE "MIT ")
228+ set (CPACK_RPM_PACKAGE_URL "https ://zelang -dev .github .io /c -asio /")
229+ set (CPACK_RPM_PACKAGE_ARCHITECTURE "noarch ")
167230
168231set (CMAKE_INSTALL_CONFIG_NAME ${CMAKE_BUILD_TYPE } )
232+ install (
233+ TARGETS ${PROJECT_NAME } raii uv opentls
234+ EXPORT "${PROJECT_NAME } Targets "
235+ ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
236+ LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
237+ PUBLIC_HEADER DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}
238+ INCLUDES DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}
239+ )
240+
241+ install (
242+ EXPORT "${PROJECT_NAME } Targets "
243+ FILE "${PROJECT_NAME } Targets .cmake "
244+ NAMESPACE ASIO ::
245+ DESTINATION ${CMAKE_INSTALL_LIBDIR} /cmake /${PROJECT_NAME }
246+ )
247+
169248install (TARGETS ${PROJECT_NAME } DESTINATION lib )
170- install (DIRECTORY include / DESTINATION include )
249+ file (GLOB HEADER_LIST "include /*.h ")
250+ install (FILES ${HEADER_LIST} DESTINATION include )
251+
252+ set (CPACK_INSTALL_CMAKE_CONFIGURATIONS Release )
253+ include (CPack )
0 commit comments