mirror of
https://git.code.sf.net/p/libpng/code.git
synced 2025-07-10 18:04:09 +02:00

Remove the inclusion of the external module `CMakeParseArguments`. Function argument parsing became a first-class feature in CMake 3.5. Delete the function `find_symbol_prefix`. It is no longer used. Use variables instead of strings in string operations where possible. Prevent CMake from getting confused by string values that might be accidentally identical to unrelated keywords. Clean up spurious `.*` sequences in regex matching operations. Rephrase a comment.
95 lines
3.2 KiB
CMake
95 lines
3.2 KiB
CMake
# genout.cmake.in
|
|
# Generate .out from .c with awk (generic), based upon the automake logic.
|
|
|
|
# Copyright (c) 2022-2023 Cosmin Truta
|
|
# Copyright (c) 2016 Glenn Randers-Pehrson
|
|
# Written by Roger Leigh, 2016
|
|
|
|
# This code is released under the libpng license.
|
|
# For conditions of distribution and use, see the disclaimer
|
|
# and license in png.h
|
|
|
|
# Variables substituted from CMakeLists.txt
|
|
set(SRCDIR "@CMAKE_CURRENT_SOURCE_DIR@")
|
|
set(BINDIR "@CMAKE_CURRENT_BINARY_DIR@")
|
|
|
|
set(AWK "@AWK@")
|
|
set(CMAKE_C_COMPILER "@CMAKE_C_COMPILER@")
|
|
set(CMAKE_C_FLAGS @CMAKE_C_FLAGS@)
|
|
set(INCDIR "@CMAKE_CURRENT_BINARY_DIR@")
|
|
set(PNG_PREFIX "@PNG_PREFIX@")
|
|
set(PNGLIB_MAJOR "@PNGLIB_MAJOR@")
|
|
set(PNGLIB_MINOR "@PNGLIB_MINOR@")
|
|
set(PNGLIB_VERSION "@PNGLIB_VERSION@")
|
|
set(ZLIBINCDIR "@ZLIB_INCLUDE_DIRS@")
|
|
|
|
set(PLATFORM_C_FLAGS)
|
|
if(APPLE)
|
|
set(CMAKE_OSX_INTERNAL_ARCHITECTURES "@CMAKE_OSX_INTERNAL_ARCHITECTURES@")
|
|
set(CMAKE_OSX_SYSROOT "@CMAKE_OSX_SYSROOT@")
|
|
if(CMAKE_OSX_INTERNAL_ARCHITECTURES)
|
|
set(PLATFORM_C_FLAGS ${PLATFORM_C_FLAGS} -arch ${CMAKE_OSX_INTERNAL_ARCHITECTURES})
|
|
endif()
|
|
if(CMAKE_OSX_SYSROOT)
|
|
set(PLATFORM_C_FLAGS ${PLATFORM_C_FLAGS} -isysroot ${CMAKE_OSX_SYSROOT})
|
|
endif()
|
|
endif()
|
|
|
|
get_filename_component(INPUTEXT "${INPUT}" EXT)
|
|
get_filename_component(OUTPUTEXT "${OUTPUT}" EXT)
|
|
get_filename_component(INPUTBASE "${INPUT}" NAME_WE)
|
|
get_filename_component(OUTPUTBASE "${OUTPUT}" NAME_WE)
|
|
get_filename_component(INPUTDIR "${INPUT}" PATH)
|
|
get_filename_component(OUTPUTDIR "${OUTPUT}" PATH)
|
|
|
|
if(INPUTEXT STREQUAL ".c" AND OUTPUTEXT STREQUAL ".out")
|
|
get_filename_component(GENDIR "${OUTPUT}" PATH)
|
|
file(MAKE_DIRECTORY "${GENDIR}")
|
|
|
|
file(REMOVE "${OUTPUT}.tf1" "${OUTPUT}.tf2")
|
|
|
|
set(INCLUDES "-I${INCDIR}")
|
|
if(ZLIBINCDIR)
|
|
foreach(dir ${ZLIBINCDIR})
|
|
list(APPEND INCLUDES "-I${dir}")
|
|
endforeach()
|
|
endif()
|
|
|
|
if(PNG_PREFIX)
|
|
set(PNG_PREFIX_DEF "-DPNG_PREFIX=${PNG_PREFIX}")
|
|
endif()
|
|
|
|
execute_process(COMMAND "${CMAKE_C_COMPILER}" "-E"
|
|
${CMAKE_C_FLAGS}
|
|
${PLATFORM_C_FLAGS}
|
|
"-I${SRCDIR}"
|
|
"-I${BINDIR}"
|
|
${INCLUDES}
|
|
"-DPNGLIB_LIBNAME=PNG${PNGLIB_MAJOR}${PNGLIB_MINOR}_0"
|
|
"-DPNGLIB_VERSION=${PNGLIB_VERSION}"
|
|
"-DSYMBOL_PREFIX=${SYMBOL_PREFIX}"
|
|
"-DPNG_NO_USE_READ_MACROS"
|
|
"-DPNG_BUILDING_SYMBOL_TABLE"
|
|
${PNG_PREFIX_DEF}
|
|
"${INPUT}"
|
|
OUTPUT_FILE "${OUTPUT}.tf1"
|
|
WORKING_DIRECTORY "${BINDIR}"
|
|
RESULT_VARIABLE CPP_FAIL)
|
|
if(CPP_FAIL)
|
|
message(FATAL_ERROR "Failed to generate ${OUTPUT}.tf1")
|
|
endif()
|
|
|
|
execute_process(COMMAND "${AWK}" -f "${SRCDIR}/scripts/dfn.awk"
|
|
"out=${OUTPUT}.tf2" "${OUTPUT}.tf1"
|
|
WORKING_DIRECTORY "${BINDIR}"
|
|
RESULT_VARIABLE AWK_FAIL)
|
|
if(AWK_FAIL)
|
|
message(FATAL_ERROR "Failed to generate ${OUTPUT}.tf2")
|
|
endif()
|
|
|
|
file(REMOVE "${OUTPUT}.tf1")
|
|
file(RENAME "${OUTPUT}.tf2" "${OUTPUT}")
|
|
else()
|
|
message(FATAL_ERROR "Unsupported conversion: ${INPUTEXT} to ${OUTPUTEXT}")
|
|
endif()
|