You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
151 lines
4.2 KiB
151 lines
4.2 KiB
2 years ago
|
|
||
|
option(USE_TRIBITS "Use the Tribits modules to build Aprepro" ON)
|
||
|
if(USE_TRIBITS)
|
||
|
|
||
|
TRIBITS_SUBPACKAGE(Aprepro_lib)
|
||
|
endif()
|
||
|
|
||
|
SET(APREPRO_VERSION_MAJOR "4")
|
||
|
SET(APREPRO_VERSION_MINOR "02")
|
||
|
SET(APREPRO_VERSION_PATCH "0")
|
||
|
SET(APREPRO_VERSION "${APREPRO_VERSION_MAJOR}.${APREPRO_VERSION_MINOR}")
|
||
|
SET(APREPRO_VERSION_FULL "${APREPRO_VERSION}.${APREPRO_VERSION_PATCH}")
|
||
|
|
||
|
IF (${CMAKE_PROJECT_NAME}_ENABLE_SEACASExodus)
|
||
|
ADD_DEFINITIONS(-DEXODUS_SUPPORT)
|
||
|
ENDIF()
|
||
|
|
||
|
TRIBITS_INCLUDE_DIRECTORIES(
|
||
|
${CMAKE_CURRENT_SOURCE_DIR}
|
||
|
)
|
||
|
|
||
|
option(GENERATE_FLEX_FILES "Generate source files using flex" OFF)
|
||
|
option(GENERATE_BISON_FILES "Generate source files using bison" OFF)
|
||
|
|
||
|
if(GENERATE_BISON_FILES)
|
||
|
set(BISON_LIB_SOURCE ${CMAKE_CURRENT_BINARY_DIR}/apr_parser.cc)
|
||
|
else()
|
||
|
set(BISON_LIB_SOURCE ${CMAKE_CURRENT_SOURCE_DIR}/apr_parser.cc)
|
||
|
endif()
|
||
|
|
||
|
SET(HEADERS
|
||
|
aprepro.h
|
||
|
apr_tokenize.h
|
||
|
)
|
||
|
|
||
|
SET(SOURCES
|
||
|
apr_aprepro.cc
|
||
|
apr_util.cc
|
||
|
apr_init.cc
|
||
|
apr_builtin.cc
|
||
|
apr_units.cc
|
||
|
apr_tokenize.cc
|
||
|
apr_scanner.cc
|
||
|
apr_getline.cc
|
||
|
${BISON_LIB_SOURCE}
|
||
|
apr_exodus.cc
|
||
|
apr_array.cc
|
||
|
)
|
||
|
|
||
|
if(GENERATE_FLEX_FILES)
|
||
|
find_program(FLEX_EXE NAMES flex
|
||
|
DOC "Flex Executable")
|
||
|
if(NOT FLEX_EXE)
|
||
|
message(SEND_ERROR "The CMake variable FLEX_EXE does not point to a valid flex executable.")
|
||
|
endif()
|
||
|
|
||
|
add_custom_command(OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/apr_scanner.cc
|
||
|
COMMAND ${FLEX_EXE}
|
||
|
ARGS -o apr_scanner.cc --noline
|
||
|
${CMAKE_CURRENT_SOURCE_DIR}/aprepro.ll
|
||
|
MAIN_DEPENDENCY aprepro.ll
|
||
|
WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
|
||
|
)
|
||
|
endif()
|
||
|
|
||
|
if(GENERATE_BISON_FILES)
|
||
|
find_program(BISON_EXE NAMES bison
|
||
|
DOC "Bison Executable")
|
||
|
if(NOT BISON_EXE)
|
||
|
message(SEND_ERROR "The CMake variable BISON_EXE does not point to a valid bison executable.")
|
||
|
endif()
|
||
|
|
||
|
if(WIN32)
|
||
|
get_filename_component(BISON_PATH ${BISON_EXE} PATH)
|
||
|
set(ENV{PATH} "${BISON_PATH};$ENV{PATH}")
|
||
|
endif(WIN32)
|
||
|
|
||
|
add_custom_command(OUTPUT apr_parser.cc
|
||
|
COMMAND ${BISON_EXE}
|
||
|
ARGS --defines=aprepro_parser.h --output apr_parser.cc
|
||
|
${CMAKE_CURRENT_SOURCE_DIR}/aprepro.yy
|
||
|
MAIN_DEPENDENCY aprepro.yy
|
||
|
WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
|
||
|
)
|
||
|
endif()
|
||
|
|
||
|
if(USE_TRIBITS)
|
||
|
TRIBITS_ADD_LIBRARY(
|
||
|
aprepro_lib
|
||
|
HEADERS ${HEADERS}
|
||
|
SOURCES ${SOURCES}
|
||
|
)
|
||
|
|
||
|
if (${CMAKE_PROJECT_NAME} STREQUAL "Seacas")
|
||
|
# add a target to generate API documentation with Doxygen
|
||
|
if(Seacas_ENABLE_DOXYGEN)
|
||
|
find_package(Doxygen)
|
||
|
if(DOXYGEN_FOUND)
|
||
|
add_custom_command(TARGET aprepro_lib POST_BUILD
|
||
|
COMMAND ${DOXYGEN_EXECUTABLE} ARGS ${CMAKE_CURRENT_SOURCE_DIR}/Doxyfile
|
||
|
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
|
||
|
COMMENT "Generating Aprepro API documentation with Doxygen" VERBATIM
|
||
|
)
|
||
|
endif(DOXYGEN_FOUND)
|
||
|
endif()
|
||
|
endif()
|
||
|
|
||
|
if (${PACKAGE_NAME}_ENABLE_TESTS)
|
||
|
TRIBITS_ADD_EXECUTABLE(aprepro_lib_test NOEXEPREFIX NOEXESUFFIX INSTALLABLE SOURCES apr_test.cc LINKER_LANGUAGE CXX)
|
||
|
|
||
|
TRIBITS_ADD_ADVANCED_TEST(
|
||
|
aprepro_lib_unit_test
|
||
|
TEST_0 EXEC aprepro_lib_test
|
||
|
ARGS -o test.output ${CMAKE_CURRENT_SOURCE_DIR}/test.inp_app
|
||
|
NOEXEPREFIX NOEXESUFFIX
|
||
|
PASS_ANY
|
||
|
TEST_1 CMND diff ARGS -w
|
||
|
${CMAKE_CURRENT_SOURCE_DIR}/test_standard.out
|
||
|
${CMAKE_CURRENT_BINARY_DIR}/test.output
|
||
|
COMM mpi serial
|
||
|
OVERALL_NUM_MPI_PROCS 1
|
||
|
FINAL_PASS_REGULAR_EXPRESSION
|
||
|
XHOSTTYPE Windows
|
||
|
)
|
||
|
|
||
|
TRIBITS_ADD_ADVANCED_TEST(
|
||
|
aprepro_lib_array_test
|
||
|
TEST_0 EXEC aprepro_lib_test
|
||
|
ARGS --info=test-array.dump --include=${CMAKE_CURRENT_SOURCE_DIR} -o test-array.out
|
||
|
${CMAKE_CURRENT_SOURCE_DIR}/test-array.i
|
||
|
NOEXEPREFIX NOEXESUFFIX
|
||
|
PASS_ANY
|
||
|
TEST_1 CMND diff ARGS -w
|
||
|
${CMAKE_CURRENT_SOURCE_DIR}/test-array.gold
|
||
|
${CMAKE_CURRENT_BINARY_DIR}/test-array.out
|
||
|
TEST_2 CMND diff ARGS -w
|
||
|
${CMAKE_CURRENT_SOURCE_DIR}/test-array.stderr.gold
|
||
|
${CMAKE_CURRENT_BINARY_DIR}/test-array.dump
|
||
|
COMM mpi serial
|
||
|
OVERALL_NUM_MPI_PROCS 1
|
||
|
FINAL_PASS_REGULAR_EXPRESSION
|
||
|
XHOSTTYPE Windows
|
||
|
)
|
||
|
endif()
|
||
|
|
||
|
TRIBITS_SUBPACKAGE_POSTPROCESS()
|
||
|
|
||
|
else()
|
||
|
add_library(aprepro_lib ${HEADERS} ${SOURCES})
|
||
|
endif()
|