Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

source: code/branches/buildsystem3/bin/CMakeLists.txt @ 2684

Last change on this file since 2684 was 2684, checked in by rgrieder, 15 years ago

Added convenience run script again on request, but to the build directory this time.

  • Property svn:eol-style set to native
File size: 5.1 KB
Line 
1 #
2 #             ORXONOX - the hottest 3D action shooter ever to exist
3 #                             > www.orxonox.net <
4 #
5 #        This program is free software; you can redistribute it and/or
6 #         modify it under the terms of the GNU General Public License
7 #        as published by the Free Software Foundation; either version 2
8 #            of the License, or (at your option) any later version.
9 #
10 #       This program is distributed in the hope that it will be useful,
11 #        but WITHOUT ANY WARRANTY; without even the implied warranty of
12 #        MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13 #                 GNU General Public License for more details.
14 #
15 #   You should have received a copy of the GNU General Public License along
16 #      with this program; if not, write to the Free Software Foundation,
17 #     Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
18 #
19 #
20 #  Author:
21 #    Reto Grieder
22 #  Description:
23 #    Configures the binary output directory with files required for Orxonox
24 #    to run like orxonox.ini or the default keybindings.
25 #    Also creates a run-script in the root directory of the build tree.
26 #
27 
28SET(READ_ONLY_CONFIG_FILES
29  def_keybindings.ini
30  def_masterKeybindings.ini
31  disco.txt
32  irc.tcl
33  remote.tcl
34  telnet_server.tcl
35)
36
37SET(WRITABLE_CONFIG_FILES
38)
39
40# Not getting installed
41SET(ORXONOX_INI orxonox.ini)
42
43IF(TARDIS)
44  # OGRE can't find fonts to display config screen on Tardis,
45  # so providing default config file here (bug).
46  LIST(APPEND WRITABLE_CONFIG_FILES ogre.cfg)
47ENDIF(TARDIS)
48
49# We need the same code for both READ_ONLY and WRITABLE config files
50MACRO(CONFIGURE_FILES _file_name _build_configs _read_only_arg)
51  SET(_read_only ${_read_only_arg})
52  FOREACH(_build_config ${_build_configs})
53    # Is there an extra file in bin/Debug or bin/Release?
54    IF(${_build_config} MATCHES "Rel")
55      SET(_build_config_short "Release")
56    ELSE()
57      SET(_build_config_short "Debug")
58    ENDIF()
59    IF(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/${_build_config_short}/${_file_name})
60      SET(_in_file ${CMAKE_CURRENT_SOURCE_DIR}/${_build_config_short}/${_file_name})
61    ELSE()
62      SET(_in_file ${CMAKE_CURRENT_SOURCE_DIR}/${_file_name})
63    ENDIF()
64
65    # Copy to the folder named like the build config for Visual Studio
66    IF(CMAKE_CONFIGURATION_TYPES)
67      SET(_out_file ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/${_build_config}/${_file_name})
68    ELSE()
69      SET(_out_file ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/${_file_name})
70    ENDIF()
71    # Only copy if target file doesn't exist. This may result in problems but
72    # otherwise we might delete a user's config
73    IF(NOT EXISTS ${_out_file} OR _read_only)
74      CONFIGURE_FILE(${_in_file} ${_out_file} @ONLY)
75    ENDIF()
76  ENDFOREACH(_build_config)
77ENDMACRO(CONFIGURE_FILES)
78
79# Copy config files to all Visual Studio output directories
80IF(CMAKE_CONFIGURATION_TYPES)
81  SET(BUILD_CONFIGS ${CMAKE_CONFIGURATION_TYPES})
82ELSE()
83  SET(CONFIG_OUT_PATHS_REL ".")
84  SET(BUILD_CONFIGS ${CMAKE_BUILD_TYPE})
85ENDIF()
86
87FOREACH(_file_name ${READ_ONLY_CONFIG_FILES})
88  CONFIGURE_FILES("${_file_name}" "${BUILD_CONFIGS}" TRUE)
89ENDFOREACH(_file_name)
90FOREACH(_file_name ${WRITABLE_CONFIG_FILES} ${ORXONOX_INI})
91  CONFIGURE_FILES("${_file_name}" "${BUILD_CONFIGS}" FALSE)
92ENDFOREACH(_file_name)
93
94
95################ Installation #################
96
97# Not using collective call to allow configuration with CMake.
98FOREACH(_file ${READ_ONLY_CONFIG_FILES} ${WRITABLE_CONFIG_FILES})
99  IF(CMAKE_CONFIGURATION_TYPES)
100    FOREACH(_configuration ${CMAKE_CONFIGURATION_TYPES})
101      INSTALL(
102        FILES ${CMAKE_BINARY_DIR}/bin/${_configuration}/${_file}
103        DESTINATION ${ORXONOX_RUNTIME_INSTALL_PATH}
104        CONFIGURATIONS ${_configuration}
105      )
106    ENDFOREACH(_configuration)
107  ELSE()
108    INSTALL(FILES ${CMAKE_BINARY_DIR}/bin/${_file} DESTINATION ${ORXONOX_RUNTIME_INSTALL_PATH})
109  ENDIF()
110ENDFOREACH(_file)
111
112
113################ Run Scripts ##################
114
115# Create a run script for Windows to manually add the DLL path when executing
116IF(WIN32)
117  SET(RUN_SCRIPT run.bat)
118ELSEIF(UNIX)
119  SET(RUN_SCRIPT run)
120ENDIF()
121
122IF(NOT CMAKE_CONFIGURATION_TYPES)
123  SET(_subdirs .)
124  SEt(_default_subdir .)
125ELSE()
126  SET(_subdirs ${CMAKE_CONFIGURATION_TYPES})
127  SEt(_default_subdir Debug)
128ENDIF()
129STRING(REPLACE "/" "\\" ORXONOX_RUNTIME_LIBRARY_DIRECTORY_WINDOWS ${ORXONOX_RUNTIME_LIBRARY_DIRECTORY})
130FOREACH(_subdir ${_subdirs})
131  GET_FILENAME_COMPONENT(CURRENT_RUNTIME_DIR ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/${_subdir} ABSOLUTE)
132
133  # Note: Do not use FILE(TO_NATIVE_PATH) because it doesn't work for MinGW
134  STRING(REGEX REPLACE "^([A-Z]\\:)\\/.*$" "\\1" WINDOWS_DRIVE_CHANGE ${CURRENT_RUNTIME_DIR})
135  STRING(REPLACE "/" "\\" CURRENT_RUNTIME_DIR_WINDOWS ${CURRENT_RUNTIME_DIR})
136
137  CONFIGURE_FILE(${CMAKE_CURRENT_SOURCE_DIR}/${RUN_SCRIPT}.in ${CURRENT_RUNTIME_DIR}/${RUN_SCRIPT} @ONLY)
138  IF(_subdir STREQUAL _default_subdir)
139    # Convenience script to be used when sitting in the binary directory. Defaults to Debug for msvc.
140    CONFIGURE_FILE(${CMAKE_CURRENT_SOURCE_DIR}/${RUN_SCRIPT}.in ${CMAKE_BINARY_DIR}/${RUN_SCRIPT} @ONLY)
141  ENDIF()
142ENDFOREACH(_subdir)
Note: See TracBrowser for help on using the repository browser.