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)
|
if(WIN32)
|
||||||
set(DATADIR "data")
|
set(SHAREDIR "data")
|
||||||
set(BINDIR "bin")
|
set(BINDIR "bin")
|
||||||
set(DOCDIR "doc")
|
set(DOCDIR "doc")
|
||||||
set(EXAMPLE_CONF_DIR ".")
|
set(EXAMPLE_CONF_DIR ".")
|
||||||
elseif(APPLE)
|
elseif(APPLE)
|
||||||
# random placeholders
|
# random placeholders
|
||||||
set(DATADIR "share/${PROJECT_NAME}")
|
set(SHAREDIR "share/${PROJECT_NAME}")
|
||||||
set(BINDIR "bin")
|
set(BINDIR "bin")
|
||||||
set(DOCDIR "share/doc/${PROJECT_NAME}")
|
set(DOCDIR "share/doc/${PROJECT_NAME}")
|
||||||
set(EXAMPLE_CONF_DIR ".")
|
set(EXAMPLE_CONF_DIR ${DOCDIR})
|
||||||
elseif(UNIX) # Linux, BSD etc
|
elseif(UNIX) # Linux, BSD etc
|
||||||
set(DATADIR "share/${PROJECT_NAME}")
|
if(RUN_IN_PLACE)
|
||||||
set(BINDIR "bin")
|
set(SHAREDIR "share/${PROJECT_NAME}")
|
||||||
set(DOCDIR "share/doc/${PROJECT_NAME}")
|
set(BINDIR "bin")
|
||||||
set(EXAMPLE_CONF_DIR "share/doc/${PROJECT_NAME}")
|
set(DOCDIR "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()
|
endif()
|
||||||
|
|
||||||
install(FILES "README.txt" DESTINATION "${DOCDIR}")
|
install(FILES "README.txt" DESTINATION "${DOCDIR}")
|
||||||
install(FILES "doc/changelog.txt" DESTINATION "${DOCDIR}")
|
install(FILES "doc/changelog.txt" DESTINATION "${DOCDIR}")
|
||||||
install(FILES "voxelands.conf.example" 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
|
# Subdirectories
|
||||||
# Be sure to add all relevant definitions above this
|
# 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
|
Compiling on Mac OS X
|
||||||
---------------------
|
---------------------
|
||||||
- You need:
|
- You need:
|
||||||
* XCode 5 - https://developer.apple.com/xcode/downloads/
|
* XCode - https://developer.apple.com/xcode/downloads/
|
||||||
* XCode commandline tools - https://developer.apple.com/downloads/
|
* XCode commandline tools - https://developer.apple.com/downloads/index.action
|
||||||
* homebrew - http://brew.sh/
|
* homebrew - http://brew.sh/
|
||||||
|
* XQuartz - http://xquartz.macosforge.org/landing/
|
||||||
|
|
||||||
- Steps:
|
- Steps:
|
||||||
* Install dependencies
|
* Install dependencies
|
||||||
- brew install jpeg-turbo irrlicht
|
- brew install libpng libvorbis libogg jpeg-turbo gettext irrlicht cmake
|
||||||
* make XCode project for client only
|
* make XCode project for client only (NOTE: make sure the linked libraries below have the correct versions)
|
||||||
- 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 .
|
- cmake -DIRRLICHT_INCLUDE_DIR=/usr/local/Cellar/irrlicht/1.8.1/include/irrlicht/ \
|
||||||
* build XCode project from commandline (If you're using the GUI, make sure to select "package" as build target)
|
-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
|
- 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:
|
Compiling on Windows:
|
||||||
---------------------
|
---------------------
|
||||||
|
|
|
@ -62,7 +62,7 @@ ENDIF()
|
||||||
IF(GETTEXT_FOUND)
|
IF(GETTEXT_FOUND)
|
||||||
SET(GETTEXT_PO_PATH ${CMAKE_SOURCE_DIR}/po)
|
SET(GETTEXT_PO_PATH ${CMAKE_SOURCE_DIR}/po)
|
||||||
SET(GETTEXT_MO_BUILD_PATH ${CMAKE_BINARY_DIR}/locale/<locale>/LC_MESSAGES)
|
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}/*")
|
FILE(GLOB GETTEXT_AVAILABLE_LOCALES RELATIVE ${GETTEXT_PO_PATH} "${GETTEXT_PO_PATH}/*")
|
||||||
LIST(REMOVE_ITEM GETTEXT_AVAILABLE_LOCALES voxelands.pot)
|
LIST(REMOVE_ITEM GETTEXT_AVAILABLE_LOCALES voxelands.pot)
|
||||||
MACRO(SET_MO_PATHS _buildvar _destvar _locale)
|
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})
|
install(TARGETS ${PROJECT_NAME} DESTINATION ${BINDIR})
|
||||||
|
|
||||||
file(GLOB images "${CMAKE_CURRENT_SOURCE_DIR}/../data/textures/*.png")
|
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
|
file(GLOB models
|
||||||
"${CMAKE_CURRENT_SOURCE_DIR}/../data/models/*.b3d")
|
"${CMAKE_CURRENT_SOURCE_DIR}/../data/models/*.b3d")
|
||||||
install(FILES ${models} DESTINATION ${DATADIR}/models)
|
install(FILES ${models} DESTINATION ${SHAREDIR}/models)
|
||||||
file(GLOB modelsx
|
file(GLOB modelsx
|
||||||
"${CMAKE_CURRENT_SOURCE_DIR}/../data/models/*.x")
|
"${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")
|
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")
|
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)
|
if(USE_GETTEXT)
|
||||||
foreach(LOCALE ${GETTEXT_AVAILABLE_LOCALES})
|
foreach(LOCALE ${GETTEXT_AVAILABLE_LOCALES})
|
||||||
|
@ -415,6 +415,9 @@ if(BUILD_CLIENT)
|
||||||
add_custom_command (TARGET ${PROJECT_NAME} PRE_BUILD
|
add_custom_command (TARGET ${PROJECT_NAME} PRE_BUILD
|
||||||
COMMAND mkdir -p ${EXECUTABLE_OUTPUT_PATH}/\${CONFIGURATION}/Contents/Resources)
|
COMMAND mkdir -p ${EXECUTABLE_OUTPUT_PATH}/\${CONFIGURATION}/Contents/Resources)
|
||||||
find_program(IBTOOL ibtool HINTS "/usr/bin" "${OSX_DEVELOPER_ROOT}/usr/bin")
|
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")
|
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")
|
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()
|
endif()
|
||||||
|
@ -427,13 +430,17 @@ if(BUILD_CLIENT)
|
||||||
COMMENT "Compiling ${CMAKE_SOURCE_DIR}/${xib}.xib")
|
COMMENT "Compiling ${CMAKE_SOURCE_DIR}/${xib}.xib")
|
||||||
endforeach()
|
endforeach()
|
||||||
# Make icns from svg, just in case it was updated
|
# 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
|
COMMAND ${CMAKE_SOURCE_DIR}/misc/mac/makeicns.sh
|
||||||
COMMENT "making ${PROJECT_NAME}.icns file from ${PROJECT_NAME}.svg")
|
COMMENT "making ${PROJECT_NAME}.icns file from ${PROJECT_NAME}.svg")
|
||||||
# Change to proper version and mac osx deployment version
|
# 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}
|
COMMAND ${CMAKE_SOURCE_DIR}/misc/mac/makeplist.sh ${VERSION_STRING}
|
||||||
COMMENT "Change Info.plist according to provided CMAKE variables")
|
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(APPLE)
|
||||||
endif(BUILD_CLIENT)
|
endif(BUILD_CLIENT)
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue