Warning, /graphics/kseexpr/cmake/macros.cmake is written in an unsupported language. File is not indexed.
0001 # SPDX-FileCopyrightText: 2011-2019 Disney Enterprises, Inc. 0002 # SPDX-License-Identifier: LicenseRef-Apache-2.0 0003 # SPDX-FileCopyrightText: 2020 L. E. Segovia <amy@amyspark.me> 0004 # SPDX-License-Identifier: GPL-3.0-or-later 0005 0006 macro(localize_path SRC DST) 0007 file(READ 0008 ${SRC} 0009 _TMP_FILE 0010 ) 0011 string(REPLACE 0012 "@@PATH@@" 0013 "${CMAKE_SOURCE_DIR}" 0014 _TMP_FILE_2 0015 "${_TMP_FILE}" 0016 ) 0017 file(GENERATE 0018 OUTPUT ${DST} 0019 CONTENT "${_TMP_FILE_2}" 0020 ) 0021 endmacro() 0022 0023 macro(BuildParserScanner TGT FLEX_L_PREFIX BISON_Y_PREFIX PARSER_PREFIX GENERATED_CPPS) 0024 if(USE_PREGENERATED_FILES OR 0025 NOT BISON_FOUND OR 0026 NOT FLEX_FOUND OR 0027 (SED_EXE STREQUAL "SED_EXE-NOTFOUND") 0028 ) 0029 message(STATUS "Using pregenerated parser files for ${TGT}") 0030 # don't have flex/bison/sed, use pregenerated versions 0031 localize_path( 0032 ${CMAKE_SOURCE_DIR}/generated/${TGT}/${FLEX_L_PREFIX}.cpp 0033 ${CMAKE_CURRENT_BINARY_DIR}/${FLEX_L_PREFIX}.cpp 0034 ) 0035 localize_path( 0036 ${CMAKE_SOURCE_DIR}/generated/${TGT}/${FLEX_L_PREFIX}In.cpp 0037 ${CMAKE_CURRENT_BINARY_DIR}/${FLEX_L_PREFIX}In.cpp 0038 ) 0039 localize_path( 0040 ${CMAKE_SOURCE_DIR}/generated/${TGT}/${BISON_Y_PREFIX}.cpp 0041 ${CMAKE_CURRENT_BINARY_DIR}/${BISON_Y_PREFIX}.cpp 0042 ) 0043 localize_path( 0044 ${CMAKE_SOURCE_DIR}/generated/${TGT}/${BISON_Y_PREFIX}.tab.h 0045 ${CMAKE_CURRENT_BINARY_DIR}/${BISON_Y_PREFIX}.tab.h 0046 ) 0047 0048 set (${GENERATED_CPPS} ${FLEX_L_PREFIX}.cpp ${BISON_Y_PREFIX}.cpp) 0049 else () 0050 ## build the parser from the flex/yacc sources 0051 0052 ADD_CUSTOM_COMMAND( 0053 SOURCE "${FLEX_L_PREFIX}.l" 0054 COMMAND "flex" 0055 ARGS "-o${FLEX_L_PREFIX}In.cpp" "${CMAKE_CURRENT_SOURCE_DIR}/${FLEX_L_PREFIX}.l" 0056 OUTPUT ${FLEX_L_PREFIX}In.cpp 0057 DEPENDS ${FLEX_L_PREFIX}.l 0058 ) 0059 0060 ADD_CUSTOM_COMMAND( 0061 SOURCE "${FLEX_L_PREFIX}In.cpp" 0062 COMMAND "sed" 0063 ARGS -e "'s/${PARSER_PREFIX}wrap(n)/${PARSER_PREFIX}wrap()/g'" -e "'s/yy/${PARSER_PREFIX}/g'" -e "'s/YY/${PARSER_PREFIX}YY/g'" ${FLEX_L_PREFIX}In.cpp | tee ${FLEX_L_PREFIX}.cpp ${CMAKE_CURRENT_SOURCE_DIR}/generated/${FLEX_L_PREFIX}.cpp > /dev/null 0064 OUTPUT ${FLEX_L_PREFIX}.cpp 0065 DEPENDS ${FLEX_L_PREFIX}In.cpp 0066 ) 0067 0068 ADD_CUSTOM_COMMAND( 0069 SOURCE "${BISON_Y_PREFIX}.y" 0070 COMMAND "bison" 0071 ARGS "--defines" "--verbose" "--fixed-output-files" "-p" "${PARSER_PREFIX}" "${CMAKE_CURRENT_SOURCE_DIR}/${BISON_Y_PREFIX}.y" 0072 OUTPUT y.tab.c y.tab.h 0073 DEPENDS ${BISON_Y_PREFIX}.y 0074 ) 0075 0076 ADD_CUSTOM_COMMAND( 0077 SOURCE "y.tab.h" 0078 COMMAND "sed" 0079 ARGS -e "'s/yy/${PARSER_PREFIX}/g'" -e "'s/YY/${PARSER_PREFIX}YY/g'" y.tab.h | tee ${BISON_Y_PREFIX}.tab.h ${CMAKE_CURRENT_SOURCE_DIR}/generated/${BISON_Y_PREFIX}.tab.h > /dev/null 0080 OUTPUT ${BISON_Y_PREFIX}.tab.h 0081 DEPENDS y.tab.h 0082 ) 0083 0084 ADD_CUSTOM_COMMAND( 0085 SOURCE "y.tab.c" 0086 COMMAND "sed" 0087 ARGS -e "'s/yy/${PARSER_PREFIX}/g'" -e "'s/YY/${PARSER_PREFIX}YY/g'" y.tab.c | tee ${BISON_Y_PREFIX}.cpp "${CMAKE_CURRENT_SOURCE_DIR}/generated/${BISON_Y_PREFIX}.cpp" > /dev/null 0088 OUTPUT ${BISON_Y_PREFIX}.cpp 0089 DEPENDS y.tab.c ${BISON_Y_PREFIX}.tab.h 0090 ) 0091 0092 ## set build files 0093 set (${GENERATED_CPPS} ${FLEX_L_PREFIX}.cpp ${BISON_Y_PREFIX}.cpp) 0094 message(STATUS "${TGT} parser files: ${${GENERATED_CPPS}}") 0095 endif() 0096 endmacro()