1 | # gensrc.cmake.in
|
---|
2 | # Generate source files with awk, 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(DFA_XTRA "@DFA_XTRA@")
|
---|
17 | set(PNG_PREFIX "@PNG_PREFIX@")
|
---|
18 | set(PNGLIB_VERSION "@PNGLIB_VERSION@")
|
---|
19 |
|
---|
20 | if("${OUTPUT}" STREQUAL "scripts/pnglibconf.c")
|
---|
21 | # Generate scripts/pnglibconf.c
|
---|
22 |
|
---|
23 | file(REMOVE "${BINDIR}/pnglibconf.tf6" "${BINDIR}/pnglibconf.tf7")
|
---|
24 |
|
---|
25 | execute_process(COMMAND "${CMAKE_COMMAND}" -E echo "com ${PNGLIB_VERSION} STANDARD API DEFINITION"
|
---|
26 | COMMAND "${AWK}" -f "${SRCDIR}/scripts/options.awk"
|
---|
27 | "out=pnglibconf.tf6" "logunsupported=1" "version=search"
|
---|
28 | "${SRCDIR}/pngconf.h" "-"
|
---|
29 | "${SRCDIR}/scripts/pnglibconf.dfa"
|
---|
30 | WORKING_DIRECTORY "${BINDIR}"
|
---|
31 | RESULT_VARIABLE AWK_FAIL)
|
---|
32 | if(AWK_FAIL)
|
---|
33 | message(FATAL_ERROR "Failed to generate pnglibconf.tf6")
|
---|
34 | endif()
|
---|
35 |
|
---|
36 | execute_process(COMMAND "${AWK}" -f "${SRCDIR}/scripts/options.awk"
|
---|
37 | "out=pnglibconf.tf7" "pnglibconf.tf6"
|
---|
38 | WORKING_DIRECTORY "${BINDIR}"
|
---|
39 | RESULT_VARIABLE AWK_FAIL)
|
---|
40 | if(AWK_FAIL)
|
---|
41 | message(FATAL_ERROR "Failed to generate pnglibconf.tf7")
|
---|
42 | endif()
|
---|
43 |
|
---|
44 | file(REMOVE "pnglibconf.tf6")
|
---|
45 | file(MAKE_DIRECTORY "${BINDIR}/scripts")
|
---|
46 | file(RENAME "pnglibconf.tf7" "${BINDIR}/scripts/pnglibconf.c")
|
---|
47 |
|
---|
48 | elseif ("${OUTPUT}" STREQUAL "pnglibconf.c")
|
---|
49 | # Generate pnglibconf.c
|
---|
50 |
|
---|
51 | file(REMOVE "${BINDIR}/pnglibconf.tf4" "${BINDIR}/pnglibconf.tf5")
|
---|
52 |
|
---|
53 | execute_process(COMMAND "${AWK}" -f "${SRCDIR}/scripts/options.awk"
|
---|
54 | out=pnglibconf.tf4 version=search
|
---|
55 | ${SRCDIR}/pngconf.h ${SRCDIR}/scripts/pnglibconf.dfa
|
---|
56 | ${SRCDIR}/pngusr.dfa ${DFA_XTRA}
|
---|
57 | WORKING_DIRECTORY "${BINDIR}"
|
---|
58 | RESULT_VARIABLE AWK_FAIL)
|
---|
59 | if(AWK_FAIL)
|
---|
60 | message(FATAL_ERROR "Failed to generate pnglibconf.tf4")
|
---|
61 | endif()
|
---|
62 |
|
---|
63 | execute_process(COMMAND "${AWK}" -f "${SRCDIR}/scripts/options.awk"
|
---|
64 | out=pnglibconf.tf5 pnglibconf.tf4
|
---|
65 | WORKING_DIRECTORY "${BINDIR}"
|
---|
66 | RESULT_VARIABLE AWK_FAIL)
|
---|
67 | if(AWK_FAIL)
|
---|
68 | message(FATAL_ERROR "Failed to generate pnglibconf.tf5")
|
---|
69 | endif()
|
---|
70 |
|
---|
71 | file(REMOVE "pnglibconf.tf4")
|
---|
72 | file(MAKE_DIRECTORY "${BINDIR}/scripts")
|
---|
73 | file(RENAME "pnglibconf.tf5" "${BINDIR}/pnglibconf.c")
|
---|
74 |
|
---|
75 | elseif ("${OUTPUT}" STREQUAL "pnglibconf.h")
|
---|
76 | # Generate pnglibconf.h
|
---|
77 |
|
---|
78 | file(REMOVE "${BINDIR}/${OUTPUT}")
|
---|
79 | if(PNG_PREFIX)
|
---|
80 | file(REMOVE "pnglibconf.tf8")
|
---|
81 |
|
---|
82 | execute_process(COMMAND "${AWK}" "s==0 && NR>1{print prev}
|
---|
83 | s==0{prev=\$0}
|
---|
84 | s==1{print \"#define\", \$1, \"${PNG_PREFIX}\" \$1}
|
---|
85 | s==2{print \"#define ${PNG_PREFIX}png_\" \$1, \"PNG_\" \$1}
|
---|
86 | END{print prev}" s=0 pnglibconf.out s=1 "${BINDIR}/scripts/prefix.out"
|
---|
87 | s=2 "${SRCDIR}/scripts/macro.lst"
|
---|
88 | OUTPUT_FILE pnglibconf.tf8
|
---|
89 | RESULT_VARIABLE AWK_FAIL)
|
---|
90 | if(AWK_FAIL)
|
---|
91 | message(FATAL_ERROR "Failed to generate pnglibconf.tf8")
|
---|
92 | endif()
|
---|
93 |
|
---|
94 | file(RENAME "pnglibconf.tf8" "${BINDIR}/${OUTPUT}")
|
---|
95 | else()
|
---|
96 | execute_process(COMMAND "${CMAKE_COMMAND}" -E copy "${BINDIR}/pnglibconf.out"
|
---|
97 | "${BINDIR}/${OUTPUT}"
|
---|
98 | RESULT_VARIABLE COPY_FAIL)
|
---|
99 | if(COPY_FAIL)
|
---|
100 | message(FATAL_ERROR "Failed to create pnglibconf.h")
|
---|
101 | endif()
|
---|
102 | endif()
|
---|
103 |
|
---|
104 | elseif ("${OUTPUT}" STREQUAL "pngprefix.h")
|
---|
105 | # Generate pngprefix.h
|
---|
106 |
|
---|
107 | file(REMOVE "${BINDIR}/${OUTPUT}")
|
---|
108 |
|
---|
109 | if(PNG_PREFIX)
|
---|
110 | file(REMOVE "pngprefix.tf1")
|
---|
111 |
|
---|
112 | execute_process(COMMAND "${AWK}"
|
---|
113 | "{print \"#define\", \$1, \"${PNG_PREFIX}\" \$1}"
|
---|
114 | "${BINDIR}/scripts/intprefix.out"
|
---|
115 | OUTPUT_FILE "pngprefix.tf1"
|
---|
116 | RESULT_VARIABLE AWK_FAIL)
|
---|
117 | if(AWK_FAIL)
|
---|
118 | message(FATAL_ERROR "Failed to generate pngprefix.tf1")
|
---|
119 | endif()
|
---|
120 |
|
---|
121 | file(RENAME "pngprefix.tf1" "${BINDIR}/${OUTPUT}")
|
---|
122 | else()
|
---|
123 | file(WRITE "${BINDIR}/${OUTPUT}" "/* No libpng symbol prefix configured. */")
|
---|
124 | endif()
|
---|
125 |
|
---|
126 | elseif("${OUTPUT}" STREQUAL "scripts/pnglibconf.h.prebuilt")
|
---|
127 | # Generate scripts/pnglibconf.h.prebuilt (fails build)
|
---|
128 |
|
---|
129 | message(STATUS "Attempting to build scripts/pnglibconf.h.prebuilt")
|
---|
130 | message(STATUS "This is a machine generated file, but if you want to make")
|
---|
131 | message(STATUS "a new one simply build the 'genfiles' target, and copy")
|
---|
132 | message(STATUS "scripts/pnglibconf.out to scripts/pnglibconf.h.prebuilt")
|
---|
133 | message(STATUS "AND set PNG_ZLIB_VERNUM to 0 (you MUST do this)")
|
---|
134 | message(FATAL_ERROR "Stopping build")
|
---|
135 |
|
---|
136 | else()
|
---|
137 | message(FATAL_ERROR "Unsupported output: ${OUTPUT}")
|
---|
138 | endif()
|
---|