mirror of
https://github.com/glest/glest-source.git
synced 2025-02-24 03:32:35 +01:00
185 lines
6.9 KiB
CMake
185 lines
6.9 KiB
CMake
#########################################################################################
|
|
# megaglest_tests
|
|
|
|
SET(EXTERNAL_LIBS "")
|
|
SET(TARGET_NAME "megaglest_tests")
|
|
|
|
IF(BUILD_MEGAGLEST_TESTS)
|
|
MESSAGE(STATUS "Will try to build MegaGlest unit tests")
|
|
|
|
INCLUDE (CheckIncludeFiles)
|
|
|
|
FIND_PACKAGE(CppUnit REQUIRED)
|
|
INCLUDE_DIRECTORIES(${CPPUNIT_INCLUDE_DIR})
|
|
IF(UNIX)
|
|
SET(EXTERNAL_LIBS ${EXTERNAL_LIBS} ${CPPUNIT_LIBRARY})
|
|
ENDIF()
|
|
|
|
FIND_PACKAGE(${SDL_VERSION_NAME} REQUIRED)
|
|
INCLUDE_DIRECTORIES(${${SDL_VERSION_NAME}_INCLUDE_DIR})
|
|
IF(UNIX)
|
|
SET(EXTERNAL_LIBS ${EXTERNAL_LIBS} ${${SDL_VERSION_NAME}_LIBRARY})
|
|
ENDIF()
|
|
|
|
find_package( FriBiDi )
|
|
if(ENABLE_FRIBIDI AND FRIBIDI_LIBRARIES)
|
|
add_definitions(-DHAVE_FRIBIDI)
|
|
|
|
include_directories( ${FRIBIDI_INCLUDE_DIR} )
|
|
SET(EXTERNAL_LIBS ${EXTERNAL_LIBS} ${FRIBIDI_LIBRARIES})
|
|
|
|
elseif(ENABLE_FRIBIDI AND NOT FRIBIDI_LIBRARIES)
|
|
message("Could not find FriBiDi. Disabling FriBiDi support.")
|
|
endif()
|
|
|
|
#########################################################################################
|
|
# megaglest test code
|
|
|
|
SET(DIRS_WITH_SRC
|
|
./
|
|
shared_lib/graphics
|
|
shared_lib/streflop
|
|
shared_lib/util
|
|
shared_lib/xml)
|
|
|
|
SET(MG_INCLUDES_ROOT "./")
|
|
SET(MG_SOURCES_ROOT "./")
|
|
SET(MG_INCLUDE_FILES "")
|
|
SET(MG_SOURCE_FILES "")
|
|
|
|
SET(GLEST_LIB_INCLUDE_ROOT "../shared_lib/include/")
|
|
SET(GLEST_LIB_INCLUDE_DIRS
|
|
${GLEST_LIB_INCLUDE_ROOT}platform/common
|
|
${GLEST_LIB_INCLUDE_ROOT}platform/posix
|
|
${GLEST_LIB_INCLUDE_ROOT}util
|
|
${GLEST_LIB_INCLUDE_ROOT}graphics
|
|
${GLEST_LIB_INCLUDE_ROOT}graphics/gl
|
|
${GLEST_LIB_INCLUDE_ROOT}graphics/iqm
|
|
${GLEST_LIB_INCLUDE_ROOT}sound
|
|
${GLEST_LIB_INCLUDE_ROOT}sound/openal
|
|
${GLEST_LIB_INCLUDE_ROOT}xml
|
|
${GLEST_LIB_INCLUDE_ROOT}xml/rapidxml
|
|
${GLEST_LIB_INCLUDE_ROOT}glew
|
|
${GLEST_LIB_INCLUDE_ROOT}lua
|
|
${GLEST_LIB_INCLUDE_ROOT}map
|
|
|
|
${PROJECT_SOURCE_DIR}/source/glest_game/graphics
|
|
${PROJECT_SOURCE_DIR}/source/glest_game/world
|
|
${PROJECT_SOURCE_DIR}/source/glest_game/sound
|
|
${PROJECT_SOURCE_DIR}/source/glest_game/type_instances
|
|
${PROJECT_SOURCE_DIR}/source/glest_game/types
|
|
)
|
|
|
|
IF(WANT_STREFLOP)
|
|
SET(GLEST_LIB_INCLUDE_DIRS
|
|
${GLEST_LIB_INCLUDE_DIRS}
|
|
${GLEST_LIB_INCLUDE_ROOT}streflop
|
|
${GLEST_LIB_INCLUDE_ROOT}streflop/libm_flt32_source)
|
|
ENDIF()
|
|
|
|
INCLUDE_DIRECTORIES( ${GLEST_LIB_INCLUDE_DIRS} )
|
|
|
|
IF(WIN32)
|
|
INCLUDE_DIRECTORIES(${PROJECT_SOURCE_DIR}/source/win32_deps/include)
|
|
INCLUDE_DIRECTORIES(${PROJECT_SOURCE_DIR}/source/shared_lib/include/platform/posix)
|
|
INCLUDE_DIRECTORIES(${PROJECT_SOURCE_DIR}/source/shared_lib/include/platform/win32)
|
|
INCLUDE_DIRECTORIES( ${GLEST_LIB_INCLUDE_ROOT}platform/${SDL_VERSION_SNAME} )
|
|
ELSE()
|
|
INCLUDE_DIRECTORIES( ${GLEST_LIB_INCLUDE_ROOT}platform/${SDL_VERSION_SNAME} )
|
|
SET(GLEST_LIB_INCLUDE_DIRS ${GLEST_LIB_INCLUDE_DIRS} ${GLEST_LIB_INCLUDE_ROOT}platform/${SDL_VERSION_SNAME})
|
|
SET(GLEST_LIB_INCLUDE_DIRS ${GLEST_LIB_INCLUDE_DIRS} ${GLEST_LIB_INCLUDE_ROOT}platform/unix)
|
|
ENDIF()
|
|
|
|
FOREACH(DIR IN LISTS DIRS_WITH_SRC)
|
|
set(INCLUDE_DIR_TO_GLOB ${MG_INCLUDES_ROOT}${DIR})
|
|
INCLUDE_DIRECTORIES( ${INCLUDE_DIR_TO_GLOB} )
|
|
IF(APPLE)
|
|
#MESSAGE(STATUS "INCLUDE_DIR_TO_GLOB: ${INCLUDE_DIR_TO_GLOB}")
|
|
FILE(GLOB INC_FILES_FROM_THIS_DIR ${INCLUDE_DIR_TO_GLOB}/*.h)
|
|
#MESSAGE(STATUS "INCLUDE FILES GLOBBED: ${INC_FILES_FROM_THIS_DIR}")
|
|
SET(MG_INCLUDE_FILES ${MG_INCLUDE_FILES} ${INC_FILES_FROM_THIS_DIR})
|
|
ENDIF(APPLE)
|
|
|
|
set(SRC_DIR_TO_GLOB ${MG_SOURCES_ROOT}${DIR})
|
|
#MESSAGE(STATUS "SRC_DIR_TO_GLOB: ${SRC_DIR_TO_GLOB}")
|
|
FILE(GLOB SRC_FILES_FROM_THIS_DIR ${SRC_DIR_TO_GLOB}/*.cpp)
|
|
#MESSAGE(STATUS "SRC_FILES_FROM_THIS_DIR: ${SRC_FILES_FROM_THIS_DIR}")
|
|
SET(MG_SOURCE_FILES ${MG_SOURCE_FILES} ${SRC_FILES_FROM_THIS_DIR})
|
|
|
|
set(SRC_DIR_TO_GLOB ${MG_SOURCES_ROOT}${DIR})
|
|
#MESSAGE(STATUS "SRC_DIR_TO_GLOB: ${SRC_DIR_TO_GLOB}")
|
|
FILE(GLOB SRC_FILES_FROM_THIS_DIR ${SRC_DIR_TO_GLOB}/*.c)
|
|
#MESSAGE(STATUS "SRC_FILES_FROM_THIS_DIR: ${SRC_FILES_FROM_THIS_DIR}")
|
|
SET(MG_SOURCE_FILES ${MG_SOURCE_FILES} ${SRC_FILES_FROM_THIS_DIR})
|
|
|
|
IF(APPLE)
|
|
FILE(GLOB SRC_FILES_FROM_THIS_DIR ${SRC_DIR_TO_GLOB}/*.mm)
|
|
#MESSAGE(STATUS "SRC_FILES_FROM_THIS_DIR: ${SRC_FILES_FROM_THIS_DIR}")
|
|
SET(MG_SOURCE_FILES ${MG_SOURCE_FILES} ${SRC_FILES_FROM_THIS_DIR})
|
|
FILE(GLOB SRC_FILES_FROM_THIS_DIR ${SRC_DIR_TO_GLOB}/*.m)
|
|
#MESSAGE(STATUS "SRC_FILES_FROM_THIS_DIR: ${SRC_FILES_FROM_THIS_DIR}")
|
|
SET(MG_SOURCE_FILES ${MG_SOURCE_FILES} ${SRC_FILES_FROM_THIS_DIR})
|
|
ENDIF(APPLE)
|
|
ENDFOREACH(DIR)
|
|
|
|
#MESSAGE(STATUS "Source files: ${MG_INCLUDE_FILES}")
|
|
#MESSAGE(STATUS "Source files: ${MG_SOURCE_FILES}")
|
|
#MESSAGE(STATUS "Include dirs: ${INCLUDE_DIRECTORIES}")
|
|
|
|
IF(APPLE)
|
|
SET(PLATFORM_SPECIFIC_DEFINES "-DHAVE_SYS_IOCTL_H")
|
|
ELSEIF(WIN32)
|
|
SET(PLATFORM_SPECIFIC_DEFINES "-DX11_AVAILABLE")
|
|
ELSE()
|
|
SET(PLATFORM_SPECIFIC_DEFINES "-DX11_AVAILABLE -DHAVE_SYS_IOCTL_H")
|
|
ENDIF()
|
|
|
|
SET_SOURCE_FILES_PROPERTIES(${MG_SOURCE_FILES} PROPERTIES COMPILE_FLAGS
|
|
"${PLATFORM_SPECIFIC_DEFINES} ${STREFLOP_PROPERTIES} ${CXXFLAGS}")
|
|
|
|
SET_SOURCE_FILES_PROPERTIES(${MG_INCLUDE_FILES} PROPERTIES HEADER_FILE_ONLY 1)
|
|
|
|
OPTION(WANT_DEV_OUTPATH "use developer friendly output paths" OFF)
|
|
IF(WANT_DEV_OUTPATH)
|
|
IF(UNIX AND NOT APPLE)
|
|
SET(EXECUTABLE_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/mk/linux/)
|
|
ELSEIF(UNIX AND APPLE)
|
|
SET(EXECUTABLE_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/mk/macosx/)
|
|
ELSE()
|
|
SET(EXECUTABLE_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/data/glest_game/)
|
|
ENDIF()
|
|
ENDIF()
|
|
|
|
MESSAGE(STATUS "EXTERNAL_LIBS = [${EXTERNAL_LIBS}]")
|
|
|
|
MESSAGE(STATUS "***Note: The final output path for the MegaGlest engine will be [${EXECUTABLE_OUTPUT_PATH}]")
|
|
|
|
SET_SOURCE_FILES_PROPERTIES(${MG_INCLUDE_FILES} PROPERTIES HEADER_FILE_ONLY 1)
|
|
|
|
ADD_EXECUTABLE(${TARGET_NAME} ${MG_SOURCE_FILES} ${MG_INCLUDE_FILES})
|
|
|
|
IF(NOT WIN32)
|
|
IF(WANT_STREFLOP)
|
|
TARGET_LINK_LIBRARIES(${TARGET_NAME} ${MG_STREFLOP})
|
|
ENDIF()
|
|
TARGET_LINK_LIBRARIES(${TARGET_NAME} libmegaglest)
|
|
ENDIF()
|
|
|
|
TARGET_LINK_LIBRARIES(${TARGET_NAME} ${EXTERNAL_LIBS})
|
|
IF(NOT "${CMAKE_GENERATOR}" STREQUAL "Xcode")
|
|
# Run the unit tests after build
|
|
IF(EXISTS ${XVFB_EXEC})
|
|
MESSAGE("***-- Found xvfb-run: ${XVFB_EXEC} will run tests with it.")
|
|
|
|
add_custom_command(TARGET ${TARGET_NAME} POST_BUILD
|
|
COMMAND ${XVFB_EXEC} --auto-servernum --server-num=770 ${EXECUTABLE_OUTPUT_PATH}${TARGET_NAME}
|
|
COMMENT "***-- Found MegaGlest test runner: ${TARGET_NAME} about to run unit tests via xvfb...")
|
|
ELSE()
|
|
add_custom_command(TARGET ${TARGET_NAME} POST_BUILD
|
|
COMMAND ${EXECUTABLE_OUTPUT_PATH}${TARGET_NAME}
|
|
COMMENT "***-- Found MegaGlest test runner: ${TARGET_NAME} about to run unit tests...")
|
|
ENDIF()
|
|
ENDIF()
|
|
|
|
ENDIF()
|