diff --git a/.gitignore b/.gitignore index 559b3454a..bfb5ba252 100644 --- a/.gitignore +++ b/.gitignore @@ -28,7 +28,6 @@ obj.spk obj.win.spk obj.spk.dbg obj.win.spk.dbg -AddOns/ tools/icosmesh/obj doxygen/ libobjc2/ diff --git a/GNUmakefile b/GNUmakefile index 47ed45403..28971bcad 100755 --- a/GNUmakefile +++ b/GNUmakefile @@ -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 diff --git a/GNUmakefile.postamble b/GNUmakefile.postamble index 9ad0e3b36..cd93fdd80 100644 --- a/GNUmakefile.postamble +++ b/GNUmakefile.postamble @@ -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) diff --git a/Makefile b/Makefile index ac877f027..4a00c2cd4 100755 --- a/Makefile +++ b/Makefile @@ -33,7 +33,7 @@ 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: @@ -41,19 +41,19 @@ release-deployment: .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 diff --git a/ShellScripts/Linux/run_oolite.sh b/ShellScripts/Linux/run_oolite.sh index c8b84d098..917f55505 100755 --- a/ShellScripts/Linux/run_oolite.sh +++ b/ShellScripts/Linux/run_oolite.sh @@ -1,5 +1,8 @@ #!/bin/bash + +HERE="$(dirname "$(readlink -f "$0")")" + notify_failure() { if [[ -n "$FLATPAK_ID" ]]; then local MSG="$FLATPAK_ID failed to start!\n\nExit Code: $EXIT_CODE" @@ -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" @@ -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 @@ -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" diff --git a/ShellScripts/common/get_version.sh b/ShellScripts/common/get_version.sh index e5ebf06eb..9a89cc690 100755 --- a/ShellScripts/common/get_version.sh +++ b/ShellScripts/common/get_version.sh @@ -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 @@ -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 \ No newline at end of file +popd > /dev/null \ No newline at end of file diff --git a/ShellScripts/common/post_build.sh b/ShellScripts/common/post_build.sh new file mode 100755 index 000000000..2910e77cb --- /dev/null +++ b/ShellScripts/common/post_build.sh @@ -0,0 +1,133 @@ +#!/bin/bash +# Processes Oolite data files after compilation + +run_script() { + SCRIPT_DIR=$(cd "$(dirname "${BASH_SOURCE[0]}")" &> /dev/null && pwd) + pushd "$SCRIPT_DIR" + + cd ../.. + + OS_EXT="" + if [ "$GNUSTEP_HOST_OS" = "mingw32" ]; then + # Windows only executable extension + OS_EXT=".exe" + fi + + # Debug extension if needed + EXT="" + if [ "$DEBUG" = "yes" ]; then + EXT=".dbg" + fi + + # Paths and binary names + PROGDIR="${OBJC_PROGRAM_NAME}.app" + SRC_BIN="${OBJC_PROGRAM_NAME}${OS_EXT}" + DEST_BIN="${OBJC_PROGRAM_NAME}${EXT}${OS_EXT}" + + mkdir -p "$PROGDIR/Resources" + + tools/mkmanifest.sh > "$PROGDIR/Resources/manifest.plist" + + RESOURCE_DIRS=( + "Resources/AIs" + "Resources/Config" + "Resources/Scenarios" + "Resources/Scripts" + "Resources/Shaders" + "Resources/Binary/Images" + "Resources/Binary/Models" + "Resources/Binary/Music" + "Resources/Binary/Sounds" + "Resources/Binary/Textures" + "Schemata" + ) + for resdir in "${RESOURCE_DIRS[@]}"; do + cp -rfu "$resdir" "$PROGDIR/Resources" + done + + cp -fu Resources/README.TXT "$PROGDIR/Resources" + cp -fu Resources/InfoPlist.strings "$PROGDIR/Resources" + cp -fu src/Cocoa/Info-Oolite.plist "$PROGDIR/Resources/Info-gnustep.plist" + cp -fu "$GNUSTEP_OBJ_DIR_NAME/$SRC_BIN" "$PROGDIR/$DEST_BIN" + + # Voice Data + if [ "$ESPEAK" = "yes" ]; then + if [ "$MODERN" = "yes" ]; then + if [ "$GNUSTEP_HOST_OS" = "mingw32" ]; then + # Windows modern espeak-ng-data + cp -rfu "$MINGW_PREFIX/share/espeak-ng-data" "$PROGDIR/Resources" + else + # Linux modern search paths for espeak-ng-data + SEARCH_PATHS=( + "/usr/local/share/espeak-ng-data" + "/usr/lib/x86_64-linux-gnu/espeak-ng-data" + "/usr/share/espeak-ng-data" + "/app/share/espeak-ng-data" + ) + FOUND_DATA=false + for path in "${SEARCH_PATHS[@]}"; do + if [ -d "$path" ]; then + cp -rfu "$path" "$PROGDIR/Resources" + FOUND_DATA=true + break + fi + done + + if [ "$FOUND_DATA" = false ]; then + echo "❌ espeak-ng-data not found in any known location!" >&2 + return 1 + fi + fi + + # Replace specific voices with Oolite-specific versions + rm -f "$PROGDIR/Resources/espeak-ng-data/voices/default" + rm -f "$PROGDIR/Resources/espeak-ng-data/voices/!v/f2" + cp -fu deps/Cross-platform-deps/espeak-data/voices/!v/f2 "$PROGDIR/Resources/espeak-ng-data/voices/!v/f2" + cp -fu deps/Cross-platform-deps/espeak-data/voices/default "$PROGDIR/Resources/espeak-ng-data/voices/default" + else + # Legacy espeak-data + if [ "$GNUSTEP_HOST_OS" = "mingw32" ] || [ "$USE_DEPS" = "yes" ]; then + cp -rfu deps/Cross-platform-deps/espeak-data "$PROGDIR/Resources" + fi + fi + fi + + # Strip binary if requested + if [ "$STRIP_BIN" = "yes" ]; then + ${STRIP:-strip} "$PROGDIR/$DEST_BIN" + fi + + if [ "$GNUSTEP_HOST_OS" = "mingw32" ]; then + if [ "$MODERN" = "yes" ]; then + # Determine and copy DLL dependencies for modern Windows + ldd "$PROGDIR/$DEST_BIN" | grep "$MINGW_PREFIX" | awk '{print $3}' | xargs -I {} cp -rfu {} "$PROGDIR" + else + # Copy legacy Windows DLLs + if [ "$GNUSTEP_HOST_CPU" = "x86_64" ]; then + cp -rfu deps/Windows-deps/x86_64/DLLs/*.dll "$PROGDIR" + else + cp -rfu deps/Windows-deps/x86/DLLs/*.dll "$PROGDIR" + fi + + if [ "$DEBUG" = "no" ]; then + rm -f "$PROGDIR/js32ECMAv5dbg.dll" + fi + rm -f "$PROGDIR/js32ECMAv5.dll" + fi + else + # Copy Linux-specific wrapper script + cp -fu ShellScripts/Linux/run_oolite.sh "$PROGDIR" + fi + + echo "✅ Oolite post-build completed successfully" + popd +} + +run_script "$@" +status=$? + +# Exit only if not sourced +if [[ "${BASH_SOURCE[0]}" == "${0}" ]]; then + exit $status +fi + diff --git a/installers/appimage/create_appimage.sh b/installers/appimage/create_appimage.sh index 12fd11cdd..f67ab58f5 100755 --- a/installers/appimage/create_appimage.sh +++ b/installers/appimage/create_appimage.sh @@ -18,6 +18,11 @@ run_script() { PROGDIR="../oolite.app" cp -rf $PROGDIR/Resources $APPDIR/usr/bin + if (( $# == 1 )); then + echo "Including Basic-debug.oxp" + cp -rf AddOns $APPDIR/usr/bin + fi + curl -o linuxdeploy -L https://github.com/linuxdeploy/linuxdeploy/releases/download/continuous/linuxdeploy-x86_64.AppImage chmod +x linuxdeploy @@ -58,9 +63,9 @@ run_script() { fi if (( $# == 1 )); then - SUFFIX="${1}_${VER}" + SUFFIX="${1}_${VER_FULL}" else - SUFFIX="$VER" + SUFFIX="$VER_FULL" fi if ! check_rename "Oolite" "Oolite-*" $SUFFIX; then diff --git a/installers/flatpak/create_flatpak.sh b/installers/flatpak/create_flatpak.sh index 53005335f..ceb19bb9f 100755 --- a/installers/flatpak/create_flatpak.sh +++ b/installers/flatpak/create_flatpak.sh @@ -59,7 +59,7 @@ run_script() { return 1 fi - sed -i "/- name: oolite/a \ build-options:\n env:\n VERSION_OVERRIDE: \"$VER\"" \ + sed -i "/- name: oolite/a \ build-options:\n env:\n VERSION_OVERRIDE: \"$VER_FULL\"" \ $MANIFEST TOTAL_LINES=$(wc -l < $MANIFEST) START_LINE=$((TOTAL_LINES - 3)) @@ -89,9 +89,9 @@ EOF fi if (( $# == 1 )); then - SUFFIX="${1}_${VER}" + SUFFIX="${1}_${VER_FULL}" else - SUFFIX="$VER" + SUFFIX="$VER_FULL" fi if ! check_rename "space.oolite.Oolite" "space.oolite.Oolite.flatpak" $SUFFIX; then diff --git a/installers/win32/OOlite.nsi b/installers/win32/OOlite.nsi index f82f16c59..5bbc7b8e2 100644 --- a/installers/win32/OOlite.nsi +++ b/installers/win32/OOlite.nsi @@ -33,7 +33,7 @@ !endif !ifndef SNAPSHOT -!ifndef DEPLOYMENT +!ifndef DEPLOYMENT !define EXTVER "-test" ; Official distribution with OXP developer tools !define ADDCHANGELOG 1 ; Official distributions go with a changelog file !else @@ -81,7 +81,7 @@ RequestExecutionLevel user VIAddVersionKey "ProductName" "Oolite" VIAddVersionKey "FileDescription" "A space combat/trading game, inspired by Elite." -VIAddVersionKey "LegalCopyright" " 2003-2026 Giles Williams, Jens Ayton and contributors" +VIAddVersionKey "LegalCopyright" "� 2003-2026 Giles Williams, Jens Ayton and contributors" VIAddVersionKey "FileVersion" "${VER}" VIAddVersionKey "ProductVersion" "${VER}" !ifdef SNAPSHOT @@ -133,7 +133,7 @@ SectionEnd Section "Basic-debug.OXP" ooDebugOXP ; Do not use any of the Debug OXP files when we are building Deployment SetOutPath $INSTDIR -File /r "..\..\AddOns" +File /r "..\..\build\AddOns" SectionEnd ; Below are the descriptions of the two component sections @@ -250,11 +250,11 @@ ${If} ${ADDCHANGELOG} == "1" File "..\..\Doc\CHANGELOG.TXT" ${EndIf} File /r /x .git /x .svn /x *~ "${DST}" - -; Generate version info -FileOpen $9 release.txt w ;Opens a Empty File and fills it -FileWrite $9 "${VER}$\r$\n" -FileClose $9 ;Closes the filled file + +; Generate version info +FileOpen $9 release.txt w ;Opens a Empty File and fills it +FileWrite $9 "${VER}$\r$\n" +FileClose $9 ;Closes the filled file WriteUninstaller "$INSTDIR\UninstOolite.exe" diff --git a/installers/win32/create_nsis.sh b/installers/win32/create_nsis.sh index 2abf5cb8e..19a266325 100644 --- a/installers/win32/create_nsis.sh +++ b/installers/win32/create_nsis.sh @@ -20,7 +20,7 @@ run_script() { echo "!define VER_REV ${VER_REV}" >> OoliteVersions.nsh echo "!define VER_GITREV ${VER_GITREV}" >> OoliteVersions.nsh echo "!define VER_GITHASH ${VER_GITHASH}" >> OoliteVersions.nsh - echo "!define VERSION ${VER}" >> OoliteVersions.nsh + echo "!define VERSION ${VER_FULL}" >> OoliteVersions.nsh echo "!define BUILDTIME \"${BUILDTIME}\"" >> OoliteVersions.nsh echo "!define BUILDHOST_IS64BIT 1" >> OoliteVersions.nsh diff --git a/src/Core/Entities/PlayerEntity.m b/src/Core/Entities/PlayerEntity.m index ce584003f..0acbfdb83 100644 --- a/src/Core/Entities/PlayerEntity.m +++ b/src/Core/Entities/PlayerEntity.m @@ -10075,7 +10075,7 @@ - (void) setGuiToIntroFirstGo:(BOOL)justCobra if ([[arguments objectAtIndex:i] isEqual:@"-showversion"]) { OOGUIRow ms_start = msgLine; - NSString *version = [NSString stringWithFormat:@"Version %@", [[[NSBundle mainBundle] infoDictionary] objectForKey:@"CFBundleVersion"]]; + NSString *version = @"Version " @OO_VERSION_FULL; OOGUIRow i = msgLine = [gui addLongText:version startingAtRow:ms_start align:GUI_ALIGN_CENTER]; for (i-- ; i >= ms_start; i--) { diff --git a/src/Core/OOLogHeader.m b/src/Core/OOLogHeader.m index 1839d8839..538a02106 100644 --- a/src/Core/OOLogHeader.m +++ b/src/Core/OOLogHeader.m @@ -161,10 +161,10 @@ void OOPrintLogHeader(void) #endif NSString *versionString = nil; - #if (defined (SNAPSHOT_BUILD) && defined (OOLITE_SNAPSHOT_VERSION)) - versionString = @"development version " OOLITE_SNAPSHOT_VERSION; + #if (defined (SNAPSHOT_BUILD)) + versionString = @"development version " @OO_VERSION_FULL; #else - versionString = [NSString stringWithFormat:@"version %@", [[[NSBundle mainBundle] infoDictionary] objectForKey:@"CFBundleVersion"]]; + versionString = @"version " @OO_VERSION_FULL; #endif if (versionString == nil) versionString = @""; diff --git a/src/Core/Universe.m b/src/Core/Universe.m index ee70aca4e..8c3afa3e1 100644 --- a/src/Core/Universe.m +++ b/src/Core/Universe.m @@ -5229,8 +5229,8 @@ - (void) drawUniverse // should come after the HUD to avoid it being overlapped by it [self drawMessage]; -#if (defined (SNAPSHOT_BUILD) && defined (OOLITE_SNAPSHOT_VERSION)) - [self drawWatermarkString:@"Development version " @OOLITE_SNAPSHOT_VERSION]; +#if (defined (SNAPSHOT_BUILD)) + [self drawWatermarkString:@"Development version " @OO_VERSION_FULL]; #endif OOLog(@"universe.profile.drawHUD", @"%@", @"End HUD drawing"); diff --git a/src/SDL/main.m b/src/SDL/main.m index 7f75b523d..dd24fb586 100644 --- a/src/SDL/main.m +++ b/src/SDL/main.m @@ -49,6 +49,11 @@ uint32_t gDebugFlags = 0; #endif +// This macro is normally defined in the build command +#ifndef OO_VERSION_FULL +#define OO_VERSION_FULL "Undefined" +#endif + /** * \ingroup cli * Entry point for Linux and Windows systems. @@ -186,6 +191,7 @@ int main(int argc, char *argv[]) "--xml"TABS3 TABS4"When compiling or exporting\n"TABS3 TABS4"system descriptions, use xml\n"TABS3 TABS4"format *\n" "\n" "Options marked with \"*\" are available only in Test Release configuration.\n" + "Version "OO_VERSION_FULL"\n" "Built with " #if OOLITE_HAVE_CLANG "Clang version " STRINGIFY(__clang_major__) "." STRINGIFY(__clang_minor__) "." STRINGIFY(__clang_patchlevel__) diff --git a/tools/mkmanifest.sh b/tools/mkmanifest.sh index 0153bff47..1d380a8b6 100755 --- a/tools/mkmanifest.sh +++ b/tools/mkmanifest.sh @@ -18,7 +18,12 @@ echo "{" echo " title = \"Oolite core\";" echo " identifier = \"org.oolite.oolite\";" echo " " -echo " version = \"$OOLITE_VERSION\";" +echo " version = \"$VER_FULL\";" +if [ "$DEPLOYMENT_RELEASE_CONFIGURATION" = "yes" ]; then + echo " debug_functionality_support = no;" +else + echo " debug_functionality_support = yes;" +fi echo " required_oolite_version = \"$OOLITE_VERSION\";" echo " " echo " license = \"GPL 2+ / CC-BY-NC-SA 3.0 - see LICENSE.md for details\";"