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@")
|
---|
17 | set(CMAKE_C_FLAGS @CMAKE_C_FLAGS@)
|
---|
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 |
|
---|
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 |
|
---|
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)
|
---|
52 | foreach(dir ${ZLIBINCDIR})
|
---|
53 | list(APPEND INCLUDES "-I${dir}")
|
---|
54 | endforeach()
|
---|
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}
|
---|
63 | ${PLATFORM_C_FLAGS}
|
---|
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()
|
---|