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()