forked from oerkki/voxelands
more cmake tweaks for all platforms and various changes for mac build
- rename DATADIR to SHAREDIR, setup proper directories to install miscellaneous files for the project - create libs dir PRE_BUILD, run scripts POST_BUILD, bundle libs linked from /usr/local, install the dylibs bundled - makelibbundle.sh bundles dylibs linked from /usr/local - just install one configuration file in .app - updated README on compiling on Mac OSX
This commit is contained in:
parent
8bb869958c
commit
668a031bd0
|
@ -49,27 +49,50 @@ find_package(Irrlicht)
|
|||
#
|
||||
|
||||
if(WIN32)
|
||||
set(DATADIR "data")
|
||||
set(SHAREDIR "data")
|
||||
set(BINDIR "bin")
|
||||
set(DOCDIR "doc")
|
||||
set(EXAMPLE_CONF_DIR ".")
|
||||
elseif(APPLE)
|
||||
# random placeholders
|
||||
set(DATADIR "share/${PROJECT_NAME}")
|
||||
set(SHAREDIR "share/${PROJECT_NAME}")
|
||||
set(BINDIR "bin")
|
||||
set(DOCDIR "share/doc/${PROJECT_NAME}")
|
||||
set(EXAMPLE_CONF_DIR ".")
|
||||
set(EXAMPLE_CONF_DIR ${DOCDIR})
|
||||
elseif(UNIX) # Linux, BSD etc
|
||||
set(DATADIR "share/${PROJECT_NAME}")
|
||||
if(RUN_IN_PLACE)
|
||||
set(SHAREDIR "share/${PROJECT_NAME}")
|
||||
set(BINDIR "bin")
|
||||
set(DOCDIR "share/doc/${PROJECT_NAME}")
|
||||
set(EXAMPLE_CONF_DIR "share/doc/${PROJECT_NAME}")
|
||||
set(MANDIR "share/man")
|
||||
set(EXAMPLE_CONF_DIR ${DOCDIR})
|
||||
set(XDG_APPS_DIR "share/applications")
|
||||
set(ICONDIR "share/icons")
|
||||
set(LOCALEDIR "share/${PROJECT_NAME}/locale")
|
||||
else()
|
||||
set(SHAREDIR "${CMAKE_INSTALL_PREFIX}/share/${PROJECT_NAME}")
|
||||
set(BINDIR "${CMAKE_INSTALL_PREFIX}/bin")
|
||||
set(DOCDIR "${CMAKE_INSTALL_PREFIX}/share/doc/${PROJECT_NAME}")
|
||||
set(MANDIR "${CMAKE_INSTALL_PREFIX}/share/man")
|
||||
set(EXAMPLE_CONF_DIR ${DOCDIR})
|
||||
set(XDG_APPS_DIR "${CMAKE_INSTALL_PREFIX}/share/applications")
|
||||
set(ICONDIR "${CMAKE_INSTALL_PREFIX}/share/icons")
|
||||
set(LOCALEDIR "${CMAKE_INSTALL_PREFIX}/share/${PROJECT_NAME}/locale")
|
||||
endif()
|
||||
endif()
|
||||
|
||||
install(FILES "README.txt" DESTINATION "${DOCDIR}")
|
||||
install(FILES "doc/changelog.txt" DESTINATION "${DOCDIR}")
|
||||
install(FILES "voxelands.conf.example" DESTINATION "${DOCDIR}")
|
||||
|
||||
if (APPLE)
|
||||
install(DIRECTORY "libs/" DESTINATION "libs")
|
||||
endif()
|
||||
if (UNIX AND NOT APPLE)
|
||||
install(FILES "doc/voxelands.6" "doc/voxelands-server.6" DESTINATION "${MANDIR}/man6")
|
||||
install(FILES "voxelands.desktop" DESTINATION "${XDG_APPS_DIR}")
|
||||
install(FILES "voxelands.svg" DESTINATION "${ICONDIR}/hicolor/scalable/apps")
|
||||
install(FILES "voxelands-24x24.png" DESTINATION "${ICONDIR}/hicolor/24x24/apps")
|
||||
endif()
|
||||
#
|
||||
# Subdirectories
|
||||
# Be sure to add all relevant definitions above this
|
||||
|
|
24
README.txt
24
README.txt
|
@ -91,17 +91,29 @@ $ ./voxelands
|
|||
Compiling on Mac OS X
|
||||
---------------------
|
||||
- You need:
|
||||
* XCode 5 - https://developer.apple.com/xcode/downloads/
|
||||
* XCode commandline tools - https://developer.apple.com/downloads/
|
||||
* XCode - https://developer.apple.com/xcode/downloads/
|
||||
* XCode commandline tools - https://developer.apple.com/downloads/index.action
|
||||
* homebrew - http://brew.sh/
|
||||
* XQuartz - http://xquartz.macosforge.org/landing/
|
||||
|
||||
- Steps:
|
||||
* Install dependencies
|
||||
- brew install jpeg-turbo irrlicht
|
||||
* make XCode project for client only
|
||||
- cmake -DJPEG_INCLUDE_LIBRARY=/usr/local/Cellar/jpeg-turbo/<version>/include -DJPEG_LIBRARY=/usr/local/Cellar/jpeg-turbo/<version>lib/libturbojpeg.a -DBUILD_SERVER=0 -DRUN_IN_PLACE=0 -G Xcode .
|
||||
* build XCode project from commandline (If you're using the GUI, make sure to select "package" as build target)
|
||||
- brew install libpng libvorbis libogg jpeg-turbo gettext irrlicht cmake
|
||||
* make XCode project for client only (NOTE: make sure the linked libraries below have the correct versions)
|
||||
- cmake -DIRRLICHT_INCLUDE_DIR=/usr/local/Cellar/irrlicht/1.8.1/include/irrlicht/ \
|
||||
-DIRRLICHT_LIBRARY=/usr/local/Cellar/irrlicht/1.8.1/lib/libIrrlicht.a \
|
||||
-DJPEG_INCLUDE_DIR=/usr/local/Cellar/jpeg-turbo/1.3.1/include \
|
||||
-DJPEG_LIBRARY=/usr/local/Cellar/jpeg-turbo/1.3.1/lib/libturbojpeg.a \
|
||||
-DBUILD_SERVER=0 -DRUN_IN_PLACE=0 \
|
||||
-DCUSTOM_GETTEXT_PATH=/usr/local/Cellar/gettext/0.19.2/ \
|
||||
-DCMAKE_OSX_ARCHITECTURES=x86_64 \
|
||||
-G Xcode .
|
||||
* build XCode project from commandline (NOTE: if you're using the GUI, make sure to select "package" as build target)
|
||||
- xcodebuild -project voxelands.xcodeproj -target package
|
||||
* open the .dmg app to install voxelands (NOTE: after installing it will show up in the dashboard)
|
||||
|
||||
- NOTE:
|
||||
* Currently misc/mac/makelibbundle.sh only bundles .dylibs that are linked from /usr/local
|
||||
|
||||
Compiling on Windows:
|
||||
---------------------
|
||||
|
|
|
@ -62,7 +62,7 @@ ENDIF()
|
|||
IF(GETTEXT_FOUND)
|
||||
SET(GETTEXT_PO_PATH ${CMAKE_SOURCE_DIR}/po)
|
||||
SET(GETTEXT_MO_BUILD_PATH ${CMAKE_BINARY_DIR}/locale/<locale>/LC_MESSAGES)
|
||||
SET(GETTEXT_MO_DEST_PATH ${DATADIR}/../locale/<locale>/LC_MESSAGES)
|
||||
SET(GETTEXT_MO_DEST_PATH ${SHAREDIR}/../locale/<locale>/LC_MESSAGES)
|
||||
FILE(GLOB GETTEXT_AVAILABLE_LOCALES RELATIVE ${GETTEXT_PO_PATH} "${GETTEXT_PO_PATH}/*")
|
||||
LIST(REMOVE_ITEM GETTEXT_AVAILABLE_LOCALES voxelands.pot)
|
||||
MACRO(SET_MO_PATHS _buildvar _destvar _locale)
|
||||
|
|
|
@ -0,0 +1,18 @@
|
|||
#!/usr/bin/env sh
|
||||
|
||||
tmp=`pwd`
|
||||
proj_dir=`dirname "$tmp"`
|
||||
applibs_dir="$proj_dir/libs/"
|
||||
bin="$1/voxelands"
|
||||
dylibs=($(otool -L "$bin" | grep '/usr/local' | awk -F" " '{print $1}'))
|
||||
mkdir "$applibs_dir"
|
||||
for lib in "${dylibs[@]}"
|
||||
do
|
||||
cp "$lib" "$applibs_dir"
|
||||
echo "############################################################################################"
|
||||
echo "##### Bundling Libs #####"
|
||||
echo "############################################################################################"
|
||||
echo "#### install_name_tool -change "$lib" @executable_path/../Resources/libs/$(basename $lib) "$bin" #####"
|
||||
echo "############################################################################################"
|
||||
install_name_tool -change "$lib" @executable_path/../Resources/libs/$(basename $lib) "$bin"
|
||||
done
|
|
@ -352,17 +352,17 @@ if(BUILD_CLIENT)
|
|||
install(TARGETS ${PROJECT_NAME} DESTINATION ${BINDIR})
|
||||
|
||||
file(GLOB images "${CMAKE_CURRENT_SOURCE_DIR}/../data/textures/*.png")
|
||||
install(FILES ${images} DESTINATION ${DATADIR}/textures)
|
||||
install(FILES ${images} DESTINATION ${SHAREDIR}/textures)
|
||||
file(GLOB models
|
||||
"${CMAKE_CURRENT_SOURCE_DIR}/../data/models/*.b3d")
|
||||
install(FILES ${models} DESTINATION ${DATADIR}/models)
|
||||
install(FILES ${models} DESTINATION ${SHAREDIR}/models)
|
||||
file(GLOB modelsx
|
||||
"${CMAKE_CURRENT_SOURCE_DIR}/../data/models/*.x")
|
||||
install(FILES ${modelsx} DESTINATION ${DATADIR}/models)
|
||||
install(FILES ${modelsx} DESTINATION ${SHAREDIR}/models)
|
||||
file(GLOB html "${CMAKE_CURRENT_SOURCE_DIR}/../data/html/*.html")
|
||||
install(FILES ${html} DESTINATION ${DATADIR}/html)
|
||||
install(FILES ${html} DESTINATION ${SHAREDIR}/html)
|
||||
file(GLOB sounds "${CMAKE_CURRENT_SOURCE_DIR}/../data/sounds/*.ogg")
|
||||
install(FILES ${sounds} DESTINATION ${DATADIR}/sounds)
|
||||
install(FILES ${sounds} DESTINATION ${SHAREDIR}/sounds)
|
||||
|
||||
if(USE_GETTEXT)
|
||||
foreach(LOCALE ${GETTEXT_AVAILABLE_LOCALES})
|
||||
|
@ -415,6 +415,9 @@ if(BUILD_CLIENT)
|
|||
add_custom_command (TARGET ${PROJECT_NAME} PRE_BUILD
|
||||
COMMAND mkdir -p ${EXECUTABLE_OUTPUT_PATH}/\${CONFIGURATION}/Contents/Resources)
|
||||
find_program(IBTOOL ibtool HINTS "/usr/bin" "${OSX_DEVELOPER_ROOT}/usr/bin")
|
||||
# Make sure the 'Libs' Directory is correctly created before we build
|
||||
add_custom_command (TARGET ${PROJECT_NAME} PRE_BUILD
|
||||
COMMAND mkdir -p ${EXECUTABLE_OUTPUT_PATH}/\${CONFIGURATION}/Contents/Resources/libs)
|
||||
if (${IBTOOL} STREQUAL "IBTOOL-NOTFOUND")
|
||||
message(SEND_ERROR "ibtool can not be found and is needed to compile the .xib files. It should have been installed with the Apple developer tools. The default system paths were searched in addition to ${OSX_DEVELOPER_ROOT}/usr/bin")
|
||||
endif()
|
||||
|
@ -427,13 +430,17 @@ if(BUILD_CLIENT)
|
|||
COMMENT "Compiling ${CMAKE_SOURCE_DIR}/${xib}.xib")
|
||||
endforeach()
|
||||
# Make icns from svg, just in case it was updated
|
||||
add_custom_command (TARGET ${PROJECT_NAME} PRE_BUILD
|
||||
add_custom_command (TARGET ${PROJECT_NAME} POST_BUILD
|
||||
COMMAND ${CMAKE_SOURCE_DIR}/misc/mac/makeicns.sh
|
||||
COMMENT "making ${PROJECT_NAME}.icns file from ${PROJECT_NAME}.svg")
|
||||
# Change to proper version and mac osx deployment version
|
||||
add_custom_command (TARGET ${PROJECT_NAME} PRE_BUILD
|
||||
add_custom_command (TARGET ${PROJECT_NAME} POST_BUILD
|
||||
COMMAND ${CMAKE_SOURCE_DIR}/misc/mac/makeplist.sh ${VERSION_STRING}
|
||||
COMMENT "Change Info.plist according to provided CMAKE variables")
|
||||
# Include the linked '.dylib' to bundle inside the app
|
||||
add_custom_command (TARGET ${PROJECT_NAME} POST_BUILD
|
||||
COMMAND ${CMAKE_SOURCE_DIR}/misc/mac/makelibbundle.sh ${EXECUTABLE_OUTPUT_PATH}/\${CONFIGURATION}
|
||||
COMMENT "Bundling dylibs with the app bundle")
|
||||
endif(APPLE)
|
||||
endif(BUILD_CLIENT)
|
||||
|
||||
|
|
Loading…
Reference in New Issue