From f926285bf628f8096116e53a7f9812f256536993 Mon Sep 17 00:00:00 2001 From: filux Date: Thu, 4 Jun 2015 23:26:50 +0200 Subject: [PATCH] since now required dynamic libs from non standard locations will be added to the mac packages, #63 --- data/glest_game | 2 +- mk/macosx/.gitignore | 1 + mk/macosx/CMakeLists.txt | 12 ++++++------ mk/macosx/build-mg.sh | 15 +++++++++++++++ mk/macosx/bundle_resources/MegaGlest.sh | 12 +++++++++--- mk/macosx/make-binary-archive.sh | 4 +++- mk/macosx/make-release-archives.sh | 10 +++++++--- source/glest_game/CMakeLists.txt | 5 +++++ 8 files changed, 47 insertions(+), 14 deletions(-) diff --git a/data/glest_game b/data/glest_game index 29c128db..7e77df78 160000 --- a/data/glest_game +++ b/data/glest_game @@ -1 +1 @@ -Subproject commit 29c128dbcd38d9b27bba88b06cec2ae263c995b1 +Subproject commit 7e77df78222149d71d9502dcb4a221954405f7ce diff --git a/mk/macosx/.gitignore b/mk/macosx/.gitignore index 2fc9fa28..1c08a0b9 100644 --- a/mk/macosx/.gitignore +++ b/mk/macosx/.gitignore @@ -8,6 +8,7 @@ core.bak /p7zip/ /build/ +/lib/ /[Rr]elease/ /[Dd]ebug/ /mydata/ diff --git a/mk/macosx/CMakeLists.txt b/mk/macosx/CMakeLists.txt index c8d763b6..f5511a60 100644 --- a/mk/macosx/CMakeLists.txt +++ b/mk/macosx/CMakeLists.txt @@ -45,14 +45,14 @@ SET(CPACK_PACKAGE_ICON "${CMAKE_CURRENT_SOURCE_DIR}/mk/macosx/bundle_resources/M SET(CPACK_BUNDLE_ICON "${CMAKE_CURRENT_SOURCE_DIR}/mk/macosx/bundle_resources/MegaGlest.icns") SET(CPACK_BUNDLE_STARTUP_COMMAND "${PROJECT_SOURCE_DIR}/mk/macosx/bundle_resources/MegaGlest.sh") -# Install files in to the package (FIXME: how? we sure?) -INSTALL(FILES - ${LUA_LIBRARIES} - DESTINATION ../Frameworks -) +# Install files in to the package +#INSTALL(FILES +# ${LUA_LIBRARIES} +# DESTINATION ../Frameworks +#) #the SDL_LIBRARY is seen as a framework thus we need to remove the suffix... -STRING(REGEX REPLACE ";.*" "" SDL_LIBRARY_DIR "${SDL_LIBRARY}") +#STRING(REGEX REPLACE ";.*" "" SDL_LIBRARY_DIR "${SDL_LIBRARY}") #INSTALL(DIRECTORY # ${OGG_LIBRARY} diff --git a/mk/macosx/build-mg.sh b/mk/macosx/build-mg.sh index f83b2e0b..f9e2a916 100755 --- a/mk/macosx/build-mg.sh +++ b/mk/macosx/build-mg.sh @@ -70,6 +70,21 @@ if [ ! -e ".p7zip.zip" ]; then fi if [ ! -d "p7zip" ]; then unzip .p7zip.zip >/dev/null; fi +if [ "$BUILD_BUNDLE" -eq "1" ]; then + if [ -e "megaglest" ] && [ "$(./megaglest --version >/dev/null; echo "$?")" -eq "0" ]; then + if [ -d "lib" ]; then rm -rf "lib"; fi + mkdir -p "lib" + list_of_libs="$(otool -L megaglest | grep -v '/System/Library/Frameworks/' | grep -v '/usr/lib/' | awk '{print $1}')" + for dyn_lib in $list_of_libs; do + cp "$dyn_lib" "lib/" + done + else + echo 'Error: Please run first at least once build-mg.sh script to be ready for prepare directory with dynamic libraries.' + # strange method but required for cpack/.dmg + exit 1 + fi +fi + # Google breakpad integration (cross platform memory dumps) - OPTIONAL # Set this to the root path of your Google breakpad subversion working copy. # By default, this script looks for a "google-breakpad" sub-directory within diff --git a/mk/macosx/bundle_resources/MegaGlest.sh b/mk/macosx/bundle_resources/MegaGlest.sh index ec3c7e21..80e133b9 100755 --- a/mk/macosx/bundle_resources/MegaGlest.sh +++ b/mk/macosx/bundle_resources/MegaGlest.sh @@ -5,8 +5,14 @@ export LANG=C SCRIPTDIR="$(cd "$(dirname "$0")"; pwd)" -export DYLD_LIBRARY_PATH="$SCRIPTDIR/../FRAMEWORKS" -export PATH="$SCRIPTDIR/../Resources/megaglest-game:$PATH" +if [ -d "$SCRIPTDIR/lib" ]; then + export DYLD_LIBRARY_PATH="$SCRIPTDIR/lib" + binary_dir_path="$SCRIPTDIR" +else + export DYLD_LIBRARY_PATH="$SCRIPTDIR/../Frameworks" + binary_dir_path="$SCRIPTDIR/../Resources/megaglest-game" +fi +export PATH="$binary_dir_path:$PATH" -exec "$SCRIPTDIR/../Resources/megaglest-game/megaglest" +exec "$binary_dir_path/megaglest" exit "$?" diff --git a/mk/macosx/make-binary-archive.sh b/mk/macosx/make-binary-archive.sh index 6d7098bc..39fef4f2 100755 --- a/mk/macosx/make-binary-archive.sh +++ b/mk/macosx/make-binary-archive.sh @@ -44,7 +44,8 @@ if [ -e "$RELEASEDIR/glest.ico" ]; then rm "$RELEASEDIR/glest.ico"; fi #cp bundle_resources/*.icns "$RELEASEDIR" cp {../shared/,}*.ini "$RELEASEDIR" if [ -e "$RELEASEDIR/glest-dev.ini" ]; then rm "$RELEASEDIR/glest-dev.ini"; fi -cp megaglest "$RELEASEDIR" +cp megaglest bundle_resources/MegaGlest.sh "$RELEASEDIR" + if [ -e "megaglest_editor" ]; then cp megaglest_editor "$RELEASEDIR" else @@ -56,6 +57,7 @@ else if [ -e "$RELEASEDIR/g3dviewer.ico" ]; then rm "$RELEASEDIR/g3dviewer.ico"; fi fi if [ -d "p7zip" ]; then cp -r p7zip "$RELEASEDIR"; fi +if [ -d "lib" ]; then cp -r lib "$RELEASEDIR"; fi echo "creating $PACKAGE" cd "$RELEASEDIR_ROOT" diff --git a/mk/macosx/make-release-archives.sh b/mk/macosx/make-release-archives.sh index 143d7b40..cd5e7edf 100755 --- a/mk/macosx/make-release-archives.sh +++ b/mk/macosx/make-release-archives.sh @@ -30,22 +30,26 @@ mkdir -p "$APP_BIN_DIR" ./make-binary-archive.sh cp -r "$RELEASEDIR_ROOT/$BINARY_DIR/"* "$APP_GAME_DIR" ../linux/make-data-archive.sh -cp -r "$RELEASEDIR_ROOT/$DATA_DIR/"* "$APP_GAME_DIR" +cp -r "$RELEASEDIR_ROOT/$DATA_DIR/"* "$APP_GAME_DIR"; sleep 0.5s +if [ -f "$APP_GAME_DIR/MegaGlest.sh" ]; then rm -f "$APP_GAME_DIR/MegaGlest.sh"; fi + cp "$CURRENTDIR/build/mk/macosx/bundle_resources/Info.plist" "$APP_PLIST_DIR" cp "$CURRENTDIR/bundle_resources/MegaGlest.icns" "$APP_RES_DIR" cp "$CURRENTDIR/bundle_resources/MegaGlest.sh" "$APP_BIN_DIR" mv "$APP_BIN_DIR/MegaGlest.sh" "$APP_BIN_DIR/MegaGlest" +mv "$APP_GAME_DIR/lib" "$APP_GAME_DIR/Frameworks"; sleep 0.5s +mv "$APP_GAME_DIR/Frameworks" "$APP_PLIST_DIR/" echo "creating $PACKAGE" cd "$RELEASEDIR_ROOT" -if [ -f "$PACKAGE" ]; then rm "$PACKAGE"; fi +if [ -f "$PACKAGE" ]; then rm -f "$PACKAGE"; fi cd "$RELEASENAME" zip -9r "../$PACKAGE" "MegaGlest.app" >/dev/null ls -lhA "${RELEASEDIR_ROOT}/$PACKAGE" echo "creating $PACKAGE2" cd "$CURRENTDIR/build" -if [ -f "$RELEASEDIR_ROOT/$PACKAGE2" ]; then rm "$RELEASEDIR_ROOT/$PACKAGE2"; fi +if [ -f "$RELEASEDIR_ROOT/$PACKAGE2" ]; then rm -f "$RELEASEDIR_ROOT/$PACKAGE2"; fi cpack mv -f MegaGlest*.dmg "$RELEASEDIR_ROOT" ls -lhA "${RELEASEDIR_ROOT}/$PACKAGE2" diff --git a/source/glest_game/CMakeLists.txt b/source/glest_game/CMakeLists.txt index 2a0e79a5..e9c526de 100644 --- a/source/glest_game/CMakeLists.txt +++ b/source/glest_game/CMakeLists.txt @@ -322,6 +322,11 @@ IF(BUILD_MEGAGLEST) "${PROJECT_SOURCE_DIR}/mk/macosx/p7zip" DESTINATION ${MEGAGLEST_DATA_INSTALL_PATH}) ENDIF() + IF(SINGLE_INSTALL_DIRECTORY AND EXISTS "${PROJECT_SOURCE_DIR}/mk/macosx/lib/") + INSTALL(DIRECTORY + "${PROJECT_SOURCE_DIR}/mk/macosx/lib/" + DESTINATION "${MEGAGLEST_DATA_INSTALL_PATH}/../../Frameworks/") + ENDIF() ENDIF() # Installation of data files from outside normal data folder