############################################################################ # # file : macros.cmake # copyright : (C) 2008 by Mart Kelder # web : www.speed-dreams.org # version : $Id$ # ############################################################################ ############################################################################ # # # This program is free software; you can redistribute it and/or modify # # it under the terms of the GNU General Public License as published by # # the Free Software Foundation; either version 2 of the License, or # # (at your option) any later version. # # # ############################################################################ # @file Main CMake configuration file (to be included in every CMakeLists.txt) # @author Mart Kelder # @version $Id$ #MESSAGE(STATUS "Processing ${CMAKE_CURRENT_SOURCE_DIR} ...") # By default, we assume an "in-source" build. IF(NOT DEFINED IN_SOURCETREE) SET(IN_SOURCETREE TRUE) ENDIF(NOT DEFINED IN_SOURCETREE) # Setup the install prefix. IF(CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT) IF(WIN32) SET(CMAKE_INSTALL_PREFIX "installed-build" CACHE PATH "Prefix prepended to install directories" FORCE) ELSEIF(APPLE) SET(CMAKE_INSTALL_PREFIX "speed-dreams-2.app" CACHE PATH "Prefix prepended to install directories" FORCE) ELSE() SET(CMAKE_INSTALL_PREFIX "/usr/local" CACHE PATH "Prefix prepended to install directories" FORCE) ENDIF() ENDIF(CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT) # Determine the source folder if ??? IF(NOT SOURCE_DIR AND IN_SOURCETREE) FIND_PATH(SOURCE_CMAKE_PATH cmake/macros.cmake PATHS . .. ../.. ../../.. ../../../.. ../../../../.. ../../../../../.. ../../../../../../.. ../../../../../../../.. ${CMAKE_SOURCE_DIR} NO_DEFAULT_PATH) FIND_PATH(SOURCE_CMAKE_PATH cmake/macros.cmake PATHS . .. ../.. ../../.. ../../../.. ../../../../.. ../../../../../.. ../../../../../../.. ../../../../../../../.. ${CMAKE_SOURCE_DIR}) GET_FILENAME_COMPONENT(SOURCE_DIR ${SOURCE_CMAKE_PATH} ABSOLUTE CACHE) MARK_AS_ADVANCED(SOURCE_DIR) SET(SOURCE_CMAKE_PATH "") MARK_AS_ADVANCED(SOURCE_CMAKE_PATH) ENDIF(NOT SOURCE_DIR AND IN_SOURCETREE) # The path of the folder of the current CMakeLists.txt GET_FILENAME_COMPONENT(CURRENT_LIST_FILE_PATH ${CMAKE_CURRENT_LIST_FILE} PATH) # Macros arg list parsing tools. IF(NOT _ALREADY_DONE) INCLUDE(${CURRENT_LIST_FILE_PATH}/splitargn.cmake) ENDIF(NOT _ALREADY_DONE) # Include dir for config.h IF(IN_SOURCETREE) FIND_PATH(CONFIGH_INCLUDE_DIR config.h PATHS ${SOURCE_DIR} ${CMAKE_BINARY_DIR} NO_DEFAULT_PATH) FIND_PATH(CONFIGH_INCLUDE_DIR config.h PATHS ${SOURCE_DIR} ${CMAKE_BINARY_DIR}) MARK_AS_ADVANCED(CONFIGH_INCLUDE_DIR) IF(CONFIGH_INCLUDE_DIR) SET(HAVE_CONFIG_H TRUE) ELSE(CONFIGH_INCLUDE_DIR) SET(HAVE_CONFIG_H FALSE) ENDIF(CONFIGH_INCLUDE_DIR) ELSE(IN_SOURCETREE) SET(HAVE_CONFIG_H FALSE) ENDIF(IN_SOURCETREE) # Determine the default value of the user settings folder. IF(WIN32) SET(SD_LOCALDIR "~/speed-dreams-2.settings" CACHE STRING "Where the user settings files should go") ELSEIF(HAIKU) SET(SD_LOCALDIR "~/config/settings/speed-dreams" CACHE STRING "Where the user settings files should go") ELSE(WIN32) #UNIX SET(SD_LOCALDIR "~/.speed-dreams-2" CACHE STRING "Where the user settings files should go") ENDIF(WIN32) # Determine the default value of the tools executable file prefix. SET(SD_TOOLS_EXECPREFIX "sd2-" CACHE STRING "Prefix for the tools executable names") MARK_AS_ADVANCED(SD_TOOLS_EXECPREFIX) # Determine the default value of the data, bin and lib (and man) folders. IF(IN_SOURCETREE) IF(CMAKE_SIZEOF_VOID_P MATCHES 4) SET(_DEFLIBDIR "lib") ELSE() SET(_DEFLIBDIR "lib64") ENDIF() IF(WIN32) SET(SD_BINDIR bin CACHE PATH "Place where the executables should go") SET(SD_DATADIR data CACHE PATH "Place where all the static data files should go") SET(SD_LIBDIR ${_DEFLIBDIR} CACHE PATH "Place where the libraries should go") SET(SD_INCLUDEDIR include CACHE PATH "Place where the include files should go") ELSE(WIN32) #UNIX SET(SD_BINDIR games CACHE PATH "Place where the executables should go") SET(SD_DATADIR share/games/speed-dreams-2 CACHE PATH "Place where all the static data files should go") SET(SD_LIBDIR ${_DEFLIBDIR}/games/speed-dreams-2 CACHE PATH "Place where the libraries should go") SET(SD_INCLUDEDIR include/speed-dreams-2 CACHE PATH "Place where the include files should go") SET(SD_MANDIR share/man CACHE PATH "Place where the manual pages should go") ENDIF(WIN32) MARK_AS_ADVANCED(SD_BINDIR) MARK_AS_ADVANCED(SD_DATADIR) MARK_AS_ADVANCED(SD_LIBDIR) MARK_AS_ADVANCED(SD_INCLUDEDIR) IF(UNIX) MARK_AS_ADVANCED(SD_MANDIR) ENDIF(UNIX) ELSE(IN_SOURCETREE) SET(SD_DATADIR ${SD_DATADIR_ABS}) SET(SD_LIBDIR ${SD_LIBDIR_ABS}) SET(SD_BINDIR ${SD_BINDIR_ABS}) SET(SD_INCLUDEDIR ${SD_INCLUDEDIR_ABS}) IF(UNIX) SET(SD_MANDIR ${SD_MANDIR_ABS}) ENDIF(UNIX) ENDIF(IN_SOURCETREE) # Determine the aboslute paths of the data, bin and lib (and man) folders. IF(IS_ABSOLUTE ${SD_DATADIR}) GET_FILENAME_COMPONENT(SD_DATADIR_ABS ${SD_DATADIR} ABSOLUTE) ELSE(IS_ABSOLUTE ${SD_DATADIR}) GET_FILENAME_COMPONENT(SD_DATADIR_ABS ${CMAKE_INSTALL_PREFIX}/${SD_DATADIR} ABSOLUTE) ENDIF(IS_ABSOLUTE ${SD_DATADIR}) IF(IS_ABSOLUTE ${SD_LIBDIR}) GET_FILENAME_COMPONENT(SD_LIBDIR_ABS ${SD_LIBDIR} ABSOLUTE) ELSE(IS_ABSOLUTE ${SD_LIBDIR}) GET_FILENAME_COMPONENT(SD_LIBDIR_ABS ${CMAKE_INSTALL_PREFIX}/${SD_LIBDIR} ABSOLUTE) ENDIF(IS_ABSOLUTE ${SD_LIBDIR}) IF(IS_ABSOLUTE ${SD_BINDIR}) GET_FILENAME_COMPONENT(SD_BINDIR_ABS ${SD_BINDIR} ABSOLUTE) ELSE(IS_ABSOLUTE ${SD_BINDIR}) GET_FILENAME_COMPONENT(SD_BINDIR_ABS ${CMAKE_INSTALL_PREFIX}/${SD_BINDIR} ABSOLUTE) ENDIF(IS_ABSOLUTE ${SD_BINDIR}) IF(IS_ABSOLUTE ${SD_INCLUDEDIR}) GET_FILENAME_COMPONENT(SD_INCLUDEDIR_ABS ${SD_INCLUDEDIR} ABSOLUTE) ELSE(IS_ABSOLUTE ${SD_INCLUDEDIR}) GET_FILENAME_COMPONENT(SD_INCLUDEDIR_ABS ${CMAKE_INSTALL_PREFIX}/${SD_INCLUDEDIR} ABSOLUTE) ENDIF(IS_ABSOLUTE ${SD_INCLUDEDIR}) IF(UNIX) IF(IS_ABSOLUTE ${SD_MANDIR}) GET_FILENAME_COMPONENT(SD_MANDIR_ABS ${SD_MANDIR} ABSOLUTE) ELSE(IS_ABSOLUTE ${SD_MANDIR}) GET_FILENAME_COMPONENT(SD_MANDIR_ABS ${CMAKE_INSTALL_PREFIX}/${SD_MANDIR} ABSOLUTE) ENDIF(IS_ABSOLUTE ${SD_MANDIR}) ENDIF(UNIX) STRING(REGEX REPLACE "^(.*[^/])/*$" "\\1" SD_LOCALDIR_TMP ${SD_LOCALDIR}) SET(SD_LOCALDIR ${SD_LOCALDIR_TMP}) SET(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${CURRENT_LIST_FILE_PATH}) SET(CMAKE_INSTALL_RPATH "${SD_LIBDIR_ABS}/lib") # Configuration options macros. INCLUDE(${CURRENT_LIST_FILE_PATH}/options.cmake) # Robots-related macros. INCLUDE(${CURRENT_LIST_FILE_PATH}/robot.cmake) # Robots-related macros. INCLUDE(${CURRENT_LIST_FILE_PATH}/install.cmake) # Internal dependencies macros (includes and libs). INCLUDE(${CURRENT_LIST_FILE_PATH}/internaldeps.cmake) # 3rd party dependencies macros (includes and libs). INCLUDE(${CURRENT_LIST_FILE_PATH}/thirdpartydeps.cmake) # 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) # Replacement of standard ADD_EXECUTABLE command (same interface). MACRO(SD_ADD_EXECUTABLE TARGET_NAME) # Standard ADD_EXECUTABLE command. ADD_EXECUTABLE(${TARGET_NAME} ${ARGN}) # Change target location (for running in build-tree without installing). SET(_TGT_DIR "${CMAKE_BINARY_DIR}/${SD_BINDIR}") SET_TARGET_PROPERTIES(${TARGET_NAME} PROPERTIES RUNTIME_OUTPUT_DIRECTORY ${_TGT_DIR}) IF(MSVC) FOREACH(_CFG ${CMAKE_CONFIGURATION_TYPES}) STRING(TOUPPER ${_CFG} _CFG) SET_TARGET_PROPERTIES(${TARGET_NAME} PROPERTIES RUNTIME_OUTPUT_DIRECTORY_${_CFG} "${_TGT_DIR}") ENDFOREACH() ENDIF(MSVC) SET_PROPERTY(GLOBAL APPEND PROPERTY SD_EXE_LIST "${SD_BINDIR}/${TARGET_NAME}${CMAKE_EXECUTABLE_SUFFIX}") # Make the "settings_versions" target depend on this target, # in order settings_versions is built after them. ADD_DEPENDENCIES(settings_versions ${TARGET_NAME}) ENDMACRO(SD_ADD_EXECUTABLE TARGET_NAME) # Replacement of standard ADD_LIBRARY command, # in order to take care of : # * changing target location, for running in build-tree without installing, # * changing target name for modules and robot DLLs (no "lib" prefix). # Nearly same behaviour as standard ADD_LIBRARY, but : # * more library types (possible values for TARGET_TYPE arg) : # - STATIC, SHARED, MODULE : no change, # - ROBOT : same as MODULE for standard ADD_LIBRARY. # * TARGET_TYPE type arg is mandatory (no default). MACRO(SD_ADD_LIBRARY TARGET_NAME TARGET_TYPE) #MESSAGE(STATUS "SD_ADD_LIBRARY : TARGET_NAME = ${TARGET_NAME} TARGET_TYPE = ${TARGET_TYPE} ARGN = ${ARGN}") # Standard ADD_EXECUTABLE command. IF(${TARGET_TYPE} STREQUAL "ROBOT") ADD_LIBRARY(${TARGET_NAME} MODULE ${ARGN}) ELSE() ADD_LIBRARY(${TARGET_NAME} ${TARGET_TYPE} ${ARGN}) ENDIF() # Determine target location (for running in build-tree without installing). IF(${TARGET_TYPE} STREQUAL "SHARED") IF(WIN32) SET(_TGT_DIR "${CMAKE_BINARY_DIR}/${SD_BINDIR}") ELSE() SET(_TGT_DIR "${CMAKE_BINARY_DIR}/${SD_LIBDIR}/lib") ENDIF() ELSEIF(${TARGET_TYPE} STREQUAL "MODULE") SET(_TGT_LOC ${CMAKE_CURRENT_SOURCE_DIR}) GET_FILENAME_COMPONENT(_TGT_TYPE ${_TGT_LOC} PATH) GET_FILENAME_COMPONENT(_TGT_TYPE ${_TGT_TYPE} NAME) SET(_TGT_DIR "${CMAKE_BINARY_DIR}/${SD_LIBDIR}/modules/${_TGT_TYPE}") SET_PROPERTY(GLOBAL APPEND PROPERTY SD_MODULE_LIST "${SD_LIBDIR}/modules/${_TGT_TYPE}/${TARGET_NAME}${CMAKE_SHARED_MODULE_SUFFIX}") SET_TARGET_PROPERTIES(${TARGET_NAME} PROPERTIES SD_TYPE "MODULE") ELSEIF(${TARGET_TYPE} STREQUAL "ROBOT") SET(_TGT_DIR "${CMAKE_BINARY_DIR}/${SD_LIBDIR}/drivers/${TARGET_NAME}") SET_PROPERTY(GLOBAL APPEND PROPERTY SD_ROBOT_LIST "${TARGET_NAME}") ELSEIF(NOT ${TARGET_TYPE} STREQUAL "STATIC") MESSAGE(FATAL "Unsupported library type ${TARGET_TYPE} for ${TARGET_NAME}") ENDIF() # Change target location (for running in build-tree without installing). SET_TARGET_PROPERTIES(${TARGET_NAME} PROPERTIES RUNTIME_OUTPUT_DIRECTORY "${_TGT_DIR}" LIBRARY_OUTPUT_DIRECTORY "${_TGT_DIR}") IF(MSVC) FOREACH(_CFG ${CMAKE_CONFIGURATION_TYPES}) STRING(TOUPPER ${_CFG} _CFG) SET_TARGET_PROPERTIES(${TARGET_NAME} PROPERTIES RUNTIME_OUTPUT_DIRECTORY_${_CFG} "${_TGT_DIR}" LIBRARY_OUTPUT_DIRECTORY_${_CFG} "${_TGT_DIR}") ENDFOREACH() ENDIF(MSVC) #MESSAGE(STATUS "SD_ADD_LIBRARY : _TGT_DIR = ${_TGT_DIR}") # No prefix for module and robot DLLs. IF(${TARGET_TYPE} STREQUAL "MODULE" OR ${TARGET_TYPE} STREQUAL "ROBOT") IF(UNIX OR MINGW) SET_TARGET_PROPERTIES(${TARGET_NAME} PROPERTIES PREFIX "") ENDIF(UNIX OR MINGW) ENDIF() # Make the "settings_versions" target depend on this target, # in order settings_versions is built after them. ADD_DEPENDENCIES(settings_versions ${TARGET_NAME}) ENDMACRO(SD_ADD_LIBRARY TARGET_NAME TARGET_TYPE) # Generate clobber.sh/bat shell script (remove _any_ build system generated file) MACRO(SD_GENERATE_CLOBBER_SCRIPT) IF(MSVC) SET(TGT_SCRIPT "${SOURCE_DIR}/clobber.bat") FILE(WRITE "${TGT_SCRIPT}" "@echo off\n") FILE(APPEND "${TGT_SCRIPT}" "rem CMake-generated script for in-source build tree total cleanup\n") FILE(APPEND "${TGT_SCRIPT}" "rem (remove any build-system-generated file (+ .bak, *~, ... etc), \n") FILE(APPEND "${TGT_SCRIPT}" "rem in case you want to get back to something like\n") FILE(APPEND "${TGT_SCRIPT}" "rem right after a 'svn checkout' command).\n") FILE(APPEND "${TGT_SCRIPT}" "\n") FILE(APPEND "${TGT_SCRIPT}" "rem Check if we are on top of a CMake-enabled SD source tree\n") FILE(APPEND "${TGT_SCRIPT}" "if not exist CMakeLists.txt goto ERROR\n") FILE(APPEND "${TGT_SCRIPT}" "if not exist cmake goto ERROR\n") FILE(APPEND "${TGT_SCRIPT}" "if not exist data goto ERROR\n") FILE(APPEND "${TGT_SCRIPT}" "if not exist src goto ERROR\n") FILE(APPEND "${TGT_SCRIPT}" "\n") FILE(APPEND "${TGT_SCRIPT}" "echo Cleaning up in-source build tree ...\n") FILE(APPEND "${TGT_SCRIPT}" "\n") FILE(APPEND "${TGT_SCRIPT}" "rem CMake/compiler generated files and dirs\n") FILE(APPEND "${TGT_SCRIPT}" "\n") FILE(APPEND "${TGT_SCRIPT}" "del CMakeCache.txt\n") FILE(APPEND "${TGT_SCRIPT}" "del CMakeLists.txt.user\n") FILE(APPEND "${TGT_SCRIPT}" "del config.h\n") FILE(APPEND "${TGT_SCRIPT}" "del CPackConfig.cmake\n") FILE(APPEND "${TGT_SCRIPT}" "del CPackSourceConfig.cmake\n") FILE(APPEND "${TGT_SCRIPT}" "del uninstall.cmake\n") FILE(APPEND "${TGT_SCRIPT}" "del doxygen_config\n") FILE(APPEND "${TGT_SCRIPT}" "del install_manifest.txt\n") FILE(APPEND "${TGT_SCRIPT}" "del speed-dreams-2.ncb\n") FILE(APPEND "${TGT_SCRIPT}" "del /ah speed-dreams-2.suo\n") FILE(APPEND "${TGT_SCRIPT}" "del speed-dreams-2.sln\n") FILE(APPEND "${TGT_SCRIPT}" "del version.h\n") FILE(APPEND "${TGT_SCRIPT}" "del xmlversion_loc.txt\n") FILE(APPEND "${TGT_SCRIPT}" "del /s /q *.vcproj*\n") FILE(APPEND "${TGT_SCRIPT}" "del /s /q cmake_install.cmake\n") FILE(APPEND "${TGT_SCRIPT}" "for /f \"tokens=*\" %%G in ('dir /b /ad /s CMakeFiles*') do rmdir /s /q %%G\n") FILE(APPEND "${TGT_SCRIPT}" "for /f \"tokens=*\" %%G in ('dir /b /ad /s *.dir') do rmdir /s /q %%G\n") FILE(APPEND "${TGT_SCRIPT}" "for /f \"tokens=*\" %%G in ('dir /b /ad /s Debug*') do rmdir /s /q %%G\n") FILE(APPEND "${TGT_SCRIPT}" "for /f \"tokens=*\" %%G in ('dir /b /ad /s Release*') do rmdir /s /q %%G\n") FILE(APPEND "${TGT_SCRIPT}" "rmdir /s /q _CPack_Packages\n") FILE(APPEND "${TGT_SCRIPT}" "\n") FILE(APPEND "${TGT_SCRIPT}" "rem Other useless files\n") FILE(APPEND "${TGT_SCRIPT}" "del /s /q *.*~\n") FILE(APPEND "${TGT_SCRIPT}" "del /s /q *.~*\n") FILE(APPEND "${TGT_SCRIPT}" "del /s /q *.bak\n") FILE(APPEND "${TGT_SCRIPT}" "del /s /q *.flc\n") FILE(APPEND "${TGT_SCRIPT}" "del /s /q *.orig\n") FILE(APPEND "${TGT_SCRIPT}" "del /s /q *.cbp\n") FILE(APPEND "${TGT_SCRIPT}" "\n") FILE(APPEND "${TGT_SCRIPT}" "echo Done.\n") FILE(APPEND "${TGT_SCRIPT}" "\n") FILE(APPEND "${TGT_SCRIPT}" "goto END\n") FILE(APPEND "${TGT_SCRIPT}" "\n") FILE(APPEND "${TGT_SCRIPT}" ":ERROR\n") FILE(APPEND "${TGT_SCRIPT}" "\n") FILE(APPEND "${TGT_SCRIPT}" "echo Bad current dir for that ; please run from the root folder of a CMake-enabled SD source tree.\n") FILE(APPEND "${TGT_SCRIPT}" "\n") FILE(APPEND "${TGT_SCRIPT}" ":END\n") ELSE(MSVC) SET(TGT_SCRIPT "${SOURCE_DIR}/clobber.sh") FILE(WRITE "${TGT_SCRIPT}" "#!/bin/sh\n") FILE(APPEND "${TGT_SCRIPT}" "# CMake-generated script for in-source build tree total cleanup\n") FILE(APPEND "${TGT_SCRIPT}" "# (remove any build-system-generated file (+ .bak, *~, ... etc), \n") FILE(APPEND "${TGT_SCRIPT}" "# in case you want to get back to something like\n") FILE(APPEND "${TGT_SCRIPT}" "# right after a 'svn checkout' command).\n") FILE(APPEND "${TGT_SCRIPT}" "\n") FILE(APPEND "${TGT_SCRIPT}" "# Check if we are on top of a CMake-enabled SD source tree\n") FILE(APPEND "${TGT_SCRIPT}" "if [ -f CMakeLists.txt -a -d cmake -a -d data -a -d src ] ; then\n") FILE(APPEND "${TGT_SCRIPT}" "\n") FILE(APPEND "${TGT_SCRIPT}" " echo \"Cleaning up in-source build tree ...\"\n") FILE(APPEND "${TGT_SCRIPT}" " \n") FILE(APPEND "${TGT_SCRIPT}" " # CMake/compiler generated files and dirs\n") FILE(APPEND "${TGT_SCRIPT}" " rm -f CMakeCache.txt CMakeLists.txt.user config.h doxygen_config\n") FILE(APPEND "${TGT_SCRIPT}" " rm -f CPackConfig.cmake CPackSourceConfig.cmake\n") FILE(APPEND "${TGT_SCRIPT}" " rm -f uninstall.cmake\n") FILE(APPEND "${TGT_SCRIPT}" " rm -f xmlversion_loc.txt install_manifest.txt version.h.txt\n") FILE(APPEND "${TGT_SCRIPT}" " rm -fr _CPack_Packages\n") FILE(APPEND "${TGT_SCRIPT}" " find . -depth -type d -name \"CMakeFiles\" -exec rm -fr {} \\;\n") FILE(APPEND "${TGT_SCRIPT}" " find . -type f -name \"cmake_install.cmake\" -delete\n") FILE(APPEND "${TGT_SCRIPT}" " find . -type f -name \"Makefile\" -delete\n") FILE(APPEND "${TGT_SCRIPT}" " find . -type f -name \"*.so\" -delete\n") FILE(APPEND "${TGT_SCRIPT}" " find src/tools -type f -name \"sd2-*\" -delete\n") FILE(APPEND "${TGT_SCRIPT}" " find src/tools/xmlversion -type f -name \"xmlversion\" -delete\n") FILE(APPEND "${TGT_SCRIPT}" " find src/main -type f -name \"speed-dreams-2\" -delete\n") FILE(APPEND "${TGT_SCRIPT}" "\n") FILE(APPEND "${TGT_SCRIPT}" " # Other useless files\n") FILE(APPEND "${TGT_SCRIPT}" " find . -type f -name \"*.rej\" -delete\n") FILE(APPEND "${TGT_SCRIPT}" " find . -type f -name \"*.orig\" -delete\n") FILE(APPEND "${TGT_SCRIPT}" " find . -type f -name \"*.flc\" -delete\n") FILE(APPEND "${TGT_SCRIPT}" " find . -type f -name \"*.bak\" -delete\n") FILE(APPEND "${TGT_SCRIPT}" " find . -type f -name \"*.cbp\" -delete\n") FILE(APPEND "${TGT_SCRIPT}" " find . -type f -name \"*.a\" -delete\n") FILE(APPEND "${TGT_SCRIPT}" " find . -type f -name \"*~\" -delete\n") FILE(APPEND "${TGT_SCRIPT}" " find . -type f -name \"*.~*\" -delete\n") FILE(APPEND "${TGT_SCRIPT}" " \n") FILE(APPEND "${TGT_SCRIPT}" " echo \"Done.\"\n") FILE(APPEND "${TGT_SCRIPT}" " \n") FILE(APPEND "${TGT_SCRIPT}" "else\n") FILE(APPEND "${TGT_SCRIPT}" " echo \"Bad current dir for that ; please run from the root folder of a CMake-enabled SD source tree.\"\n") FILE(APPEND "${TGT_SCRIPT}" "fi\n") EXECUTE_PROCESS(COMMAND chmod ugo+x ${TGT_SCRIPT}) ENDIF(MSVC) ENDMACRO(SD_GENERATE_CLOBBER_SCRIPT) # Add non-default compile options. ADD_SD_COMPILE_OPTIONS() # A useful variable for things that only need to be done once # (macros.cmake is actually included by every CMakeLists.txt, # in order one can run 'cmake .' everywhere in the source tree, # but the bad side effect if that it is thus often included # _multiple_ times by every CMakeLists.txt). IF(NOT _ALREADY_DONE) SET(_ALREADY_DONE TRUE) ENDIF(NOT _ALREADY_DONE)