mirror of
				https://github.com/eledio-devices/thirdparty-miniz.git
				synced 2025-10-31 08:42:39 +01:00 
			
		
		
		
	Merge pull request #184 from phprus/cmake-subproject
Improved cmake subproject support
This commit is contained in:
		
							
								
								
									
										110
									
								
								CMakeLists.txt
									
									
									
									
									
								
							
							
						
						
									
										110
									
								
								CMakeLists.txt
									
									
									
									
									
								
							| @@ -7,7 +7,11 @@ else() | |||||||
|   project(miniz C) |   project(miniz C) | ||||||
| endif() | endif() | ||||||
|  |  | ||||||
| include(GNUInstallDirs) | # determine whether this is a standalone project or included by other projects | ||||||
|  | set(MINIZ_STANDALONE_PROJECT OFF) | ||||||
|  | if (CMAKE_CURRENT_SOURCE_DIR STREQUAL CMAKE_SOURCE_DIR) | ||||||
|  |   set(MINIZ_STANDALONE_PROJECT ON) | ||||||
|  | endif () | ||||||
|  |  | ||||||
| set(MINIZ_API_VERSION 2) | set(MINIZ_API_VERSION 2) | ||||||
| set(MINIZ_MINOR_VERSION 1) | set(MINIZ_MINOR_VERSION 1) | ||||||
| @@ -23,14 +27,19 @@ if(CMAKE_BUILD_TYPE STREQUAL "") | |||||||
| CMAKE_C_FLAGS used) Debug Release RelWithDebInfo MinSizeRel." FORCE) | CMAKE_C_FLAGS used) Debug Release RelWithDebInfo MinSizeRel." FORCE) | ||||||
| endif () | endif () | ||||||
|  |  | ||||||
| option(BUILD_EXAMPLES "Build examples" ON) | option(BUILD_EXAMPLES "Build examples" ${MINIZ_STANDALONE_PROJECT}) | ||||||
| option(BUILD_FUZZERS "Build fuzz targets" OFF) | option(BUILD_FUZZERS "Build fuzz targets" OFF) | ||||||
| option(AMALGAMATE_SOURCES "Amalgamate sources into miniz.h/c" OFF) | option(AMALGAMATE_SOURCES "Amalgamate sources into miniz.h/c" OFF) | ||||||
| option(BUILD_HEADER_ONLY "Build a header-only version" OFF) | option(BUILD_HEADER_ONLY "Build a header-only version" OFF) | ||||||
| option(BUILD_SHARED_LIBS "Build shared library instead of static" ON) | option(BUILD_SHARED_LIBS "Build shared library instead of static" ON) | ||||||
|  | option(INSTALL_PROJECT "Install project" ${MINIZ_STANDALONE_PROJECT}) | ||||||
|  |  | ||||||
| set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/bin) | set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/bin) | ||||||
|  |  | ||||||
|  | if(INSTALL_PROJECT) | ||||||
|  |   include(GNUInstallDirs) | ||||||
|  | endif() | ||||||
|  |  | ||||||
| if(BUILD_HEADER_ONLY) | if(BUILD_HEADER_ONLY) | ||||||
|   set(AMALGAMATE_SOURCES ON CACHE BOOL "Build a header-only version" FORCE) |   set(AMALGAMATE_SOURCES ON CACHE BOOL "Build a header-only version" FORCE) | ||||||
| endif(BUILD_HEADER_ONLY) | endif(BUILD_HEADER_ONLY) | ||||||
| @@ -124,11 +133,13 @@ if(NOT BUILD_HEADER_ONLY) | |||||||
|     PRIVATE $<$<C_COMPILER_ID:GNU>:_GNU_SOURCE>) |     PRIVATE $<$<C_COMPILER_ID:GNU>:_GNU_SOURCE>) | ||||||
|  |  | ||||||
|   # pkg-config file |   # pkg-config file | ||||||
|   configure_file(miniz.pc.in ${CMAKE_BINARY_DIR}/miniz.pc @ONLY) |   configure_file(miniz.pc.in ${CMAKE_CURRENT_BINARY_DIR}/miniz.pc @ONLY) | ||||||
|  |  | ||||||
|   install(FILES |   if(INSTALL_PROJECT) | ||||||
|     ${CMAKE_BINARY_DIR}/miniz.pc |     install(FILES | ||||||
|     DESTINATION ${CMAKE_INSTALL_DATADIR}/pkgconfig) |       ${CMAKE_CURRENT_BINARY_DIR}/miniz.pc | ||||||
|  |       DESTINATION ${CMAKE_INSTALL_DATADIR}/pkgconfig) | ||||||
|  |   endif() | ||||||
| endif() | endif() | ||||||
|  |  | ||||||
| set_property(TARGET ${PROJECT_NAME} PROPERTY | set_property(TARGET ${PROJECT_NAME} PROPERTY | ||||||
| @@ -137,48 +148,50 @@ set_property(TARGET ${PROJECT_NAME} APPEND PROPERTY | |||||||
|   COMPATIBLE_INTERFACE_STRING ${PROJECT_NAME}_MAJOR_VERSION |   COMPATIBLE_INTERFACE_STRING ${PROJECT_NAME}_MAJOR_VERSION | ||||||
| ) | ) | ||||||
|  |  | ||||||
| install(TARGETS ${PROJECT_NAME} EXPORT ${PROJECT_NAME}Targets | if(INSTALL_PROJECT) | ||||||
|   RUNTIME  DESTINATION ${CMAKE_INSTALL_BINDIR} |   install(TARGETS ${PROJECT_NAME} EXPORT ${PROJECT_NAME}Targets | ||||||
|   ARCHIVE  DESTINATION ${CMAKE_INSTALL_LIBDIR} |     RUNTIME  DESTINATION ${CMAKE_INSTALL_BINDIR} | ||||||
|   LIBRARY  DESTINATION ${CMAKE_INSTALL_LIBDIR} |     ARCHIVE  DESTINATION ${CMAKE_INSTALL_LIBDIR} | ||||||
|   # users can use <miniz.h> or <miniz/miniz.h> |     LIBRARY  DESTINATION ${CMAKE_INSTALL_LIBDIR} | ||||||
|   INCLUDES DESTINATION include ${CMAKE_INSTALL_INCLUDEDIR}/${PROJECT_NAME} |     # users can use <miniz.h> or <miniz/miniz.h> | ||||||
| ) |     INCLUDES DESTINATION include ${CMAKE_INSTALL_INCLUDEDIR}/${PROJECT_NAME} | ||||||
|  |   ) | ||||||
|  |  | ||||||
| include(CMakePackageConfigHelpers) |   include(CMakePackageConfigHelpers) | ||||||
| write_basic_package_version_file( |   write_basic_package_version_file( | ||||||
|   "${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}/${PROJECT_NAME}ConfigVersion.cmake" |  | ||||||
|   VERSION ${MINIZ_VERSION} |  | ||||||
|   COMPATIBILITY AnyNewerVersion |  | ||||||
| ) |  | ||||||
|  |  | ||||||
| export(EXPORT ${PROJECT_NAME}Targets |  | ||||||
|   FILE "${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}/${PROJECT_NAME}Targets.cmake" |  | ||||||
|   NAMESPACE ${PROJECT_NAME}:: |  | ||||||
| ) |  | ||||||
| configure_file(Config.cmake.in |  | ||||||
|   "${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}/${PROJECT_NAME}Config.cmake" |  | ||||||
|   @ONLY |  | ||||||
| ) |  | ||||||
|  |  | ||||||
| set(ConfigPackageLocation ${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME}) |  | ||||||
| install(EXPORT ${PROJECT_NAME}Targets |  | ||||||
|   FILE |  | ||||||
|     ${PROJECT_NAME}Targets.cmake |  | ||||||
|   NAMESPACE |  | ||||||
|     ${PROJECT_NAME}:: |  | ||||||
|   DESTINATION |  | ||||||
|     ${ConfigPackageLocation} |  | ||||||
| ) |  | ||||||
| install( |  | ||||||
|   FILES |  | ||||||
|     "${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}/${PROJECT_NAME}Config.cmake" |  | ||||||
|     "${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}/${PROJECT_NAME}ConfigVersion.cmake" |     "${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}/${PROJECT_NAME}ConfigVersion.cmake" | ||||||
|   DESTINATION |     VERSION ${MINIZ_VERSION} | ||||||
|     ${ConfigPackageLocation} |     COMPATIBILITY AnyNewerVersion | ||||||
|   COMPONENT |   ) | ||||||
|     Devel |  | ||||||
| ) |   export(EXPORT ${PROJECT_NAME}Targets | ||||||
|  |     FILE "${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}/${PROJECT_NAME}Targets.cmake" | ||||||
|  |     NAMESPACE ${PROJECT_NAME}:: | ||||||
|  |   ) | ||||||
|  |   configure_file(Config.cmake.in | ||||||
|  |     "${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}/${PROJECT_NAME}Config.cmake" | ||||||
|  |     @ONLY | ||||||
|  |   ) | ||||||
|  |  | ||||||
|  |   set(ConfigPackageLocation ${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME}) | ||||||
|  |   install(EXPORT ${PROJECT_NAME}Targets | ||||||
|  |     FILE | ||||||
|  |       ${PROJECT_NAME}Targets.cmake | ||||||
|  |     NAMESPACE | ||||||
|  |       ${PROJECT_NAME}:: | ||||||
|  |     DESTINATION | ||||||
|  |       ${ConfigPackageLocation} | ||||||
|  |   ) | ||||||
|  |   install( | ||||||
|  |     FILES | ||||||
|  |       "${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}/${PROJECT_NAME}Config.cmake" | ||||||
|  |       "${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}/${PROJECT_NAME}ConfigVersion.cmake" | ||||||
|  |     DESTINATION | ||||||
|  |       ${ConfigPackageLocation} | ||||||
|  |     COMPONENT | ||||||
|  |       Devel | ||||||
|  |   ) | ||||||
|  | endif() | ||||||
|  |  | ||||||
| if(BUILD_EXAMPLES) | if(BUILD_EXAMPLES) | ||||||
|   set(EXAMPLE1_SRC_LIST "${CMAKE_CURRENT_SOURCE_DIR}/examples/example1.c") |   set(EXAMPLE1_SRC_LIST "${CMAKE_CURRENT_SOURCE_DIR}/examples/example1.c") | ||||||
| @@ -250,6 +263,7 @@ endif() | |||||||
|  |  | ||||||
| set(INCLUDE_INSTALL_DIR "include") | set(INCLUDE_INSTALL_DIR "include") | ||||||
|  |  | ||||||
| install(FILES ${INSTALL_HEADERS} DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/${PROJECT_NAME}) | if(INSTALL_PROJECT) | ||||||
|  |   install(FILES ${INSTALL_HEADERS} DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/${PROJECT_NAME}) | ||||||
|  | endif() | ||||||
|  |  | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user