2023-10-29 16:54:29 +01:00
|
|
|
#CMAKE_MINIMUM_REQUIRED(VERSION 2.8.12 FATAL_ERROR)
|
|
|
|
CMAKE_MINIMUM_REQUIRED(VERSION 3.5 FATAL_ERROR)
|
2010-02-28 10:04:35 +01:00
|
|
|
|
2020-04-01 21:01:27 +02:00
|
|
|
MESSAGE(STATUS CMAKE_VERSION = "${CMAKE_VERSION}")
|
|
|
|
|
2018-11-28 06:06:03 +01:00
|
|
|
IF(POLICY CMP0003)
|
|
|
|
CMAKE_POLICY(SET CMP0003 NEW)
|
|
|
|
ENDIF(POLICY CMP0003)
|
|
|
|
|
2021-04-30 17:44:43 +02:00
|
|
|
IF(POLICY CMP0048)
|
|
|
|
CMAKE_POLICY(SET CMP0048 NEW)
|
|
|
|
ENDIF(POLICY CMP0048)
|
|
|
|
|
2018-11-28 06:06:03 +01:00
|
|
|
IF(POLICY CMP0056)
|
|
|
|
CMAKE_POLICY(SET CMP0056 NEW)
|
|
|
|
ENDIF(POLICY CMP0056)
|
|
|
|
|
|
|
|
IF(POLICY CMP0066)
|
|
|
|
CMAKE_POLICY(SET CMP0066 NEW)
|
|
|
|
ENDIF(POLICY CMP0066)
|
|
|
|
|
2020-12-03 19:35:19 +01:00
|
|
|
IF(POLICY CMP0072)
|
|
|
|
CMAKE_POLICY(SET CMP0072 NEW)
|
|
|
|
ENDIF(POLICY CMP0072)
|
|
|
|
|
2023-04-17 15:40:26 +02:00
|
|
|
IF(APPLE)
|
|
|
|
SET(CMAKE_CXX_STANDARD 11)
|
|
|
|
SET(CMAKE_CXX_STANDARD_REQUIRED True)
|
|
|
|
ENDIF(APPLE)
|
|
|
|
|
2021-04-30 17:44:43 +02:00
|
|
|
IF(NOT ${CMAKE_VERSION} VERSION_LESS "3.0.2")
|
|
|
|
# Speed Dreams project
|
2023-03-13 14:45:07 +01:00
|
|
|
PROJECT(speed-dreams-2 VERSION 2.4.0)
|
2021-04-30 17:44:43 +02:00
|
|
|
ELSE(NOT ${CMAKE_VERSION} VERSION_LESS "3.0.2")
|
|
|
|
# Speed Dreams project
|
|
|
|
PROJECT(speed-dreams-2)
|
|
|
|
|
|
|
|
SET(PROJECT_VERSION_MAJOR 2)
|
2023-03-13 14:45:07 +01:00
|
|
|
SET(PROJECT_VERSION_MINOR 4)
|
2022-10-09 22:14:26 +02:00
|
|
|
SET(PROJECT_VERSION_PATCH 0)
|
2021-04-30 17:44:43 +02:00
|
|
|
SET(PROJECT_VERSION_TWEAK )
|
|
|
|
SET(PROJECT_VERSION ${PROJECT_VERSION_MAJOR})
|
|
|
|
|
|
|
|
IF(DEFINED PROJECT_VERSION_MINOR)
|
|
|
|
SET(PROJECT_VERSION ${PROJECT_VERSION}.${PROJECT_VERSION_MINOR})
|
|
|
|
IF(DEFINED PROJECT_VERSION_PATCH)
|
|
|
|
SET(PROJECT_VERSION ${PROJECT_VERSION}.${PROJECT_VERSION_PATCH})
|
|
|
|
IF(DEFINED PROJECT_VERSION_TWEAK)
|
|
|
|
SET(PROJECT_VERSION ${PROJECT_VERSION}.${PROJECT_VERSION_TWEAK})
|
|
|
|
ENDIF(DEFINED PROJECT_VERSION_TWEAK)
|
|
|
|
ENDIF(DEFINED PROJECT_VERSION_PATCH)
|
|
|
|
ENDIF(DEFINED PROJECT_VERSION_MINOR)
|
2024-07-30 23:45:07 +02:00
|
|
|
|
2021-04-30 17:44:43 +02:00
|
|
|
SET(speed-dreams-2_VERSION ${PROJECT_VERSION})
|
|
|
|
#MESSAGE(WARNING "CMAKE_VERSION ${CMAKE_VERSION} is deprecated")
|
|
|
|
ENDIF(NOT ${CMAKE_VERSION} VERSION_LESS "3.0.2")
|
2010-07-10 23:24:18 +02:00
|
|
|
|
2010-02-28 10:04:35 +01:00
|
|
|
INCLUDE(cmake/macros.cmake)
|
|
|
|
INCLUDE(cmake/checks.cmake)
|
|
|
|
|
|
|
|
CHECK_HEADERS_H()
|
|
|
|
CHECK_FUNCTIONS()
|
|
|
|
CHECK_LIBRARIES()
|
|
|
|
|
2012-01-10 19:18:32 +01:00
|
|
|
# Determine version
|
2010-02-28 10:04:35 +01:00
|
|
|
SET(NEXT_LESSER_VERSION 0) # The next lesser version
|
2021-04-30 17:44:43 +02:00
|
|
|
MATH(EXPR NEXT_MINOR "${PROJECT_VERSION_MINOR} + 1")
|
|
|
|
SET(NEXT_MAJOR_MINOR_VERSION "${PROJECT_VERSION_MAJOR}.${NEXT_MINOR}") # Next major.minor version
|
|
|
|
#MESSAGE(STATUS "NEXT_MAJOR_MINOR_VERSION ${NEXT_MAJOR_MINOR_VERSION}")
|
2010-02-28 10:04:35 +01:00
|
|
|
|
2012-08-19 10:18:52 +02:00
|
|
|
# Uncomment if you don't want automatic SVN version detection
|
|
|
|
# (poor performances under Windows, don't work with git-svn, ...)
|
|
|
|
# SET(OPTION_AUTOVERSION Off)
|
|
|
|
|
2012-01-10 19:18:32 +01:00
|
|
|
IF(NOT OPTION_AUTOVERSION)
|
2024-07-30 23:45:07 +02:00
|
|
|
|
2010-07-03 15:54:26 +02:00
|
|
|
SET(VERSION "${NEXT_MAJOR_MINOR_VERSION}-dev")
|
2012-01-10 19:18:32 +01:00
|
|
|
SET(VERSION_LONG "${VERSION}")
|
2024-07-30 23:45:07 +02:00
|
|
|
|
2012-01-10 19:18:32 +01:00
|
|
|
MESSAGE(STATUS "Version '${VERSION_LONG}' (not auto-detected from SVN source tree)")
|
|
|
|
|
|
|
|
ELSE(NOT OPTION_AUTOVERSION)
|
|
|
|
|
|
|
|
# Use SVN HeadURL property on this CMakeLists.txt file in order to automatically get the current version
|
|
|
|
SET(HEAD_URL "$HeadURL$")
|
|
|
|
|
|
|
|
# Define regular expressions
|
2013-04-14 02:30:45 +02:00
|
|
|
SET(REGEX_TAG "^\\$HeadURL:.*speed-dreams/code/tags/([^/\\$ ]*).*\\$$")
|
|
|
|
SET(REGEX_BUG_BRANCH "^\\$HeadURL:.*speed-dreams/code/branches/([0-9]+\\.[0-9]+)(\\.[xX])?/.*\\$$")
|
|
|
|
SET(REGEX_TRUNK "^\\$HeadURL:.*speed-dreams/code/trunk/.*\\$$")
|
|
|
|
SET(REGEX_BRANCH "^\\$HeadURL:.*speed-dreams/code/branches/([^/\\$ ]*).*\\$$")
|
2012-01-10 19:18:32 +01:00
|
|
|
|
|
|
|
# Check regular expressions
|
|
|
|
STRING(REGEX MATCH "${REGEX_TAG}" VERSION_IS_TAG "${HEAD_URL}")
|
|
|
|
STRING(REGEX MATCH "${REGEX_BUG_BRANCH}" VERSION_IS_BUG_BRANCH "${HEAD_URL}")
|
|
|
|
STRING(REGEX MATCH "${REGEX_TRUNK}" VERSION_IS_TRUNK "${HEAD_URL}")
|
|
|
|
STRING(REGEX MATCH "${REGEX_BRANCH}" VERSION_IS_BRANCH "${HEAD_URL}")
|
|
|
|
|
|
|
|
# See if we need to look at the current SVN revision
|
2010-02-28 10:04:35 +01:00
|
|
|
SET(NEED_SVN_REV TRUE)
|
2012-01-10 19:18:32 +01:00
|
|
|
IF(VERSION_IS_TAG)
|
|
|
|
STRING(REGEX REPLACE "${REGEX_TAG}" "\\1" VERSION "${HEAD_URL}")
|
|
|
|
ELSEIF(VERSION_IS_BUG_BRANCH)
|
|
|
|
STRING(REGEX REPLACE "${REGEX_BUG_BRANCH}" "\\1" TMP_VERSION "${HEAD_URL}")
|
|
|
|
SET(VERSION "${TMP_VERSION}.${NEXT_LESSER_VERSION}-dev")
|
|
|
|
ELSEIF(VERSION_IS_TRUNK)
|
|
|
|
SET(VERSION "${NEXT_MAJOR_MINOR_VERSION}-trunk")
|
|
|
|
ELSEIF(VERSION_IS_BRANCH)
|
|
|
|
STRING(REGEX REPLACE "${REGEX_BRANCH}" "\\1" VERSION "${HEAD_URL}")
|
|
|
|
ELSE(VERSION_IS_TAG)
|
|
|
|
MESSAGE("Warning: Could not determine version name from HeadURL ${HEAD_URL}")
|
|
|
|
SET(VERSION "${NEXT_MAJOR_MINOR_VERSION}-dev")
|
|
|
|
SET(NEED_SVN_REV FALSE)
|
|
|
|
ENDIF(VERSION_IS_TAG)
|
2024-07-30 23:45:07 +02:00
|
|
|
|
2012-01-10 19:18:32 +01:00
|
|
|
# Try to get current SVN revision
|
|
|
|
IF(NEED_SVN_REV)
|
|
|
|
SET(SVN_FIND_REV_FAILED FALSE)
|
|
|
|
FIND_PROGRAM(SVNVERSION_EXEC svnversion PATHS /usr/local/bin /usr/bin)
|
|
|
|
MARK_AS_ADVANCED(SVNVERSION_EXEC)
|
|
|
|
IF(NOT SVNVERSION_EXEC)
|
2010-02-28 10:04:35 +01:00
|
|
|
SET(SVN_FIND_REV_FAILED TRUE)
|
2012-01-10 19:18:32 +01:00
|
|
|
ENDIF(NOT SVNVERSION_EXEC)
|
|
|
|
IF(NOT SVN_FIND_REV_FAILED)
|
|
|
|
MESSAGE(STATUS "Looking for current subversion revision (may be long) ...")
|
|
|
|
EXECUTE_PROCESS(COMMAND ${SVNVERSION_EXEC} ${CMAKE_CURRENT_SOURCE_DIR} --no-newline
|
|
|
|
RESULT_VARIABLE SVNVERSION_RESULT
|
|
|
|
OUTPUT_VARIABLE SVN_REV_LONG)
|
|
|
|
IF(NOT ${SVNVERSION_RESULT} EQUAL 0)
|
|
|
|
SET(SVN_FIND_REV_FAILED TRUE)
|
|
|
|
ENDIF(NOT ${SVNVERSION_RESULT} EQUAL 0)
|
|
|
|
ENDIF(NOT SVN_FIND_REV_FAILED)
|
|
|
|
IF(NOT SVN_FIND_REV_FAILED)
|
|
|
|
IF("${SVN_REV_LONG}" MATCHES ":")
|
|
|
|
STRING(REGEX REPLACE "^[^:]*:(.*)$" "\\1" SVN_REV "${SVN_REV_LONG}")
|
|
|
|
ELSE("${SVN_REV_LONG}" MATCHES ":")
|
|
|
|
SET(SVN_REV "${SVN_REV_LONG}")
|
|
|
|
ENDIF("${SVN_REV_LONG}" MATCHES ":")
|
|
|
|
IF(NOT SVN_REV)
|
|
|
|
SET(SVN_FIND_REV_FAILED TRUE)
|
|
|
|
ENDIF(NOT SVN_REV)
|
|
|
|
ENDIF(NOT SVN_FIND_REV_FAILED)
|
|
|
|
SET(VERSION_LONG "${VERSION}")
|
|
|
|
IF(NOT SVN_FIND_REV_FAILED)
|
|
|
|
STRING(TOLOWER ${SVN_REV} SVN_REV)
|
|
|
|
SET(VERSION_LONG "${VERSION_LONG}-r${SVN_REV}")
|
|
|
|
ENDIF(NOT SVN_FIND_REV_FAILED)
|
|
|
|
ELSE(NEED_SVN_REV)
|
|
|
|
SET(VERSION_LONG "${VERSION}")
|
|
|
|
ENDIF(NEED_SVN_REV)
|
|
|
|
|
|
|
|
MESSAGE(STATUS "Version '${VERSION_LONG}'")
|
|
|
|
|
|
|
|
ENDIF(NOT OPTION_AUTOVERSION)
|
2010-02-28 10:04:35 +01:00
|
|
|
|
2021-04-30 17:44:43 +02:00
|
|
|
# SVN_REV is used by packagers, so set it to something
|
|
|
|
# in case it couldn't be retrieved or OPTION_AUTOVERSION is FALSE
|
|
|
|
IF(NOT SVN_REV)
|
|
|
|
SET(SVN_REV "XXXX")
|
|
|
|
ENDIF(NOT SVN_REV)
|
|
|
|
|
|
|
|
# PROJECT_VERSION_METADATA is used by NSIS packagers
|
|
|
|
# its what comes after the '-' sign (if anything)
|
|
|
|
# ie: in tag '2.2.2-rc1' PROJECT_VERSION_METADATA should be '-rc1'
|
|
|
|
STRING(FIND "${VERSION}" "-" _METADATA_INDEX)
|
|
|
|
IF(NOT ${_METADATA_INDEX} EQUAL -1)
|
|
|
|
STRING(SUBSTRING ${VERSION} ${_METADATA_INDEX} -1 PROJECT_VERSION_METADATA)
|
|
|
|
ELSE(NOT ${_METADATA_INDEX} EQUAL -1)
|
|
|
|
SET(PROJECT_VERSION_METADATA )
|
|
|
|
ENDIF(NOT ${_METADATA_INDEX} EQUAL -1)
|
|
|
|
#MESSAGE(STATUS "PROJECT_VERSION_METADATA ${PROJECT_VERSION_METADATA}")
|
|
|
|
|
2012-01-10 19:18:32 +01:00
|
|
|
# Generate config.h
|
2012-09-14 20:39:40 +02:00
|
|
|
CONFIGURE_FILE(${CMAKE_CURRENT_SOURCE_DIR}/cmake/config.h.in.cmake
|
2010-02-28 10:04:35 +01:00
|
|
|
${CMAKE_CURRENT_BINARY_DIR}/config.h)
|
|
|
|
|
2012-01-10 19:18:32 +01:00
|
|
|
# Generate DOxygen configuration file
|
2012-09-14 20:39:40 +02:00
|
|
|
CONFIGURE_FILE(${CMAKE_CURRENT_SOURCE_DIR}/cmake/doxygenconfig.in.cmake
|
2013-03-23 18:59:22 +01:00
|
|
|
${CMAKE_CURRENT_BINARY_DIR}/doxygen_config @ONLY)
|
2010-02-28 10:04:35 +01:00
|
|
|
|
2012-09-23 13:22:50 +02:00
|
|
|
|
|
|
|
# Fictive = no-output target, for having source files available in IDEs.
|
2014-06-18 03:57:09 +02:00
|
|
|
SET(_SOURCES CHANGES.txt COPYING.txt INSTALL.txt README.txt)
|
2013-03-25 20:40:53 +01:00
|
|
|
ADD_CUSTOM_TARGET(rootdoc SOURCES ${_SOURCES} data/data/credits.xml)
|
2012-09-23 13:22:50 +02:00
|
|
|
|
|
|
|
# Install top tree data files
|
|
|
|
SD_INSTALL_FILES(DATA "/" FILES ${_SOURCES})
|
2011-01-09 23:17:22 +01:00
|
|
|
|
2013-03-23 18:59:22 +01:00
|
|
|
# Initialize user settings file management (before any of them is collected).
|
|
|
|
SD_SETUP_SETTINGS_VERSION()
|
|
|
|
|
2019-12-06 20:40:01 +01:00
|
|
|
# Setup empty GLOBAL lists for robots and modules
|
|
|
|
SET_PROPERTY(GLOBAL PROPERTY SD_MODULE_LIST "")
|
2021-06-16 18:18:54 +02:00
|
|
|
SET_PROPERTY(GLOBAL PROPERTY SD_CAR_LIST "")
|
|
|
|
SET_PROPERTY(GLOBAL PROPERTY SD_TRACK_LIST "")
|
2019-12-06 20:40:01 +01:00
|
|
|
SET_PROPERTY(GLOBAL PROPERTY SD_ROBOT_LIST "")
|
|
|
|
SET_PROPERTY(GLOBAL PROPERTY SD_OSG_PLUGIN_LIST "")
|
2020-03-30 07:21:39 +02:00
|
|
|
SET_PROPERTY(GLOBAL PROPERTY SD_EXE_LIST "")
|
2019-12-06 20:40:01 +01:00
|
|
|
|
|
|
|
# Sub-dirs to build ...
|
2010-02-28 10:04:35 +01:00
|
|
|
ADD_SUBDIRECTORY(src)
|
|
|
|
ADD_SUBDIRECTORY(data)
|
|
|
|
ADD_SUBDIRECTORY(cmake)
|
|
|
|
|
2013-03-23 18:59:22 +01:00
|
|
|
# After the user settings files have been collected,
|
|
|
|
# Update (and then install) version.xml from their respective version.
|
|
|
|
SD_UPDATE_SETTINGS_VERSION()
|
|
|
|
|
2020-07-13 14:09:48 +02:00
|
|
|
IF(MSVC)
|
|
|
|
INSTALL(FILES ${CMAKE_CURRENT_SOURCE_DIR}/doc/faq/faq.html DESTINATION ./doc)
|
|
|
|
INSTALL(FILES ${CMAKE_CURRENT_SOURCE_DIR}/doc/userman/how_to_drive.html DESTINATION ./doc)
|
|
|
|
INSTALL(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/doc/userman/images/ DESTINATION ./doc/images/)
|
|
|
|
ENDIF(MSVC)
|
|
|
|
|
|
|
|
|
2021-05-25 19:15:54 +02:00
|
|
|
# Useful for using an installation of SD as a robot development framework without building it.
|
2021-06-06 15:38:54 +02:00
|
|
|
# Only do for an in source tree build as INSTALL_SD_CMAKE() doesn't seem to use CMAKE_INSTALL_PREFIX
|
|
|
|
IF("${PROJECT_SOURCE_DIR}" STREQUAL "${PROJECT_BINARY_DIR}")
|
2021-05-25 19:15:54 +02:00
|
|
|
INSTALL_SD_CMAKE()
|
2021-06-06 15:38:54 +02:00
|
|
|
ENDIF("${PROJECT_SOURCE_DIR}" STREQUAL "${PROJECT_BINARY_DIR}")
|
2010-02-28 10:04:35 +01:00
|
|
|
|
2020-03-30 07:21:39 +02:00
|
|
|
# Must be the last ADD_SUBDIRECTORY for FIXUP_BUNDLE to work
|
|
|
|
ADD_SUBDIRECTORY(packaging)
|
|
|
|
|
2010-09-07 23:34:19 +02:00
|
|
|
# Generate a 'make clobber'-like clobber.sh/.bat script in case of an in-source build.
|
2012-08-08 19:38:39 +02:00
|
|
|
IF("${PROJECT_SOURCE_DIR}" STREQUAL "${PROJECT_BINARY_DIR}")
|
|
|
|
SD_GENERATE_CLOBBER_SCRIPT()
|
|
|
|
ENDIF("${PROJECT_SOURCE_DIR}" STREQUAL "${PROJECT_BINARY_DIR}")
|
2010-09-07 23:34:19 +02:00
|
|
|
|
|
|
|
# Add an unistall target.
|
2024-07-30 23:45:07 +02:00
|
|
|
CONFIGURE_FILE("${CMAKE_CURRENT_SOURCE_DIR}/cmake/uninstall.cmake"
|
2010-09-07 23:34:19 +02:00
|
|
|
"${CMAKE_CURRENT_BINARY_DIR}/uninstall.cmake" IMMEDIATE @ONLY)
|
2012-08-08 19:38:39 +02:00
|
|
|
IF(MSVC)
|
|
|
|
SET(_UNINST_TGT_NAME "UNINSTALL")
|
|
|
|
ELSE(MSVC)
|
|
|
|
SET(_UNINST_TGT_NAME "uninstall")
|
|
|
|
ENDIF(MSVC)
|
|
|
|
ADD_CUSTOM_TARGET(${_UNINST_TGT_NAME} "${CMAKE_COMMAND}" -P "${CMAKE_CURRENT_BINARY_DIR}/uninstall.cmake" )
|
2011-01-12 20:32:40 +01:00
|
|
|
|
2021-06-16 18:18:54 +02:00
|
|
|
IF(OPTION_CHECK_CONTENTS)
|
|
|
|
INCLUDE(cmake/prerelease.cmake)
|
|
|
|
ENDIF(OPTION_CHECK_CONTENTS)
|
|
|
|
|
2022-07-19 01:55:34 +02:00
|
|
|
IF(OPTION_PACKAGING OR OPTION_ALL_IN_ONE_PACKAGING)
|
2020-04-20 04:34:33 +02:00
|
|
|
INCLUDE(cmake/packagemaker.cmake)
|
2022-07-19 01:55:34 +02:00
|
|
|
ENDIF(OPTION_PACKAGING OR OPTION_ALL_IN_ONE_PACKAGING)
|
|
|
|
IF(OPTION_PACKAGING)
|
2019-06-04 02:55:22 +02:00
|
|
|
IF(MSVC)
|
|
|
|
INCLUDE(cmake/packagemaker-nsis.cmake)
|
|
|
|
ENDIF(MSVC)
|
2020-04-20 04:34:33 +02:00
|
|
|
IF(APPLE)
|
|
|
|
INCLUDE(cmake/packagemaker-dmg.cmake)
|
|
|
|
ENDIF(APPLE)
|
2020-12-03 19:35:19 +01:00
|
|
|
ENDIF(OPTION_PACKAGING)
|
2022-07-19 01:55:34 +02:00
|
|
|
|
|
|
|
IF(OPTION_ALL_IN_ONE_PACKAGING)
|
2022-07-20 05:23:27 +02:00
|
|
|
IF(MSVC AND ${CMAKE_VERSION} VERSION_LESS "3.17")
|
|
|
|
MESSAGE(SEND_ERROR "OPTION_ALL_IN_ONE_PACKAGING requires CMake 3.17 or greater on Windows")
|
|
|
|
ENDIF(MSVC AND ${CMAKE_VERSION} VERSION_LESS "3.17")
|
2022-07-19 01:55:34 +02:00
|
|
|
INCLUDE(CPack)
|
|
|
|
ENDIF(OPTION_ALL_IN_ONE_PACKAGING)
|
2023-11-05 23:25:58 +01:00
|
|
|
|
|
|
|
IF(OPTION_PORTABLE_PACKAGING)
|
|
|
|
IF(NOT ${CMAKE_VERSION} VERSION_LESS "3.0")
|
|
|
|
#[[
|
|
|
|
This section adds a batch file for running speed-dreams-2.exe with a local settings directory.
|
|
|
|
This is similar to how 'Portable Apps' work.
|
|
|
|
It also adds projects to build a self-extracting 7-zip file (if 7-zip is installed)
|
|
|
|
]]
|
|
|
|
ENDIF(NOT ${CMAKE_VERSION} VERSION_LESS "3.0")
|
|
|
|
IF(WIN32)
|
|
|
|
|
|
|
|
find_program(7ZIP_EXE 7z.exe PATH_SUFFIXES 7-Zip)
|
|
|
|
find_file(7ZIP_WIN 7z.sfx PATH_SUFFIXES 7-Zip)
|
|
|
|
|
|
|
|
set(SD_EXE_NAME "speed-dreams-2.exe")
|
|
|
|
SET(PORTABLE_PACKAGE_FILE_NAME "speed-dreams-2-r${SVN_REV}-portable-setup" CACHE STRING "Name for portable package file")
|
|
|
|
SET(PORTABLE_BATCH_FILE_NAME "speed-dreams-2-r${SVN_REV}-portable.bat" CACHE STRING "Name for portable batch file")
|
|
|
|
|
2024-07-30 23:45:07 +02:00
|
|
|
CONFIGURE_FILE("${CMAKE_CURRENT_SOURCE_DIR}/packaging/portable/sd-portable.bat.in"
|
2023-11-05 23:25:58 +01:00
|
|
|
"${CMAKE_BINARY_DIR}/${PORTABLE_BATCH_FILE_NAME}" @ONLY)
|
2024-07-30 23:45:07 +02:00
|
|
|
|
2023-11-05 23:25:58 +01:00
|
|
|
INSTALL(PROGRAMS "${CMAKE_BINARY_DIR}/${PORTABLE_BATCH_FILE_NAME}" DESTINATION .)
|
|
|
|
|
|
|
|
# NOTE this WILL pick up changes and additions!
|
|
|
|
# just re-build INSTALL no need to rerun CMake configure!
|
|
|
|
INSTALL(DIRECTORY packaging/portable/settings DESTINATION . )
|
|
|
|
|
|
|
|
if(7ZIP_EXE AND 7ZIP_WIN)
|
|
|
|
|
|
|
|
ADD_CUSTOM_TARGET(PORTABLE_INSTALL)
|
|
|
|
ADD_CUSTOM_TARGET(PORTABLE_PACKAGE DEPENDS PORTABLE_INSTALL)
|
|
|
|
|
|
|
|
ADD_CUSTOM_COMMAND(TARGET PORTABLE_INSTALL
|
|
|
|
COMMAND "${CMAKE_COMMAND}" --build . --target INSTALL --config $<CONFIG>
|
|
|
|
WORKING_DIRECTORY ${CMAKE_BINARY_DIR}
|
|
|
|
COMMENT "Building INSTALL...")
|
|
|
|
|
|
|
|
ADD_CUSTOM_COMMAND(TARGET PORTABLE_PACKAGE
|
|
|
|
COMMAND ${7ZIP_EXE} a -sfx7z.sfx ${CMAKE_BINARY_DIR}/${PORTABLE_PACKAGE_FILE_NAME} *
|
|
|
|
WORKING_DIRECTORY ${CMAKE_BINARY_DIR}/${CMAKE_INSTALL_PREFIX}
|
|
|
|
COMMENT "Building portable package...")
|
|
|
|
|
|
|
|
else(7ZIP_EXE AND 7ZIP_WIN)
|
|
|
|
message(STATUS "Could not find 7-ZIP. Portable build disabled.")
|
|
|
|
endif(7ZIP_EXE AND 7ZIP_WIN)
|
|
|
|
ENDIF(WIN32)
|
|
|
|
ENDIF(OPTION_PORTABLE_PACKAGING)
|