src/3rdparty/libpng/scripts/CMakeLists.txt
changeset 0 1918ee327afb
equal deleted inserted replaced
-1:000000000000 0:1918ee327afb
       
     1 project(PNG C)
       
     2 cmake_minimum_required(VERSION 2.4.3)
       
     3 
       
     4 # Copyright (C) 2007 Glenn Randers-Pehrson
       
     5 
       
     6 # This code is released under the libpng license.
       
     7 # For conditions of distribution and use, see the disclaimer
       
     8 # and license in png.h
       
     9 
       
    10 set(PNGLIB_MAJOR 1)
       
    11 set(PNGLIB_MINOR 2)
       
    12 set(PNGLIB_RELEASE 40)
       
    13 set(PNGLIB_NAME libpng${PNGLIB_MAJOR}${PNGLIB_MINOR})
       
    14 set(PNGLIB_VERSION ${PNGLIB_MAJOR}.${PNGLIB_MINOR}.${PNGLIB_RELEASE})
       
    15 
       
    16 set(CMAKE_ALLOW_LOOSE_LOOP_CONSTRUCTS true)
       
    17 
       
    18 # needed packages
       
    19 find_package(ZLIB REQUIRED)
       
    20 include_directories(${ZLIB_INCLUDE_DIR})
       
    21 
       
    22 if(NOT WIN32)
       
    23  find_library(M_LIBRARY
       
    24      NAMES m
       
    25      PATHS /usr/lib /usr/local/lib
       
    26  )
       
    27  if(NOT M_LIBRARY)
       
    28    message(STATUS
       
    29      "math library 'libm' not found - floating point support disabled")
       
    30  endif()
       
    31 else()
       
    32  # not needed on windows
       
    33  set(M_LIBRARY "")
       
    34 endif()
       
    35 
       
    36 # COMMAND LINE OPTIONS
       
    37 if(DEFINED PNG_SHARED)
       
    38   option(PNG_SHARED "Build shared lib" ${PNG_SHARED})
       
    39 else()
       
    40   option(PNG_SHARED "Build shared lib" ON)
       
    41 endif()
       
    42 if(DEFINED PNG_STATIC)
       
    43   option(PNG_STATIC "Build static lib" ${PNG_STATIC})
       
    44 else()
       
    45   option(PNG_STATIC "Build static lib" ON)
       
    46 endif()
       
    47 
       
    48 if(MINGW)
       
    49   option(PNG_TESTS  "Build pngtest" NO)
       
    50 else(MINGW)
       
    51   option(PNG_TESTS  "Build pngtest" YES)
       
    52 endif(MINGW)
       
    53 
       
    54 option(PNG_NO_CONSOLE_IO "FIXME" YES)
       
    55 option(PNG_NO_STDIO      "FIXME" YES)
       
    56 option(PNG_DEBUG         "Build with debug output" NO)
       
    57 option(PNGARG            "FIXME" YES)
       
    58 #TODO:
       
    59 # PNG_CONSOLE_IO_SUPPORTED
       
    60 
       
    61 # maybe needs improving, but currently I don't know when we can enable what :)
       
    62 set(png_asm_tmp "OFF")
       
    63 if(NOT WIN32)
       
    64  find_program(uname_executable NAMES uname PATHS /bin /usr/bin /usr/local/bin)
       
    65  if(uname_executable)
       
    66    EXEC_PROGRAM(${uname_executable} ARGS --machine OUTPUT_VARIABLE uname_output)
       
    67    if("uname_output" MATCHES "^.*i[1-9]86.*$")
       
    68       set(png_asm_tmp "ON")
       
    69    else("uname_output" MATCHES "^.*i[1-9]86.*$")
       
    70       set(png_asm_tmp "OFF")
       
    71    endif("uname_output" MATCHES "^.*i[1-9]86.*$")
       
    72  endif(uname_executable)
       
    73 else()
       
    74  # this env var is normally only set on win64
       
    75  SET(TEXT "ProgramFiles(x86)")
       
    76  if("$ENV{${TEXT}}" STREQUAL "")
       
    77   set(png_asm_tmp "ON")
       
    78  endif("$ENV{${TEXT}}" STREQUAL "")
       
    79 endif()
       
    80 
       
    81 # SET LIBNAME
       
    82 set(PNG_LIB_NAME png${PNGLIB_MAJOR}${PNGLIB_MINOR})
       
    83 
       
    84 # to distinguish between debug and release lib
       
    85 set(CMAKE_DEBUG_POSTFIX "d")
       
    86 
       
    87 
       
    88 # OUR SOURCES
       
    89 set(libpng_sources
       
    90  png.h
       
    91  pngconf.h
       
    92  png.c
       
    93  pngerror.c
       
    94  pngget.c
       
    95  pngmem.c
       
    96  pngpread.c
       
    97  pngread.c
       
    98  pngrio.c
       
    99  pngrtran.c
       
   100  pngrutil.c
       
   101  pngset.c
       
   102  pngtrans.c
       
   103  pngwio.c
       
   104  pngwrite.c
       
   105  pngwtran.c
       
   106  pngwutil.c
       
   107 )
       
   108 set(pngtest_sources
       
   109        pngtest.c
       
   110 )
       
   111 # SOME NEEDED DEFINITIONS
       
   112 if(MSVC)
       
   113   add_definitions(-DPNG_NO_MODULEDEF -D_CRT_SECURE_NO_DEPRECATE)
       
   114 endif(MSVC)
       
   115 
       
   116 if(PNG_SHARED OR  NOT MSVC)
       
   117 	#if building msvc static this has NOT do be defined
       
   118 	add_definitions(-DZLIB_DLL)
       
   119 endif()
       
   120 
       
   121 add_definitions(-DLIBPNG_NO_MMX)
       
   122 add_definitions(-DPNG_NO_MMX_CODE)
       
   123 
       
   124 if(PNG_CONSOLE_IO_SUPPORTED)
       
   125  add_definitions(-DPNG_CONSOLE_IO_SUPPORTED)
       
   126 endif()
       
   127 
       
   128 if(PNG_NO_CONSOLE_IO)
       
   129  add_definitions(-DPNG_NO_CONSOLE_IO)
       
   130 endif()
       
   131 
       
   132 if(PNG_NO_STDIO)
       
   133  add_definitions(-DPNG_NO_STDIO)
       
   134 endif()
       
   135 
       
   136 if(PNG_DEBUG)
       
   137  add_definitions(-DPNG_DEBUG)
       
   138 endif()
       
   139 
       
   140 if(NOT M_LIBRARY AND NOT WIN32)
       
   141  add_definitions(-DPNG_NO_FLOATING_POINT_SUPPORTED)
       
   142 endif()
       
   143 
       
   144 # NOW BUILD OUR TARGET
       
   145 include_directories(${PNG_SOURCE_DIR} ${ZLIB_INCLUDE_DIR})
       
   146 
       
   147 if(PNG_SHARED)
       
   148  add_library(${PNG_LIB_NAME} SHARED ${libpng_sources})
       
   149  if(MSVC)
       
   150    # msvc does not append 'lib' - do it here to have consistent name
       
   151    set_target_properties(${PNG_LIB_NAME} PROPERTIES PREFIX "lib")
       
   152  endif()
       
   153  target_link_libraries(${PNG_LIB_NAME} ${ZLIB_LIBRARY} ${M_LIBRARY})
       
   154 endif()
       
   155 
       
   156 if(PNG_STATIC)
       
   157 # does not work without changing name
       
   158  set(PNG_LIB_NAME_STATIC ${PNG_LIB_NAME}_static)
       
   159  add_library(${PNG_LIB_NAME_STATIC} STATIC ${libpng_sources})
       
   160  if(MSVC)
       
   161    # msvc does not append 'lib' - do it here to have consistent name
       
   162    set_target_properties(${PNG_LIB_NAME_STATIC} PROPERTIES PREFIX "lib")
       
   163  endif()
       
   164 endif()
       
   165 
       
   166 
       
   167 if(PNG_SHARED AND WIN32)
       
   168  set_target_properties(${PNG_LIB_NAME} PROPERTIES DEFINE_SYMBOL PNG_BUILD_DLL)
       
   169 endif()
       
   170 
       
   171 if(PNG_TESTS AND PNG_SHARED)
       
   172 # does not work with msvc due to png_lib_ver issue
       
   173  add_executable(pngtest ${pngtest_sources})
       
   174  target_link_libraries(pngtest ${PNG_LIB_NAME})
       
   175 #  add_test(pngtest ${PNG_SOURCE_DIR}/pngtest.png)
       
   176 endif()
       
   177 
       
   178 
       
   179 # CREATE PKGCONFIG FILES
       
   180 # we use the same files like ./configure, so we have to set its vars
       
   181 set(prefix      ${CMAKE_INSTALL_PREFIX})
       
   182 set(exec_prefix ${CMAKE_INSTALL_PREFIX})
       
   183 set(libdir      ${CMAKE_INSTALL_PREFIX}/lib)
       
   184 set(includedir  ${CMAKE_INSTALL_PREFIX}/include)
       
   185 
       
   186 configure_file(${PNG_SOURCE_DIR}/scripts/libpng.pc.in
       
   187   ${PNG_BINARY_DIR}/libpng.pc)
       
   188 configure_file(${PNG_SOURCE_DIR}/scripts/libpng-config.in
       
   189   ${PNG_BINARY_DIR}/libpng-config)
       
   190 configure_file(${PNG_SOURCE_DIR}/scripts/libpng.pc.in
       
   191   ${PNG_BINARY_DIR}/${PNGLIB_NAME}.pc)
       
   192 configure_file(${PNG_SOURCE_DIR}/scripts/libpng-config.in
       
   193   ${PNG_BINARY_DIR}/${PNGLIB_NAME}-config)
       
   194 
       
   195 # SET UP LINKS
       
   196 if(PNG_SHARED)
       
   197   set_target_properties(${PNG_LIB_NAME} PROPERTIES
       
   198 #    VERSION 0.${PNGLIB_RELEASE}.1.2.40
       
   199      VERSION 0.${PNGLIB_RELEASE}.0
       
   200      SOVERSION 0
       
   201      CLEAN_DIRECT_OUTPUT 1)
       
   202 endif()
       
   203 if(PNG_STATIC)
       
   204   if(NOT WIN32)
       
   205     # that's uncool on win32 - it overwrites our static import lib...
       
   206     set_target_properties(${PNG_LIB_NAME_STATIC} PROPERTIES
       
   207        OUTPUT_NAME ${PNG_LIB_NAME}
       
   208        CLEAN_DIRECT_OUTPUT 1)
       
   209   endif()
       
   210 endif()
       
   211 
       
   212 # INSTALL
       
   213 if(NOT SKIP_INSTALL_LIBRARIES AND NOT SKIP_INSTALL_ALL )
       
   214     if(PNG_SHARED)
       
   215         install(TARGETS ${PNG_LIB_NAME}
       
   216             RUNTIME DESTINATION bin
       
   217             LIBRARY DESTINATION lib
       
   218             ARCHIVE DESTINATION lib)
       
   219     endif()
       
   220     if(PNG_STATIC)
       
   221         install(TARGETS ${PNG_LIB_NAME_STATIC}
       
   222             LIBRARY DESTINATION lib
       
   223             ARCHIVE DESTINATION lib)
       
   224     endif()
       
   225 endif()
       
   226 
       
   227 if(NOT SKIP_INSTALL_HEADERS AND NOT SKIP_INSTALL_ALL )
       
   228 install(FILES png.h pngconf.h         DESTINATION include)
       
   229 install(FILES png.h pngconf.h         DESTINATION include/${PNGLIB_NAME})
       
   230 endif()
       
   231 if(NOT SKIP_INSTALL_FILES AND NOT SKIP_INSTALL_ALL )
       
   232     install(FILES libpng.3 libpngpf.3             DESTINATION man/man3)
       
   233     install(FILES png.5                           DESTINATION man/man5)
       
   234     install(FILES ${PNG_BINARY_DIR}/libpng.pc     DESTINATION lib/pkgconfig)
       
   235     install(FILES ${PNG_BINARY_DIR}/libpng-config      DESTINATION bin)
       
   236     install(FILES ${PNG_BINARY_DIR}/${PNGLIB_NAME}.pc  DESTINATION lib/pkgconfig)
       
   237     install(FILES ${PNG_BINARY_DIR}/${PNGLIB_NAME}-config DESTINATION bin)
       
   238 endif()
       
   239 
       
   240 # what's with libpng.txt and all the extra files?
       
   241 
       
   242 
       
   243 # UNINSTALL
       
   244 # do we need this?
       
   245 
       
   246 
       
   247 # DIST
       
   248 # do we need this?
       
   249 
       
   250 # to create msvc import lib for mingw compiled shared lib
       
   251 # pexports libpng.dll > libpng.def
       
   252 # lib /def:libpng.def /machine:x86
       
   253