Browse Source

make install should work properly on Mac and Linux

Thomas Buck 9 years ago
parent
commit
012e0fda3a
12 changed files with 117 additions and 22 deletions
  1. 9
    0
      CMakeLists.txt
  2. 6
    0
      ChangeLog.md
  3. 4
    1
      README.md
  4. 4
    1
      cmake/setup.sh
  5. 1
    1
      cmake/setup_mac.sh
  6. 1
    1
      cmake/setup_win.bat
  7. 33
    0
      data/Unix.in
  8. 0
    6
      include/RunTime.h
  9. 9
    3
      include/config.h.in
  10. 30
    5
      src/CMakeLists.txt
  11. 12
    3
      src/config.cpp.in
  12. 8
    1
      src/main.cpp

+ 9
- 0
CMakeLists.txt View File

82
 
82
 
83
 #################################################################
83
 #################################################################
84
 
84
 
85
+# CPack packaging
86
+include (InstallRequiredSystemLibraries)
87
+set (CPACK_RESOURCE_FILE_README "${CMAKE_SOURCE_DIR}/README.md")
88
+set (CPACK_RESOURCE_FILE_README "${CMAKE_SOURCE_DIR}/COPYING")
89
+set (CPACK_MONOLITHIC_INSTALL YES)
90
+include (CPack)
91
+
92
+#################################################################
93
+
85
 if (${CMAKE_GENERATOR} STREQUAL "MinGW Makefiles")
94
 if (${CMAKE_GENERATOR} STREQUAL "MinGW Makefiles")
86
 
95
 
87
 	# Target for running the setup
96
 	# Target for running the setup

+ 6
- 0
ChangeLog.md View File

2
 
2
 
3
 ## OpenRaider (0.1.3) xythobuz <xythobuz@xythobuz.de>
3
 ## OpenRaider (0.1.3) xythobuz <xythobuz@xythobuz.de>
4
 
4
 
5
+    [ 20141010 ]
6
+    * Added CPack packaging to the CMake script
7
+    * Added suitable install target for the Mac App Bundle
8
+    * Now also trying to load config from ${DESTDIR}/etc/OpenRaider.ini if all else fails
9
+    * Added suitable install target for Linux that does not need a setup script
10
+
5
     [ 20141008 ]
11
     [ 20141008 ]
6
     * Added freeGLUT windowing system to use if SDL2 is not available. Not yet working 100%.
12
     * Added freeGLUT windowing system to use if SDL2 is not available. Not yet working 100%.
7
     * Moved unnecessarily duplicated code to Window base class
13
     * Moved unnecessarily duplicated code to Window base class

+ 4
- 1
README.md View File

69
     cmake ..
69
     cmake ..
70
     make run
70
     make run
71
 
71
 
72
-On Mac OS X, running `make install` will produce a (more or less) distributable OpenRaider.app bundle.
72
+On Mac OS X, running `make install` will produce a (more or less) distributable OpenRaider.app bundle, which will be put into /Applications.
73
+
74
+On Linux, running `make install` will install OpenRaider to /usr/local/... (the executable in bin, the config in etc, the data files in share). You can change this path with `make install DESTDIR=”/some/where”`
73
 
75
 
74
 Run `make check` to build and run the unit tests.
76
 Run `make check` to build and run the unit tests.
75
 
77
 
86
 ### Configuration file
88
 ### Configuration file
87
 
89
 
88
 OpenRaider will try to load `~/.OpenRaider/OpenRaider.ini` or, if it doesn't exist, `OpenRaider.ini` from the current directory.
90
 OpenRaider will try to load `~/.OpenRaider/OpenRaider.ini` or, if it doesn't exist, `OpenRaider.ini` from the current directory.
91
+
89
 Running `make setup` will create a minimal configuration in your home directory.
92
 Running `make setup` will create a minimal configuration in your home directory.
90
 
93
 
91
 The configuration file format is very simple:
94
 The configuration file format is very simple:

+ 4
- 1
cmake/setup.sh View File

1
 #!/bin/sh
1
 #!/bin/sh
2
 
2
 
