# Add each test suite category. foreach(test_category gui_tests simgear_tests system_tests unit_tests ) add_subdirectory(${test_category}) endforeach(test_category) # Add all test suite sources and headers. set(TESTSUITE_SOURCES ${TESTSUITE_SOURCES} bootstrap.cxx fgCompilerOutputter.cxx fgTestListener.cxx fgTestRunner.cxx formatting.cxx logging.cxx testSuite.cxx ) set(TESTSUITE_HEADERS ${TESTSUITE_HEADERS} fgCompilerOutputter.hxx fgTestListener.hxx fgTestRunner.hxx formatting.hxx logging.hxx ) # The test suite output directory. set(TESTSUITE_OUTPUT_DIR "${CMAKE_CURRENT_BINARY_DIR}") #----------------------------------------------------------------------------- # From here on, this is a modified copy of src/Main/CMakeLists.txt. This is # designed to have a minimal diff so that this can be updated together with the # main CMakeLists.txt file. # Set up the Main FG file sources and headers (excluding bootstrap.cxx and its main() function). if(MSVC) set(RESOURCE_FILE ${PROJECT_SOURCE_DIR}/src/Main/flightgear.rc) endif(MSVC) set(MAIN_SOURCES #${PROJECT_SOURCE_DIR}/src/Main/bootstrap.cxx ${PROJECT_SOURCE_DIR}/src/Main/fg_commands.cxx ${PROJECT_SOURCE_DIR}/src/Main/fg_init.cxx ${PROJECT_SOURCE_DIR}/src/Main/fg_io.cxx ${PROJECT_SOURCE_DIR}/src/Main/fg_os_common.cxx ${PROJECT_SOURCE_DIR}/src/Main/fg_scene_commands.cxx ${PROJECT_SOURCE_DIR}/src/Main/fg_props.cxx ${PROJECT_SOURCE_DIR}/src/Main/FGInterpolator.cxx ${PROJECT_SOURCE_DIR}/src/Main/globals.cxx ${PROJECT_SOURCE_DIR}/src/Main/locale.cxx ${PROJECT_SOURCE_DIR}/src/Main/logger.cxx ${PROJECT_SOURCE_DIR}/src/Main/main.cxx ${PROJECT_SOURCE_DIR}/src/Main/options.cxx ${PROJECT_SOURCE_DIR}/src/Main/positioninit.cxx ${PROJECT_SOURCE_DIR}/src/Main/screensaver_control.cxx ${PROJECT_SOURCE_DIR}/src/Main/subsystemFactory.cxx ${PROJECT_SOURCE_DIR}/src/Main/util.cxx ${RESOURCE_FILE} ${CMAKE_BINARY_DIR}/src/EmbeddedResources/FlightGear-resources.cxx ) set(MAIN_HEADERS ${PROJECT_SOURCE_DIR}/src/Main/AircraftDirVisitorBase.hxx ${PROJECT_SOURCE_DIR}/src/Main/fg_commands.hxx ${PROJECT_SOURCE_DIR}/src/Main/fg_init.hxx ${PROJECT_SOURCE_DIR}/src/Main/fg_io.hxx ${PROJECT_SOURCE_DIR}/src/Main/fg_props.hxx ${PROJECT_SOURCE_DIR}/src/Main/FGInterpolator.hxx ${PROJECT_SOURCE_DIR}/src/Main/globals.hxx ${PROJECT_SOURCE_DIR}/src/Main/locale.hxx ${PROJECT_SOURCE_DIR}/src/Main/logger.hxx ${PROJECT_SOURCE_DIR}/src/Main/main.hxx ${PROJECT_SOURCE_DIR}/src/Main/options.hxx ${PROJECT_SOURCE_DIR}/src/Main/positioninit.hxx ${PROJECT_SOURCE_DIR}/src/Main/screensaver_control.hxx ${PROJECT_SOURCE_DIR}/src/Main/subsystemFactory.hxx ${PROJECT_SOURCE_DIR}/src/Main/util.hxx ${CMAKE_BINARY_DIR}/src/EmbeddedResources/FlightGear-resources.hxx ) # On Windows, make sure fgrcc can be run (it needs third-party libraries) if(MSVC) if(MSVC_3RDPARTY_ROOT AND MSVC_3RDPARTY_DIR) set(CMAKE_MSVCIDE_RUN_PATH ${MSVC_3RDPARTY_ROOT}/${MSVC_3RDPARTY_DIR}/bin) else() message(FATAL_ERROR "Either MSVC_3RDPARTY_ROOT or MSVC_3RDPARTY_DIR is empty or unset") endif() endif() add_custom_command( OUTPUT ${CMAKE_BINARY_DIR}/src/EmbeddedResources/FlightGear-resources.cxx ${CMAKE_BINARY_DIR}/src/EmbeddedResources/FlightGear-resources.hxx COMMAND fgrcc --root=${CMAKE_SOURCE_DIR} --output-cpp-file=${CMAKE_BINARY_DIR}/src/EmbeddedResources/FlightGear-resources.cxx --init-func-name=initFlightGearEmbeddedResources --output-header-file=${CMAKE_BINARY_DIR}/src/EmbeddedResources/FlightGear-resources.hxx --output-header-identifier=_FG_FLIGHTGEAR_EMBEDDED_RESOURCES ${CMAKE_SOURCE_DIR}/src/EmbeddedResources/FlightGear-resources.xml DEPENDS fgrcc ${CMAKE_SOURCE_DIR}/src/EmbeddedResources/FlightGear-resources.xml ) # Get the FG sources and headers to be built into the test suite. get_property(FG_SOURCES GLOBAL PROPERTY FG_SOURCES) get_property(FG_HEADERS GLOBAL PROPERTY FG_HEADERS) link_directories ( ${Boost_LIBRARY_DIRS} ) # Set up the source groups. get_property(FG_GROUPS_C GLOBAL PROPERTY FG_GROUPS_C) string(REPLACE "@" ";" groups ${FG_GROUPS_C} ) foreach(g ${groups}) string(REPLACE "#" ";" g2 ${g}) list(GET g2 0 name) list(REMOVE_AT g2 0) source_group("${name}\\Sources" FILES ${g2}) endforeach() # Set up the header groups. get_property(FG_GROUPS_H GLOBAL PROPERTY FG_GROUPS_H) string(REPLACE "@" ";" groups ${FG_GROUPS_H} ) foreach(g ${groups}) string(REPLACE "#" ";" g2 ${g}) list(GET g2 0 name) list(REMOVE_AT g2 0) source_group("${name}\\Headers" FILES ${g2}) endforeach() source_group("Main\\Headers" FILES ${HEADERS}) source_group("Main\\Sources" FILES ${SOURCES}) # Set up the separate executable for running the test suite. add_executable(run_test_suite ${FG_SOURCES} ${FG_HEADERS} ${MAIN_SOURCES} ${MAIN_HEADERS} ${TESTSUITE_SOURCES} ${TESTSUITE_HEADERS} ) set_target_properties(run_test_suite PROPERTIES RUNTIME_OUTPUT_DIRECTORY "${TESTSUITE_OUTPUT_DIR}" ) if(WIN32) add_custom_target(test_suite "run_test_suite.exe" DEPENDS run_test_suite WORKING_DIRECTORY "${TESTSUITE_OUTPUT_DIR}/${CMAKE_BUILD_TYPE}" COMMENT "Running the full FlightGear test-suite." ) else() add_custom_target(test_suite "${TESTSUITE_OUTPUT_DIR}/run_test_suite" DEPENDS run_test_suite COMMENT "Running the full FlightGear test-suite." ) endif(WIN32) #----------------------------------------------------------------------------- get_property(FG_LIBS GLOBAL PROPERTY FG_LIBS) #message(STATUS "fg libs ${FG_LIBS}") #message(STATUS "OSG libs ${OPENSCENEGRAPH_LIBRARIES}") #message(STATUS "SG libs ${SIMGEAR_LIBRARIES}") if(RTI_FOUND) set(HLA_LIBRARIES ${RTI_LIBRARIES}) else() set(HLA_LIBRARIES "") endif() if(GDAL_FOUND) set(GDAL_LIBRARIES ${GDAL_LIBRARY}) else() set(GDAL_LIBRARIES "") endif() if(ENABLE_JSBSIM) # FIXME - remove once JSBSim doesn't expose private headers include_directories(${PROJECT_SOURCE_DIR}/src/FDM/JSBSim) target_link_libraries(run_test_suite JSBSim) endif() if(ENABLE_IAX) target_link_libraries(run_test_suite iaxclient_lib ${OPENAL_LIBRARY}) endif() if(USE_DBUS) target_link_libraries(run_test_suite ${DBUS_LIBRARIES}) endif() if(FG_HAVE_GPERFTOOLS) include_directories(${GooglePerfTools_INCLUDE_DIR}) target_link_libraries(run_test_suite ${GooglePerfTools_LIBRARIES}) endif() if(CRASHRPT_FOUND) target_link_libraries(run_test_suite ${CRASHRPT_LIBRARY}) endif() if(X11_FOUND) target_link_libraries(run_test_suite ${X11_LIBRARIES}) endif() target_link_libraries(run_test_suite SimGearCore SimGearScene ${CPPUNIT_LIBRARIES} ${EVENT_INPUT_LIBRARIES} ${GDAL_LIBRARIES} ${HLA_LIBRARIES} ${OPENGL_LIBRARIES} ${OPENSCENEGRAPH_LIBRARIES} ${PLATFORM_LIBS} ${PLIB_LIBRARIES} ${SQLITE3_LIBRARY} ${SIMGEAR_LIBRARIES} ) if(ENABLE_FLITE) if(SYSTEM_HTS_ENGINE) target_link_libraries(run_test_suite flite_hts ${HTS_ENGINE_LIBRARIES}) else() target_link_libraries(run_test_suite flite_hts hts_engine) endif() endif() if(Qt5Core_FOUND) target_link_libraries(run_test_suite Qt5::Core Qt5::Widgets fglauncher fgqmlui) set_property(TARGET run_test_suite PROPERTY AUTOMOC ON) endif() if(USE_AEONWAVE) target_link_libraries(run_test_suite ${AAX_LIBRARY}) endif() if(${CMAKE_SYSTEM_NAME} MATCHES "FreeBSD") target_link_libraries(run_test_suite execinfo) endif()