Re #683 Added support for building with missing contents in source tree + OPTION_CHECK_CONTENTS CMake option to disable it when usefull ; defaults to Off

git-svn-id: https://svn.code.sf.net/p/speed-dreams/code/trunk@4931 30fe4595-0a0c-4342-8851-515496e4dcbd

Former-commit-id: e89e21abb38e60cbb84ac71fa326a46fa55467ef
Former-commit-id: c8eb5c8c63257e240e9e050e7551250f026f14fa
This commit is contained in:
pouillot 2012-09-11 18:33:31 +00:00
parent 4ec8a1b526
commit cdc3d95843
4 changed files with 230 additions and 173 deletions

View file

@ -306,26 +306,36 @@ MACRO(ROBOT_MODULE)
# Install clone robot modules shared libraries (use ldconfig version naming scheme under Linux)
IF(RBM_HAS_CLONENAMES AND RBM_CLONENAMES)
GET_TARGET_PROPERTY(MODLOC ${RBM_NAME} LOCATION)
FOREACH(CLONENAME ${RBM_CLONENAMES})
SET(CLONE_MODLOC ${CLONENAME}${CMAKE_SHARED_LIBRARY_SUFFIX})
IF(FALSE)
#IF(UNIX)
# Might not work with GCC 4.5 or + (see above)
ADD_CUSTOM_COMMAND(TARGET ${RBM_NAME} POST_BUILD
COMMAND ${CMAKE_COMMAND} -E copy ${MODLOC} ${CLONE_MODLOC}.${RBM_VERSION})
ADD_CUSTOM_COMMAND(TARGET ${RBM_NAME} POST_BUILD
COMMAND ${CMAKE_COMMAND} -E create_symlink ${CLONE_MODLOC}.${RBM_VERSION} ${CLONE_MODLOC}.${RBM_SOVERSION}
COMMAND ${CMAKE_COMMAND} -E create_symlink ${CLONE_MODLOC}.${RBM_SOVERSION} ${CLONE_MODLOC})
SD_INSTALL_FILES(LIB drivers/${CLONENAME} PREFIX ${CMAKE_CURRENT_BINARY_DIR}
FILES ${CLONE_MODLOC} ${CLONE_MODLOC}.${RBM_SOVERSION} ${CLONE_MODLOC}.${RBM_VERSION} )
ELSE()
ADD_CUSTOM_COMMAND(TARGET ${RBM_NAME} POST_BUILD
COMMAND ${CMAKE_COMMAND} -E copy ${MODLOC} ${CLONE_MODLOC})
SD_INSTALL_FILES(LIB drivers/${CLONENAME} PREFIX ${CMAKE_CURRENT_BINARY_DIR}
FILES ${CLONE_MODLOC})
ENDIF()
# Check contents if specified (because SD_INSTALL_FILES(LIB ...) doesn't do it itself).
IF(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/${CLONENAME} OR OPTION_CHECK_CONTENTS)
SET(CLONE_MODLOC ${CLONENAME}${CMAKE_SHARED_LIBRARY_SUFFIX})
IF(FALSE)
#IF(UNIX)
# Might not work with GCC 4.5 or + (see above)
ADD_CUSTOM_COMMAND(TARGET ${RBM_NAME} POST_BUILD
COMMAND ${CMAKE_COMMAND} -E copy ${MODLOC} ${CLONE_MODLOC}.${RBM_VERSION})
ADD_CUSTOM_COMMAND(TARGET ${RBM_NAME} POST_BUILD
COMMAND ${CMAKE_COMMAND} -E create_symlink ${CLONE_MODLOC}.${RBM_VERSION} ${CLONE_MODLOC}.${RBM_SOVERSION}
COMMAND ${CMAKE_COMMAND} -E create_symlink ${CLONE_MODLOC}.${RBM_SOVERSION} ${CLONE_MODLOC})
SD_INSTALL_FILES(LIB drivers/${CLONENAME} PREFIX ${CMAKE_CURRENT_BINARY_DIR}
FILES ${CLONE_MODLOC} ${CLONE_MODLOC}.${RBM_SOVERSION} ${CLONE_MODLOC}.${RBM_VERSION} )
ELSE()
ADD_CUSTOM_COMMAND(TARGET ${RBM_NAME} POST_BUILD
COMMAND ${CMAKE_COMMAND} -E copy ${MODLOC} ${CLONE_MODLOC})
SD_INSTALL_FILES(LIB drivers/${CLONENAME} PREFIX ${CMAKE_CURRENT_BINARY_DIR}
FILES ${CLONE_MODLOC})
ENDIF()
ENDIF() # Contents checking.
ENDFOREACH(CLONENAME ${RBM_CLONENAMES})
ENDIF()
ENDMACRO(ROBOT_MODULE)
@ -378,12 +388,12 @@ MACRO(ROBOT_DATA)
# Install specified files.
IF(RBD_IS_USER)
SD_INSTALL_DIRECTORIES(DATA drivers/${RBD_NAME} USER drivers/${RBD_NAME}
PREFIX ${RBD_PREFIX} DIRECTORIES ${RBD_SUBDIRS}
PATTERNS ${RBD_PATTERNS})
PREFIX ${RBD_PREFIX} DIRECTORIES ${RBD_SUBDIRS}
PATTERNS ${RBD_PATTERNS})
ELSE()
SD_INSTALL_DIRECTORIES(DATA drivers/${RBD_NAME}
PREFIX ${RBD_PREFIX} DIRECTORIES ${RBD_SUBDIRS}
PATTERNS ${RBD_PATTERNS})
PREFIX ${RBD_PREFIX} DIRECTORIES ${RBD_SUBDIRS}
PATTERNS ${RBD_PATTERNS})
ENDIF()
ENDIF(RBD_HAS_SUBDIRS AND RBD_SUBDIRS)
@ -438,9 +448,9 @@ MACRO(ADD_INTERFACE_INCLUDEDIR)
ENDIF(IN_SOURCETREE)
FIND_PATH(INTERFACE_INCLUDE_DIR raceman.h
PATHS ${INCLUDE_CANDIDATE} /usr/include /usr/local/include NO_DEFAULT_PATH)
PATHS ${INCLUDE_CANDIDATE} /usr/include /usr/local/include NO_DEFAULT_PATH)
FIND_PATH(INTERFACE_INCLUDE_DIR raceman.h
PATHS ${INCLUDE_CANDIDATE} /usr/include /usr/local/include)
PATHS ${INCLUDE_CANDIDATE} /usr/include /usr/local/include)
MARK_AS_ADVANCED(INTERFACE_INCLUDE_DIR)
IF(INTERFACE_INCLUDE_DIR)
INCLUDE_DIRECTORIES(${INTERFACE_INCLUDE_DIR})
@ -517,20 +527,20 @@ MACRO(ADD_SDLIB_INCLUDEDIR)
MARK_AS_ADVANCED(SDLIB_MATH_INCLUDE_DIR)
SET(SDLIB_EXTRA_INCLUDEDIR SDLIB_MATH_INCLUDE_DIR)
ELSEIF(SDLIB_LIB STREQUAL "txml")
# Temporary, as TXML will finally get replaced by Expat.
IF(NOT OPTION_3RDPARTY_EXPAT)
# Temporary, as TXML will finally get replaced by Expat.
IF(NOT OPTION_3RDPARTY_EXPAT)
IF(IN_SOURCETREE)
SET(INCLUDE_CANDIDATE ${SOURCE_DIR}/src/libs/txml)
ELSE(IN_SOURCETREE)
SET(INCLUDE_CANDIDATE ${SD_INCLUDEDIR_ABS})
SET(INCLUDE_CANDIDATE ${SD_INCLUDEDIR_ABS})
ENDIF(IN_SOURCETREE)
FIND_PATH(SDLIB_TXML_INCLUDE_DIR xml.h PATHS ${INCLUDE_CANDIDATE} /usr/include /usr/local/include NO_DEFAULT_PATH)
FIND_PATH(SDLIB_TXML_INCLUDE_DIR xml.h PATHS ${INCLUDE_CANDIDATE} /usr/include /usr/local/include)
MARK_AS_ADVANCED(SDLIB_TXML_INCLUDE_DIR)
SET(SDLIB_EXTRA_INCLUDEDIR SDLIB_TXML_INCLUDE_DIR)
ELSE(NOT OPTION_3RDPARTY_EXPAT)
SET(SDLIB_FOUND_LIB FALSE)
ENDIF(NOT OPTION_3RDPARTY_EXPAT)
ELSE(NOT OPTION_3RDPARTY_EXPAT)
SET(SDLIB_FOUND_LIB FALSE)
ENDIF(NOT OPTION_3RDPARTY_EXPAT)
ELSEIF(SDLIB_LIB STREQUAL "robottools")
IF(IN_SOURCETREE)
SET(INCLUDE_CANDIDATE ${SOURCE_DIR}/src/libs/robottools)
@ -622,13 +632,13 @@ MACRO(ADD_SDLIB_LIBRARY TARGET)
ENDIF(SDLIB_LIB STREQUAL "OPTIONAL" OR SDLIB_LIB STREQUAL "STATIC")
IF(SDLIB_LIB STREQUAL "txml" AND OPTION_3RDPARTY_EXPAT)
SET(SDLIB_IGNORE TRUE) #Ignore: Use Expat
ENDIF(SDLIB_LIB STREQUAL "txml" AND OPTION_3RDPARTY_EXPAT)
SET(SDLIB_IGNORE TRUE) #Ignore: Use Expat
ENDIF(SDLIB_LIB STREQUAL "txml" AND OPTION_3RDPARTY_EXPAT)
IF(SDLIB_LIB STREQUAL "solid" AND OPTION_3RDPARTY_SOLID)
SET(SDLIB_IGNORE TRUE) #Ignore: Use 3rd party SOLID
ENDIF(SDLIB_LIB STREQUAL "solid" AND OPTION_3RDPARTY_SOLID)
SET(SDLIB_IGNORE TRUE) #Ignore: Use 3rd party SOLID
ENDIF(SDLIB_LIB STREQUAL "solid" AND OPTION_3RDPARTY_SOLID)
IF(NOT SDLIB_IGNORE)
SET(SDLIB_FOUND_LIB TRUE)
@ -1127,6 +1137,9 @@ MACRO(ADD_SD_COMPILE_OPTIONS)
IF(NOT _ALREADY_DONE)
# CMake options.
SET(OPTION_CHECK_CONTENTS false CACHE BOOL "Set to On if you don't want the build to be stopped by missing optional contents folders")
MARK_AS_ADVANCED(OPTION_CHECK_CONTENTS)
SET(OPTION_OFFICIAL_ONLY false CACHE BOOL "Build / install only officially released contents")
SET(OPTION_FORCE_DEBUG false CACHE BOOL "Force debug symbols even in Release build (Automatic in Debug builds)")
@ -1157,24 +1170,24 @@ MACRO(ADD_SD_COMPILE_OPTIONS)
ENDIF(UNIX)
SET(OPTION_AUTOVERSION true CACHE BOOL "Enable automatic computation of the version from SVN source tree")
# Custom 3rdParty location for some Windows builds (standard CMake Find<package> macros
# can't find it, so we needed another solution : see FindCustom3rdParty.cmake).
IF(MSVC)
SET(_OPTION_CUSTOM_3RDPARTY true) # Always needed for MSVC compilers.
ELSEIF(MINGW)
IF(CMAKE_GENERATOR STREQUAL "MSYS Makefiles")
# Not needed with "MSYS Makefiles" generator when using MinGW
# (3rd party libs assumed to be installed in standard location /usr/local).
SET(_OPTION_CUSTOM_3RDPARTY false)
ELSE(CMAKE_GENERATOR STREQUAL "MSYS Makefiles")
# Just as for MSVC builds : special location.
SET(_OPTION_CUSTOM_3RDPARTY true)
ENDIF(CMAKE_GENERATOR STREQUAL "MSYS Makefiles")
ENDIF(MSVC)
# Custom 3rdParty location for some Windows builds (standard CMake Find<package> macros
# can't find it, so we needed another solution : see FindCustom3rdParty.cmake).
IF(MSVC)
SET(_OPTION_CUSTOM_3RDPARTY true) # Always needed for MSVC compilers.
ELSEIF(MINGW)
IF(CMAKE_GENERATOR STREQUAL "MSYS Makefiles")
# Not needed with "MSYS Makefiles" generator when using MinGW
# (3rd party libs assumed to be installed in standard location /usr/local).
SET(_OPTION_CUSTOM_3RDPARTY false)
ELSE(CMAKE_GENERATOR STREQUAL "MSYS Makefiles")
# Just as for MSVC builds : special location.
SET(_OPTION_CUSTOM_3RDPARTY true)
ENDIF(CMAKE_GENERATOR STREQUAL "MSYS Makefiles")
ENDIF(MSVC)
SET(OPTION_CUSTOM_3RDPARTY ${_OPTION_CUSTOM_3RDPARTY} CACHE BOOL "Set to ON to use 3rdParty prebuilt API located in <PROJECT_SOURCE_DIR>/../3rdparty")
MARK_AS_ADVANCED(OPTION_CUSTOM_3RDPARTY)
SET(OPTION_CUSTOM_3RDPARTY ${_OPTION_CUSTOM_3RDPARTY} CACHE BOOL "Set to ON to use 3rdParty prebuilt API located in <PROJECT_SOURCE_DIR>/../3rdparty")
MARK_AS_ADVANCED(OPTION_CUSTOM_3RDPARTY)
# Compiler definitions (needs more comments. Is it needed under Windows ?).
ADD_DEFINITIONS(-D_SVID_SOURCE -D_BSD_SOURCE -DSHM)
@ -1238,6 +1251,19 @@ MACRO(ADD_SD_COMPILE_OPTIONS)
ENDMACRO(ADD_SD_COMPILE_OPTIONS)
# Use as a replacement of native ADD_DIRECTORY if the target folder may be optional
# (if it is actually not there, and OPTION_CHECK_CONTENTS is Off,
# then the build will continue with a simple status message).
MACRO(SD_ADD_SUBDIRECTORY DIR_PATH)
IF(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/${DIR_PATH} OR OPTION_CHECK_CONTENTS)
ADD_SUBDIRECTORY(${DIR_PATH})
ELSE()
MESSAGE(STATUS "Note : Won't build missing dir. ${DIR_PATH}")
ENDIF()
ENDMACRO(SD_ADD_SUBDIRECTORY PATH)
MACRO(SD_INSTALL_CAR CARNAME)
SET(SDIC_FILES ${CARNAME}.xml ${ARGN})
@ -1283,6 +1309,7 @@ MACRO(SD_INSTALL_TRACK TRACKNAME CATEGORY)
ENDMACRO(SD_INSTALL_TRACK TRACKNAME CATEGORY)
# Data/Lib/Bin/Include files installation (with user settings registration for data files)
# Note: Missing files will be skipped if not there and OPTION_CHECK_CONTENTS is Off.
# Args:
# DATA : Data subdirectory where to install specified data files
# LIB : Lib subdirectory where to install specified files/targets
@ -1387,13 +1414,29 @@ MACRO(SD_INSTALL_FILES)
# Prepend prefix to files if specified.
SET(REAL_FILES) # Reset the list (remember, it's a CMakeLists.txt global variable :-()
IF(HAS_FILES)
IF(HAS_PREFIX)
FOREACH(FILE ${FILES})
LIST(APPEND REAL_FILES ${PREFIX}/${FILE})
ENDFOREACH()
ELSE()
SET(REAL_FILES ${FILES})
ENDIF()
SET(_FILES) # Same.
FOREACH(FILE ${FILES})
#MESSAGE(STATUS "SD_INSTALL_FILES: ${FILE}")
IF(HAS_PREFIX)
SET(_FILE ${PREFIX}/${FILE})
ELSE()
SET(_FILE ${FILE})
ENDIF()
# Contents check for non-generated files if specified.
IF(NOT IS_ABSOLUTE ${_FILE})
SET(_FILE "${CMAKE_CURRENT_SOURCE_DIR}/${_FILE}")
ENDIF()
IF(IS_LIB OR IS_BIN OR EXISTS ${_FILE} OR OPTION_CHECK_CONTENTS)
LIST(APPEND REAL_FILES ${_FILE})
LIST(APPEND _FILES ${FILE})
ELSE()
IF(IS_ABSOLUTE ${_FILE}) # Make message less long : remove useless source dir path.
STRING(REPLACE "${CMAKE_CURRENT_SOURCE_DIR}/" "" _FILE "${_FILE}")
ENDIF()
MESSAGE(STATUS "Note : Won't install missing file ${_FILE}")
ENDIF()
ENDFOREACH()
SET(FILES ${_FILES})
ENDIF()
# Install files
@ -1419,7 +1462,7 @@ MACRO(SD_INSTALL_FILES)
# In order to run xmlversion.exe in the build tree (see below), under Windows,
# we nearly always have to copy all dependencies next to it (tgf, txml or Expat, SDL, compiler run-time).
GET_TARGET_PROPERTY(TGF_LIB tgf LOCATION)
IF(NOT OPTION_3RDPARTY_EXPAT)
IF(NOT OPTION_3RDPARTY_EXPAT)
GET_TARGET_PROPERTY(TXML_LIB txml LOCATION)
ELSE(NOT OPTION_3RDPARTY_EXPAT)
FIND_PACKAGE(EXPAT)
@ -1428,7 +1471,7 @@ MACRO(SD_INSTALL_FILES)
SET(EXPAT_LIB ${EXPAT_LIBPATH}/../bin/${EXPAT_LIBNAME}${CMAKE_SHARED_LIBRARY_SUFFIX})
ENDIF(NOT OPTION_3RDPARTY_EXPAT)
FIND_PACKAGE(SDL)
SET(SDL_LIBPATHNAME "${SDL_LIBRARY}")
SET(SDL_LIBPATHNAME "${SDL_LIBRARY}")
IF(MINGW)
# Multiple lib specs fuss ... find the one
STRING(REGEX REPLACE ".*;([^;]+dll[^;]*);.*" "\\1" SDL_LIBPATHNAME "${SDL_LIBPATHNAME}")
@ -1473,55 +1516,55 @@ MACRO(SD_INSTALL_FILES)
ENDIF()
FOREACH(FILE ${FILES})
GET_FILENAME_COMPONENT(FILENAME \${FILE} NAME)
EXECUTE_PROCESS(COMMAND \"\${XMLVERSION_EXE}\" \"\${SD_DATADIR_ABS}/version.xml\" \"${DATA_PATH}\${FILENAME}\" \"${USER_PATH}/\${FILENAME}\" \"\${SD_DATADIR_ABS}\" RESULT_VARIABLE XMLVERSTATUS)
IF(XMLVERSTATUS)
MESSAGE(FATAL_ERROR \"Error: xmlversion failed\")
ENDIF()
EXECUTE_PROCESS(COMMAND \"\${XMLVERSION_EXE}\" \"\${SD_DATADIR_ABS}/version.xml\" \"${DATA_PATH}\${FILENAME}\" \"${USER_PATH}/\${FILENAME}\" \"\${SD_DATADIR_ABS}\" RESULT_VARIABLE XMLVERSTATUS)
IF(XMLVERSTATUS)
MESSAGE(FATAL_ERROR \"Error: xmlversion failed : \${XMLVERSTATUS}\")
ENDIF()
ENDFOREACH()")
ELSE(MSVC)
INSTALL(CODE
"FILE(READ ${CMAKE_BINARY_DIR}/xmlversion_loc.txt XMLVERSION_EXE)
SET(MINGW ${MINGW})
IF(MINGW)
SET(_LIBS_TO_INSTALL \"${TGF_LIB}\")
SET(OPTION_3RDPARTY_EXPAT ${OPTION_3RDPARTY_EXPAT})
IF(NOT OPTION_3RDPARTY_EXPAT)
LIST(APPEND _LIBS_TO_INSTALL \"${TXML_LIB}\")
ENDIF(NOT OPTION_3RDPARTY_EXPAT)
# CMake configuration for MSYS Makefiles generator assumes that 3rd party dependencies are installed
# in standard Linux folders, hence in the PATH ; so no need to install next to xmlversion exe.
IF(NOT CMAKE_GENERATOR STREQUAL \"MSYS Makefiles\")
IF(OPTION_3RDPARTY_EXPAT)
LIST(APPEND _LIBS_TO_INSTALL \"${EXPAT_LIB}\")
ENDIF(OPTION_3RDPARTY_EXPAT)
LIST(APPEND _LIBS_TO_INSTALL \"${SDL_LIB}\")
GET_FILENAME_COMPONENT(_MINGW_BINDIR \"${CMAKE_CXX_COMPILER}\" PATH)
LIST(APPEND _LIBS_TO_INSTALL \"\${_MINGW_BINDIR}/libstdc++-6.dll\" \"\${_MINGW_BINDIR}/libgcc_s_dw2-1.dll\")
ENDIF(NOT CMAKE_GENERATOR STREQUAL \"MSYS Makefiles\")
GET_FILENAME_COMPONENT(XMLVERSION_DIR \"\${XMLVERSION_EXE}\" PATH)
MESSAGE(STATUS \"xmlversion : Libs to install=\${_LIBS_TO_INSTALL}\")
FILE(INSTALL DESTINATION \"\${XMLVERSION_DIR}\" TYPE FILE FILES \${_LIBS_TO_INSTALL})
ENDIF(MINGW)
SET(SD_DATADIR_ABS \"${SD_DATADIR}\")
IF(NOT IS_ABSOLUTE \${SD_DATADIR_ABS})
GET_FILENAME_COMPONENT(SD_DATADIR_ABS \"\${CMAKE_INSTALL_PREFIX}/\${SD_DATADIR_ABS}\" ABSOLUTE)
ENDIF()
# Why this path correction here ? This needs a comment !
SET(CUR_DESTDIR \"\$ENV{DESTDIR}\")
IF(CUR_DESTDIR MATCHES \"[^/]\")
STRING(REGEX REPLACE \"^(.*[^/])/*$\" \"\\\\1\" CUR_DESTDIR_CORR \"\${CUR_DESTDIR}\")
ELSE(CUR_DESTDIR MATCHES \"[^/]\")
SET(CUR_DESTDIR_CORR \"\")
ENDIF(CUR_DESTDIR MATCHES \"[^/]\")
FOREACH(FILE ${FILES})
GET_FILENAME_COMPONENT(FILENAME \${FILE} NAME)
EXECUTE_PROCESS(COMMAND \"\${XMLVERSION_EXE}\" \"\${CUR_DESTDIR_CORR}\${SD_DATADIR_ABS}/version.xml\" \"${DATA_PATH}\${FILENAME}\" \"${USER_PATH}/\${FILENAME}\" \"\${CUR_DESTDIR_CORR}\${SD_DATADIR_ABS}\" RESULT_VARIABLE XMLVERSTATUS)
IF(XMLVERSTATUS)
MESSAGE(FATAL_ERROR \"Error: xmlversion failed \$ENV(PATH)\")
ENDIF(XMLVERSTATUS)
ENDFOREACH()")
"FILE(READ ${CMAKE_BINARY_DIR}/xmlversion_loc.txt XMLVERSION_EXE)
SET(MINGW ${MINGW})
IF(MINGW)
SET(_LIBS_TO_INSTALL \"${TGF_LIB}\")
SET(OPTION_3RDPARTY_EXPAT ${OPTION_3RDPARTY_EXPAT})
IF(NOT OPTION_3RDPARTY_EXPAT)
LIST(APPEND _LIBS_TO_INSTALL \"${TXML_LIB}\")
ENDIF(NOT OPTION_3RDPARTY_EXPAT)
# CMake configuration for MSYS Makefiles generator assumes that 3rd party dependencies are installed
# in standard Linux folders, hence in the PATH ; so no need to install next to xmlversion exe.
IF(NOT CMAKE_GENERATOR STREQUAL \"MSYS Makefiles\")
IF(OPTION_3RDPARTY_EXPAT)
LIST(APPEND _LIBS_TO_INSTALL \"${EXPAT_LIB}\")
ENDIF(OPTION_3RDPARTY_EXPAT)
LIST(APPEND _LIBS_TO_INSTALL \"${SDL_LIB}\")
GET_FILENAME_COMPONENT(_MINGW_BINDIR \"${CMAKE_CXX_COMPILER}\" PATH)
LIST(APPEND _LIBS_TO_INSTALL \"\${_MINGW_BINDIR}/libstdc++-6.dll\" \"\${_MINGW_BINDIR}/libgcc_s_dw2-1.dll\")
ENDIF(NOT CMAKE_GENERATOR STREQUAL \"MSYS Makefiles\")
GET_FILENAME_COMPONENT(XMLVERSION_DIR \"\${XMLVERSION_EXE}\" PATH)
MESSAGE(STATUS \"xmlversion : Libs to install=\${_LIBS_TO_INSTALL}\")
FILE(INSTALL DESTINATION \"\${XMLVERSION_DIR}\" TYPE FILE FILES \${_LIBS_TO_INSTALL})
ENDIF(MINGW)
SET(SD_DATADIR_ABS \"${SD_DATADIR}\")
IF(NOT IS_ABSOLUTE \${SD_DATADIR_ABS})
GET_FILENAME_COMPONENT(SD_DATADIR_ABS \"\${CMAKE_INSTALL_PREFIX}/\${SD_DATADIR_ABS}\" ABSOLUTE)
ENDIF()
# Why this path correction here ? This needs a comment !
SET(CUR_DESTDIR \"\$ENV{DESTDIR}\")
IF(CUR_DESTDIR MATCHES \"[^/]\")
STRING(REGEX REPLACE \"^(.*[^/])/*$\" \"\\\\1\" CUR_DESTDIR_CORR \"\${CUR_DESTDIR}\")
ELSE(CUR_DESTDIR MATCHES \"[^/]\")
SET(CUR_DESTDIR_CORR \"\")
ENDIF(CUR_DESTDIR MATCHES \"[^/]\")
FOREACH(FILE ${FILES})
GET_FILENAME_COMPONENT(FILENAME \${FILE} NAME)
EXECUTE_PROCESS(COMMAND \"\${XMLVERSION_EXE}\" \"\${CUR_DESTDIR_CORR}\${SD_DATADIR_ABS}/version.xml\" \"${DATA_PATH}\${FILENAME}\" \"${USER_PATH}/\${FILENAME}\" \"\${CUR_DESTDIR_CORR}\${SD_DATADIR_ABS}\" RESULT_VARIABLE XMLVERSTATUS)
IF(XMLVERSTATUS)
MESSAGE(FATAL_ERROR \"Error: xmlversion failed : \${XMLVERSTATUS}\")
ENDIF(XMLVERSTATUS)
ENDFOREACH()")
ENDIF(MSVC)
@ -1530,6 +1573,7 @@ MACRO(SD_INSTALL_FILES)
ENDMACRO(SD_INSTALL_FILES)
# Directory installation with pattern matching on files and user settings registration
# Note: Missing dirs will be skipped if not there and OPTION_CHECK_CONTENTS is Off.
# Args:
# DATA : Data subdirectory where to install specified sub-dirs
# USER : User settings subdirectory where to install/update specified sub-dirs at run-time
@ -1591,6 +1635,23 @@ MACRO(SD_INSTALL_DIRECTORIES)
SET(DEST_ALL "${SD_DATADIR}/${DATA_PATH}")
ENDIF()
# Check / filter contents if specified
SET(_DIRECTORIES)
FOREACH(DIRECTORY ${DIRECTORIES})
#MESSAGE(STATUS "SD_INSTALL_DIRS: ${DIRECTORY}")
IF(NOT IS_ABSOLUTE ${DIRECTORY})
SET(_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/${PREFIX}${DIRECTORY}")
ELSE()
SET(_DIRECTORY "${DIRECTORY}")
ENDIF()
IF(EXISTS ${_DIRECTORY} OR OPTION_CHECK_CONTENTS)
LIST(APPEND _DIRECTORIES ${DIRECTORY})
ELSE()
MESSAGE(STATUS "Note : Won't install missing dir. ${PREFIX}${DIRECTORY}")
ENDIF()
ENDFOREACH()
SET(DIRECTORIES ${_DIRECTORIES})
# Install selected files into the data dir.
FOREACH(DIRECTORY ${DIRECTORIES})
SET(GLOB_EXPRS)
@ -1621,7 +1682,7 @@ MACRO(SD_INSTALL_DIRECTORIES)
# In order to run xmlversion.exe in the build tree (see below), under Windows,
# we nearly always have to copy all dependencies next to it (tgf, txml or Expat, SDL, compiler run-time).
GET_TARGET_PROPERTY(TGF_LIB tgf LOCATION)
IF(NOT OPTION_3RDPARTY_EXPAT)
IF(NOT OPTION_3RDPARTY_EXPAT)
GET_TARGET_PROPERTY(TXML_LIB txml LOCATION)
ELSE(NOT OPTION_3RDPARTY_EXPAT)
FIND_PACKAGE(EXPAT)
@ -1633,7 +1694,7 @@ MACRO(SD_INSTALL_DIRECTORIES)
SET(EXPAT_LIB ${EXPAT_LIBPATH}/../bin/${EXPAT_LIBNAME}${CMAKE_SHARED_LIBRARY_SUFFIX})
ENDIF(NOT OPTION_3RDPARTY_EXPAT)
FIND_PACKAGE(SDL)
SET(SDL_LIBPATHNAME "${SDL_LIBRARY}")
SET(SDL_LIBPATHNAME "${SDL_LIBRARY}")
IF(MINGW)
# Multiple lib specs fuss ... find the one
STRING(REGEX REPLACE ".*;([^;]+dll[^;]*);.*" "\\1" SDL_LIBPATHNAME "${SDL_LIBPATHNAME}")
@ -1686,7 +1747,7 @@ MACRO(SD_INSTALL_DIRECTORIES)
IF(NOT \"\${FILE}\" MATCHES \"\\\\.svn\")
EXECUTE_PROCESS(COMMAND \"\${XMLVERSION_EXE}\" \"\${SD_DATADIR_ABS}/version.xml\" \"${DEST_ALL}\${FILE}\" \"${USER_PATH}/\${FILE}\" \"\${SD_DATADIR_ABS}\" RESULT_VARIABLE XMLVERSTATUS)
IF(XMLVERSTATUS)
MESSAGE(FATAL_ERROR \"Error: xmlversion failed\")
MESSAGE(FATAL_ERROR \"Error: xmlversion failed : \${XMLVERSTATUS}\")
ENDIF(XMLVERSTATUS)
ENDIF()
ENDFOREACH()
@ -1695,54 +1756,54 @@ MACRO(SD_INSTALL_DIRECTORIES)
ELSE(MSVC)
INSTALL(CODE
"FILE(READ \"${CMAKE_BINARY_DIR}/xmlversion_loc.txt\" XMLVERSION_EXE)
SET(MINGW ${MINGW})
IF(MINGW)
SET(_LIBS_TO_INSTALL \"${TGF_LIB}\")
SET(OPTION_3RDPARTY_EXPAT ${OPTION_3RDPARTY_EXPAT})
IF(NOT OPTION_3RDPARTY_EXPAT)
LIST(APPEND _LIBS_TO_INSTALL \"${TXML_LIB}\")
ENDIF(NOT OPTION_3RDPARTY_EXPAT)
# CMake configuration for MSYS Makefiles generator assumes that 3rd party dependencies are installed
# in standard Linux folders, hence in the PATH ; so no need to install next to xmlversion exe.
IF(NOT CMAKE_GENERATOR STREQUAL \"MSYS Makefiles\")
IF(OPTION_3RDPARTY_EXPAT)
LIST(APPEND _LIBS_TO_INSTALL \"${EXPAT_LIB}\")
ENDIF(OPTION_3RDPARTY_EXPAT)
LIST(APPEND _LIBS_TO_INSTALL \"${SDL_LIB}\")
GET_FILENAME_COMPONENT(_MINGW_BINDIR \"${CMAKE_CXX_COMPILER}\" PATH)
LIST(APPEND _LIBS_TO_INSTALL \"\${_MINGW_BINDIR}/libstdc++-6.dll\" \"\${_MINGW_BINDIR}/libgcc_s_dw2-1.dll\")
ENDIF(NOT CMAKE_GENERATOR STREQUAL \"MSYS Makefiles\")
MESSAGE(STATUS \"xmlversion : Libs to install=\${_LIBS_TO_INSTALL}\")
GET_FILENAME_COMPONENT(XMLVERSION_DIR \"\${XMLVERSION_EXE}\" PATH)
FILE(INSTALL DESTINATION \"\${XMLVERSION_DIR}\" TYPE FILE FILES \${_LIBS_TO_INSTALL})
ENDIF(MINGW)
SET(SD_DATADIR_ABS \"${SD_DATADIR}\")
IF(NOT IS_ABSOLUTE \${SD_DATADIR_ABS})
GET_FILENAME_COMPONENT(SD_DATADIR_ABS \"\${CMAKE_INSTALL_PREFIX}/\${SD_DATADIR_ABS}\" ABSOLUTE)
ENDIF()
# Why this path correction here ? This needs a comment !
SET(CUR_DESTDIR \"\$ENV{DESTDIR}\")
IF(CUR_DESTDIR MATCHES \"[^/]\")
STRING(REGEX REPLACE \"^(.*[^/])/*$\" \"\\\\1\" CUR_DESTDIR_CORR \"\${CUR_DESTDIR}\")
ELSE(CUR_DESTDIR MATCHES \"[^/]\")
SET(CUR_DESTDIR_CORR \"\")
ENDIF(CUR_DESTDIR MATCHES \"[^/]\")
FOREACH(DIRECTORY ${DIRECTORIES})
SET(GLOB_EXPRS)
FOREACH(PATTERN ${PATTERNS})
LIST(APPEND GLOB_EXPRS \"${PREFIX}\${DIRECTORY}/\${PATTERN}\")
ENDFOREACH()
FILE(GLOB_RECURSE FILES RELATIVE \"${CMAKE_CURRENT_SOURCE_DIR}${POSTFIX} ${CMAKE_CURRENT_SOURCE_DIR}${POSTFIX}/\${GLOB_EXPRS}\")
FOREACH(FILE \${FILES})
IF(NOT \"\${FILE}\" MATCHES \"\\\\.svn\")
EXECUTE_PROCESS(COMMAND \"\${XMLVERSION_EXE}\" \"\${CUR_DESTDIR_CORR}\${SD_DATADIR_ABS}/version.xml\" \"${DEST_ALL}\${FILE}\" \"${USER_PATH}/\${FILE}\" \"\${CUR_DESTDIR_CORR}\${SD_DATADIR_ABS}\" RESULT_VARIABLE XMLVERSTATUS)
IF(XMLVERSTATUS)
MESSAGE(FATAL_ERROR \"Error: xmlversion failed\")
ENDIF(XMLVERSTATUS)
ENDIF()
ENDFOREACH()
ENDFOREACH()")
"FILE(READ \"${CMAKE_BINARY_DIR}/xmlversion_loc.txt\" XMLVERSION_EXE)
SET(MINGW ${MINGW})
IF(MINGW)
SET(_LIBS_TO_INSTALL \"${TGF_LIB}\")
SET(OPTION_3RDPARTY_EXPAT ${OPTION_3RDPARTY_EXPAT})
IF(NOT OPTION_3RDPARTY_EXPAT)
LIST(APPEND _LIBS_TO_INSTALL \"${TXML_LIB}\")
ENDIF(NOT OPTION_3RDPARTY_EXPAT)
# CMake configuration for MSYS Makefiles generator assumes that 3rd party dependencies are installed
# in standard Linux folders, hence in the PATH ; so no need to install next to xmlversion exe.
IF(NOT CMAKE_GENERATOR STREQUAL \"MSYS Makefiles\")
IF(OPTION_3RDPARTY_EXPAT)
LIST(APPEND _LIBS_TO_INSTALL \"${EXPAT_LIB}\")
ENDIF(OPTION_3RDPARTY_EXPAT)
LIST(APPEND _LIBS_TO_INSTALL \"${SDL_LIB}\")
GET_FILENAME_COMPONENT(_MINGW_BINDIR \"${CMAKE_CXX_COMPILER}\" PATH)
LIST(APPEND _LIBS_TO_INSTALL \"\${_MINGW_BINDIR}/libstdc++-6.dll\" \"\${_MINGW_BINDIR}/libgcc_s_dw2-1.dll\")
ENDIF(NOT CMAKE_GENERATOR STREQUAL \"MSYS Makefiles\")
MESSAGE(STATUS \"xmlversion : Libs to install=\${_LIBS_TO_INSTALL}\")
GET_FILENAME_COMPONENT(XMLVERSION_DIR \"\${XMLVERSION_EXE}\" PATH)
FILE(INSTALL DESTINATION \"\${XMLVERSION_DIR}\" TYPE FILE FILES \${_LIBS_TO_INSTALL})
ENDIF(MINGW)
SET(SD_DATADIR_ABS \"${SD_DATADIR}\")
IF(NOT IS_ABSOLUTE \${SD_DATADIR_ABS})
GET_FILENAME_COMPONENT(SD_DATADIR_ABS \"\${CMAKE_INSTALL_PREFIX}/\${SD_DATADIR_ABS}\" ABSOLUTE)
ENDIF()
# Why this path correction here ? This needs a comment !
SET(CUR_DESTDIR \"\$ENV{DESTDIR}\")
IF(CUR_DESTDIR MATCHES \"[^/]\")
STRING(REGEX REPLACE \"^(.*[^/])/*$\" \"\\\\1\" CUR_DESTDIR_CORR \"\${CUR_DESTDIR}\")
ELSE(CUR_DESTDIR MATCHES \"[^/]\")
SET(CUR_DESTDIR_CORR \"\")
ENDIF(CUR_DESTDIR MATCHES \"[^/]\")
FOREACH(DIRECTORY ${DIRECTORIES})
SET(GLOB_EXPRS)
FOREACH(PATTERN ${PATTERNS})
LIST(APPEND GLOB_EXPRS \"${PREFIX}\${DIRECTORY}/\${PATTERN}\")
ENDFOREACH()
FILE(GLOB_RECURSE FILES RELATIVE \"${CMAKE_CURRENT_SOURCE_DIR}${POSTFIX} ${CMAKE_CURRENT_SOURCE_DIR}${POSTFIX}/\${GLOB_EXPRS}\")
FOREACH(FILE \${FILES})
IF(NOT \"\${FILE}\" MATCHES \"\\\\.svn\")
EXECUTE_PROCESS(COMMAND \"\${XMLVERSION_EXE}\" \"\${CUR_DESTDIR_CORR}\${SD_DATADIR_ABS}/version.xml\" \"${DEST_ALL}\${FILE}\" \"${USER_PATH}/\${FILE}\" \"\${CUR_DESTDIR_CORR}\${SD_DATADIR_ABS}\" RESULT_VARIABLE XMLVERSTATUS)
IF(XMLVERSTATUS)
MESSAGE(FATAL_ERROR \"Error: xmlversion failed : \${XMLVERSTATUS}\")
ENDIF(XMLVERSTATUS)
ENDIF()
ENDFOREACH()
ENDFOREACH()")
ENDIF(MSVC)

View file

@ -1,18 +1,18 @@
INCLUDE(../../cmake/macros.cmake)
# Official robots.
ADD_SUBDIRECTORY(human)
ADD_SUBDIRECTORY(kilo2008)
ADD_SUBDIRECTORY(simplix)
ADD_SUBDIRECTORY(usr)
SD_ADD_SUBDIRECTORY(human)
SD_ADD_SUBDIRECTORY(kilo2008)
SD_ADD_SUBDIRECTORY(simplix)
SD_ADD_SUBDIRECTORY(usr)
# Work-in-progress / unofficial robots.
IF(NOT OPTION_OFFICIAL_ONLY)
ADD_SUBDIRECTORY(networkhuman)
#ADD_SUBDIRECTORY(shadow)
SD_ADD_SUBDIRECTORY(networkhuman)
#SD_ADD_SUBDIRECTORY(shadow)
#ADD_SUBDIRECTORY(bt)
#ADD_SUBDIRECTORY(hymie)
#ADD_SUBDIRECTORY(K1999)
#SD_ADD_SUBDIRECTORY(bt)
#SD_ADD_SUBDIRECTORY(hymie)
#SD_ADD_SUBDIRECTORY(K1999)
ENDIF()

View file

@ -4,7 +4,6 @@ IF(NOT OPTION_3RDPARTY_EXPAT)
ADD_SUBDIRECTORY(txml)
ENDIF(NOT OPTION_3RDPARTY_EXPAT)
ADD_SUBDIRECTORY(tgf)
ADD_SUBDIRECTORY(tgfclient)
ADD_SUBDIRECTORY(tgfdata)
@ -16,8 +15,8 @@ ADD_SUBDIRECTORY(portability)
# Work-in-progress
IF(NOT OPTION_OFFICIAL_ONLY)
ADD_SUBDIRECTORY(ephemeris)
#ADD_SUBDIRECTORY(metar)
SD_ADD_SUBDIRECTORY(ephemeris)
#SD_ADD_SUBDIRECTORY(metar)
ENDIF()

View file

@ -1,15 +1,12 @@
INCLUDE(../../../cmake/macros.cmake)
ADD_SUBDIRECTORY(simuv2.1)
ADD_SUBDIRECTORY(simuv3)
# Should normally becomes obsolete in 2.0.
ADD_SUBDIRECTORY(simuv2)
# Unofficial / obsolete simulation engines.
IF(NOT OPTION_OFFICIAL_ONLY)
#ADD_SUBDIRECTORY(simuv2)
SD_ADD_SUBDIRECTORY(simuv2)
SD_ADD_SUBDIRECTORY(simuv3)
ENDIF()