3
 echo "Setting up OpenRaider for user $USER..."
3
 echo "Setting up OpenRaider for user $USER..."
4
+
4
 mkdir -p ~/.OpenRaider
5
 mkdir -p ~/.OpenRaider
5
-cp data/OpenRaider.ini ~/.OpenRaider/
6
 mkdir -p ~/.OpenRaider/paks
6
 mkdir -p ~/.OpenRaider/paks
7
 mkdir -p ~/.OpenRaider/music
7
 mkdir -p ~/.OpenRaider/music
8
 mkdir -p ~/.OpenRaider/data
8
 mkdir -p ~/.OpenRaider/data
9
 mkdir -p ~/.OpenRaider/sshots
9
 mkdir -p ~/.OpenRaider/sshots
10
+
11
+cp data/OpenRaider.ini ~/.OpenRaider/
10
 cp data/*.tga ~/.OpenRaider/data
12
 cp data/*.tga ~/.OpenRaider/data
11
 cp data/*.ttf ~/.OpenRaider/data
13
 cp data/*.ttf ~/.OpenRaider/data
12
 cp data/*.pc ~/.OpenRaider/data
14
 cp data/*.pc ~/.OpenRaider/data
15
+
13
 echo "DONE"
16
 echo "DONE"

+ 1
- 1
cmake/setup_mac.sh View File

3
 if [ ! -d "${HOME}/.OpenRaider" ]; then
3
 if [ ! -d "${HOME}/.OpenRaider" ]; then
4
     echo "Setting up OpenRaider for user $USER..."
4
     echo "Setting up OpenRaider for user $USER..."
5
     mkdir -p ~/.OpenRaider
5
     mkdir -p ~/.OpenRaider
6
-    cp ../Resources/defaults/OpenRaider.ini ~/.OpenRaider/
7
     mkdir -p ~/.OpenRaider/paks
6
     mkdir -p ~/.OpenRaider/paks
8
     mkdir -p ~/.OpenRaider/music
7
     mkdir -p ~/.OpenRaider/music
9
     mkdir -p ~/.OpenRaider/data
8
     mkdir -p ~/.OpenRaider/data
10
     mkdir -p ~/.OpenRaider/sshots
9
     mkdir -p ~/.OpenRaider/sshots
10
+    cp ../Resources/defaults/OpenRaider.ini ~/.OpenRaider/
11
     cp ../Resources/defaults/*.tga ~/.OpenRaider/data
11
     cp ../Resources/defaults/*.tga ~/.OpenRaider/data
12
     cp ../Resources/defaults/*.ttf ~/.OpenRaider/data
12
     cp ../Resources/defaults/*.ttf ~/.OpenRaider/data
13
     cp ../Resources/defaults/*.pc ~/.OpenRaider/data
13
     cp ../Resources/defaults/*.pc ~/.OpenRaider/data

+ 1
- 1
cmake/setup_win.bat View File

3
 if not exist "%UserProfile%\.OpenRaider" (
3
 if not exist "%UserProfile%\.OpenRaider" (
4
 	echo Setting up for %UserName%...
4
 	echo Setting up for %UserName%...
5
 	mkdir "%UserProfile%\.OpenRaider"
5
 	mkdir "%UserProfile%\.OpenRaider"
6
-	copy data\OpenRaider.ini %UserProfile%\.OpenRaider
7
 	mkdir %UserProfile%\.OpenRaider\paks
6
 	mkdir %UserProfile%\.OpenRaider\paks
8
 	mkdir %UserProfile%\.OpenRaider\music
7
 	mkdir %UserProfile%\.OpenRaider\music
9
 	mkdir %UserProfile%\.OpenRaider\data
8
 	mkdir %UserProfile%\.OpenRaider\data
10
 	mkdir %UserProfile%\.OpenRaider\sshots
9
 	mkdir %UserProfile%\.OpenRaider\sshots
10
+	copy data\OpenRaider.ini %UserProfile%\.OpenRaider
11
 	copy data\*.tga %UserProfile%\.OpenRaider\data
11
 	copy data\*.tga %UserProfile%\.OpenRaider\data
12
 	copy data\*.ttf %UserProfile%\.OpenRaider\data
12
 	copy data\*.ttf %UserProfile%\.OpenRaider\data
13
 	copy data\*.pc %UserProfile%\.OpenRaider\data
13
 	copy data\*.pc %UserProfile%\.OpenRaider\data

+ 33
- 0
data/Unix.in View File

1
+# OpenRaider configuration file
2
+
3
+# File locations
4
+set basedir    "@CMAKE_INSTALL_PREFIX@"
5
+set datadir    "$(basedir)/share/OpenRaider"
6
+set pakdir     "$(datadir)"
7
+set audiodir   "$(datadir)"
8
+set font       "$(datadir)/test.ttf"
9
+# set font       "$(datadir)/font.pc"
10
+
11
+# Windowing
12
+set size       1280 720
13
+set fullscreen false
14
+
15
+# Audio
16
+set audio      true # Enable Audio Output
17
+set volume     0.5
18
+
19
+# Input
20
+set mouse_x    0.75
21
+set mouse_y    0.75
22
+
23
+bind menu     "escape"
24
+bind debug    'q'
25
+bind forward  'w'
26
+bind backward 's'
27
+bind left     'a'
28
+bind right    'd'
29
+bind jump     "space"
30
+bind crouch   "leftctrl"
31
+bind use      "leftmouse"
32
+bind holster  "rightmouse"
33
+bind walk     "leftshift"

+ 0
- 6
include/RunTime.h View File

10
 
10
 
11
 #include <string>
11
 #include <string>
12
 
12
 
13
-// Defaults
14
-#define DEFAULT_CONFIG_PATH "~/.OpenRaider"
15
-#define DEFAULT_CONFIG_FILE "OpenRaider.ini"
16
-#define DEFAULT_WIDTH 1280
17
-#define DEFAULT_HEIGHT 720
18
-
19
 /*!
13
 /*!
20
  * \brief Main Game Singleton
14
  * \brief Main Game Singleton
21
  */
