Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 0 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,6 @@ obj.spk
obj.win.spk
obj.spk.dbg
obj.win.spk.dbg
AddOns/
tools/icosmesh/obj
doxygen/
libobjc2/
Expand Down
5 changes: 3 additions & 2 deletions GNUmakefile
Original file line number Diff line number Diff line change
Expand Up @@ -104,8 +104,9 @@ endif

# add specific flags if building modern
ifeq ($(modern),yes)
ADDITIONAL_CFLAGS += -DOOLITE_MODERN_BUILD=1
ADDITIONAL_OBJCFLAGS += -DOOLITE_MODERN_BUILD=1
VER_FULL := $(shell ./ShellScripts/common/get_version.sh)
ADDITIONAL_CFLAGS += -DOOLITE_MODERN_BUILD=1 -DOO_VERSION_FULL=\"$(VER_FULL)\"
ADDITIONAL_OBJCFLAGS += -DOOLITE_MODERN_BUILD=1 -DOO_VERSION_FULL=\"$(VER_FULL)\"
# link time optimizations
ifeq ($(lto),yes)
ADDITIONAL_CFLAGS += -flto
Expand Down
117 changes: 16 additions & 101 deletions GNUmakefile.postamble
Original file line number Diff line number Diff line change
@@ -1,109 +1,24 @@
# Oolite-linux
# GNUmakefile.postamble: Runs after-compilation scripts.
# These copy all the base data files into where oolite expects them
# to live (Contents/Resources)
# These copy all the base data files to where Oolite expects them
#
CP_FLAGS = -rf

ifeq ($(debug),yes)
EXT =.dbg
endif

ifeq ($(findstring -gnu,$(GNUSTEP_HOST_OS)),-gnu)
CP_FLAGS += -u
endif

ifeq ($(GNUSTEP_HOST_OS),mingw32)
OS_EXT = .exe
CP_FLAGS += -u
endif

SRC_BIN = $(OBJC_PROGRAM_NAME)$(OS_EXT)
DEST_BIN = $(OBJC_PROGRAM_NAME)$(EXT)$(OS_EXT)

MKMANIFEST=tools/mkmanifest.sh

PROGDIR=$(OBJC_PROGRAM_NAME).app
POST_BUILD_ENV = \
OBJC_PROGRAM_NAME="$(OBJC_PROGRAM_NAME)" \
GNUSTEP_OBJ_DIR_NAME="$(GNUSTEP_OBJ_DIR_NAME)" \
GNUSTEP_HOST_OS="$(GNUSTEP_HOST_OS)" \
GNUSTEP_HOST_CPU="$(GNUSTEP_HOST_CPU)" \
MINGW_PREFIX="$(MINGW_PREFIX)" \
DEBUG="$(debug)" \
DEPLOYMENT_RELEASE_CONFIGURATION="$(DEPLOYMENT_RELEASE_CONFIGURATION)" \
MODERN="$(modern)" \
ESPEAK="$(ESPEAK)" \
USE_DEPS="$(use_deps)" \
STRIP_BIN="$(strip)" \
STRIP="$(STRIP)" \
VER_FULL="$(VER_FULL)"

