109 lines
		
	
	
		
			4.6 KiB
		
	
	
	
		
			Diff
		
	
	
	
	
	
		
		
			
		
	
	
			109 lines
		
	
	
		
			4.6 KiB
		
	
	
	
		
			Diff
		
	
	
	
	
	
|  | From: hasufell <julian.ospald@googlemail.com> | ||
|  | Date: Sat Apr 28 16:38:56 UTC 2012 | ||
|  | Subject: build system | ||
|  | Upstream: no, dead | ||
|  | 
 | ||
|  | 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) |