1*a67afe4dSAndroid Build Coastguard Worker# genout.cmake.in 2*a67afe4dSAndroid Build Coastguard Worker# Generate .out from .c with awk (generic), based upon the automake logic. 3*a67afe4dSAndroid Build Coastguard Worker 4*a67afe4dSAndroid Build Coastguard Worker# Copyright (c) 2022-2024 Cosmin Truta 5*a67afe4dSAndroid Build Coastguard Worker# Copyright (c) 2016 Glenn Randers-Pehrson 6*a67afe4dSAndroid Build Coastguard Worker# Written by Roger Leigh, 2016 7*a67afe4dSAndroid Build Coastguard Worker# 8*a67afe4dSAndroid Build Coastguard Worker# Use, modification and distribution are subject to 9*a67afe4dSAndroid Build Coastguard Worker# the same licensing terms and conditions as libpng. 10*a67afe4dSAndroid Build Coastguard Worker# Please see the copyright notice in png.h or visit 11*a67afe4dSAndroid Build Coastguard Worker# http://libpng.org/pub/png/src/libpng-LICENSE.txt 12*a67afe4dSAndroid Build Coastguard Worker# 13*a67afe4dSAndroid Build Coastguard Worker# SPDX-License-Identifier: libpng-2.0 14*a67afe4dSAndroid Build Coastguard Worker 15*a67afe4dSAndroid Build Coastguard Worker# Variables substituted from CMakeLists.txt 16*a67afe4dSAndroid Build Coastguard Workerset(SRCDIR "@CMAKE_CURRENT_SOURCE_DIR@") 17*a67afe4dSAndroid Build Coastguard Workerset(BINDIR "@CMAKE_CURRENT_BINARY_DIR@") 18*a67afe4dSAndroid Build Coastguard Worker 19*a67afe4dSAndroid Build Coastguard Workerset(AWK "@AWK@") 20*a67afe4dSAndroid Build Coastguard Workerset(CMAKE_C_COMPILER "@CMAKE_C_COMPILER@") 21*a67afe4dSAndroid Build Coastguard Workerset(CMAKE_C_FLAGS @CMAKE_C_FLAGS@) 22*a67afe4dSAndroid Build Coastguard Workerset(CMAKE_SYSROOT @CMAKE_SYSROOT@) 23*a67afe4dSAndroid Build Coastguard Workerset(INCDIR "@CMAKE_CURRENT_BINARY_DIR@") 24*a67afe4dSAndroid Build Coastguard Workerset(PNG_PREFIX "@PNG_PREFIX@") 25*a67afe4dSAndroid Build Coastguard Workerset(PNGLIB_MAJOR "@PNGLIB_MAJOR@") 26*a67afe4dSAndroid Build Coastguard Workerset(PNGLIB_MINOR "@PNGLIB_MINOR@") 27*a67afe4dSAndroid Build Coastguard Workerset(PNGLIB_VERSION "@PNGLIB_VERSION@") 28*a67afe4dSAndroid Build Coastguard Workerset(ZLIBINCDIR "@ZLIB_INCLUDE_DIRS@") 29*a67afe4dSAndroid Build Coastguard Worker 30*a67afe4dSAndroid Build Coastguard Workerset(PLATFORM_C_FLAGS) 31*a67afe4dSAndroid Build Coastguard Workerif(APPLE) 32*a67afe4dSAndroid Build Coastguard Worker set(CMAKE_OSX_INTERNAL_ARCHITECTURES "@CMAKE_OSX_INTERNAL_ARCHITECTURES@") 33*a67afe4dSAndroid Build Coastguard Worker set(CMAKE_OSX_SYSROOT "@CMAKE_OSX_SYSROOT@") 34*a67afe4dSAndroid Build Coastguard Worker if(CMAKE_OSX_INTERNAL_ARCHITECTURES) 35*a67afe4dSAndroid Build Coastguard Worker set(PLATFORM_C_FLAGS ${PLATFORM_C_FLAGS} -arch ${CMAKE_OSX_INTERNAL_ARCHITECTURES}) 36*a67afe4dSAndroid Build Coastguard Worker endif() 37*a67afe4dSAndroid Build Coastguard Worker if(CMAKE_OSX_SYSROOT) 38*a67afe4dSAndroid Build Coastguard Worker set(PLATFORM_C_FLAGS ${PLATFORM_C_FLAGS} -isysroot ${CMAKE_OSX_SYSROOT}) 39*a67afe4dSAndroid Build Coastguard Worker endif() 40*a67afe4dSAndroid Build Coastguard Workerendif() 41*a67afe4dSAndroid Build Coastguard Worker 42*a67afe4dSAndroid Build Coastguard Workerif(CMAKE_SYSROOT) 43*a67afe4dSAndroid Build Coastguard Worker set(PLATFORM_C_FLAGS ${PLATFORM_C_FLAGS} "--sysroot=${CMAKE_SYSROOT}") 44*a67afe4dSAndroid Build Coastguard Workerendif() 45*a67afe4dSAndroid Build Coastguard Worker 46*a67afe4dSAndroid Build Coastguard Workerget_filename_component(INPUTEXT "${INPUT}" EXT) 47*a67afe4dSAndroid Build Coastguard Workerget_filename_component(OUTPUTEXT "${OUTPUT}" EXT) 48*a67afe4dSAndroid Build Coastguard Workerget_filename_component(INPUTBASE "${INPUT}" NAME_WE) 49*a67afe4dSAndroid Build Coastguard Workerget_filename_component(OUTPUTBASE "${OUTPUT}" NAME_WE) 50*a67afe4dSAndroid Build Coastguard Workerget_filename_component(INPUTDIR "${INPUT}" PATH) 51*a67afe4dSAndroid Build Coastguard Workerget_filename_component(OUTPUTDIR "${OUTPUT}" PATH) 52*a67afe4dSAndroid Build Coastguard Worker 53*a67afe4dSAndroid Build Coastguard Workerif(INPUTEXT STREQUAL ".c" AND OUTPUTEXT STREQUAL ".out") 54*a67afe4dSAndroid Build Coastguard Worker get_filename_component(GENDIR "${OUTPUT}" PATH) 55*a67afe4dSAndroid Build Coastguard Worker file(MAKE_DIRECTORY "${GENDIR}") 56*a67afe4dSAndroid Build Coastguard Worker 57*a67afe4dSAndroid Build Coastguard Worker file(REMOVE "${OUTPUT}.tf1" "${OUTPUT}.tf2") 58*a67afe4dSAndroid Build Coastguard Worker 59*a67afe4dSAndroid Build Coastguard Worker set(INCLUDES "-I${INCDIR}") 60*a67afe4dSAndroid Build Coastguard Worker if(ZLIBINCDIR) 61*a67afe4dSAndroid Build Coastguard Worker foreach(dir ${ZLIBINCDIR}) 62*a67afe4dSAndroid Build Coastguard Worker list(APPEND INCLUDES "-I${dir}") 63*a67afe4dSAndroid Build Coastguard Worker endforeach() 64*a67afe4dSAndroid Build Coastguard Worker endif() 65*a67afe4dSAndroid Build Coastguard Worker 66*a67afe4dSAndroid Build Coastguard Worker if(PNG_PREFIX) 67*a67afe4dSAndroid Build Coastguard Worker set(PNG_PREFIX_DEF "-DPNG_PREFIX=${PNG_PREFIX}") 68*a67afe4dSAndroid Build Coastguard Worker endif() 69*a67afe4dSAndroid Build Coastguard Worker 70*a67afe4dSAndroid Build Coastguard Worker execute_process(COMMAND "${CMAKE_C_COMPILER}" "-E" 71*a67afe4dSAndroid Build Coastguard Worker ${CMAKE_C_FLAGS} 72*a67afe4dSAndroid Build Coastguard Worker ${PLATFORM_C_FLAGS} 73*a67afe4dSAndroid Build Coastguard Worker "-I${SRCDIR}" 74*a67afe4dSAndroid Build Coastguard Worker "-I${BINDIR}" 75*a67afe4dSAndroid Build Coastguard Worker ${INCLUDES} 76*a67afe4dSAndroid Build Coastguard Worker "-DPNGLIB_LIBNAME=PNG${PNGLIB_MAJOR}${PNGLIB_MINOR}_0" 77*a67afe4dSAndroid Build Coastguard Worker "-DPNGLIB_VERSION=${PNGLIB_VERSION}" 78*a67afe4dSAndroid Build Coastguard Worker "-DSYMBOL_PREFIX=${SYMBOL_PREFIX}" 79*a67afe4dSAndroid Build Coastguard Worker "-DPNG_NO_USE_READ_MACROS" 80*a67afe4dSAndroid Build Coastguard Worker "-DPNG_BUILDING_SYMBOL_TABLE" 81*a67afe4dSAndroid Build Coastguard Worker ${PNG_PREFIX_DEF} 82*a67afe4dSAndroid Build Coastguard Worker "${INPUT}" 83*a67afe4dSAndroid Build Coastguard Worker OUTPUT_FILE "${OUTPUT}.tf1" 84*a67afe4dSAndroid Build Coastguard Worker WORKING_DIRECTORY "${BINDIR}" 85*a67afe4dSAndroid Build Coastguard Worker RESULT_VARIABLE CPP_FAIL) 86*a67afe4dSAndroid Build Coastguard Worker if(CPP_FAIL) 87*a67afe4dSAndroid Build Coastguard Worker message(FATAL_ERROR "Failed to generate ${OUTPUT}.tf1") 88*a67afe4dSAndroid Build Coastguard Worker endif() 89*a67afe4dSAndroid Build Coastguard Worker 90*a67afe4dSAndroid Build Coastguard Worker execute_process(COMMAND "${AWK}" -f "${SRCDIR}/scripts/dfn.awk" 91*a67afe4dSAndroid Build Coastguard Worker "out=${OUTPUT}.tf2" "${OUTPUT}.tf1" 92*a67afe4dSAndroid Build Coastguard Worker WORKING_DIRECTORY "${BINDIR}" 93*a67afe4dSAndroid Build Coastguard Worker RESULT_VARIABLE AWK_FAIL) 94*a67afe4dSAndroid Build Coastguard Worker if(AWK_FAIL) 95*a67afe4dSAndroid Build Coastguard Worker message(FATAL_ERROR "Failed to generate ${OUTPUT}.tf2") 96*a67afe4dSAndroid Build Coastguard Worker endif() 97*a67afe4dSAndroid Build Coastguard Worker 98*a67afe4dSAndroid Build Coastguard Worker file(REMOVE "${OUTPUT}.tf1") 99*a67afe4dSAndroid Build Coastguard Worker file(RENAME "${OUTPUT}.tf2" "${OUTPUT}") 100*a67afe4dSAndroid Build Coastguard Workerelse() 101*a67afe4dSAndroid Build Coastguard Worker message(FATAL_ERROR "Unsupported conversion: ${INPUTEXT} to ${OUTPUTEXT}") 102*a67afe4dSAndroid Build Coastguard Workerendif() 103