7cf9a34ade
Without this patch, CMAKE_C_FLAGS will be processed as a string/filename on MSVC (e.g. when CMAKE_C_FLAGS is equal to " /D_WIN32 /D_WINDOWS /W3") and the whole compilation fails.
79 lines
2.7 KiB
CMake
79 lines
2.7 KiB
CMake
# genout.cmake.in
|
|
# Generate .out from .c with awk (generic), 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(CMAKE_C_COMPILER "@CMAKE_C_COMPILER@")
|
|
set(CMAKE_C_FLAGS @CMAKE_C_FLAGS@)
|
|
set(INCDIR "@CMAKE_CURRENT_BINARY_DIR@")
|
|
set(PNG_PREFIX "@PNG_PREFIX@")
|
|
set(PNGLIB_MAJOR "@PNGLIB_MAJOR@")
|
|
set(PNGLIB_MINOR "@PNGLIB_MINOR@")
|
|
set(PNGLIB_VERSION "@PNGLIB_VERSION@")
|
|
set(ZLIBINCDIR "@ZLIB_INCLUDE_DIR@")
|
|
|
|
get_filename_component(INPUTEXT "${INPUT}" EXT)
|
|
get_filename_component(OUTPUTEXT "${OUTPUT}" EXT)
|
|
get_filename_component(INPUTBASE "${INPUT}" NAME_WE)
|
|
get_filename_component(OUTPUTBASE "${OUTPUT}" NAME_WE)
|
|
get_filename_component(INPUTDIR "${INPUT}" PATH)
|
|
get_filename_component(OUTPUTDIR "${OUTPUT}" PATH)
|
|
|
|
if ("${INPUTEXT}" STREQUAL ".c" AND "${OUTPUTEXT}" STREQUAL ".out")
|
|
get_filename_component(GENDIR "${OUTPUT}" PATH)
|
|
file(MAKE_DIRECTORY "${GENDIR}")
|
|
|
|
file(REMOVE "${OUTPUT}.tf1" "${OUTPUT}.tf2")
|
|
|
|
set(INCLUDES "-I${INCDIR}")
|
|
if(ZLIBINCDIR)
|
|
list(APPEND INCLUDES "-I${ZLIBINCDIR}")
|
|
endif()
|
|
|
|
if(PNG_PREFIX)
|
|
set(PNG_PREFIX_DEF "-DPNG_PREFIX=${PNG_PREFIX}")
|
|
endif()
|
|
|
|
execute_process(COMMAND "${CMAKE_C_COMPILER}" "-E"
|
|
${CMAKE_C_FLAGS}
|
|
"-I${SRCDIR}"
|
|
"-I${BINDIR}"
|
|
${INCLUDES}
|
|
"-DPNGLIB_LIBNAME=PNG${PNGLIB_MAJOR}${PNGLIB_MINOR}_0"
|
|
"-DPNGLIB_VERSION=${PNGLIB_VERSION}"
|
|
"-DSYMBOL_PREFIX=${SYMBOL_PREFIX}"
|
|
"-DPNG_NO_USE_READ_MACROS"
|
|
"-DPNG_BUILDING_SYMBOL_TABLE"
|
|
${PNG_PREFIX_DEF}
|
|
"${INPUT}"
|
|
OUTPUT_FILE "${OUTPUT}.tf1"
|
|
WORKING_DIRECTORY "${BINDIR}"
|
|
RESULT_VARIABLE CPP_FAIL)
|
|
if(CPP_FAIL)
|
|
message(FATAL_ERROR "Failed to generate ${OUTPUT}.tf1")
|
|
endif()
|
|
|
|
execute_process(COMMAND "${AWK}" -f "${SRCDIR}/scripts/dfn.awk"
|
|
"out=${OUTPUT}.tf2" "${OUTPUT}.tf1"
|
|
WORKING_DIRECTORY "${BINDIR}"
|
|
RESULT_VARIABLE AWK_FAIL)
|
|
if(AWK_FAIL)
|
|
message(FATAL_ERROR "Failed to generate ${OUTPUT}.tf2")
|
|
endif()
|
|
|
|
file(REMOVE "${OUTPUT}.tf1")
|
|
file(RENAME "${OUTPUT}.tf2" "${OUTPUT}")
|
|
else()
|
|
message(FATAL_ERROR "Unsupported conversion: ${INPUTEXT} to ${OUTPUTEXT}")
|
|
endif()
|