123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138 |
- # gensrc.cmake.in
- # Generate source files with awk, 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(DFA_XTRA "@DFA_XTRA@")
- set(PNG_PREFIX "@PNG_PREFIX@")
- set(PNGLIB_VERSION "@PNGLIB_VERSION@")
- if("${OUTPUT}" STREQUAL "scripts/pnglibconf.c")
- # Generate scripts/pnglibconf.c
- file(REMOVE "${BINDIR}/pnglibconf.tf6" "${BINDIR}/pnglibconf.tf7")
- execute_process(COMMAND "${CMAKE_COMMAND}" -E echo "com ${PNGLIB_VERSION} STANDARD API DEFINITION"
- COMMAND "${AWK}" -f "${SRCDIR}/scripts/options.awk"
- "out=pnglibconf.tf6" "logunsupported=1" "version=search"
- "${SRCDIR}/pngconf.h" "-"
- "${SRCDIR}/scripts/pnglibconf.dfa"
- WORKING_DIRECTORY "${BINDIR}"
- RESULT_VARIABLE AWK_FAIL)
- if(AWK_FAIL)
- message(FATAL_ERROR "Failed to generate pnglibconf.tf6")
- endif()
- execute_process(COMMAND "${AWK}" -f "${SRCDIR}/scripts/options.awk"
- "out=pnglibconf.tf7" "pnglibconf.tf6"
- WORKING_DIRECTORY "${BINDIR}"
- RESULT_VARIABLE AWK_FAIL)
- if(AWK_FAIL)
- message(FATAL_ERROR "Failed to generate pnglibconf.tf7")
- endif()
- file(REMOVE "pnglibconf.tf6")
- file(MAKE_DIRECTORY "${BINDIR}/scripts")
- file(RENAME "pnglibconf.tf7" "${BINDIR}/scripts/pnglibconf.c")
- elseif ("${OUTPUT}" STREQUAL "pnglibconf.c")
- # Generate pnglibconf.c
- file(REMOVE "${BINDIR}/pnglibconf.tf4" "${BINDIR}/pnglibconf.tf5")
- execute_process(COMMAND "${AWK}" -f "${SRCDIR}/scripts/options.awk"
- out=pnglibconf.tf4 version=search
- ${SRCDIR}/pngconf.h ${SRCDIR}/scripts/pnglibconf.dfa
- ${SRCDIR}/pngusr.dfa ${DFA_XTRA}
- WORKING_DIRECTORY "${BINDIR}"
- RESULT_VARIABLE AWK_FAIL)
- if(AWK_FAIL)
- message(FATAL_ERROR "Failed to generate pnglibconf.tf4")
- endif()
- execute_process(COMMAND "${AWK}" -f "${SRCDIR}/scripts/options.awk"
- out=pnglibconf.tf5 pnglibconf.tf4
- WORKING_DIRECTORY "${BINDIR}"
- RESULT_VARIABLE AWK_FAIL)
- if(AWK_FAIL)
- message(FATAL_ERROR "Failed to generate pnglibconf.tf5")
- endif()
- file(REMOVE "pnglibconf.tf4")
- file(MAKE_DIRECTORY "${BINDIR}/scripts")
- file(RENAME "pnglibconf.tf5" "${BINDIR}/pnglibconf.c")
- elseif ("${OUTPUT}" STREQUAL "pnglibconf.h")
- # Generate pnglibconf.h
- file(REMOVE "${BINDIR}/${OUTPUT}")
- if(PNG_PREFIX)
- file(REMOVE "pnglibconf.tf8")
- execute_process(COMMAND "${AWK}" "s==0 && NR>1{print prev}
- s==0{prev=\$0}
- s==1{print \"#define\", \$1, \"${PNG_PREFIX}\" \$1}
- s==2{print \"#define ${PNG_PREFIX}png_\" \$1, \"PNG_\" \$1}
- END{print prev}" s=0 pnglibconf.out s=1 "${BINDIR}/scripts/prefix.out"
- s=2 "${SRCDIR}/scripts/macro.lst"
- OUTPUT_FILE pnglibconf.tf8
- RESULT_VARIABLE AWK_FAIL)
- if(AWK_FAIL)
- message(FATAL_ERROR "Failed to generate pnglibconf.tf8")
- endif()
- file(RENAME "pnglibconf.tf8" "${BINDIR}/${OUTPUT}")
- else()
- execute_process(COMMAND "${CMAKE_COMMAND}" -E copy "${BINDIR}/pnglibconf.out"
- "${BINDIR}/${OUTPUT}"
- RESULT_VARIABLE COPY_FAIL)
- if(COPY_FAIL)
- message(FATAL_ERROR "Failed to create pnglibconf.h")
- endif()
- endif()
- elseif ("${OUTPUT}" STREQUAL "pngprefix.h")
- # Generate pngprefix.h
- file(REMOVE "${BINDIR}/${OUTPUT}")
- if(PNG_PREFIX)
- file(REMOVE "pngprefix.tf1")
- execute_process(COMMAND "${AWK}"
- "{print \"#define\", \$1, \"${PNG_PREFIX}\" \$1}"
- "${BINDIR}/scripts/intprefix.out"
- OUTPUT_FILE "pngprefix.tf1"
- RESULT_VARIABLE AWK_FAIL)
- if(AWK_FAIL)
- message(FATAL_ERROR "Failed to generate pngprefix.tf1")
- endif()
- file(RENAME "pngprefix.tf1" "${BINDIR}/${OUTPUT}")
- else()
- file(WRITE "${BINDIR}/${OUTPUT}" "/* No libpng symbol prefix configured. */")
- endif()
- elseif("${OUTPUT}" STREQUAL "scripts/pnglibconf.h.prebuilt")
- # Generate scripts/pnglibconf.h.prebuilt (fails build)
- message(STATUS "Attempting to build scripts/pnglibconf.h.prebuilt")
- message(STATUS "This is a machine generated file, but if you want to make")
- message(STATUS "a new one simply build the 'genfiles' target, and copy")
- message(STATUS "scripts/pnglibconf.out to scripts/pnglibconf.h.prebuilt")
- message(STATUS "AND set PNG_ZLIB_VERNUM to 0 (you MUST do this)")
- message(FATAL_ERROR "Stopping build")
- else()
- message(FATAL_ERROR "Unsupported output: ${OUTPUT}")
- endif()
|