CMakeLists.txt
上传用户:sesekoo
上传日期:2020-07-18
资源大小:21543k
文件大小:6k
源码类别:

界面编程

开发平台:

Visual C++

  1.                                              
  2. project(PNG)
  3. # Copyright (C) 2007 Glenn Randers-Pehrson
  4. # For conditions of distribution and use, see copyright notice in png.h
  5. set(PNGLIB_MAJOR 1)
  6. set(PNGLIB_MINOR 2)
  7. set(PNGLIB_RELEASE 34)
  8. set(PNGLIB_NAME libpng${PNGLIB_MAJOR}${PNGLIB_MINOR})
  9. set(PNGLIB_VERSION ${PNGLIB_MAJOR}.${PNGLIB_MINOR}.${PNGLIB_RELEASE})
  10. # needed packages
  11. find_package(ZLIB REQUIRED)
  12. if(NOT WIN32)
  13.  find_library(M_LIBRARY
  14.      NAMES m
  15.      PATHS /usr/lib /usr/local/lib
  16.  )
  17.  if(NOT M_LIBRARY)
  18.    message(STATUS
  19.      "math library 'libm' not found - floating point support disabled")
  20.  endif(NOT M_LIBRARY)
  21. else(NOT WIN32)
  22.  # not needed on windows
  23.  set(M_LIBRARY "")
  24. endif(NOT WIN32)
  25. # COMMAND LINE OPTIONS
  26. option(PNG_SHARED "Build shared lib" YES)
  27. option(PNG_STATIC "Build static lib" YES)
  28. if(MINGW)
  29.   option(PNG_TESTS  "Build pngtest" NO)
  30. else(MINGW)
  31.   option(PNG_TESTS  "Build pngtest" YES)
  32. endif(MINGW)
  33. option(PNG_NO_CONSOLE_IO "FIXME" YES)
  34. option(PNG_NO_STDIO      "FIXME" YES)
  35. option(PNG_DEBUG         "Build with debug output" YES)
  36. option(PNGARG            "FIXME" YES)
  37. #TODO:
  38. # PNG_CONSOLE_IO_SUPPORTED
  39. # maybe needs improving, but currently I don't know when we can enable what :)
  40. set(png_asm_tmp "OFF")
  41. if(NOT WIN32)
  42.  find_program(uname_executable NAMES uname PATHS /bin /usr/bin /usr/local/bin)
  43.  if(uname_executable)
  44.    EXEC_PROGRAM(${uname_executable} ARGS --machine OUTPUT_VARIABLE uname_output)
  45.    if("uname_output" MATCHES "^.*i[1-9]86.*$")
  46.       set(png_asm_tmp "ON")
  47.    else("uname_output" MATCHES "^.*i[1-9]86.*$")
  48.       set(png_asm_tmp "OFF")
  49.    endif("uname_output" MATCHES "^.*i[1-9]86.*$")
  50.  endif(uname_executable)
  51. else(NOT WIN32)
  52.  # this env var is normally only set on win64
  53.  SET(TEXT "ProgramFiles(x86)")
  54.  if("$ENV{${TEXT}}" STREQUAL "")
  55.   set(png_asm_tmp "ON")
  56.  endif("$ENV{${TEXT}}" STREQUAL "")
  57. endif(NOT WIN32)
  58. # SET LIBNAME
  59. # msvc does not append 'lib' - do it here to have consistent name
  60. if(MSVC)
  61.  set(PNG_LIB_NAME lib)
  62. endif(MSVC)
  63. set(PNG_LIB_NAME ${PNG_LIB_NAME}png${PNGLIB_MAJOR}${PNGLIB_MINOR})
  64. # to distinguish between debug and release lib
  65. set(CMAKE_DEBUG_POSTFIX "d")
  66. # OUR SOURCES
  67. set(libpng_sources
  68.  png.h
  69.  pngconf.h
  70.  png.c
  71.  pngerror.c
  72.  pngget.c
  73.  pngmem.c
  74.  pngpread.c
  75.  pngread.c
  76.  pngrio.c
  77.  pngrtran.c
  78.  pngrutil.c
  79.  pngset.c
  80.  pngtrans.c
  81.  pngwio.c
  82.  pngwrite.c
  83.  pngwtran.c
  84.  pngwutil.c
  85. )
  86. set(pngtest_sources
  87.        pngtest.c
  88. )
  89. # SOME NEEDED DEFINITIONS
  90. if(MSVC)
  91.   add_definitions(-DPNG_NO_MODULEDEF -D_CRT_SECURE_NO_DEPRECATE)
  92. endif(MSVC)
  93. add_definitions(-DZLIB_DLL)
  94. add_definitions(-DLIBPNG_NO_MMX)
  95. add_definitions(-DPNG_NO_MMX_CODE)
  96. if(PNG_CONSOLE_IO_SUPPORTED)
  97.  add_definitions(-DPNG_CONSOLE_IO_SUPPORTED)
  98. endif(PNG_CONSOLE_IO_SUPPORTED)
  99. if(PNG_NO_CONSOLE_IO)
  100.  add_definitions(-DPNG_NO_CONSOLE_IO)
  101. endif(PNG_NO_CONSOLE_IO)
  102. if(PNG_NO_STDIO)
  103.  add_definitions(-DPNG_NO_STDIO)
  104. endif(PNG_NO_STDIO)
  105. if(PNG_DEBUG)
  106.  add_definitions(-DPNG_DEBUG)
  107. endif(PNG_DEBUG)
  108. if(NOT M_LIBRARY AND NOT WIN32)
  109.  add_definitions(-DPNG_NO_FLOATING_POINT_SUPPORTED)
  110. endif(NOT M_LIBRARY AND NOT WIN32)
  111. # NOW BUILD OUR TARGET
  112. include_directories(${PNG_SOURCE_DIR} ${ZLIB_INCLUDE_DIR})
  113. if(PNG_SHARED)
  114.  add_library(${PNG_LIB_NAME} SHARED ${libpng_sources})
  115.  target_link_libraries(${PNG_LIB_NAME} ${ZLIB_LIBRARY} ${M_LIBRARY})
  116. endif(PNG_SHARED)
  117. if(PNG_STATIC)
  118. # does not work without changing name
  119.  set(PNG_LIB_NAME_STATIC ${PNG_LIB_NAME}_static)
  120.  add_library(${PNG_LIB_NAME_STATIC} STATIC ${libpng_sources})
  121. endif(PNG_STATIC)
  122. if(PNG_SHARED AND WIN32)
  123.  set_target_properties(${PNG_LIB_NAME} PROPERTIES DEFINE_SYMBOL PNG_BUILD_DLL)
  124. endif(PNG_SHARED AND WIN32)
  125. if(PNG_TESTS)
  126. # does not work with msvc due to png_lib_ver issue
  127.  add_executable(pngtest ${pngtest_sources})
  128.  target_link_libraries(pngtest ${PNG_LIB_NAME})
  129. #  add_test(pngtest ${PNG_SOURCE_DIR}/pngtest.png)
  130. endif(PNG_TESTS)
  131. # CREATE PKGCONFIG FILES
  132. # we use the same files like ./configure, so we have to set its vars
  133. set(prefix      ${CMAKE_INSTALL_PREFIX})
  134. set(exec_prefix ${CMAKE_INSTALL_PREFIX})
  135. set(libdir      ${CMAKE_INSTALL_PREFIX}/lib)
  136. set(includedir  ${CMAKE_INSTALL_PREFIX}/include)
  137. configure_file(${PNG_SOURCE_DIR}/scripts/libpng.pc.in
  138.   ${PNG_BINARY_DIR}/libpng.pc)
  139. configure_file(${PNG_SOURCE_DIR}/scripts/libpng-config.in
  140.   ${PNG_BINARY_DIR}/libpng-config)
  141. configure_file(${PNG_SOURCE_DIR}/scripts/libpng.pc.in
  142.   ${PNG_BINARY_DIR}/${PNGLIB_NAME}.pc)
  143. configure_file(${PNG_SOURCE_DIR}/scripts/libpng-config.in
  144.   ${PNG_BINARY_DIR}/${PNGLIB_NAME}-config)
  145. # SET UP LINKS
  146. set_target_properties(${PNG_LIB_NAME} PROPERTIES
  147. #    VERSION 0.${PNGLIB_RELEASE}.1.2.34
  148.      VERSION 0.${PNGLIB_RELEASE}.0
  149.      SOVERSION 0
  150.      CLEAN_DIRECT_OUTPUT 1)
  151. if(NOT WIN32)
  152.   # that's uncool on win32 - it overwrites our static import lib...
  153.   set_target_properties(${PNG_LIB_NAME_STATIC} PROPERTIES
  154.      OUTPUT_NAME ${PNG_LIB_NAME}
  155.      CLEAN_DIRECT_OUTPUT 1)
  156. endif(NOT WIN32)
  157. # INSTALL
  158. install_targets(/lib ${PNG_LIB_NAME})
  159. if(PNG_STATIC)
  160.   install_targets(/lib ${PNG_LIB_NAME_STATIC})
  161. endif(PNG_STATIC)
  162. install(FILES png.h pngconf.h         DESTINATION include)
  163. install(FILES png.h pngconf.h         DESTINATION include/${PNGLIB_NAME})
  164. install(FILES libpng.3 libpngpf.3             DESTINATION man/man3)
  165. install(FILES png.5                           DESTINATION man/man5)
  166. install(FILES ${PNG_BINARY_DIR}/libpng.pc     DESTINATION lib/pkgconfig)
  167. install(FILES ${PNG_BINARY_DIR}/libpng-config      DESTINATION bin)
  168. install(FILES ${PNG_BINARY_DIR}/${PNGLIB_NAME}.pc  DESTINATION lib/pkgconfig)
  169. install(FILES ${PNG_BINARY_DIR}/${PNGLIB_NAME}-config DESTINATION bin)
  170. # what's with libpng.txt and all the extra files?
  171. # UNINSTALL
  172. # do we need this?
  173. # DIST
  174. # do we need this?
  175. # to create msvc import lib for mingw compiled shared lib
  176. # pexports libpng.dll > libpng.def
  177. # lib /def:libpng.def /machine:x86