15
  */

+ 9
- 3
include/config.h.in View File

8
 #ifndef _CONFIG_H_
8
 #ifndef _CONFIG_H_
9
 #define _CONFIG_H_
9
 #define _CONFIG_H_
10
 
10
 
11
-extern const char *VERSION;
12
-extern const char *VERSION_SHORT;
13
-extern const char *BUILD_HOST;
11
+extern const unsigned int DEFAULT_WIDTH;
12
+extern const unsigned int DEFAULT_HEIGHT;
13
+
14
+extern const char* VERSION;
15
+extern const char* VERSION_SHORT;
16
+extern const char* BUILD_HOST;
17
+extern const char* DEFAULT_CONFIG_PATH;
18
+extern const char* DEFAULT_CONFIG_FILE;
19
+extern const char* INSTALL_PREFIX;
14
 
20
 
15
 #cmakedefine USING_AL
21
 #cmakedefine USING_AL
16
 #cmakedefine USING_PNG
22
 #cmakedefine USING_PNG

+ 30
- 5
src/CMakeLists.txt View File

272
 
272
 
273
 #################################################################
273
 #################################################################
274
 
274
 
275
-if (NOT APPLE)
276
-    # Install binary
277
-    install (TARGETS OpenRaider
278
-        RUNTIME DESTINATION bin
275
+# Install rules
276
+if (APPLE)
277
+    # We want to install to /Applications by default, not /usr
278
+    set (OR_INSTALL_PREFIX "/" CACHE PATH "Prefix prepended to
279
+install directories")
280
+    set (CMAKE_INSTALL_PREFIX "${OR_INSTALL_PREFIX}" CACHE INTERNAL "Prefix
281
+prepended to install directories" FORCE)
282
+
283
+    # Only the App Bundle is required on OS X
284
+    install (TARGETS OpenRaider BUNDLE DESTINATION Applications)
285
+elseif (NOT WIN32)
286
+    # We need a special config file for this install method
287
+    configure_file (
288
+        "${PROJECT_SOURCE_DIR}/data/Unix.in"   
289
+        "${PROJECT_BINARY_DIR}/Unix.ini"
279
     )
290
     )
280
-endif (NOT APPLE)
291
+
292
+    # Executable
293
+    install (TARGETS OpenRaider RUNTIME DESTINATION bin)
294
+
295
+    # Config file
296
+    install (FILES "${PROJECT_BINARY_DIR}/Unix.ini"
297
+        DESTINATION etc
298
+        RENAME "OpenRaider.ini")
299
+
300
+    # Data files
301
+    install (FILES "${PROJECT_SOURCE_DIR}/data/font.pc"
302
+                    "${PROJECT_SOURCE_DIR}/data/splash.tga"
303
+                    "${PROJECT_SOURCE_DIR}/data/test.ttf"
304
+        DESTINATION "share/OpenRaider")
305
+endif (APPLE)
281
 
306
 
282
 #################################################################
307
 #################################################################
283
 
308
 

+ 12
- 3
src/config.cpp.in View File

7
 
7
 
8
 #include "global.h"
8
 #include "global.h"
9
 
9
 
10
-const char *VERSION = "OpenRaider-@OpenRaider_VERSION_MAJOR@.@OpenRaider_VERSION_MINOR@.@OpenRaider_VERSION_MICRO@@OpenRaider_VERSION_RELEASE@ (@CMAKE_BUILD_TYPE@)";
10
+const unsigned int DEFAULT_WIDTH = 1280;
11
+const unsigned int DEFAULT_HEIGHT = 720;
11
 
12
 
12
-const char *VERSION_SHORT = "OpenRaider-@OpenRaider_VERSION_MAJOR@.@OpenRaider_VERSION_MINOR@.@OpenRaider_VERSION_MICRO@@OpenRaider_VERSION_RELEASE@";
13
+const char* VERSION = "OpenRaider-@OpenRaider_VERSION_MAJOR@.@OpenRaider_VERSION_MINOR@.@OpenRaider_VERSION_MICRO@@OpenRaider_VERSION_RELEASE@ (@CMAKE_BUILD_TYPE@)";
13
 
14
 
14
-const char *BUILD_HOST = "@OpenRaider_BUILD_HOST@ @OpenRaider_HOSTNAME@";
15
+const char* VERSION_SHORT = "OpenRaider-@OpenRaider_VERSION_MAJOR@.@OpenRaider_VERSION_MINOR@.@OpenRaider_VERSION_MICRO@@OpenRaider_VERSION_RELEASE@";
16
+
17
+const char* BUILD_HOST = "@OpenRaider_BUILD_HOST@ @OpenRaider_HOSTNAME@";
18
+
19
+const char* DEFAULT_CONFIG_PATH = "~/.OpenRaider";
20
+
21
+const char* DEFAULT_CONFIG_FILE = "OpenRaider.ini";
22
+
23
+const char* INSTALL_PREFIX = "@CMAKE_INSTALL_PREFIX@";
15
 
24
 

+ 8
- 1
src/main.cpp View File

151
     // So we need to initialize some things before executing the config
151
     // So we need to initialize some things before executing the config
152
     if (configFileToUse == "") {
152
     if (configFileToUse == "") {
153
         if (Command::executeFile(DEFAULT_CONFIG_FILE) != 0) {
153
         if (Command::executeFile(DEFAULT_CONFIG_FILE) != 0) {
154
-            Command::executeFile(DEFAULT_CONFIG_PATH "/" DEFAULT_CONFIG_FILE);
154
+            if (Command::executeFile(std::string(DEFAULT_CONFIG_PATH) + "/" + DEFAULT_CONFIG_FILE) != 0) {
155
+                std::string p = INSTALL_PREFIX;
156
+                if (p == "/")
157
+                    p += "etc/";
158
+                else
159
+                    p += "/etc/";
160
+                Command::executeFile(p + DEFAULT_CONFIG_FILE);
161
+            }
155
         }
162
         }
156
     } else {
163
     } else {
157
         Command::executeFile(configFileToUse);
164
         Command::executeFile(configFileToUse);

Loading…
Cancel
Save