after-all::
$(MKDIRS) $(PROGDIR)
$(MKDIRS) $(PROGDIR)/Resources
$(MKMANIFEST) > $(PROGDIR)/Resources/manifest.plist
$(CP) $(CP_FLAGS) Resources/README.TXT $(PROGDIR)/Resources
$(CP) $(CP_FLAGS) Resources/InfoPlist.strings $(PROGDIR)/Resources
$(CP) $(CP_FLAGS) Resources/AIs $(PROGDIR)/Resources
$(CP) $(CP_FLAGS) Resources/Config $(PROGDIR)/Resources
$(CP) $(CP_FLAGS) Resources/Scenarios $(PROGDIR)/Resources
$(CP) $(CP_FLAGS) Resources/Scripts $(PROGDIR)/Resources
$(CP) $(CP_FLAGS) Resources/Shaders $(PROGDIR)/Resources
$(CP) $(CP_FLAGS) Resources/Binary/Images $(PROGDIR)/Resources
$(CP) $(CP_FLAGS) Resources/Binary/Models $(PROGDIR)/Resources
$(CP) $(CP_FLAGS) Resources/Binary/Music $(PROGDIR)/Resources
$(CP) $(CP_FLAGS) Resources/Binary/Sounds $(PROGDIR)/Resources
$(CP) $(CP_FLAGS) Resources/Binary/Textures $(PROGDIR)/Resources
$(CP) $(CP_FLAGS) Schemata $(PROGDIR)/Resources
$(CP) $(CP_FLAGS) src/Cocoa/Info-Oolite.plist $(PROGDIR)/Resources/Info-gnustep.plist
$(CP) $(CP_FLAGS) $(GNUSTEP_OBJ_DIR_NAME)/$(SRC_BIN) $(PROGDIR)/$(DEST_BIN)
ifeq ($(ESPEAK),yes)
ifeq ($(modern),yes)
ifeq ($(GNUSTEP_HOST_OS),mingw32)
$(CP) $(CP_FLAGS) $(MINGW_PREFIX)/share/espeak-ng-data $(PROGDIR)/Resources
else
ifeq ($(wildcard /usr/local/share/espeak-ng-data),)
ifeq ($(wildcard /usr/lib/x86_64-linux-gnu/espeak-ng-data),)
ifeq ($(wildcard /usr/share/espeak-ng-data),)
ifeq ($(wildcard /app/share/espeak-ng-data),)
$(error espeak-ng-data not found in any known location)
else
$(CP) $(CP_FLAGS) /app/share/espeak-ng-data $(PROGDIR)/Resources
endif
else
$(CP) $(CP_FLAGS) /usr/share/espeak-ng-data $(PROGDIR)/Resources
endif
else
$(CP) $(CP_FLAGS) /usr/lib/x86_64-linux-gnu/espeak-ng-data $(PROGDIR)/Resources
endif
else
$(CP) $(CP_FLAGS) /usr/local/share/espeak-ng-data $(PROGDIR)/Resources
endif
endif

