| OLD | NEW |
| (Empty) | |
| 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} STAN
DARD API DEFINITION" |
| 26 COMMAND "${AWK}" -f "${SRCDIR}/scripts/options.awk" |
| 27 "out=pnglibconf.tf6" "logunsupported=1" "version=searc
h" |
| 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() |
| OLD | NEW |