summaryrefslogtreecommitdiff
blob: b4db7644bc9d50cc3d5349b4a5f0b4322dcd300d (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
From: hasufell <julian.ospald@googlemail.com>
Date: Sat Apr 28 16:38:56 UTC 2012
Subject: build system

use allegro-config
remove "-O2" from pre-defined CFLAGS
make paths modifiable
add rules for icon, desktop-file and game-wrapper
fix compilation for as-needed

--- CMakeLists.txt
+++ CMakeLists.txt
@@ -35,16 +35,14 @@
 MESSAGE("Using CFLAGS='${CFLAGS}'")
 
 IF(UNIX)
-  SET(ALLEGRO_UNIX_LIBS "$ENV{_ALLEGRO_LIBS}")
+  exec_program(allegro-config ARGS --libs OUTPUT_VARIABLE ALLEGRO_LIBRARY)
+  SET(ALLEGRO_UNIX_LIBS "${ALLEGRO_LIBRARY}")
   IF(NOT ALLEGRO_UNIX_LIBS)
-    MESSAGE(FATAL_ERROR "Please do not invoke CMake directly. Run ./configure instead.")
+	  MESSAGE(FATAL_ERROR "Allegro libs not found!")
   ENDIF(NOT ALLEGRO_UNIX_LIBS)
 ENDIF(UNIX)
 
 
-
-
-
 # Finding the required libraries:
 
 # Allegro: liballeg
@@ -53,7 +51,8 @@
   MESSAGE(FATAL_ERROR "Fatal error: couldn't find the Allegro game programming library (liballeg)! ${RTFM}")
 ELSE(NOT LALLEG)
   IF(UNIX)
-    SET(ALLEGRO_UNIX_VERSION "$ENV{_ALLEGRO_VERSION}")
+    exec_program(allegro-config ARGS --version OUTPUT_VARIABLE ALLEGRO_VERSION)
+    SET(ALLEGRO_UNIX_VERSION "${ALLEGRO_VERSION}")
     IF(NOT ALLEGRO_UNIX_VERSION STREQUAL ALLEGRO_RECOMMENDED_VERSION)
       MESSAGE("\nWARNING: your Allegro version is ${ALLEGRO_UNIX_VERSION}. The recommended version is ${ALLEGRO_RECOMMENDED_VERSION}.\n         ${GAME_NAME} may not compile properly!.\n")
     ENDIF(NOT ALLEGRO_UNIX_VERSION STREQUAL ALLEGRO_RECOMMENDED_VERSION)
@@ -249,9 +248,8 @@
 IF(UNIX)
   SET(GAME_SRCS ${GAME_SRCS} src/misc/iconlin.c)
   ADD_EXECUTABLE(${GAME_UNIXNAME} ${GAME_SRCS})
-  SET_TARGET_PROPERTIES(${GAME_UNIXNAME} PROPERTIES LINK_FLAGS ${ALLEGRO_UNIX_LIBS})
-  TARGET_LINK_LIBRARIES(${GAME_UNIXNAME} m logg vorbisfile vorbis ogg jpgalleg z png loadpng)
-  SET_TARGET_PROPERTIES(${GAME_UNIXNAME} PROPERTIES COMPILE_FLAGS "-Wall -O2 ${CFLAGS} ${CFLAGS_EXTRA}")
+  TARGET_LINK_LIBRARIES(${GAME_UNIXNAME} m logg vorbisfile vorbis ogg jpgalleg z png loadpng ${ALLEGRO_UNIX_LIBS})
+  SET_TARGET_PROPERTIES(${GAME_UNIXNAME} PROPERTIES COMPILE_FLAGS "-Wall")
 ENDIF(UNIX)
 
 
@@ -407,19 +405,43 @@
 SET_TARGET_PROPERTIES(${GAME_UNIXNAME} PROPERTIES PROJECT_NAME "${GAME_NAME}")
 
 
-
 # Installing on *nix
 IF(UNIX)
-  SET(GAME_INSTALL_DIR "/usr/share/${GAME_UNIXNAME}")
-  SET(GAME_FINAL_DIR "/usr/bin")
+  SET(GAME_INSTALL_DIR "${CMAKE_INSTALL_PREFIX}/share/${GAME_UNIXNAME}" CACHE PATH "")
+  SET(GAME_FINAL_DIR "bin" CACHE PATH "")
+  SET(GAME_LIBDIR "games/lib" CACHE PATH "")
+  SET(GAME_DOCDIR "share/doc/${GAME_UNIXNAME}-${GAME_VERSION}" CACHE PATH "")
+  SET(GAME_HTMLDIR "share/doc/${GAME_UNIXNAME}-${GAME_VERSION}/html" CACHE PATH "")
+  SET(GAME_ICONDIR "share/pixmaps" CACHE PATH "")
+  SET(GAME_DESKTOPDIR "share/applications" CACHE PATH "")
+
+  FILE(WRITE ${GAME_UNIXNAME}.sh
+"#!/bin/sh
+cd ${GAME_LIBDIR}
+exec ./${GAME_UNIXNAME} \"$@\"
+"
+)
 
-  INSTALL(CODE "MESSAGE(\"Installing ${GAME_NAME} ${GAME_VERSION}... Make sure you have root privileges.\")")
-  INSTALL(TARGETS ${GAME_UNIXNAME} RUNTIME DESTINATION ${GAME_INSTALL_DIR})
-  INSTALL(FILES license.txt readme.html DESTINATION ${GAME_INSTALL_DIR})
-  INSTALL(DIRECTORY objects sprites config images levels licenses musics quests samples screenshots themes languages DESTINATION ${GAME_INSTALL_DIR} PATTERN ".svn" EXCLUDE)
+  FILE(WRITE ${GAME_UNIXNAME}.desktop
+"[Desktop Entry]
+Name=${GAME_NAME}
+Type=Application
+Comment=A free open-source clone of the Sonic the Hedgehog universe
+Exec=${GAME_UNIXNAME}
+TryExec=${GAME_UNIXNAME}
+Icon=${GAME_UNIXNAME}
+Categories=Game;ArcadeGame;
+"
+)
 
-  INSTALL(CODE "MESSAGE(\"Creating files at ${GAME_FINAL_DIR}...\")")
-  INSTALL(CODE "EXECUTE_PROCESS(COMMAND \"cmake\" \"-E\" \"copy\" \"${GAME_INSTALL_DIR}/${GAME_UNIXNAME}\" \"${GAME_FINAL_DIR}/${GAME_UNIXNAME}\")")
+  INSTALL(CODE "MESSAGE(\"Installing ${GAME_NAME} ${GAME_VERSION}... Make sure you have root privileges.\")")
+  INSTALL(TARGETS ${GAME_UNIXNAME} RUNTIME DESTINATION ${GAME_LIBDIR})
+#  INSTALL(FILES license.txt DESTINATION ${GAME_DOCDIR})
+  INSTALL(FILES readme.html DESTINATION ${GAME_HTMLDIR})
+  INSTALL(FILES icon.png DESTINATION ${GAME_ICONDIR} RENAME ${GAME_UNIXNAME}.png)
+  INSTALL(FILES ${GAME_UNIXNAME}.desktop DESTINATION ${GAME_DESKTOPDIR})
+  INSTALL(DIRECTORY objects sprites config images levels musics quests samples themes languages DESTINATION ${GAME_INSTALL_DIR} PATTERN ".svn" EXCLUDE)
+  INSTALL(PROGRAMS ${GAME_UNIXNAME}.sh DESTINATION ${GAME_FINAL_DIR} RENAME ${GAME_UNIXNAME})
 
   INSTALL(CODE "MESSAGE(\"Done! Please run ${GAME_UNIXNAME} to start ${GAME_NAME}.\")")
 ENDIF(UNIX)