# replace f2 voice and set the default voice as well
$(RM) $(PROGDIR)/Resources/espeak-ng-data/voices/default
$(RM) $(PROGDIR)/Resources/espeak-ng-data/voices/!v/f2
# copy required files from the existing cross-platform-deps repo
$(CP) $(CP_FLAGS) deps/Cross-platform-deps/espeak-data/voices/!v/f2 $(PROGDIR)/Resources/espeak-ng-data/voices/!v/f2
$(CP) $(CP_FLAGS) deps/Cross-platform-deps/espeak-data/voices/default $(PROGDIR)/Resources/espeak-ng-data/voices/default
else
ifeq ($(GNUSTEP_HOST_OS),mingw32)
$(CP) $(CP_FLAGS) deps/Cross-platform-deps/espeak-data $(PROGDIR)/Resources
else
ifeq ($(use_deps),yes)
$(CP) $(CP_FLAGS) deps/Cross-platform-deps/espeak-data $(PROGDIR)/Resources
endif
endif
endif
endif
ifeq ($(strip),yes)
$(STRIP) $(PROGDIR)/$(DEST_BIN)
endif
ifeq ($(GNUSTEP_HOST_OS),mingw32)
ifeq ($(modern),yes)
ldd $(PROGDIR)/$(DEST_BIN) | grep $(MINGW_PREFIX) | awk '{print $$3}' | xargs -I {} $(CP) $(CP_FLAGS) {} $(PROGDIR)
else
ifeq ($(GNUSTEP_HOST_CPU),x86_64)
$(CP) $(CP_FLAGS) deps/Windows-deps/x86_64/DLLs/*.dll $(PROGDIR)
else
$(CP) $(CP_FLAGS) deps/Windows-deps/x86/DLLs/*.dll $(PROGDIR)
endif
ifeq ($(debug),no)
$(RM) $(PROGDIR)/js32ECMAv5dbg.dll
endif
$(RM) $(PROGDIR)/js32ECMAv5.dll
endif
else
$(CP) $(CP_FLAGS) ShellScripts/Linux/run_oolite.sh $(PROGDIR)
endif
@$(POST_BUILD_ENV) ShellScripts/common/post_build.sh

after-clean::
$(RM) -rf $(GNUSTEP_OBJ_DIR_BASENAME) $(addprefix $(GNUSTEP_OBJ_DIR_BASENAME), .spk .dbg .spk.dbg)
10 changes: 5 additions & 5 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -33,27 +33,27 @@ help:
.PHONY: release
release:
$(MAKE) -f GNUmakefile debug=no strip=yes lto=yes
mkdir -p AddOns && rm -rf AddOns/Basic-debug.oxp && cp -rf DebugOXP/Debug.oxp AddOns/Basic-debug.oxp
mkdir -p build/AddOns && rm -rf build/AddOns/Basic-debug.oxp && cp -rf DebugOXP/Debug.oxp build/AddOns/Basic-debug.oxp

.PHONY: release-deployment
release-deployment:
$(MAKE) -f GNUmakefile DEPLOYMENT_RELEASE_CONFIGURATION=yes debug=no strip=yes lto=yes

.PHONY: release-snapshot
release-snapshot:
$(MAKE) -f GNUmakefile SNAPSHOT_BUILD=yes VERSION_STRING=$(VER) debug=no
mkdir -p AddOns && rm -rf AddOns/Basic-debug.oxp && cp -rf DebugOXP/Debug.oxp AddOns/Basic-debug.oxp
$(MAKE) -f GNUmakefile SNAPSHOT_BUILD=yes debug=no
mkdir -p build/AddOns && rm -rf build/AddOns/Basic-debug.oxp && cp -rf DebugOXP/Debug.oxp build/AddOns/Basic-debug.oxp

.PHONY: debug
debug:
$(MAKE) -f GNUmakefile debug=yes strip=no
mkdir -p AddOns && rm -rf AddOns/Basic-debug.oxp && cp -rf DebugOXP/Debug.oxp AddOns/Basic-debug.oxp
mkdir -p build/AddOns && rm -rf build/AddOns/Basic-debug.oxp && cp -rf DebugOXP/Debug.oxp build/AddOns/Basic-debug.oxp

.PHONY: clean
clean:
$(MAKE) -f GNUmakefile clean
$(RM) -rf oolite.app
$(RM) -rf AddOns
$(RM) -rf build/AddOns

.PHONY: all
all: release release-deployment release-snapshot debug
Expand Down
58 changes: 42 additions & 16 deletions ShellScripts/Linux/run_oolite.sh
Original file line number Diff line number Diff line change
@@ -1,5 +1,8 @@
#!/bin/bash


HERE="$(dirname "$(readlink -f "$0")")"

notify_failure() {
if [[ -n "$FLATPAK_ID" ]]; then
local MSG="<b>$FLATPAK_ID failed to start!</b>\n\nExit Code: $EXIT_CODE"
Expand Down Expand Up @@ -43,7 +46,6 @@ launch_guarded() {

find_exe_launch() {
if [[ -z "$OO_EXECUTABLE" ]]; then
HERE="$(dirname "$(readlink -f "$0")")"
OO_EXECUTABLE="$HERE/oolite"
if [[ ! -f "$OO_EXECUTABLE" ]]; then
OO_EXECUTABLE="$HERE/oolite.app/oolite"
Expand All @@ -54,16 +56,31 @@ find_exe_launch() {

# Check if we are running inside a Flatpak
if [[ -n "$FLATPAK_ID" ]]; then
if [[ "$1" == "packageinfo" ]]; then
cat "/app/bin/Resources/manifest.plist"
exit 0
fi

GAME_DATA="$HOME/.var/app/$FLATPAK_ID"
OO_EXECUTABLE="/app/bin/oolite"

# Check if we are running inside an AppImage
elif [[ -n "$APPIMAGE" ]]; then
# Get the folder where AppRun is in the AppImage
HERE="$(dirname "$(readlink -f "${0}")")"
export LD_LIBRARY_PATH="$HERE/usr/lib:$LD_LIBRARY_PATH"
export PATH="$HERE/usr/bin:$PATH"
OO_EXECUTABLE="$HERE/usr/bin/oolite"
MANIFEST="$APPDIR/usr/bin/Resources/manifest.plist"
if [[ "$1" == "packageinfo" ]]; then
cat "$MANIFEST"
exit 0
fi

export LD_LIBRARY_PATH="$APPDIR/usr/lib:$LD_LIBRARY_PATH"
export PATH="$APPDIR/usr/bin:$PATH"
OO_EXECUTABLE="$APPDIR/usr/bin/oolite"

DEBUG_OXP=$(grep "debug_functionality_support" "$MANIFEST")
if [[ "$DEBUG_OXP" == *"yes"* ]]; then
INTERNAL_ADDONS="$APPDIR/usr/bin/AddOns"
export OO_ADDITIONALADDONSDIRS="${OO_ADDITIONALADDONSDIRS}${OO_ADDITIONALADDONSDIRS:+,}$INTERNAL_ADDONS"
fi

if [[ -n "$OO_DIRTYPE" ]]; then
if [[ "${OO_DIRTYPE,,}" == "xdg" ]]; then
Expand All @@ -76,18 +93,27 @@ elif [[ -n "$APPIMAGE" ]]; then
HERE="$(dirname "$APPIMAGE")"
GAME_DATA="$HERE/GameData"
fi
else
if [[ "$1" == "packageinfo" ]]; then
if [ -f "$HERE/Resources/manifest.plist" ]; then
cat "$HERE/Resources/manifest.plist"
else
cat "$HERE/oolite.app/Resources/manifest.plist"
fi
exit 0
fi

# Check if OO_DIRTYPE set
elif [[ -n "$OO_DIRTYPE" ]]; then
if [[ "${OO_DIRTYPE,,}" == "xdg" ]]; then
GAME_DATA="$HOME/.local/share/Oolite"
elif [[ "${OO_DIRTYPE,,}" == "legacy" ]]; then
find_exe_launch "$@"
# Check if OO_DIRTYPE set
if [[ -n "$OO_DIRTYPE" ]]; then
if [[ "${OO_DIRTYPE,,}" == "xdg" ]]; then
GAME_DATA="$HOME/.local/share/Oolite"
elif [[ "${OO_DIRTYPE,,}" == "legacy" ]]; then
find_exe_launch "$@"
fi
else
# Use script directory
GAME_DATA="$HERE/GameData"
fi
else
# Use script directory
HERE="$(dirname "$(readlink -f "$0")")"
GAME_DATA="$HERE/GameData"
fi

mkdir -p "$GAME_DATA"
Expand Down
19 changes: 5 additions & 14 deletions ShellScripts/common/get_version.sh
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
#!/bin/bash

SCRIPT_DIR=$(cd "$(dirname "${BASH_SOURCE[0]}")" &> /dev/null && pwd)
pushd "$SCRIPT_DIR"
pushd "$SCRIPT_DIR" > /dev/null

mkdir -p ../../build
cd ../../build
Expand All @@ -16,21 +16,12 @@ fi
VER_DATE=$(date +%y%m%d)
VER_GITREV=$(git rev-list --count HEAD)
VER_GITHASH=$(git rev-parse --short=7 HEAD)
VER="$VER_MAJ.$VER_MIN.$VER_REV.$VER_GITREV-$VER_DATE-$VER_GITHASH"
VER_FULL="$VER_MAJ.$VER_MIN.$VER_REV.$VER_GITREV-$VER_DATE-$VER_GITHASH"
BUILDTIME=$(date "+%Y.%m.%d %H:%M")


echo "OOLITE_VERSION=$VER" >> OOLITE_VERSION.txt
cat OOLITE_VERSION.txt
echo "OOLITE_VERSION=$VER_FULL" > OOLITE_VERSION.txt

echo "VERSION=$VERSION" > version.mk
echo "VER_MAJ=$VER_MAJ" >> version.mk
echo "VER_MIN=$VER_MIN" >> version.mk
echo "VER_REV=$VER_REV" >> version.mk
echo "VER_DATE=$VER_DATE" >> version.mk
echo "VER_GITREV=$VER_GITREV" >> version.mk
echo "VER_GITHASH=$VER_GITHASH" >> version.mk
echo "VER=$VER" >> version.mk
echo "BUILDTIME=$BUILDTIME" >> version.mk
echo "$VER_FULL"

popd
popd > /dev/null
Loading