OLD | NEW |
(Empty) | |
| 1 # CMakeLists.txt |
| 2 |
| 3 # Copyright (C) 2007,2009-2016 Glenn Randers-Pehrson |
| 4 # Written by Christian Ehrlicher, 2007 |
| 5 # Revised by Roger Lowman, 2009-2010 |
| 6 # Revised by Clifford Yapp, 2011-2012 |
| 7 # Revised by Roger Leigh, 2016 |
| 8 |
| 9 # This code is released under the libpng license. |
| 10 # For conditions of distribution and use, see the disclaimer |
| 11 # and license in png.h |
| 12 |
| 13 cmake_minimum_required(VERSION 2.8.3) |
| 14 cmake_policy(VERSION 2.8.3) |
| 15 |
| 16 # Set MacOSX @rpath usage globally. |
| 17 if (POLICY CMP0020) |
| 18 cmake_policy(SET CMP0020 NEW) |
| 19 endif(POLICY CMP0020) |
| 20 if (POLICY CMP0042) |
| 21 cmake_policy(SET CMP0042 NEW) |
| 22 endif(POLICY CMP0042) |
| 23 # Use new variable expansion policy. |
| 24 if (POLICY CMP0053) |
| 25 cmake_policy(SET CMP0053 NEW) |
| 26 endif(POLICY CMP0053) |
| 27 if (POLICY CMP0054) |
| 28 cmake_policy(SET CMP0054 NEW) |
| 29 endif(POLICY CMP0054) |
| 30 |
| 31 set(CMAKE_CONFIGURATION_TYPES "Release;Debug;MinSizeRel;RelWithDebInfo") |
| 32 |
| 33 project(libpng C) |
| 34 enable_testing() |
| 35 |
| 36 set(PNGLIB_MAJOR 1) |
| 37 set(PNGLIB_MINOR 6) |
| 38 set(PNGLIB_RELEASE 22) |
| 39 set(PNGLIB_NAME libpng${PNGLIB_MAJOR}${PNGLIB_MINOR}) |
| 40 set(PNGLIB_VERSION ${PNGLIB_MAJOR}.${PNGLIB_MINOR}.${PNGLIB_RELEASE}) |
| 41 |
| 42 # needed packages |
| 43 find_package(ZLIB REQUIRED) |
| 44 include_directories(${ZLIB_INCLUDE_DIR}) |
| 45 |
| 46 if(NOT WIN32) |
| 47 find_library(M_LIBRARY |
| 48 NAMES m |
| 49 PATHS /usr/lib /usr/local/lib |
| 50 ) |
| 51 if(NOT M_LIBRARY) |
| 52 message(STATUS "math lib 'libm' not found; floating point support disabled") |
| 53 endif() |
| 54 else() |
| 55 # not needed on windows |
| 56 set(M_LIBRARY "") |
| 57 endif() |
| 58 |
| 59 # COMMAND LINE OPTIONS |
| 60 option(PNG_SHARED "Build shared lib" ON) |
| 61 option(PNG_STATIC "Build static lib" ON) |
| 62 option(PNG_TESTS "Build libpng tests" ON) |
| 63 |
| 64 # Many more configuration options could be added here |
| 65 option(PNG_FRAMEWORK "Build OS X framework" OFF) |
| 66 option(PNG_DEBUG "Build with debug output" OFF) |
| 67 option(PNGARG "Disable ANSI-C prototypes" OFF) |
| 68 |
| 69 set(PNG_PREFIX "" CACHE STRING "Prefix to add to the API function names") |
| 70 set(DFA_XTRA "" CACHE FILEPATH "File containing extra configuration settings") |
| 71 |
| 72 # SET LIBNAME |
| 73 set(PNG_LIB_NAME png${PNGLIB_MAJOR}${PNGLIB_MINOR}) |
| 74 |
| 75 # to distinguish between debug and release lib |
| 76 set(CMAKE_DEBUG_POSTFIX "d") |
| 77 |
| 78 include(CheckCSourceCompiles) |
| 79 option(ld-version-script "Enable linker version script" ON) |
| 80 if(ld-version-script AND NOT APPLE) |
| 81 # Check if LD supports linker scripts. |
| 82 file(WRITE "${CMAKE_CURRENT_BINARY_DIR}/conftest.map" "VERS_1 { |
| 83 global: sym; |
| 84 local: *; |
| 85 }; |
| 86 |
| 87 VERS_2 { |
| 88 global: sym2; |
| 89 main; |
| 90 } VERS_1; |
| 91 ") |
| 92 set(CMAKE_REQUIRED_FLAGS_SAVE ${CMAKE_REQUIRED_FLAGS}) |
| 93 set(CMAKE_REQUIRED_FLAGS ${CMAKE_REQUIRED_FLAGS} "-Wl,--version-script='${CMAK
E_CURRENT_BINARY_DIR}/conftest.map'") |
| 94 check_c_source_compiles("void sym(void) {} |
| 95 void sym2(void) {} |
| 96 int main(void) {return 0;} |
| 97 " HAVE_LD_VERSION_SCRIPT) |
| 98 if(NOT HAVE_LD_VERSION_SCRIPT) |
| 99 set(CMAKE_REQUIRED_FLAGS ${CMAKE_REQUIRED_FLAGS_SAVE} "-Wl,-M -Wl,${CMAKE_CU
RRENT_BINARY_DIR}/conftest.map") |
| 100 check_c_source_compiles("void sym(void) {} |
| 101 void sym2(void) {} |
| 102 int main(void) {return 0;} |
| 103 " HAVE_SOLARIS_LD_VERSION_SCRIPT) |
| 104 endif() |
| 105 set(CMAKE_REQUIRED_FLAGS ${CMAKE_REQUIRED_FLAGS_SAVE}) |
| 106 file(REMOVE "${CMAKE_CURRENT_BINARY_DIR}/conftest.map") |
| 107 endif() |
| 108 |
| 109 # Find symbol prefix. Likely obsolete and unnecessary with recent |
| 110 # toolchains (it's not done in many other projects). |
| 111 function(symbol_prefix) |
| 112 set(SYMBOL_PREFIX) |
| 113 |
| 114 execute_process(COMMAND "${CMAKE_C_COMPILER}" "-E" "-" |
| 115 INPUT_FILE /dev/null |
| 116 OUTPUT_VARIABLE OUT |
| 117 RESULT_VARIABLE STATUS) |
| 118 |
| 119 if(CPP_FAIL) |
| 120 message(WARNING "Failed to run the C preprocessor") |
| 121 endif() |
| 122 |
| 123 string(REPLACE "\n" ";" OUT "${OUT}") |
| 124 foreach(line ${OUT}) |
| 125 string(REGEX MATCH "^PREFIX=" found_match "${line}") |
| 126 if(found_match) |
| 127 STRING(REGEX REPLACE "^PREFIX=(.*\)" "\\1" prefix "${line}") |
| 128 string(REGEX MATCH "__USER_LABEL_PREFIX__" found_match "${prefix}") |
| 129 if(found_match) |
| 130 STRING(REGEX REPLACE "(.*)__USER_LABEL_PREFIX__(.*)" "\\1\\2" prefix "${
prefix}") |
| 131 endif() |
| 132 set(SYMBOL_PREFIX "${prefix}") |
| 133 endif() |
| 134 endforeach() |
| 135 |
| 136 message(STATUS "Symbol prefix: ${SYMBOL_PREFIX}") |
| 137 set(SYMBOL_PREFIX "${SYMBOL_PREFIX}" PARENT_SCOPE) |
| 138 endfunction() |
| 139 |
| 140 if(UNIX) |
| 141 symbol_prefix() |
| 142 endif() |
| 143 |
| 144 find_program(AWK NAMES gawk awk) |
| 145 |
| 146 include_directories(${CMAKE_CURRENT_BINARY_DIR}) |
| 147 |
| 148 if(NOT AWK) |
| 149 # No awk available to generate sources; use pre-built pnglibconf.h |
| 150 configure_file(${CMAKE_CURRENT_SOURCE_DIR}/scripts/pnglibconf.h.prebuilt |
| 151 ${CMAKE_CURRENT_BINARY_DIR}/pnglibconf.h) |
| 152 add_custom_target(genfiles) # Dummy |
| 153 else() |
| 154 include(CMakeParseArguments) |
| 155 # Generate .chk from .out with awk |
| 156 # generate_chk(INPUT inputfile OUTPUT outputfile [DEPENDS dep1 [dep2...]]) |
| 157 function(generate_chk) |
| 158 set(options) |
| 159 set(oneValueArgs INPUT OUTPUT) |
| 160 set(multiValueArgs DEPENDS) |
| 161 cmake_parse_arguments(_GC "${options}" "${oneValueArgs}" "${multiValueArgs}"
${ARGN}) |
| 162 if (NOT _GC_INPUT) |
| 163 message(FATAL_ERROR "Invalid arguments. generate_out requires input.") |
| 164 endif() |
| 165 if (NOT _GC_OUTPUT) |
| 166 message(FATAL_ERROR "Invalid arguments. generate_out requires output.") |
| 167 endif() |
| 168 |
| 169 add_custom_command(OUTPUT "${_GC_OUTPUT}" |
| 170 COMMAND "${CMAKE_COMMAND}" |
| 171 "-DINPUT=${_GC_INPUT}" |
| 172 "-DOUTPUT=${_GC_OUTPUT}" |
| 173 -P "${CMAKE_CURRENT_BINARY_DIR}/scripts/genchk.cm
ake" |
| 174 DEPENDS "${_GC_INPUT}" ${_GC_DEPENDS} |
| 175 WORKING_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}") |
| 176 endfunction() |
| 177 |
| 178 # Generate .out from .c with awk |
| 179 # generate_out(INPUT inputfile OUTPUT outputfile [DEPENDS dep1 [dep2...]]) |
| 180 function(generate_out) |
| 181 set(options) |
| 182 set(oneValueArgs INPUT OUTPUT) |
| 183 set(multiValueArgs DEPENDS) |
| 184 cmake_parse_arguments(_GO "${options}" "${oneValueArgs}" "${multiValueArgs}"
${ARGN}) |
| 185 if (NOT _GO_INPUT) |
| 186 message(FATAL_ERROR "Invalid arguments. generate_out requires input.") |
| 187 endif() |
| 188 if (NOT _GO_OUTPUT) |
| 189 message(FATAL_ERROR "Invalid arguments. generate_out requires output.") |
| 190 endif() |
| 191 |
| 192 add_custom_command(OUTPUT "${_GO_OUTPUT}" |
| 193 COMMAND "${CMAKE_COMMAND}" |
| 194 "-DINPUT=${_GO_INPUT}" |
| 195 "-DOUTPUT=${_GO_OUTPUT}" |
| 196 -P "${CMAKE_CURRENT_BINARY_DIR}/scripts/genout.cm
ake" |
| 197 DEPENDS "${_GO_INPUT}" ${_GO_DEPENDS} |
| 198 WORKING_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}") |
| 199 endfunction() |
| 200 |
| 201 # Generate specific source file with awk |
| 202 # generate_source(OUTPUT outputfile [DEPENDS dep1 [dep2...]]) |
| 203 function(generate_source) |
| 204 set(options) |
| 205 set(oneValueArgs OUTPUT) |
| 206 set(multiValueArgs DEPENDS) |
| 207 cmake_parse_arguments(_GSO "${options}" "${oneValueArgs}" "${multiValueArgs}
" ${ARGN}) |
| 208 if (NOT _GSO_OUTPUT) |
| 209 message(FATAL_ERROR "Invalid arguments. generate_source requires output."
) |
| 210 endif() |
| 211 |
| 212 add_custom_command(OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/${_GSO_OUTPUT}" |
| 213 COMMAND "${CMAKE_COMMAND}" |
| 214 "-DOUTPUT=${_GSO_OUTPUT}" |
| 215 -P "${CMAKE_CURRENT_BINARY_DIR}/scripts/gensrc.cm
ake" |
| 216 DEPENDS ${_GSO_DEPENDS} |
| 217 WORKING_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}") |
| 218 endfunction() |
| 219 |
| 220 # Copy file |
| 221 function(generate_copy source destination) |
| 222 add_custom_command(OUTPUT "${destination}" |
| 223 COMMAND "${CMAKE_COMMAND}" -E remove "${destination}" |
| 224 COMMAND "${CMAKE_COMMAND}" -E copy "${source}" |
| 225 "${destination}" |
| 226 DEPENDS "${source}") |
| 227 endfunction() |
| 228 |
| 229 # Generate scripts/pnglibconf.h |
| 230 generate_source(OUTPUT "scripts/pnglibconf.c" |
| 231 DEPENDS "${CMAKE_CURRENT_SOURCE_DIR}/scripts/pnglibconf.dfa" |
| 232 "${CMAKE_CURRENT_SOURCE_DIR}/scripts/options.awk" |
| 233 "${CMAKE_CURRENT_SOURCE_DIR}/pngconf.h") |
| 234 |
| 235 # Generate pnglibconf.c |
| 236 generate_source(OUTPUT "pnglibconf.c" |
| 237 DEPENDS "${CMAKE_CURRENT_SOURCE_DIR}/scripts/pnglibconf.dfa" |
| 238 "${CMAKE_CURRENT_SOURCE_DIR}/scripts/options.awk" |
| 239 "${CMAKE_CURRENT_SOURCE_DIR}/pngconf.h") |
| 240 |
| 241 if(PNG_PREFIX) |
| 242 set(PNGLIBCONF_H_EXTRA_DEPENDS |
| 243 "${CMAKE_CURRENT_BINARY_DIR}/scripts/prefix.out" |
| 244 "${CMAKE_CURRENT_SOURCE_DIR}/scripts/macro.lst") |
| 245 set(PNGPREFIX_H_EXTRA_DEPENDS |
| 246 "${CMAKE_CURRENT_BINARY_DIR}/scripts/intprefix.out") |
| 247 endif() |
| 248 |
| 249 generate_out(INPUT "${CMAKE_CURRENT_BINARY_DIR}/pnglibconf.c" |
| 250 OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/pnglibconf.out") |
| 251 |
| 252 # Generate pnglibconf.h |
| 253 generate_source(OUTPUT "pnglibconf.h" |
| 254 DEPENDS "${CMAKE_CURRENT_BINARY_DIR}/pnglibconf.out" |
| 255 ${PNGLIBCONF_H_EXTRA_DEPENDS}) |
| 256 |
| 257 generate_out(INPUT "${CMAKE_CURRENT_SOURCE_DIR}/scripts/intprefix.c" |
| 258 OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/scripts/intprefix.out" |
| 259 DEPENDS "${CMAKE_CURRENT_BINARY_DIR}/pnglibconf.h") |
| 260 |
| 261 generate_out(INPUT "${CMAKE_CURRENT_SOURCE_DIR}/scripts/prefix.c" |
| 262 OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/scripts/prefix.out" |
| 263 DEPENDS "${CMAKE_CURRENT_SOURCE_DIR}/png.h" |
| 264 "${CMAKE_CURRENT_SOURCE_DIR}/pngconf.h" |
| 265 "${CMAKE_CURRENT_BINARY_DIR}/pnglibconf.out") |
| 266 |
| 267 # Generate pngprefix.h |
| 268 generate_source(OUTPUT "pngprefix.h" |
| 269 DEPENDS ${PNGPREFIX_H_EXTRA_DEPENDS}) |
| 270 |
| 271 generate_out(INPUT "${CMAKE_CURRENT_SOURCE_DIR}/scripts/sym.c" |
| 272 OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/scripts/sym.out" |
| 273 DEPENDS "${CMAKE_CURRENT_BINARY_DIR}/pnglibconf.h") |
| 274 |
| 275 generate_out(INPUT "${CMAKE_CURRENT_SOURCE_DIR}/scripts/symbols.c" |
| 276 OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/scripts/symbols.out" |
| 277 DEPENDS "${CMAKE_CURRENT_SOURCE_DIR}/png.h" |
| 278 "${CMAKE_CURRENT_SOURCE_DIR}/pngconf.h" |
| 279 "${CMAKE_CURRENT_SOURCE_DIR}/scripts/pnglibconf.h.prebuil
t") |
| 280 |
| 281 generate_out(INPUT "${CMAKE_CURRENT_SOURCE_DIR}/scripts/vers.c" |
| 282 OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/scripts/vers.out" |
| 283 DEPENDS "${CMAKE_CURRENT_SOURCE_DIR}/png.h" |
| 284 "${CMAKE_CURRENT_SOURCE_DIR}/pngconf.h" |
| 285 "${CMAKE_CURRENT_BINARY_DIR}/pnglibconf.h") |
| 286 |
| 287 generate_chk(INPUT "${CMAKE_CURRENT_BINARY_DIR}/scripts/symbols.out" |
| 288 OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/scripts/symbols.chk" |
| 289 DEPENDS "${CMAKE_CURRENT_SOURCE_DIR}/scripts/checksym.awk" |
| 290 "${CMAKE_CURRENT_SOURCE_DIR}/scripts/symbols.def") |
| 291 |
| 292 add_custom_target(symbol-check DEPENDS |
| 293 "${CMAKE_CURRENT_BINARY_DIR}/scripts/symbols.chk") |
| 294 |
| 295 generate_copy("${CMAKE_CURRENT_BINARY_DIR}/scripts/sym.out" |
| 296 "${CMAKE_CURRENT_BINARY_DIR}/libpng.sym") |
| 297 generate_copy("${CMAKE_CURRENT_BINARY_DIR}/scripts/vers.out" |
| 298 "${CMAKE_CURRENT_BINARY_DIR}/libpng.vers") |
| 299 |
| 300 add_custom_target(genvers DEPENDS "${CMAKE_CURRENT_BINARY_DIR}/libpng.vers") |
| 301 add_custom_target(gensym DEPENDS "${CMAKE_CURRENT_BINARY_DIR}/libpng.sym") |
| 302 |
| 303 add_custom_target("genprebuilt" |
| 304 COMMAND "${CMAKE_COMMAND}" |
| 305 "-DOUTPUT=scripts/pnglibconf.h.prebuilt" |
| 306 -P "${CMAKE_CURRENT_BINARY_DIR}/scripts/gensrc.cmake
" |
| 307 WORKING_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}") |
| 308 |
| 309 # A single target handles generation of all generated files. If |
| 310 # they are dependend upon separately by multiple targets, this |
| 311 # confuses parallel make (it would require a separate top-level |
| 312 # target for each file to track the dependencies properly). |
| 313 add_custom_target(genfiles DEPENDS |
| 314 "${CMAKE_CURRENT_BINARY_DIR}/libpng.sym" |
| 315 "${CMAKE_CURRENT_BINARY_DIR}/libpng.vers" |
| 316 "${CMAKE_CURRENT_BINARY_DIR}/pnglibconf.c" |
| 317 "${CMAKE_CURRENT_BINARY_DIR}/pnglibconf.h" |
| 318 "${CMAKE_CURRENT_BINARY_DIR}/pnglibconf.out" |
| 319 "${CMAKE_CURRENT_BINARY_DIR}/pngprefix.h" |
| 320 "${CMAKE_CURRENT_BINARY_DIR}/scripts/intprefix.out" |
| 321 "${CMAKE_CURRENT_BINARY_DIR}/scripts/pnglibconf.c" |
| 322 "${CMAKE_CURRENT_BINARY_DIR}/scripts/prefix.out" |
| 323 "${CMAKE_CURRENT_BINARY_DIR}/scripts/sym.out" |
| 324 "${CMAKE_CURRENT_BINARY_DIR}/scripts/symbols.chk" |
| 325 "${CMAKE_CURRENT_BINARY_DIR}/scripts/symbols.out" |
| 326 "${CMAKE_CURRENT_BINARY_DIR}/scripts/vers.out") |
| 327 endif(NOT AWK) |
| 328 |
| 329 # OUR SOURCES |
| 330 set(libpng_public_hdrs |
| 331 png.h |
| 332 pngconf.h |
| 333 "${CMAKE_CURRENT_BINARY_DIR}/pnglibconf.h" |
| 334 ) |
| 335 set(libpng_private_hdrs |
| 336 pngpriv.h |
| 337 pngdebug.h |
| 338 pnginfo.h |
| 339 pngstruct.h |
| 340 ) |
| 341 if(AWK) |
| 342 list(APPEND libpng_private_hdrs "${CMAKE_CURRENT_BINARY_DIR}/pngprefix.h") |
| 343 endif() |
| 344 set(libpng_sources |
| 345 ${libpng_public_hdrs} |
| 346 ${libpng_private_hdrs} |
| 347 png.c |
| 348 pngerror.c |
| 349 pngget.c |
| 350 pngmem.c |
| 351 pngpread.c |
| 352 pngread.c |
| 353 pngrio.c |
| 354 pngrtran.c |
| 355 pngrutil.c |
| 356 pngset.c |
| 357 pngtrans.c |
| 358 pngwio.c |
| 359 pngwrite.c |
| 360 pngwtran.c |
| 361 pngwutil.c |
| 362 ) |
| 363 set(pngtest_sources |
| 364 pngtest.c |
| 365 ) |
| 366 set(pngvalid_sources |
| 367 contrib/libtests/pngvalid.c |
| 368 ) |
| 369 set(pngstest_sources |
| 370 contrib/libtests/pngstest.c |
| 371 ) |
| 372 set(pngunknown_sources |
| 373 contrib/libtests/pngunknown.c |
| 374 ) |
| 375 set(pngimage_sources |
| 376 contrib/libtests/pngimage.c |
| 377 ) |
| 378 set(pngfix_sources |
| 379 contrib/tools/pngfix.c |
| 380 ) |
| 381 set(png_fix_itxt_sources |
| 382 contrib/tools/png-fix-itxt.c |
| 383 ) |
| 384 |
| 385 if(MSVC) |
| 386 add_definitions(-D_CRT_SECURE_NO_DEPRECATE) |
| 387 endif(MSVC) |
| 388 |
| 389 if(PNG_DEBUG) |
| 390 add_definitions(-DPNG_DEBUG) |
| 391 endif() |
| 392 |
| 393 # NOW BUILD OUR TARGET |
| 394 include_directories(${CMAKE_CURRENT_SOURCE_DIR} ${ZLIB_INCLUDE_DIR}) |
| 395 |
| 396 unset(PNG_LIB_TARGETS) |
| 397 |
| 398 if(PNG_SHARED) |
| 399 add_library(png SHARED ${libpng_sources}) |
| 400 set(PNG_LIB_TARGETS png) |
| 401 set_target_properties(png PROPERTIES OUTPUT_NAME ${PNG_LIB_NAME}) |
| 402 add_dependencies(png genfiles) |
| 403 if(MSVC) |
| 404 # msvc does not append 'lib' - do it here to have consistent name |
| 405 set_target_properties(png PROPERTIES PREFIX "lib") |
| 406 set_target_properties(png PROPERTIES IMPORT_PREFIX "lib") |
| 407 endif() |
| 408 target_link_libraries(png ${ZLIB_LIBRARY} ${M_LIBRARY}) |
| 409 |
| 410 if(UNIX AND AWK) |
| 411 if(HAVE_LD_VERSION_SCRIPT) |
| 412 set_target_properties(png PROPERTIES LINK_FLAGS |
| 413 "-Wl,--version-script='${CMAKE_CURRENT_BINARY_DIR}/libpng.vers'") |
| 414 elseif(HAVE_SOLARIS_LD_VERSION_SCRIPT) |
| 415 set_target_properties(png PROPERTIES LINK_FLAGS |
| 416 "-Wl,-M -Wl,'${CMAKE_CURRENT_BINARY_DIR}/libpng.vers'") |
| 417 endif() |
| 418 endif() |
| 419 endif() |
| 420 |
| 421 if(PNG_STATIC) |
| 422 # does not work without changing name |
| 423 set(PNG_LIB_NAME_STATIC png_static) |
| 424 add_library(png_static STATIC ${libpng_sources}) |
| 425 add_dependencies(png_static genfiles) |
| 426 # MSVC doesn't use a different file extension for shared vs. static |
| 427 # libs. We are able to change OUTPUT_NAME to remove the _static |
| 428 # for all other platforms. |
| 429 if(NOT MSVC) |
| 430 set_target_properties(png_static PROPERTIES |
| 431 OUTPUT_NAME "${PNG_LIB_NAME}" |
| 432 CLEAN_DIRECT_OUTPUT 1) |
| 433 else() |
| 434 set_target_properties(png_static PROPERTIES |
| 435 OUTPUT_NAME "${PNG_LIB_NAME}_static" |
| 436 CLEAN_DIRECT_OUTPUT 1) |
| 437 endif() |
| 438 list(APPEND PNG_LIB_TARGETS png_static) |
| 439 if(MSVC) |
| 440 # msvc does not append 'lib' - do it here to have consistent name |
| 441 set_target_properties(png_static PROPERTIES PREFIX "lib") |
| 442 endif() |
| 443 target_link_libraries(png_static ${ZLIB_LIBRARY} ${M_LIBRARY}) |
| 444 endif() |
| 445 |
| 446 if(PNG_FRAMEWORK) |
| 447 set(PNG_LIB_NAME_FRAMEWORK png_framework) |
| 448 add_library(png_framework SHARED ${libpng_sources}) |
| 449 add_dependencies(png_framework genfiles) |
| 450 list(APPEND PNG_LIB_TARGETS png_framework) |
| 451 set_target_properties(png_framework PROPERTIES |
| 452 FRAMEWORK TRUE |
| 453 FRAMEWORK_VERSION ${PNGLIB_VERSION} |
| 454 MACOSX_FRAMEWORK_SHORT_VERSION_STRING ${PNGLIB_MAJOR}.${PNGLIB_MINOR} |
| 455 MACOSX_FRAMEWORK_BUNDLE_VERSION ${PNGLIB_VERSION} |
| 456 MACOSX_FRAMEWORK_IDENTIFIER org.libpng.libpng |
| 457 XCODE_ATTRIBUTE_INSTALL_PATH "@rpath" |
| 458 PUBLIC_HEADER "${libpng_public_hdrs}" |
| 459 OUTPUT_NAME png) |
| 460 target_link_libraries(png_framework ${ZLIB_LIBRARY} ${M_LIBRARY}) |
| 461 endif() |
| 462 |
| 463 if(NOT PNG_LIB_TARGETS) |
| 464 message(SEND_ERROR |
| 465 "No library variant selected to build. " |
| 466 "Please enable at least one of the following options: " |
| 467 " PNG_STATIC, PNG_SHARED, PNG_FRAMEWORK") |
| 468 endif() |
| 469 |
| 470 if(PNG_SHARED AND WIN32) |
| 471 set_target_properties(png PROPERTIES DEFINE_SYMBOL PNG_BUILD_DLL) |
| 472 endif() |
| 473 |
| 474 function(png_add_test) |
| 475 set(options) |
| 476 set(oneValueArgs NAME COMMAND) |
| 477 set(multiValueArgs OPTIONS FILES) |
| 478 cmake_parse_arguments(_PAT "${options}" "${oneValueArgs}" "${multiValueArgs}"
${ARGN}) |
| 479 |
| 480 if (NOT _PAT_NAME) |
| 481 message(FATAL_ERROR "Invalid arguments. png_add_test requires name.") |
| 482 endif() |
| 483 if (NOT _PAT_COMMAND) |
| 484 message(FATAL_ERROR "Invalid arguments. png_add_test requires command.") |
| 485 endif() |
| 486 |
| 487 set(TEST_OPTIONS "${_PAT_OPTIONS}") |
| 488 set(TEST_FILES "${_PAT_FILES}") |
| 489 |
| 490 configure_file("${CMAKE_CURRENT_SOURCE_DIR}/scripts/test.cmake.in" |
| 491 "${CMAKE_CURRENT_BINARY_DIR}/tests/${_PAT_NAME}.cmake" @ONLY) |
| 492 if(CMAKE_MAJOR_VERSION GREATER 2) # have generator expressions |
| 493 add_test(NAME "${_PAT_NAME}" |
| 494 COMMAND "${CMAKE_COMMAND}" |
| 495 "-DLIBPNG=$<TARGET_FILE:png>" |
| 496 "-DTEST_COMMAND=$<TARGET_FILE:${_PAT_COMMAND}>" |
| 497 -P "${CMAKE_CURRENT_BINARY_DIR}/tests/${_PAT_NAME}.cmake") |
| 498 else() # old 2.x add_test; limited and won't work well on Windows |
| 499 # Note LIBPNG is a dummy value as there are no generator expressions |
| 500 add_test("${_PAT_NAME}" "${CMAKE_COMMAND}" |
| 501 "-DLIBPNG=${CMAKE_CURRENT_BINARY_DIR}/libpng.so" |
| 502 "-DTEST_COMMAND=./${_PAT_COMMAND}" |
| 503 -P "${CMAKE_CURRENT_BINARY_DIR}/tests/${_PAT_NAME}.cmake") |
| 504 endif() |
| 505 endfunction() |
| 506 |
| 507 if(PNG_TESTS AND PNG_SHARED) |
| 508 # Find test PNG files by globbing, but sort lists to ensure |
| 509 # consistency between different filesystems. |
| 510 file(GLOB PNGSUITE_PNGS "${CMAKE_CURRENT_SOURCE_DIR}/contrib/pngsuite/*.png") |
| 511 list(SORT PNGSUITE_PNGS) |
| 512 file(GLOB TEST_PNGS "${CMAKE_CURRENT_SOURCE_DIR}/contrib/testpngs/*.png") |
| 513 list(SORT TEST_PNGS) |
| 514 |
| 515 set(PNGTEST_PNG "${CMAKE_CURRENT_SOURCE_DIR}/pngtest.png") |
| 516 |
| 517 add_executable(pngtest ${pngtest_sources}) |
| 518 target_link_libraries(pngtest png) |
| 519 |
| 520 png_add_test(NAME pngtest COMMAND pngtest FILES "${PNGTEST_PNG}") |
| 521 |
| 522 add_executable(pngvalid ${pngvalid_sources}) |
| 523 target_link_libraries(pngvalid png) |
| 524 |
| 525 png_add_test(NAME pngvalid-gamma-16-to-8 |
| 526 COMMAND pngvalid OPTIONS --gamma-16-to-8) |
| 527 png_add_test(NAME pngvalid-gamma-alpha-mode |
| 528 COMMAND pngvalid OPTIONS --gamma-alpha-mode) |
| 529 png_add_test(NAME pngvalid-gamma-background |
| 530 COMMAND pngvalid OPTIONS --gamma-background) |
| 531 png_add_test(NAME pngvalid-gamma-expand16-alpha-mode |
| 532 COMMAND pngvalid OPTIONS --gamma-alpha-mode --expand16) |
| 533 png_add_test(NAME pngvalid-gamma-expand16-background |
| 534 COMMAND pngvalid OPTIONS --gamma-background --expand16) |
| 535 png_add_test(NAME pngvalid-gamma-expand16-transform |
| 536 COMMAND pngvalid OPTIONS --gamma-transform --expand16) |
| 537 png_add_test(NAME pngvalid-gamma-sbit |
| 538 COMMAND pngvalid OPTIONS --gamma-sbit) |
| 539 png_add_test(NAME pngvalid-gamma-threshold |
| 540 COMMAND pngvalid OPTIONS --gamma-threshold) |
| 541 png_add_test(NAME pngvalid-gamma-transform |
| 542 COMMAND pngvalid OPTIONS --gamma-transform) |
| 543 png_add_test(NAME pngvalid-progressive-interlace-standard |
| 544 COMMAND pngvalid OPTIONS --standard --progressive-read --interlac
e) |
| 545 png_add_test(NAME pngvalid-progressive-size |
| 546 COMMAND pngvalid OPTIONS --size --progressive-read) |
| 547 png_add_test(NAME pngvalid-progressive-standard |
| 548 COMMAND pngvalid OPTIONS --standard --progressive-read) |
| 549 png_add_test(NAME pngvalid-standard |
| 550 COMMAND pngvalid OPTIONS --standard) |
| 551 png_add_test(NAME pngvalid-transform |
| 552 COMMAND pngvalid OPTIONS --transform) |
| 553 |
| 554 add_executable(pngstest ${pngstest_sources}) |
| 555 target_link_libraries(pngstest png) |
| 556 |
| 557 foreach(gamma_type 1.8 linear none sRGB) |
| 558 foreach(alpha_type none alpha) |
| 559 set(PNGSTEST_FILES) |
| 560 foreach(test_png ${TEST_PNGS}) |
| 561 string(REGEX MATCH ".*-linear[-.].*" TEST_PNG_LINEAR "${test_png}") |
| 562 string(REGEX MATCH ".*-sRGB[-.].*" TEST_PNG_SRGB "${test_png}") |
| 563 string(REGEX MATCH ".*-1.8[-.].*" TEST_PNG_G18 "${test_png}") |
| 564 string(REGEX MATCH ".*-alpha-.*" TEST_PNG_ALPHA "${test_png}") |
| 565 |
| 566 set(TEST_PNG_VALID TRUE) |
| 567 |
| 568 if(TEST_PNG_ALPHA) |
| 569 if (NOT "${alpha_type}" STREQUAL "alpha") |
| 570 set(TEST_PNG_VALID FALSE) |
| 571 endif() |
| 572 else() |
| 573 if ("${alpha_type}" STREQUAL "alpha") |
| 574 set(TEST_PNG_VALID FALSE) |
| 575 endif() |
| 576 endif() |
| 577 |
| 578 if(TEST_PNG_LINEAR) |
| 579 if(NOT "${gamma_type}" STREQUAL "linear") |
| 580 set(TEST_PNG_VALID FALSE) |
| 581 endif() |
| 582 elseif(TEST_PNG_SRGB) |
| 583 if(NOT "${gamma_type}" STREQUAL "sRGB") |
| 584 set(TEST_PNG_VALID FALSE) |
| 585 endif() |
| 586 elseif(TEST_PNG_G18) |
| 587 if(NOT "${gamma_type}" STREQUAL "1.8") |
| 588 set(TEST_PNG_VALID FALSE) |
| 589 endif() |
| 590 else() |
| 591 if(NOT "${gamma_type}" STREQUAL "none") |
| 592 set(TEST_PNG_VALID FALSE) |
| 593 endif() |
| 594 endif() |
| 595 |
| 596 if(TEST_PNG_VALID) |
| 597 list(APPEND PNGSTEST_FILES "${test_png}") |
| 598 endif() |
| 599 endforeach() |
| 600 # Should already be sorted, but sort anyway to be certain. |
| 601 list(SORT PNGSTEST_FILES) |
| 602 png_add_test(NAME pngstest-${gamma_type}-${alpha_type} |
| 603 COMMAND pngstest |
| 604 OPTIONS --tmpfile "${gamma_type}-${alpha_type}-" --log |
| 605 FILES ${PNGSTEST_FILES}) |
| 606 endforeach() |
| 607 endforeach() |
| 608 |
| 609 add_executable(pngunknown ${pngunknown_sources}) |
| 610 target_link_libraries(pngunknown png) |
| 611 |
| 612 png_add_test(NAME pngunknown-discard COMMAND pngunknown OPTIONS --strict defau
lt=discard FILES "${PNGTEST_PNG}") |
| 613 png_add_test(NAME pngunknown-IDAT COMMAND pngunknown OPTIONS --strict default=
discard IDAT=save FILES "${PNGTEST_PNG}") |
| 614 png_add_test(NAME pngunknown-if-safe COMMAND pngunknown OPTIONS --strict defau
lt=if-safe FILES "${PNGTEST_PNG}") |
| 615 png_add_test(NAME pngunknown-sAPI COMMAND pngunknown OPTIONS --strict bKGD=sav
e cHRM=save gAMA=save all=discard iCCP=save sBIT=save sRGB=save FILES "${PNGTEST
_PNG}") |
| 616 png_add_test(NAME pngunknown-save COMMAND pngunknown OPTIONS --strict default=
save FILES "${PNGTEST_PNG}") |
| 617 png_add_test(NAME pngunknown-sTER COMMAND pngunknown OPTIONS --strict sTER=if-
safe FILES "${PNGTEST_PNG}") |
| 618 png_add_test(NAME pngunknown-vpAg COMMAND pngunknown OPTIONS --strict vpAg=if-
safe FILES "${PNGTEST_PNG}") |
| 619 |
| 620 add_executable(pngimage ${pngimage_sources}) |
| 621 target_link_libraries(pngimage png) |
| 622 |
| 623 png_add_test(NAME pngimage-quick COMMAND pngimage OPTIONS --list-combos --log
FILES ${PNGSUITE_PNGS}) |
| 624 png_add_test(NAME pngimage-full COMMAND pngimage OPTIONS --exhaustive --list-c
ombos --log FILES ${PNGSUITE_PNGS}) |
| 625 endif() |
| 626 |
| 627 if(PNG_SHARED) |
| 628 add_executable(pngfix ${pngfix_sources}) |
| 629 target_link_libraries(pngfix png) |
| 630 set(PNG_BIN_TARGETS pngfix) |
| 631 |
| 632 add_executable(png-fix-itxt ${png_fix_itxt_sources}) |
| 633 target_link_libraries(png-fix-itxt ${ZLIB_LIBRARY} ${M_LIBRARY}) |
| 634 list(APPEND PNG_BIN_TARGETS png-fix-itxt) |
| 635 endif() |
| 636 |
| 637 # Ensure the CMAKE_LIBRARY_OUTPUT_DIRECTORY is set |
| 638 IF(NOT CMAKE_LIBRARY_OUTPUT_DIRECTORY) |
| 639 SET(CMAKE_LIBRARY_OUTPUT_DIRECTORY "lib") |
| 640 ENDIF(NOT CMAKE_LIBRARY_OUTPUT_DIRECTORY) |
| 641 |
| 642 # Set a variable with CMake code which: |
| 643 # Creates a symlink from src to dest (if possible) or alternatively |
| 644 # copies if different. |
| 645 macro(CREATE_SYMLINK SRC_FILE DEST_FILE) |
| 646 FILE(REMOVE ${CMAKE_LIBRARY_OUTPUT_DIRECTORY}/${DEST_FILE}) |
| 647 if(WIN32 AND NOT CYGWIN AND NOT MSYS) |
| 648 ADD_CUSTOM_COMMAND( |
| 649 OUTPUT ${CMAKE_LIBRARY_OUTPUT_DIRECTORY}/${DEST_FILE} ${CMAKE_CURRENT_
BINARY_DIR}/${DEST_FILE} |
| 650 COMMAND ${CMAKE_COMMAND} -E copy_if_different "${SRC_FILE}" ${CMAKE_LIB
RARY_OUTPUT_DIRECTORY}/${DEST_FILE} |
| 651 COMMAND ${CMAKE_COMMAND} -E copy_if_different "${SRC_FILE}" ${CMAKE_CUR
RENT_BINARY_DIR}/${DEST_FILE} |
| 652 DEPENDS ${PNG_LIB_TARGETS} |
| 653 ) |
| 654 ADD_CUSTOM_TARGET(${DEST_FILE}_COPY ALL DEPENDS ${CMAKE_LIBRARY_OUTPUT_DIREC
TORY}/${DEST_FILE}) |
| 655 else(WIN32 AND NOT CYGWIN AND NOT MSYS) |
| 656 get_filename_component(LINK_TARGET "${SRC_FILE}" NAME) |
| 657 execute_process(COMMAND ${CMAKE_COMMAND} -E make_directory ${CMAKE_CURRENT_B
INARY_DIR}/${CMAKE_LIBRARY_OUTPUT_DIRECTORY}) |
| 658 execute_process(COMMAND ${CMAKE_COMMAND} -E create_symlink "${LINK_TARGET}"
${CMAKE_LIBRARY_OUTPUT_DIRECTORY}/${DEST_FILE} WORKING_DIRECTORY ${CMAKE_CURRENT
_BINARY_DIR}) |
| 659 execute_process(COMMAND ${CMAKE_COMMAND} -E create_symlink "${LINK_TARGET}"
${DEST_FILE} WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}) |
| 660 endif(WIN32 AND NOT CYGWIN AND NOT MSYS) |
| 661 endmacro() |
| 662 |
| 663 # Create source generation scripts. |
| 664 configure_file(${CMAKE_CURRENT_SOURCE_DIR}/scripts/genchk.cmake.in |
| 665 ${CMAKE_CURRENT_BINARY_DIR}/scripts/genchk.cmake @ONLY) |
| 666 configure_file(${CMAKE_CURRENT_SOURCE_DIR}/scripts/genout.cmake.in |
| 667 ${CMAKE_CURRENT_BINARY_DIR}/scripts/genout.cmake @ONLY) |
| 668 configure_file(${CMAKE_CURRENT_SOURCE_DIR}/scripts/gensrc.cmake.in |
| 669 ${CMAKE_CURRENT_BINARY_DIR}/scripts/gensrc.cmake @ONLY) |
| 670 |
| 671 |
| 672 # libpng is a library so default to 'lib' |
| 673 if(NOT DEFINED CMAKE_INSTALL_LIBDIR) |
| 674 set(CMAKE_INSTALL_LIBDIR lib) |
| 675 endif(NOT DEFINED CMAKE_INSTALL_LIBDIR) |
| 676 |
| 677 # CREATE PKGCONFIG FILES |
| 678 # we use the same files like ./configure, so we have to set its vars |
| 679 # Only do this on Windows for Cygwin - the files don't make much sense outside |
| 680 # a UNIX look alike |
| 681 if(NOT WIN32 OR CYGWIN OR MINGW) |
| 682 set(prefix ${CMAKE_INSTALL_PREFIX}) |
| 683 set(exec_prefix ${CMAKE_INSTALL_PREFIX}) |
| 684 set(libdir ${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_LIBDIR}) |
| 685 set(includedir ${CMAKE_INSTALL_PREFIX}/include) |
| 686 set(LIBS "-lz -lm") |
| 687 configure_file(${CMAKE_CURRENT_SOURCE_DIR}/libpng.pc.in |
| 688 ${CMAKE_CURRENT_BINARY_DIR}/${PNGLIB_NAME}.pc @ONLY) |
| 689 CREATE_SYMLINK(${PNGLIB_NAME}.pc libpng.pc) |
| 690 |
| 691 configure_file(${CMAKE_CURRENT_SOURCE_DIR}/libpng-config.in |
| 692 ${CMAKE_CURRENT_BINARY_DIR}/${PNGLIB_NAME}-config @ONLY) |
| 693 CREATE_SYMLINK(${PNGLIB_NAME}-config libpng-config) |
| 694 endif(NOT WIN32 OR CYGWIN OR MINGW) |
| 695 |
| 696 # SET UP LINKS |
| 697 if(PNG_SHARED) |
| 698 set_target_properties(png PROPERTIES |
| 699 # VERSION 16.${PNGLIB_RELEASE}.1.6.22rc01 |
| 700 VERSION 16.${PNGLIB_RELEASE}.0 |
| 701 SOVERSION 16 |
| 702 CLEAN_DIRECT_OUTPUT 1) |
| 703 endif() |
| 704 |
| 705 # If CMake > 2.4.x, we set a variable used below to export |
| 706 # targets to an export file. |
| 707 # TODO: Use VERSION_GREATER after our cmake_minimum_required >= 2.6.2 |
| 708 if(CMAKE_MAJOR_VERSION GREATER 1 AND CMAKE_MINOR_VERSION GREATER 4) |
| 709 set(PNG_EXPORT_RULE EXPORT libpng) |
| 710 elseif(CMAKE_MAJOR_VERSION GREATER 2) # future proof |
| 711 set(PNG_EXPORT_RULE EXPORT libpng) |
| 712 endif() |
| 713 |
| 714 # INSTALL |
| 715 if(NOT SKIP_INSTALL_LIBRARIES AND NOT SKIP_INSTALL_ALL ) |
| 716 install(TARGETS ${PNG_LIB_TARGETS} |
| 717 ${PNG_EXPORT_RULE} |
| 718 RUNTIME DESTINATION bin |
| 719 LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} |
| 720 ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} |
| 721 FRAMEWORK DESTINATION ${CMAKE_INSTALL_LIBDIR}) |
| 722 |
| 723 if(PNG_SHARED) |
| 724 # Create a symlink for libpng.dll.a => libpng16.dll.a on Cygwin |
| 725 if(CYGWIN OR MINGW) |
| 726 get_target_property(BUILD_TARGET_LOCATION png LOCATION_${CMAKE_BUILD_TYPE
}) |
| 727 CREATE_SYMLINK(${BUILD_TARGET_LOCATION} libpng${CMAKE_IMPORT_LIBRARY_SUFF
IX}) |
| 728 install(FILES ${CMAKE_CURRENT_BINARY_DIR}/libpng${CMAKE_IMPORT_LIBRARY_SU
FFIX} |
| 729 DESTINATION ${CMAKE_INSTALL_LIBDIR}) |
| 730 endif(CYGWIN OR MINGW) |
| 731 |
| 732 if(NOT WIN32) |
| 733 get_target_property(BUILD_TARGET_LOCATION png LOCATION_${CMAKE_BUILD_TYPE}
) |
| 734 CREATE_SYMLINK(${BUILD_TARGET_LOCATION} libpng${CMAKE_SHARED_LIBRARY_SUFFI
X}) |
| 735 install(FILES ${CMAKE_CURRENT_BINARY_DIR}/libpng${CMAKE_SHARED_LIBRARY_SUF
FIX} |
| 736 DESTINATION ${CMAKE_INSTALL_LIBDIR}) |
| 737 endif(NOT WIN32) |
| 738 endif(PNG_SHARED) |
| 739 |
| 740 if(PNG_STATIC) |
| 741 if(NOT WIN32 OR CYGWIN OR MINGW) |
| 742 get_target_property(BUILD_TARGET_LOCATION png_static LOCATION_${CMAKE_BUIL
D_TYPE}) |
| 743 CREATE_SYMLINK(${BUILD_TARGET_LOCATION} libpng${CMAKE_STATIC_LIBRARY_SUFFI
X}) |
| 744 install(FILES ${CMAKE_CURRENT_BINARY_DIR}/libpng${CMAKE_STATIC_LIBRARY_SUF
FIX} |
| 745 DESTINATION ${CMAKE_INSTALL_LIBDIR}) |
| 746 endif(NOT WIN32 OR CYGWIN OR MINGW) |
| 747 endif() |
| 748 endif() |
| 749 |
| 750 if(NOT SKIP_INSTALL_HEADERS AND NOT SKIP_INSTALL_ALL ) |
| 751 install(FILES ${libpng_public_hdrs} DESTINATION include) |
| 752 install(FILES ${libpng_public_hdrs} DESTINATION include/${PNGLIB_NAME}) |
| 753 endif() |
| 754 if(NOT SKIP_INSTALL_EXECUTABLES AND NOT SKIP_INSTALL_ALL ) |
| 755 if(NOT WIN32 OR CYGWIN OR MINGW) |
| 756 install(PROGRAMS ${CMAKE_CURRENT_BINARY_DIR}/libpng-config DESTINATION bin) |
| 757 install(PROGRAMS ${CMAKE_CURRENT_BINARY_DIR}/${PNGLIB_NAME}-config |
| 758 DESTINATION bin) |
| 759 endif(NOT WIN32 OR CYGWIN OR MINGW) |
| 760 endif() |
| 761 |
| 762 if(NOT SKIP_INSTALL_PROGRAMS AND NOT SKIP_INSTALL_ALL ) |
| 763 install(TARGETS ${PNG_BIN_TARGETS} |
| 764 RUNTIME DESTINATION bin) |
| 765 endif() |
| 766 |
| 767 if(NOT SKIP_INSTALL_FILES AND NOT SKIP_INSTALL_ALL ) |
| 768 # Install man pages |
| 769 if(NOT PNG_MAN_DIR) |
| 770 set(PNG_MAN_DIR "share/man") |
| 771 endif() |
| 772 install(FILES libpng.3 libpngpf.3 DESTINATION ${PNG_MAN_DIR}/man3) |
| 773 install(FILES png.5 DESTINATION ${PNG_MAN_DIR}/man5) |
| 774 # Install pkg-config files |
| 775 if(NOT WIN32 OR CYGWIN OR MINGW) |
| 776 install(FILES ${CMAKE_CURRENT_BINARY_DIR}/libpng.pc |
| 777 DESTINATION ${CMAKE_INSTALL_LIBDIR}/pkgconfig) |
| 778 install(PROGRAMS ${CMAKE_CURRENT_BINARY_DIR}/libpng-config |
| 779 DESTINATION bin) |
| 780 install(FILES ${CMAKE_CURRENT_BINARY_DIR}/${PNGLIB_NAME}.pc |
| 781 DESTINATION ${CMAKE_INSTALL_LIBDIR}/pkgconfig) |
| 782 install(PROGRAMS ${CMAKE_CURRENT_BINARY_DIR}/${PNGLIB_NAME}-config |
| 783 DESTINATION bin) |
| 784 endif(NOT WIN32 OR CYGWIN OR MINGW) |
| 785 endif() |
| 786 |
| 787 # On versions of CMake that support it, create an export file CMake |
| 788 # users can include() to import our targets |
| 789 if(PNG_EXPORT_RULE AND NOT SKIP_INSTALL_EXPORT AND NOT SKIP_INSTALL_ALL ) |
| 790 install(EXPORT libpng DESTINATION lib/libpng FILE lib${PNG_LIB_NAME}.cmake) |
| 791 endif() |
| 792 |
| 793 # what's with libpng-manual.txt and all the extra files? |
| 794 |
| 795 # UNINSTALL |
| 796 # do we need this? |
| 797 |
| 798 # DIST |
| 799 # do we need this? |
| 800 |
| 801 # to create msvc import lib for mingw compiled shared lib |
| 802 # pexports libpng.dll > libpng.def |
| 803 # lib /def:libpng.def /machine:x86 |
| 804 |
OLD | NEW |