mirror of
https://git.code.sf.net/p/libpng/code.git
synced 2025-07-10 18:04:09 +02:00
Use CMake 3.5 features
1. Set `cmake_minimum_required` to 3.5 (see https://cmake.org/cmake/help/latest/release/3.27.html) 2. Specify the version of CMake project 3. Remove the redundant call to `cmake_policy` 4. Use `CMAKE_INSTALL_BINDIR` and `CMAKE_INSTALL_INCLUDEDIR` 5. Use private library linking for tools and test programs 6. Don't activate testing if it was not enabled Signed-off-by: Cosmin Truta <ctruta@gmail.com>
This commit is contained in:
parent
1547b335e4
commit
f2294569cf
@ -26,20 +26,13 @@
|
|||||||
# Revised by Jon Creighton, 2023
|
# Revised by Jon Creighton, 2023
|
||||||
# Revised by Gunther Nikl, 2023
|
# Revised by Gunther Nikl, 2023
|
||||||
# Revised by Tyler Kropp, 2023
|
# Revised by Tyler Kropp, 2023
|
||||||
|
# Revised by Timothy Lyanguzov, 2023
|
||||||
|
|
||||||
# This code is released under the libpng license.
|
# This code is released under the libpng license.
|
||||||
# For conditions of distribution and use, see the disclaimer
|
# For conditions of distribution and use, see the disclaimer
|
||||||
# and license in png.h
|
# and license in png.h
|
||||||
|
|
||||||
cmake_minimum_required(VERSION 3.1)
|
cmake_minimum_required(VERSION 3.5)
|
||||||
cmake_policy(VERSION 3.1)
|
|
||||||
|
|
||||||
project(libpng C ASM)
|
|
||||||
enable_testing()
|
|
||||||
|
|
||||||
include(CMakeParseArguments)
|
|
||||||
include(CheckCSourceCompiles)
|
|
||||||
include(GNUInstallDirs)
|
|
||||||
|
|
||||||
set(PNGLIB_MAJOR 1)
|
set(PNGLIB_MAJOR 1)
|
||||||
set(PNGLIB_MINOR 6)
|
set(PNGLIB_MINOR 6)
|
||||||
@ -50,6 +43,14 @@ set(PNGLIB_VERSION ${PNGLIB_MAJOR}.${PNGLIB_MINOR}.${PNGLIB_REVISION})
|
|||||||
set(PNGLIB_ABI_VERSION ${PNGLIB_MAJOR}${PNGLIB_MINOR})
|
set(PNGLIB_ABI_VERSION ${PNGLIB_MAJOR}${PNGLIB_MINOR})
|
||||||
set(PNGLIB_SHARED_VERSION ${PNGLIB_ABI_VERSION}.${PNGLIB_REVISION}.${PNGLIB_SUBREVISION})
|
set(PNGLIB_SHARED_VERSION ${PNGLIB_ABI_VERSION}.${PNGLIB_REVISION}.${PNGLIB_SUBREVISION})
|
||||||
|
|
||||||
|
project(libpng
|
||||||
|
VERSION ${PNGLIB_VERSION}
|
||||||
|
LANGUAGES C ASM)
|
||||||
|
|
||||||
|
include(CMakeParseArguments)
|
||||||
|
include(CheckCSourceCompiles)
|
||||||
|
include(GNUInstallDirs)
|
||||||
|
|
||||||
# Allow the users to specify an application-specific API prefix for libpng
|
# Allow the users to specify an application-specific API prefix for libpng
|
||||||
# vendoring purposes. A standard libpng build should have no such prefix.
|
# vendoring purposes. A standard libpng build should have no such prefix.
|
||||||
set(PNG_PREFIX ""
|
set(PNG_PREFIX ""
|
||||||
@ -703,6 +704,9 @@ if(NOT PNG_LIBRARY_TARGETS)
|
|||||||
"PNG_SHARED, PNG_STATIC, PNG_FRAMEWORK")
|
"PNG_SHARED, PNG_STATIC, PNG_FRAMEWORK")
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
if(PNG_TESTS AND PNG_SHARED)
|
||||||
|
enable_testing()
|
||||||
|
|
||||||
function(png_add_test)
|
function(png_add_test)
|
||||||
set(options)
|
set(options)
|
||||||
set(oneValueArgs NAME COMMAND)
|
set(oneValueArgs NAME COMMAND)
|
||||||
@ -728,7 +732,6 @@ function(png_add_test)
|
|||||||
-P "${CMAKE_CURRENT_BINARY_DIR}/tests/${_PAT_NAME}.cmake")
|
-P "${CMAKE_CURRENT_BINARY_DIR}/tests/${_PAT_NAME}.cmake")
|
||||||
endfunction()
|
endfunction()
|
||||||
|
|
||||||
if(PNG_TESTS AND PNG_SHARED)
|
|
||||||
# Find test PNG files by globbing, but sort lists to ensure
|
# Find test PNG files by globbing, but sort lists to ensure
|
||||||
# consistency between different filesystems.
|
# consistency between different filesystems.
|
||||||
file(GLOB PNGSUITE_PNGS "${CMAKE_CURRENT_SOURCE_DIR}/contrib/pngsuite/*.png")
|
file(GLOB PNGSUITE_PNGS "${CMAKE_CURRENT_SOURCE_DIR}/contrib/pngsuite/*.png")
|
||||||
@ -739,14 +742,14 @@ if(PNG_TESTS AND PNG_SHARED)
|
|||||||
set(PNGTEST_PNG "${CMAKE_CURRENT_SOURCE_DIR}/pngtest.png")
|
set(PNGTEST_PNG "${CMAKE_CURRENT_SOURCE_DIR}/pngtest.png")
|
||||||
|
|
||||||
add_executable(pngtest ${pngtest_sources})
|
add_executable(pngtest ${pngtest_sources})
|
||||||
target_link_libraries(pngtest png_shared)
|
target_link_libraries(pngtest PRIVATE png_shared)
|
||||||
|
|
||||||
png_add_test(NAME pngtest
|
png_add_test(NAME pngtest
|
||||||
COMMAND pngtest
|
COMMAND pngtest
|
||||||
FILES "${PNGTEST_PNG}")
|
FILES "${PNGTEST_PNG}")
|
||||||
|
|
||||||
add_executable(pngvalid ${pngvalid_sources})
|
add_executable(pngvalid ${pngvalid_sources})
|
||||||
target_link_libraries(pngvalid png_shared)
|
target_link_libraries(pngvalid PRIVATE png_shared)
|
||||||
|
|
||||||
png_add_test(NAME pngvalid-gamma-16-to-8
|
png_add_test(NAME pngvalid-gamma-16-to-8
|
||||||
COMMAND pngvalid
|
COMMAND pngvalid
|
||||||
@ -792,7 +795,7 @@ if(PNG_TESTS AND PNG_SHARED)
|
|||||||
OPTIONS --transform)
|
OPTIONS --transform)
|
||||||
|
|
||||||
add_executable(pngstest ${pngstest_sources})
|
add_executable(pngstest ${pngstest_sources})
|
||||||
target_link_libraries(pngstest png_shared)
|
target_link_libraries(pngstest PRIVATE png_shared)
|
||||||
|
|
||||||
foreach(gamma_type 1.8 linear none sRGB)
|
foreach(gamma_type 1.8 linear none sRGB)
|
||||||
foreach(alpha_type none alpha)
|
foreach(alpha_type none alpha)
|
||||||
@ -847,7 +850,7 @@ if(PNG_TESTS AND PNG_SHARED)
|
|||||||
endforeach()
|
endforeach()
|
||||||
|
|
||||||
add_executable(pngunknown ${pngunknown_sources})
|
add_executable(pngunknown ${pngunknown_sources})
|
||||||
target_link_libraries(pngunknown png_shared)
|
target_link_libraries(pngunknown PRIVATE png_shared)
|
||||||
|
|
||||||
png_add_test(NAME pngunknown-discard
|
png_add_test(NAME pngunknown-discard
|
||||||
COMMAND pngunknown
|
COMMAND pngunknown
|
||||||
@ -879,7 +882,7 @@ if(PNG_TESTS AND PNG_SHARED)
|
|||||||
FILES "${PNGTEST_PNG}")
|
FILES "${PNGTEST_PNG}")
|
||||||
|
|
||||||
add_executable(pngimage ${pngimage_sources})
|
add_executable(pngimage ${pngimage_sources})
|
||||||
target_link_libraries(pngimage png_shared)
|
target_link_libraries(pngimage PRIVATE png_shared)
|
||||||
|
|
||||||
png_add_test(NAME pngimage-quick
|
png_add_test(NAME pngimage-quick
|
||||||
COMMAND pngimage
|
COMMAND pngimage
|
||||||
@ -893,11 +896,11 @@ endif()
|
|||||||
|
|
||||||
if(PNG_SHARED AND PNG_TOOLS)
|
if(PNG_SHARED AND PNG_TOOLS)
|
||||||
add_executable(pngfix ${pngfix_sources})
|
add_executable(pngfix ${pngfix_sources})
|
||||||
target_link_libraries(pngfix png_shared)
|
target_link_libraries(pngfix PRIVATE png_shared)
|
||||||
set(PNG_BIN_TARGETS pngfix)
|
set(PNG_BIN_TARGETS pngfix)
|
||||||
|
|
||||||
add_executable(png-fix-itxt ${png_fix_itxt_sources})
|
add_executable(png-fix-itxt ${png_fix_itxt_sources})
|
||||||
target_link_libraries(png-fix-itxt ${ZLIB_LIBRARIES} ${M_LIBRARY})
|
target_link_libraries(png-fix-itxt PRIVATE ${ZLIB_LIBRARIES} ${M_LIBRARY})
|
||||||
list(APPEND PNG_BIN_TARGETS png-fix-itxt)
|
list(APPEND PNG_BIN_TARGETS png-fix-itxt)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
@ -992,20 +995,14 @@ endif()
|
|||||||
if(NOT SKIP_INSTALL_LIBRARIES AND NOT SKIP_INSTALL_ALL)
|
if(NOT SKIP_INSTALL_LIBRARIES AND NOT SKIP_INSTALL_ALL)
|
||||||
install(TARGETS ${PNG_LIBRARY_TARGETS}
|
install(TARGETS ${PNG_LIBRARY_TARGETS}
|
||||||
EXPORT libpng
|
EXPORT libpng
|
||||||
RUNTIME DESTINATION bin
|
RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
|
||||||
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
|
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
|
||||||
ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
|
ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
|
||||||
FRAMEWORK DESTINATION ${CMAKE_INSTALL_LIBDIR})
|
FRAMEWORK DESTINATION ${CMAKE_INSTALL_LIBDIR})
|
||||||
|
|
||||||
if(PNG_SHARED)
|
if(PNG_SHARED)
|
||||||
# Create a symlink for libpng.dll.a => libpng16.dll.a on Cygwin
|
# Create a symlink for libpng.dll.a => libpng16.dll.a on Cygwin
|
||||||
if(CYGWIN OR MINGW)
|
if(NOT WIN32 OR CYGWIN OR MINGW)
|
||||||
create_symlink(libpng${CMAKE_IMPORT_LIBRARY_SUFFIX} TARGET png_shared)
|
|
||||||
install(FILES $<TARGET_LINKER_FILE_DIR:png_shared>/libpng${CMAKE_IMPORT_LIBRARY_SUFFIX}
|
|
||||||
DESTINATION ${CMAKE_INSTALL_LIBDIR})
|
|
||||||
endif()
|
|
||||||
|
|
||||||
if(NOT WIN32)
|
|
||||||
create_symlink(libpng${CMAKE_SHARED_LIBRARY_SUFFIX} TARGET png_shared)
|
create_symlink(libpng${CMAKE_SHARED_LIBRARY_SUFFIX} TARGET png_shared)
|
||||||
install(FILES $<TARGET_LINKER_FILE_DIR:png_shared>/libpng${CMAKE_SHARED_LIBRARY_SUFFIX}
|
install(FILES $<TARGET_LINKER_FILE_DIR:png_shared>/libpng${CMAKE_SHARED_LIBRARY_SUFFIX}
|
||||||
DESTINATION ${CMAKE_INSTALL_LIBDIR})
|
DESTINATION ${CMAKE_INSTALL_LIBDIR})
|
||||||
@ -1023,22 +1020,22 @@ endif()
|
|||||||
|
|
||||||
if(NOT SKIP_INSTALL_HEADERS AND NOT SKIP_INSTALL_ALL)
|
if(NOT SKIP_INSTALL_HEADERS AND NOT SKIP_INSTALL_ALL)
|
||||||
install(FILES ${libpng_public_hdrs}
|
install(FILES ${libpng_public_hdrs}
|
||||||
DESTINATION include)
|
DESTINATION ${CMAKE_INSTALL_INCLUDEDIR})
|
||||||
install(FILES ${libpng_public_hdrs}
|
install(FILES ${libpng_public_hdrs}
|
||||||
DESTINATION include/libpng${PNGLIB_ABI_VERSION})
|
DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/libpng${PNGLIB_ABI_VERSION})
|
||||||
endif()
|
endif()
|
||||||
if(NOT SKIP_INSTALL_EXECUTABLES AND NOT SKIP_INSTALL_ALL)
|
if(NOT SKIP_INSTALL_EXECUTABLES AND NOT SKIP_INSTALL_ALL)
|
||||||
if(NOT WIN32 OR CYGWIN OR MINGW)
|
if(NOT WIN32 OR CYGWIN OR MINGW)
|
||||||
install(PROGRAMS ${CMAKE_CURRENT_BINARY_DIR}/libpng-config
|
install(PROGRAMS ${CMAKE_CURRENT_BINARY_DIR}/libpng-config
|
||||||
DESTINATION bin)
|
DESTINATION ${CMAKE_INSTALL_BINDIR})
|
||||||
install(PROGRAMS ${CMAKE_CURRENT_BINARY_DIR}/libpng${PNGLIB_ABI_VERSION}-config
|
install(PROGRAMS ${CMAKE_CURRENT_BINARY_DIR}/libpng${PNGLIB_ABI_VERSION}-config
|
||||||
DESTINATION bin)
|
DESTINATION ${CMAKE_INSTALL_BINDIR})
|
||||||
endif()
|
endif()
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
if(NOT SKIP_INSTALL_PROGRAMS AND NOT SKIP_INSTALL_ALL)
|
if(NOT SKIP_INSTALL_PROGRAMS AND NOT SKIP_INSTALL_ALL)
|
||||||
install(TARGETS ${PNG_BIN_TARGETS}
|
install(TARGETS ${PNG_BIN_TARGETS}
|
||||||
RUNTIME DESTINATION bin)
|
RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR})
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
if(NOT SKIP_INSTALL_FILES AND NOT SKIP_INSTALL_ALL)
|
if(NOT SKIP_INSTALL_FILES AND NOT SKIP_INSTALL_ALL)
|
||||||
@ -1063,7 +1060,7 @@ endif()
|
|||||||
# Create an export file that CMake users can include() to import our targets.
|
# Create an export file that CMake users can include() to import our targets.
|
||||||
if(NOT SKIP_INSTALL_EXPORT AND NOT SKIP_INSTALL_ALL)
|
if(NOT SKIP_INSTALL_EXPORT AND NOT SKIP_INSTALL_ALL)
|
||||||
install(EXPORT libpng
|
install(EXPORT libpng
|
||||||
DESTINATION lib/libpng
|
DESTINATION ${CMAKE_INSTALL_LIBDIR}/libpng
|
||||||
FILE libpng${PNGLIB_ABI_VERSION}.cmake)
|
FILE libpng${PNGLIB_ABI_VERSION}.cmake)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user