mirror of
				https://git.code.sf.net/p/libpng/code.git
				synced 2025-07-10 18:04:09 +02:00 
			
		
		
		
	[devel] Various bugfixes and improvements to CMakeLists.txt (Philip Lowman)
1. Modify project(PNG) to project(PNG C) to avoid search for C++ compiler 2. set(CMAKE_ALLOW_LOOSE_LOOP_CONSTRUCTS true) and fix end conditionals from ugly else(FOO AND BAR) endif(FOO AND BAR) to else() endif() 3. Add missing include_directories() for ZLIB_INCLUDE_DIR 4. Created CMake options to allow configurable building of STATIC or SHARED libpng, both default on. 5. Modified PNG_DEBUG to default to false? 6. Fix installation of static/shared libraries so DLL goes in prefix+/bin, all others in prefix+/lib
This commit is contained in:
		
							parent
							
								
									5b754aac0d
								
							
						
					
					
						commit
						38e467edac
					
				
							
								
								
									
										8
									
								
								ANNOUNCE
									
									
									
									
									
								
							
							
						
						
									
										8
									
								
								ANNOUNCE
									
									
									
									
									
								
							| @ -1,5 +1,5 @@ | ||||
| 
 | ||||
| Libpng 1.4.0beta77 - August 26, 2009 | ||||
| Libpng 1.4.0beta77 - August 27, 2009 | ||||
| 
 | ||||
| This is not intended to be a public release.  It will be replaced | ||||
| within a few weeks by a public version or by another test version. | ||||
| @ -529,7 +529,11 @@ version 1.4.0beta75 [August 21, 2009] | ||||
| version 1.4.0beta76 [August 22, 2009] | ||||
|   Moved an incorrectly located test in png_read_row() in pngread.c | ||||
| 
 | ||||
| version 1.4.0beta77 [August 26, 2009] | ||||
| version 1.4.0beta77 [August 27, 2009] | ||||
|   Removed lpXYZ.tar.bz2 (with CRLF), KNOWNBUG, libpng-x.y.z-KNOWNBUG.txt, | ||||
|     and the "noconfig" files from the distribution. | ||||
|   Moved CMakeLists.txt from scripts into the main libpng directory. | ||||
|   Various bugfixes and improvements to CMakeLists.txt (Philip Lowman) | ||||
| 
 | ||||
| version 1.4.0betaN [future] | ||||
|   Build shared libraries with -lz and sometimes -lm. | ||||
|  | ||||
							
								
								
									
										4
									
								
								CHANGES
									
									
									
									
									
								
							
							
						
						
									
										4
									
								
								CHANGES
									
									
									
									
									
								
							| @ -2214,9 +2214,11 @@ version 1.4.0beta75 [August 21, 2009] | ||||
| version 1.4.0beta76 [August 22, 2009] | ||||
|   Moved an incorrectly located test in png_read_row() in pngread.c | ||||
| 
 | ||||
| version 1.4.0beta77 [August 26, 2009] | ||||
| version 1.4.0beta77 [August 27, 2009] | ||||
|   Removed lpXYZ.tar.bz2 (with CRLF), KNOWNBUG, libpng-x.y.z-KNOWNBUG.txt, | ||||
|     and the "noconfig" files from the distribution. | ||||
|   Moved CMakeLists.txt from scripts into the main libpng directory. | ||||
|   Various bugfixes and improvements to CMakeLists.txt (Philip Lowman) | ||||
| 
 | ||||
| version 1.4.0betaN [future] | ||||
|   Build shared libraries with -lz and sometimes -lm. | ||||
|  | ||||
							
								
								
									
										129
									
								
								CMakeLists.txt
									
									
									
									
									
								
							
							
						
						
									
										129
									
								
								CMakeLists.txt
									
									
									
									
									
								
							| @ -1,5 +1,5 @@ | ||||
| 
 | ||||
| project(PNG) | ||||
| project(PNG C) | ||||
| cmake_minimum_required(VERSION 2.4.3) | ||||
| 
 | ||||
| # Copyright (C) 2007 Glenn Randers-Pehrson | ||||
| 
 | ||||
