Matt Sarett | 1146686 | 2016-02-19 13:41:30 -0500 | [diff] [blame] | 1 | # genout.cmake.in |
| 2 | # Generate .out from .c with awk (generic), based upon the automake logic. |
| 3 | |
| 4 | # Copyright (C) 2016 Glenn Randers-Pehrson |
| 5 | # Written by Roger Leigh, 2016 |
| 6 | |
| 7 | # This code is released under the libpng license. |
| 8 | # For conditions of distribution and use, see the disclaimer |
| 9 | # and license in png.h |
| 10 | |
| 11 | # Variables substituted from CMakeLists.txt |
| 12 | set(SRCDIR "@CMAKE_CURRENT_SOURCE_DIR@") |
| 13 | set(BINDIR "@CMAKE_CURRENT_BINARY_DIR@") |
| 14 | |
| 15 | set(AWK "@AWK@") |
| 16 | set(CMAKE_C_COMPILER "@CMAKE_C_COMPILER@") |
Alex Naidis | 7a055fd | 2016-10-01 12:23:07 +0200 | [diff] [blame] | 17 | set(CMAKE_C_FLAGS @CMAKE_C_FLAGS@) |
Matt Sarett | 1146686 | 2016-02-19 13:41:30 -0500 | [diff] [blame] | 18 | set(INCDIR "@CMAKE_CURRENT_BINARY_DIR@") |
| 19 | set(PNG_PREFIX "@PNG_PREFIX@") |
| 20 | set(PNGLIB_MAJOR "@PNGLIB_MAJOR@") |
| 21 | set(PNGLIB_MINOR "@PNGLIB_MINOR@") |
| 22 | set(PNGLIB_VERSION "@PNGLIB_VERSION@") |
| 23 | set(ZLIBINCDIR "@ZLIB_INCLUDE_DIR@") |
| 24 | |
Alex Naidis | 7a055fd | 2016-10-01 12:23:07 +0200 | [diff] [blame] | 25 | set(PLATFORM_C_FLAGS) |
| 26 | if(APPLE) |
| 27 | set(CMAKE_OSX_ARCHITECTURES "@CMAKE_OSX_ARCHITECTURES@") |
| 28 | set(CMAKE_OSX_SYSROOT "@CMAKE_OSX_SYSROOT@") |
| 29 | if(CMAKE_OSX_ARCHITECTURES) |
| 30 | set(PLATFORM_C_FLAGS ${PLATFORM_C_FLAGS} -arch ${CMAKE_OSX_ARCHITECTURES}) |
| 31 | endif() |
| 32 | if(CMAKE_OSX_SYSROOT) |
| 33 | set(PLATFORM_C_FLAGS ${PLATFORM_C_FLAGS} -isysroot ${CMAKE_OSX_SYSROOT}) |
| 34 | endif() |
| 35 | endif() |
| 36 | |
Matt Sarett | 1146686 | 2016-02-19 13:41:30 -0500 | [diff] [blame] | 37 | get_filename_component(INPUTEXT "${INPUT}" EXT) |
| 38 | get_filename_component(OUTPUTEXT "${OUTPUT}" EXT) |
| 39 | get_filename_component(INPUTBASE "${INPUT}" NAME_WE) |
| 40 | get_filename_component(OUTPUTBASE "${OUTPUT}" NAME_WE) |
| 41 | get_filename_component(INPUTDIR "${INPUT}" PATH) |
| 42 | get_filename_component(OUTPUTDIR "${OUTPUT}" PATH) |
| 43 | |
| 44 | if ("${INPUTEXT}" STREQUAL ".c" AND "${OUTPUTEXT}" STREQUAL ".out") |
| 45 | get_filename_component(GENDIR "${OUTPUT}" PATH) |
| 46 | file(MAKE_DIRECTORY "${GENDIR}") |
| 47 | |
| 48 | file(REMOVE "${OUTPUT}.tf1" "${OUTPUT}.tf2") |
| 49 | |
| 50 | set(INCLUDES "-I${INCDIR}") |
| 51 | if(ZLIBINCDIR) |
Alex Naidis | 7a055fd | 2016-10-01 12:23:07 +0200 | [diff] [blame] | 52 | foreach(dir ${ZLIBINCDIR}) |
| 53 | list(APPEND INCLUDES "-I${dir}") |
| 54 | endforeach() |
Matt Sarett | 1146686 | 2016-02-19 13:41:30 -0500 | [diff] [blame] | 55 | endif() |
| 56 | |
| 57 | if(PNG_PREFIX) |
| 58 | set(PNG_PREFIX_DEF "-DPNG_PREFIX=${PNG_PREFIX}") |
| 59 | endif() |
| 60 | |
| 61 | execute_process(COMMAND "${CMAKE_C_COMPILER}" "-E" |
| 62 | ${CMAKE_C_FLAGS} |
Alex Naidis | 7a055fd | 2016-10-01 12:23:07 +0200 | [diff] [blame] | 63 | ${PLATFORM_C_FLAGS} |
Matt Sarett | 1146686 | 2016-02-19 13:41:30 -0500 | [diff] [blame] | 64 | "-I${SRCDIR}" |
| 65 | "-I${BINDIR}" |
| 66 | ${INCLUDES} |
| 67 | "-DPNGLIB_LIBNAME=PNG${PNGLIB_MAJOR}${PNGLIB_MINOR}_0" |
| 68 | "-DPNGLIB_VERSION=${PNGLIB_VERSION}" |
| 69 | "-DSYMBOL_PREFIX=${SYMBOL_PREFIX}" |
| 70 | "-DPNG_NO_USE_READ_MACROS" |
| 71 | "-DPNG_BUILDING_SYMBOL_TABLE" |
| 72 | ${PNG_PREFIX_DEF} |
| 73 | "${INPUT}" |
| 74 | OUTPUT_FILE "${OUTPUT}.tf1" |
| 75 | WORKING_DIRECTORY "${BINDIR}" |
| 76 | RESULT_VARIABLE CPP_FAIL) |
| 77 | if(CPP_FAIL) |
| 78 | message(FATAL_ERROR "Failed to generate ${OUTPUT}.tf1") |
| 79 | endif() |
| 80 | |
| 81 | execute_process(COMMAND "${AWK}" -f "${SRCDIR}/scripts/dfn.awk" |
| 82 | "out=${OUTPUT}.tf2" "${OUTPUT}.tf1" |
| 83 | WORKING_DIRECTORY "${BINDIR}" |
| 84 | RESULT_VARIABLE AWK_FAIL) |
| 85 | if(AWK_FAIL) |
| 86 | message(FATAL_ERROR "Failed to generate ${OUTPUT}.tf2") |
| 87 | endif() |
| 88 | |
| 89 | file(REMOVE "${OUTPUT}.tf1") |
| 90 | file(RENAME "${OUTPUT}.tf2" "${OUTPUT}") |
| 91 | else() |
| 92 | message(FATAL_ERROR "Unsupported conversion: ${INPUTEXT} to ${OUTPUTEXT}") |
| 93 | endif() |