mirror of
				https://github.com/eledio-devices/thirdparty-miniz.git
				synced 2025-10-31 00:32:38 +01:00 
			
		
		
		
	Merge pull request #134 from tamasmeszaros/cmake-dynlib
Support installation of amalgamated sources
This commit is contained in:
		
							
								
								
									
										136
									
								
								CMakeLists.txt
									
									
									
									
									
								
							
							
						
						
									
										136
									
								
								CMakeLists.txt
									
									
									
									
									
								
							| @@ -1,7 +1,18 @@ | |||||||
| PROJECT(miniz C) | cmake_minimum_required(VERSION 3.0) | ||||||
| cmake_minimum_required(VERSION 3.4) |  | ||||||
|  |  | ||||||
| set(Upstream_VERSION 2.1.0) | if(CMAKE_MINOR_VERSION LESS 12) | ||||||
|  |   project(miniz) | ||||||
|  |   # see issue https://gitlab.kitware.com/cmake/cmake/merge_requests/1799 | ||||||
|  | else() | ||||||
|  |   project(miniz C) | ||||||
|  | endif() | ||||||
|  |  | ||||||
|  |  | ||||||
|  | set(MINIZ_API_VERSION 2) | ||||||
|  | set(MINIZ_MINOR_VERSION 1) | ||||||
|  | set(MINIZ_PATCH_VERSION 0) | ||||||
|  | set(MINIZ_VERSION  | ||||||
|  |     ${MINIZ_API_VERSION}.${MINIZ_MINOR_VERSION}.${MINIZ_PATCH_VERSION}) | ||||||
|  |  | ||||||
| if(CMAKE_BUILD_TYPE STREQUAL "") | if(CMAKE_BUILD_TYPE STREQUAL "") | ||||||
|   # CMake defaults to leaving CMAKE_BUILD_TYPE empty. This screws up |   # CMake defaults to leaving CMAKE_BUILD_TYPE empty. This screws up | ||||||
| @@ -52,7 +63,12 @@ if(AMALGAMATE_SOURCES) | |||||||
|              "${AMAL_MINIZ_C}" "\n#endif // MINIZ_HEADER_FILE_ONLY\n") |              "${AMAL_MINIZ_C}" "\n#endif // MINIZ_HEADER_FILE_ONLY\n") | ||||||
|     file(WRITE ${CMAKE_BINARY_DIR}/amalgamation/miniz.h "${AMAL_MINIZ_H}") |     file(WRITE ${CMAKE_BINARY_DIR}/amalgamation/miniz.h "${AMAL_MINIZ_H}") | ||||||
|     add_library(${PROJECT_NAME} INTERFACE) |     add_library(${PROJECT_NAME} INTERFACE) | ||||||
|     set_property(TARGET ${PROJECT_NAME} APPEND PROPERTY INTERFACE_INCLUDE_DIRECTORIES |      | ||||||
|  |     target_compile_definitions(${PROJECT_NAME}  | ||||||
|  |         INTERFACE $<$<C_COMPILER_ID:GNU>:_GNU_SOURCE>) | ||||||
|  |      | ||||||
|  |     set_property(TARGET ${PROJECT_NAME} APPEND  | ||||||
|  |       PROPERTY INTERFACE_INCLUDE_DIRECTORIES | ||||||
|       $<BUILD_INTERFACE:${CMAKE_BINARY_DIR}/amalgamation> |       $<BUILD_INTERFACE:${CMAKE_BINARY_DIR}/amalgamation> | ||||||
|       $<INSTALL_INTERFACE:include> |       $<INSTALL_INTERFACE:include> | ||||||
|     ) |     ) | ||||||
| @@ -81,68 +97,78 @@ else(AMALGAMATE_SOURCES) | |||||||
|     string(TOUPPER ${PROJECT_NAME} PROJECT_UPPER) |     string(TOUPPER ${PROJECT_NAME} PROJECT_UPPER) | ||||||
|     set_target_properties(${PROJECT_NAME} |     set_target_properties(${PROJECT_NAME} | ||||||
|         PROPERTIES INTERFACE_COMPILE_DEFINITIONS ${PROJECT_UPPER}_STATIC_DEFINE) |         PROPERTIES INTERFACE_COMPILE_DEFINITIONS ${PROJECT_UPPER}_STATIC_DEFINE) | ||||||
|  |   else() | ||||||
|  |     set_property(TARGET ${PROJECT_NAME} PROPERTY C_VISIBILITY_PRESET hidden) | ||||||
|   endif() |   endif() | ||||||
|  |  | ||||||
|   set_property(TARGET ${PROJECT_NAME} PROPERTY VERSION ${Upstream_VERSION}) |   set_property(TARGET ${PROJECT_NAME} PROPERTY VERSION ${MINIZ_VERSION}) | ||||||
|   set_property(TARGET ${PROJECT_NAME} PROPERTY SOVERSION 2) |   set_property(TARGET ${PROJECT_NAME} PROPERTY SOVERSION ${MINIZ_API_VERSION}) | ||||||
|   set_property(TARGET ${PROJECT_NAME} PROPERTY |    | ||||||
|     INTERFACE_${PROJECT_NAME}_MAJOR_VERSION 2) |  | ||||||
|   set_property(TARGET ${PROJECT_NAME} APPEND PROPERTY |  | ||||||
|     COMPATIBLE_INTERFACE_STRING ${PROJECT_NAME}_MAJOR_VERSION |  | ||||||
|   ) |  | ||||||
|  |  | ||||||
|   target_include_directories(${PROJECT_NAME} PUBLIC |   target_include_directories(${PROJECT_NAME} PUBLIC | ||||||
|     $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}> |     $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}> | ||||||
|     $<BUILD_INTERFACE:${CMAKE_CURRENT_BINARY_DIR}> |     $<BUILD_INTERFACE:${CMAKE_CURRENT_BINARY_DIR}> | ||||||
|     $<INSTALL_INTERFACE:include> |     $<INSTALL_INTERFACE:include> | ||||||
|   ) |   ) | ||||||
|  |    | ||||||
|   file(GLOB INSTALL_HEADERS ${CMAKE_CURRENT_SOURCE_DIR}/*.h) |   file(GLOB INSTALL_HEADERS ${CMAKE_CURRENT_SOURCE_DIR}/*.h) | ||||||
|   list(APPEND INSTALL_HEADERS ${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}_export.h) |   list(APPEND  | ||||||
|  |        INSTALL_HEADERS ${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}_export.h) | ||||||
|  |  | ||||||
|   install(TARGETS ${PROJECT_NAME} EXPORT ${PROJECT_NAME}Targets |  | ||||||
|     RUNTIME  DESTINATION bin |  | ||||||
|     ARCHIVE  DESTINATION lib |  | ||||||
|     LIBRARY  DESTINATION lib |  | ||||||
|     INCLUDES DESTINATION include |  | ||||||
|     ) |  | ||||||
|  |  | ||||||
|   include(CMakePackageConfigHelpers) |  | ||||||
|   write_basic_package_version_file( |  | ||||||
|     "${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}/${PROJECT_NAME}ConfigVersion.cmake" |  | ||||||
|     VERSION ${Upstream_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 lib/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(AMALGAMATE_SOURCES) | endif(AMALGAMATE_SOURCES) | ||||||
|  |  | ||||||
|  | if(NOT BUILD_HEADER_ONLY) | ||||||
|  |   target_compile_definitions(${PROJECT_NAME}  | ||||||
|  |     PRIVATE $<$<C_COMPILER_ID:GNU>:_GNU_SOURCE>) | ||||||
|  | endif() | ||||||
|  |  | ||||||
|  | set_property(TARGET ${PROJECT_NAME} PROPERTY | ||||||
|  |   INTERFACE_${PROJECT_NAME}_MAJOR_VERSION ${MINIZ_API_VERSION}) | ||||||
|  | set_property(TARGET ${PROJECT_NAME} APPEND PROPERTY | ||||||
|  |   COMPATIBLE_INTERFACE_STRING ${PROJECT_NAME}_MAJOR_VERSION | ||||||
|  | ) | ||||||
|  |  | ||||||
|  | install(TARGETS ${PROJECT_NAME} EXPORT ${PROJECT_NAME}Targets | ||||||
|  |   RUNTIME  DESTINATION bin | ||||||
|  |   ARCHIVE  DESTINATION lib | ||||||
|  |   LIBRARY  DESTINATION lib | ||||||
|  |   INCLUDES DESTINATION include | ||||||
|  |   ) | ||||||
|  |  | ||||||
|  | include(CMakePackageConfigHelpers) | ||||||
|  | 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 lib/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 | ||||||
|  | ) | ||||||
|  |  | ||||||
| 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") | ||||||
|   set(EXAMPLE2_SRC_LIST "${CMAKE_CURRENT_SOURCE_DIR}/examples/example2.c") |   set(EXAMPLE2_SRC_LIST "${CMAKE_CURRENT_SOURCE_DIR}/examples/example2.c") | ||||||
|   | |||||||
							
								
								
									
										10
									
								
								miniz.h
									
									
									
									
									
								
							
							
						
						
									
										10
									
								
								miniz.h
									
									
									
									
									
								
							| @@ -112,10 +112,7 @@ | |||||||
| */ | */ | ||||||
| #pragma once | #pragma once | ||||||
|  |  | ||||||
| #include "miniz_common.h" | #include "miniz_export.h" | ||||||
| #include "miniz_tdef.h" |  | ||||||
| #include "miniz_tinfl.h" |  | ||||||
| #include "miniz_zip.h" |  | ||||||
|  |  | ||||||
| /* Defines to completely disable specific portions of miniz.c:  | /* Defines to completely disable specific portions of miniz.c:  | ||||||
|    If all macros here are defined the only functionality remaining will be CRC-32, adler-32, tinfl, and tdefl. */ |    If all macros here are defined the only functionality remaining will be CRC-32, adler-32, tinfl, and tdefl. */ | ||||||
| @@ -476,3 +473,8 @@ typedef void *const voidpc; | |||||||
| #ifdef __cplusplus | #ifdef __cplusplus | ||||||
| } | } | ||||||
| #endif | #endif | ||||||
|  |  | ||||||
|  | #include "miniz_common.h" | ||||||
|  | #include "miniz_tdef.h" | ||||||
|  | #include "miniz_tinfl.h" | ||||||
|  | #include "miniz_zip.h" | ||||||
|   | |||||||
| @@ -24,7 +24,6 @@ | |||||||
|  * |  * | ||||||
|  **************************************************************************/ |  **************************************************************************/ | ||||||
|  |  | ||||||
| #include "miniz_tdef.h" |  | ||||||
| #include "miniz.h" | #include "miniz.h" | ||||||
|  |  | ||||||
| #ifdef __cplusplus | #ifdef __cplusplus | ||||||
|   | |||||||
| @@ -24,7 +24,7 @@ | |||||||
|  * |  * | ||||||
|  **************************************************************************/ |  **************************************************************************/ | ||||||
|  |  | ||||||
| #include "miniz_tinfl.h" | #include "miniz.h" | ||||||
|  |  | ||||||
| #ifdef __cplusplus | #ifdef __cplusplus | ||||||
| extern "C" { | extern "C" { | ||||||
|   | |||||||
| @@ -24,7 +24,7 @@ | |||||||
|  * THE SOFTWARE. |  * THE SOFTWARE. | ||||||
|  * |  * | ||||||
|  **************************************************************************/ |  **************************************************************************/ | ||||||
| #include "miniz_zip.h" | #include "miniz.h" | ||||||
|  |  | ||||||
| #ifndef MINIZ_NO_ARCHIVE_APIS | #ifndef MINIZ_NO_ARCHIVE_APIS | ||||||
|  |  | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user