| @ -13,8 +13,12 @@ set(PNGLIB_RELEASE 0) | ||||
| set(PNGLIB_NAME libpng${PNGLIB_MAJOR}${PNGLIB_MINOR}) | ||||
| set(PNGLIB_VERSION ${PNGLIB_MAJOR}.${PNGLIB_MINOR}.${PNGLIB_RELEASE}) | ||||
| 
 | ||||
| set(CMAKE_ALLOW_LOOSE_LOOP_CONSTRUCTS true) | ||||
| 
 | ||||
| # needed packages | ||||
| find_package(ZLIB REQUIRED) | ||||
| include_directories(${ZLIB_INCLUDE_DIR}) | ||||
| 
 | ||||
| if(NOT WIN32) | ||||
|  find_library(M_LIBRARY | ||||
|      NAMES m | ||||
| @ -23,24 +27,33 @@ if(NOT WIN32) | ||||
|  if(NOT M_LIBRARY) | ||||
|    message(STATUS | ||||
|      "math library 'libm' not found - floating point support disabled") | ||||
|  endif(NOT M_LIBRARY) | ||||
| else(NOT WIN32) | ||||
|  endif() | ||||
| else() | ||||
|  # not needed on windows | ||||
|  set(M_LIBRARY "") | ||||
| endif(NOT WIN32) | ||||
| 
 | ||||
| endif() | ||||
| 
 | ||||
| # COMMAND LINE OPTIONS | ||||
| option(PNG_SHARED "Build shared lib" YES) | ||||
| option(PNG_STATIC "Build static lib" YES) | ||||
| if(DEFINED PNG_SHARED) | ||||
|   option(PNG_SHARED "Build shared lib" ${PNG_SHARED}) | ||||
| else() | ||||
|   option(PNG_SHARED "Build shared lib" ON) | ||||
| endif() | ||||
| if(DEFINED PNG_STATIC) | ||||
|   option(PNG_STATIC "Build static lib" ${PNG_STATIC}) | ||||
| else() | ||||
|   option(PNG_STATIC "Build static lib" ON) | ||||
| endif() | ||||
| 
 | ||||
| if(MINGW) | ||||
|   option(PNG_TESTS  "Build pngtest" NO) | ||||
| else(MINGW) | ||||
|   option(PNG_TESTS  "Build pngtest" YES) | ||||
| endif(MINGW) | ||||
| 
 | ||||
| option(PNG_NO_CONSOLE_IO "FIXME" YES) | ||||
| option(PNG_NO_STDIO      "FIXME" YES) | ||||
| option(PNG_DEBUG         "Build with debug output" YES) | ||||
| option(PNG_DEBUG         "Build with debug output" NO) | ||||
| option(PNGARG            "FIXME" YES) | ||||
| #TODO: | ||||
| # PNG_CONSOLE_IO_SUPPORTED | ||||
| @ -57,20 +70,16 @@ if(NOT WIN32) | ||||
|       set(png_asm_tmp "OFF") | ||||
|    endif("uname_output" MATCHES "^.*i[1-9]86.*$") | ||||
|  endif(uname_executable) | ||||
| else(NOT WIN32) | ||||
| else() | ||||
|  # this env var is normally only set on win64 | ||||
|  SET(TEXT "ProgramFiles(x86)") | ||||
|  if("$ENV{${TEXT}}" STREQUAL "") | ||||
|   set(png_asm_tmp "ON") | ||||
|  endif("$ENV{${TEXT}}" STREQUAL "") | ||||
| endif(NOT WIN32) | ||||
| endif() | ||||
| 
 | ||||
| # SET LIBNAME | ||||
| # msvc does not append 'lib' - do it here to have consistent name | ||||
| if(MSVC) | ||||
|  set(PNG_LIB_NAME lib) | ||||
| endif(MSVC) | ||||
| set(PNG_LIB_NAME ${PNG_LIB_NAME}png${PNGLIB_MAJOR}${PNGLIB_MINOR}) | ||||
| set(PNG_LIB_NAME png${PNGLIB_MAJOR}${PNGLIB_MINOR}) | ||||
| 
 | ||||
| # to distinguish between debug and release lib | ||||
| set(CMAKE_DEBUG_POSTFIX "d") | ||||
| @ -105,51 +114,64 @@ if(MSVC) | ||||
|   add_definitions(-DPNG_NO_MODULEDEF -D_CRT_SECURE_NO_DEPRECATE) | ||||
| endif(MSVC) | ||||
| 
 | ||||
| add_definitions(-DZLIB_DLL) | ||||
| if(PNG_SHARED OR  NOT MSVC) | ||||
| 	#if building msvc static this has NOT do be defined | ||||
| 	add_definitions(-DZLIB_DLL) | ||||
| endif() | ||||
| 
 | ||||
| if(PNG_CONSOLE_IO_SUPPORTED) | ||||
|  add_definitions(-DPNG_CONSOLE_IO_SUPPORTED) | ||||
| endif(PNG_CONSOLE_IO_SUPPORTED) | ||||
| endif() | ||||
| 
 | ||||
| if(PNG_NO_CONSOLE_IO) | ||||
|  add_definitions(-DPNG_NO_CONSOLE_IO) | ||||
| endif(PNG_NO_CONSOLE_IO) | ||||
| endif() | ||||
| 
 | ||||
| if(PNG_NO_STDIO) | ||||
|  add_definitions(-DPNG_NO_STDIO) | ||||
| endif(PNG_NO_STDIO) | ||||
| endif() | ||||
| 
 | ||||
| if(PNG_DEBUG) | ||||
|  add_definitions(-DPNG_DEBUG) | ||||
| endif(PNG_DEBUG) | ||||
| endif() | ||||
| 
 | ||||
| if(NOT M_LIBRARY AND NOT WIN32) | ||||
|  add_definitions(-DPNG_NO_FLOATING_POINT_SUPPORTED) | ||||
| endif(NOT M_LIBRARY AND NOT WIN32) | ||||
| endif() | ||||
| 
 | ||||
| # NOW BUILD OUR TARGET | ||||
| include_directories(${PNG_SOURCE_DIR} ${ZLIB_INCLUDE_DIR}) | ||||
| 
 | ||||
| if(PNG_SHARED) | ||||
|  add_library(${PNG_LIB_NAME} SHARED ${libpng_sources}) | ||||
|  if(MSVC) | ||||
|    # msvc does not append 'lib' - do it here to have consistent name | ||||
|    set_target_properties(${PNG_LIB_NAME} PROPERTIES PREFIX "lib") | ||||
|  endif() | ||||
|  target_link_libraries(${PNG_LIB_NAME} ${ZLIB_LIBRARY} ${M_LIBRARY}) | ||||
| endif(PNG_SHARED) | ||||
| endif() | ||||
| 
 | ||||
| if(PNG_STATIC) | ||||
| # does not work without changing name | ||||
|  set(PNG_LIB_NAME_STATIC ${PNG_LIB_NAME}_static) | ||||
|  add_library(${PNG_LIB_NAME_STATIC} STATIC ${libpng_sources}) | ||||
| endif(PNG_STATIC) | ||||
|  if(MSVC) | ||||
|    # msvc does not append 'lib' - do it here to have consistent name | ||||
|    set_target_properties(${PNG_LIB_NAME_STATIC} PROPERTIES PREFIX "lib") | ||||
|  endif() | ||||
| endif() | ||||
| 
 | ||||
| 
 | ||||
| if(PNG_SHARED AND WIN32) | ||||
|  set_target_properties(${PNG_LIB_NAME} PROPERTIES DEFINE_SYMBOL PNG_BUILD_DLL) | ||||
| endif(PNG_SHARED AND WIN32) | ||||
| endif() | ||||
| 
 | ||||
| if(PNG_TESTS) | ||||
| if(PNG_TESTS AND PNG_SHARED) | ||||
| # does not work with msvc due to png_lib_ver issue | ||||
|  add_executable(pngtest ${pngtest_sources}) | ||||
|  target_link_libraries(pngtest ${PNG_LIB_NAME}) | ||||
| #  add_test(pngtest ${PNG_SOURCE_DIR}/pngtest.png) | ||||
| endif(PNG_TESTS) | ||||
| endif() | ||||
| 
 | ||||
| 
 | ||||
| # CREATE PKGCONFIG FILES | ||||
| @ -169,30 +191,49 @@ configure_file(${PNG_SOURCE_DIR}/scripts/libpng-config.in | ||||
|   ${PNG_BINARY_DIR}/${PNGLIB_NAME}-config) | ||||
| 
 | ||||
| # SET UP LINKS | ||||
| set_target_properties(${PNG_LIB_NAME} PROPERTIES | ||||
| if(PNG_SHARED) | ||||
|   set_target_properties(${PNG_LIB_NAME} PROPERTIES | ||||
| #    VERSION 14.${PNGLIB_RELEASE}.1.4.0beta77 | ||||
|      VERSION 14.${PNGLIB_RELEASE}.0 | ||||
|      SOVERSION 14 | ||||
|      CLEAN_DIRECT_OUTPUT 1) | ||||
| if(NOT WIN32) | ||||
|   # that's uncool on win32 - it overwrites our static import lib... | ||||
|   set_target_properties(${PNG_LIB_NAME_STATIC} PROPERTIES | ||||
|      OUTPUT_NAME ${PNG_LIB_NAME} | ||||
|      CLEAN_DIRECT_OUTPUT 1) | ||||
| endif(NOT WIN32) | ||||
| # INSTALL | ||||
| install_targets(/lib ${PNG_LIB_NAME}) | ||||
| endif() | ||||
| if(PNG_STATIC) | ||||
|   install_targets(/lib ${PNG_LIB_NAME_STATIC}) | ||||
| endif(PNG_STATIC) | ||||
|   if(NOT WIN32) | ||||
|     # that's uncool on win32 - it overwrites our static import lib... | ||||
|     set_target_properties(${PNG_LIB_NAME_STATIC} PROPERTIES | ||||
|        OUTPUT_NAME ${PNG_LIB_NAME} | ||||
|        CLEAN_DIRECT_OUTPUT 1) | ||||
|   endif() | ||||
| endif() | ||||
| 
 | ||||
| # INSTALL | ||||
| if(NOT SKIP_INSTALL_LIBRARIES AND NOT SKIP_INSTALL_ALL ) | ||||
|     if(PNG_SHARED) | ||||
|         install(TARGETS ${PNG_LIB_NAME} | ||||
|             RUNTIME DESTINATION bin | ||||
|             LIBRARY DESTINATION lib | ||||
|             ARCHIVE DESTINATION lib) | ||||
|     endif() | ||||
|     if(PNG_STATIC) | ||||
|         install(TARGETS ${PNG_LIB_NAME_STATIC} | ||||
|             LIBRARY DESTINATION lib | ||||
|             ARCHIVE DESTINATION lib) | ||||
|     endif() | ||||
| endif() | ||||
| 
 | ||||
| if(NOT SKIP_INSTALL_HEADERS AND NOT SKIP_INSTALL_ALL ) | ||||
| install(FILES png.h pngconf.h pngpriv.h  DESTINATION include) | ||||
| install(FILES png.h pngconf.h pngpriv.h  DESTINATION include/${PNGLIB_NAME}) | ||||
| install(FILES libpng.3 libpngpf.3             DESTINATION man/man3) | ||||
| install(FILES png.5                           DESTINATION man/man5) | ||||
| install(FILES ${PNG_BINARY_DIR}/libpng.pc     DESTINATION lib/pkgconfig) | ||||
| install(FILES ${PNG_BINARY_DIR}/libpng-config      DESTINATION bin) | ||||
| install(FILES ${PNG_BINARY_DIR}/${PNGLIB_NAME}.pc  DESTINATION lib/pkgconfig) | ||||
| install(FILES ${PNG_BINARY_DIR}/${PNGLIB_NAME}-config DESTINATION bin) | ||||
| endif() | ||||
| if(NOT SKIP_INSTALL_FILES AND NOT SKIP_INSTALL_ALL ) | ||||
|     install(FILES libpng.3 libpngpf.3             DESTINATION man/man3) | ||||
|     install(FILES png.5                           DESTINATION man/man5) | ||||
|     install(FILES ${PNG_BINARY_DIR}/libpng.pc     DESTINATION lib/pkgconfig) | ||||
|     install(FILES ${PNG_BINARY_DIR}/libpng-config      DESTINATION bin) | ||||
|     install(FILES ${PNG_BINARY_DIR}/${PNGLIB_NAME}.pc  DESTINATION lib/pkgconfig) | ||||
|     install(FILES ${PNG_BINARY_DIR}/${PNGLIB_NAME}-config DESTINATION bin) | ||||
| endif() | ||||
| 
 | ||||
| # what's with libpng.txt and all the extra files? | ||||
| 
 | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user
	 Glenn Randers-Pehrson
						Glenn Randers-Pehrson