123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293 |
- # genout.cmake.in
- # Generate .out from .c with awk (generic), based upon the automake logic.
- # 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_DIR@")
- set(PLATFORM_C_FLAGS)
- if(APPLE)
- set(CMAKE_OSX_ARCHITECTURES "@CMAKE_OSX_ARCHITECTURES@")
- set(CMAKE_OSX_SYSROOT "@CMAKE_OSX_SYSROOT@")
- if(CMAKE_OSX_ARCHITECTURES)
- set(PLATFORM_C_FLAGS ${PLATFORM_C_FLAGS} -arch ${CMAKE_OSX_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()
|