Fixed #59 : add uninstall target to the build system + generate clobber.sh/bat script for full in-source build files cleanup + moved files to the cmake folder

git-svn-id: https://svn.code.sf.net/p/speed-dreams/code/trunk@2727 30fe4595-0a0c-4342-8851-515496e4dcbd
This commit is contained in:
pouillot 2010-09-07 21:34:19 +00:00
parent 1cdb934bca
commit 874edcfacb
6 changed files with 150 additions and 10 deletions

View File

@ -93,13 +93,13 @@ ELSE(NEED_SVN_REV)
SET(VERSION_LONG "${VERSION}")
ENDIF(NEED_SVN_REV)
CONFIGURE_FILE(${CMAKE_CURRENT_SOURCE_DIR}/config.h.cmake
CONFIGURE_FILE(${CMAKE_CURRENT_SOURCE_DIR}/cmake/config.h.cmake
${CMAKE_CURRENT_BINARY_DIR}/config.h)
CONFIGURE_FILE(${CMAKE_CURRENT_SOURCE_DIR}/version.h.cmake
CONFIGURE_FILE(${CMAKE_CURRENT_SOURCE_DIR}/cmake/version.h.cmake
${CMAKE_CURRENT_BINARY_DIR}/version.h)
CONFIGURE_FILE(${CMAKE_CURRENT_SOURCE_DIR}/doxygen_config.cmake
CONFIGURE_FILE(${CMAKE_CURRENT_SOURCE_DIR}/cmake/doxygen_config.cmake
${CMAKE_CURRENT_BINARY_DIR}/doxygen_config @ONLY)
TORCS_INSTALL_FILES(DATA . FILES credits.xml)
@ -110,5 +110,18 @@ ADD_SUBDIRECTORY(cmake)
INSTALL_TORCSNG_CMAKE()
# Generate a 'make clobber'-like clobber.sh/.bat script in case of an in-source build.
TORCS_GENERATE_CLOBBER_SCRIPT()
# Add an unistall target.
CONFIGURE_FILE("${CMAKE_CURRENT_SOURCE_DIR}/cmake/uninstall.cmake"
"${CMAKE_CURRENT_BINARY_DIR}/uninstall.cmake" IMMEDIATE @ONLY)
IF(WIN32)
ADD_CUSTOM_TARGET(UNINSTALL "${CMAKE_COMMAND}" -P "${CMAKE_CURRENT_BINARY_DIR}/uninstall.cmake" )
ELSE(WIN32)
ADD_CUSTOM_TARGET(uninstall "${CMAKE_COMMAND}" -P "${CMAKE_CURRENT_BINARY_DIR}/uninstall.cmake" )
ENDIF(WIN32)
# Configure CPack.
INCLUDE(cmake/packagemaker.cmake)

0
config.h.cmake → cmake/config.h.cmake Normal file → Executable file
View File

0
doxygen_config.cmake → cmake/doxygen_config.cmake Normal file → Executable file
View File

View File

@ -1088,17 +1088,124 @@ IF(IN_SOURCETREE)
SET(CUR_DESTDIR_CORR \"\")
ENDIF(CUR_DESTDIR MATCHES \"[^/]\")
FILE(MAKE_DIRECTORY \"\${CUR_DESTDIR_CORR}${TORCS_DATADIR_ABS}/cmake\")
FILE(WRITE \"\${CUR_DESTDIR_CORR}${TORCS_DATADIR_ABS}/cmake/speed-dreams.cmake\" \"SET(TORCS_DATADIR_ABS \\\"${TORCS_DATADIR_ABS}\\\")
SET(TORCS_LOCALDIR \\\"${TORCS_LOCALDIR}\\\")
SET(TORCS_LIBDIR_ABS \\\"${TORCS_LIBDIR_ABS}\\\")
SET(TORCS_BINDIR_ABS \\\"${TORCS_BINDIR_ABS}\\\")
SET(TORCS_INCLUDEDIR_ABS \\\"${TORCS_INCLUDEDIR_ABS}\\\")
SET(IN_SOURCETREE FALSE)\\n\\n\")
FILE(WRITE \"\${CUR_DESTDIR_CORR}${TORCS_DATADIR_ABS}/cmake/speed-dreams.cmake\"
\"SET(TORCS_DATADIR_ABS \\\"${TORCS_DATADIR_ABS}\\\")
SET(TORCS_LOCALDIR \\\"${TORCS_LOCALDIR}\\\")
SET(TORCS_LIBDIR_ABS \\\"${TORCS_LIBDIR_ABS}\\\")
SET(TORCS_BINDIR_ABS \\\"${TORCS_BINDIR_ABS}\\\")
SET(TORCS_INCLUDEDIR_ABS \\\"${TORCS_INCLUDEDIR_ABS}\\\")
SET(IN_SOURCETREE FALSE)\\n\\n\")
FILE(READ \"${SOURCE_DIR}/cmake/macros.cmake\" TORCS_MACRO_CONTENT)
FILE(APPEND \"\${CUR_DESTDIR_CORR}${TORCS_DATADIR_ABS}/cmake/speed-dreams.cmake\" \${TORCS_MACRO_CONTENT})")
ENDMACRO(INSTALL_TORCSNG_CMAKE)
ENDIF(IN_SOURCETREE)
# Generate clobber.sh/bat shell script (remove _any_ build system generated file)
MACRO(TORCS_GENERATE_CLOBBER_SCRIPT)
IF(IN_SOURCETREE)
IF(WIN32)
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 credits.xml 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 generated files and dirs\n")
FILE(APPEND "${TGT_SCRIPT}" "\n")
FILE(APPEND "${TGT_SCRIPT}" "del CMakeCache.txt\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.ncb\n")
FILE(APPEND "${TGT_SCRIPT}" "del /ah speed-dreams.suo\n")
FILE(APPEND "${TGT_SCRIPT}" "del speed-dreams.sln\n")
FILE(APPEND "${TGT_SCRIPT}" "del version.h\n")
FILE(APPEND "${TGT_SCRIPT}" "del version.xml\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}" "\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(WIN32)
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 && -f credits.xml && -d cmake && -d data && -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 generated files and dirs\n")
FILE(APPEND "${TGT_SCRIPT}" " rm -f CMakeCache.txt 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 . -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}" "\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 \"*~\" -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(WIN32)
ENDIF(IN_SOURCETREE)
ENDMACRO(TORCS_GENERATE_CLOBBER_SCRIPT)
ADD_TORCS_DEFINITIONS()

20
cmake/uninstall.cmake Executable file
View File

@ -0,0 +1,20 @@
# CMake script behind the 'uninstall' target.
IF(NOT EXISTS "@CMAKE_CURRENT_BINARY_DIR@/install_manifest.txt")
MESSAGE(FATAL_ERROR "Cannot find install manifest: \"@CMAKE_CURRENT_BINARY_DIR@/install_manifest.txt\"")
ENDIF(NOT EXISTS "@CMAKE_CURRENT_BINARY_DIR@/install_manifest.txt")
FILE(READ "@CMAKE_CURRENT_BINARY_DIR@/install_manifest.txt" FILES_TO_REMOVE)
STRING(REGEX REPLACE "\n" ";" FILES_TO_REMOVE "${FILES_TO_REMOVE}")
FOREACH(FILE_TO_REMOVE ${FILES_TO_REMOVE})
MESSAGE(STATUS "Uninstalling: $ENV{DESTDIR}${FILE_TO_REMOVE}")
IF(EXISTS "$ENV{DESTDIR}${FILE_TO_REMOVE}")
EXEC_PROGRAM("@CMAKE_COMMAND@" ARGS "-E remove \"$ENV{DESTDIR}${FILE_TO_REMOVE}\""
OUTPUT_VARIABLE RM_OUT RETURN_VALUE RM_RETVAL)
IF(NOT "${RM_RETVAL}" STREQUAL "0")
MESSAGE(FATAL_ERROR "Failed to remove $ENV{DESTDIR}${FILE_TO_REMOVE} (err code ${RM_RETVAL})")
ENDIF(NOT "${RM_RETVAL}" STREQUAL "0")
ELSE(EXISTS "$ENV{DESTDIR}${FILE_TO_REMOVE}")
MESSAGE(STATUS "File \"$ENV{DESTDIR}${FILE_TO_REMOVE}\" does not exist.")
ENDIF(EXISTS "$ENV{DESTDIR}${FILE_TO_REMOVE}")
ENDFOREACH(FILE_TO_REMOVE)

0
version.h.cmake → cmake/version.h.cmake Normal file → Executable file
View File