# $Id$ # This file is part of OpenTTD. # OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. # OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. # See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . # # Creation of bundles # # The revision is needed for the bundle name and creating an OSX application bundle. # Detect the revision VERSIONS := $(shell AWK="$(AWK)" "$(ROOT_DIR)/findversion.sh") REV := $(shell echo "$(VERSIONS)" | cut -f 1 -d' ') # Make sure we have something in REV ifeq ($(REV),) REV := norev000 endif ifndef BUNDLE_NAME BUNDLE_NAME = openttd-custom-$(REV)-$(OS) endif # An OSX application bundle needs the data files, lang files and openttd executable in a different location. ifdef OSXAPP AI_DIR = $(BUNDLE_DIR)/$(OSXAPP)/Contents/Resources/ai GAME_DIR = $(BUNDLE_DIR)/$(OSXAPP)/Contents/Resources/game BASESET_DIR = $(BUNDLE_DIR)/$(OSXAPP)/Contents/Resources/baseset LANG_DIR = $(BUNDLE_DIR)/$(OSXAPP)/Contents/Resources/lang TTD_DIR = $(BUNDLE_DIR)/$(OSXAPP)/Contents/MacOS else AI_DIR = $(BUNDLE_DIR)/ai GAME_DIR = $(BUNDLE_DIR)/game BASESET_DIR = $(BUNDLE_DIR)/baseset LANG_DIR = $(BUNDLE_DIR)/lang TTD_DIR = $(BUNDLE_DIR) endif bundle: all @echo '[BUNDLE] Constructing bundle' $(Q)rm -rf "$(BUNDLE_DIR)" $(Q)mkdir -p "$(BUNDLE_DIR)" $(Q)mkdir -p "$(BUNDLE_DIR)/docs" $(Q)mkdir -p "$(BUNDLE_DIR)/media" $(Q)mkdir -p "$(BUNDLE_DIR)/scripts" $(Q)mkdir -p "$(TTD_DIR)" $(Q)mkdir -p "$(AI_DIR)" $(Q)mkdir -p "$(GAME_DIR)" $(Q)mkdir -p "$(BASESET_DIR)" $(Q)mkdir -p "$(LANG_DIR)" ifdef OSXAPP $(Q)mkdir -p "$(BUNDLE_DIR)/$(OSXAPP)/Contents/Resources" $(Q)echo "APPL????" > "$(BUNDLE_DIR)/$(OSXAPP)/Contents/PkgInfo" $(Q)cp "$(ROOT_DIR)/os/macosx/openttd.icns" "$(BUNDLE_DIR)/$(OSXAPP)/Contents/Resources/openttd.icns" $(Q)$(ROOT_DIR)/os/macosx/plistgen.sh "$(BUNDLE_DIR)/$(OSXAPP)" "$(REV)" $(Q)cp "$(ROOT_DIR)/os/macosx/splash.png" "$(BASESET_DIR)" endif ifeq ($(OS),UNIX) $(Q)cp "$(ROOT_DIR)/media/openttd.32.bmp" "$(BASESET_DIR)/" endif $(Q)cp "$(BIN_DIR)/$(TTD)" "$(TTD_DIR)/" $(Q)cp "$(BIN_DIR)/ai/"compat_*.nut "$(AI_DIR)/" $(Q)cp "$(BIN_DIR)/game/"compat_*.nut "$(GAME_DIR)/" $(Q)cp "$(BIN_DIR)/baseset/"*.grf "$(BASESET_DIR)/" $(Q)cp "$(BIN_DIR)/baseset/"*.obg "$(BASESET_DIR)/" $(Q)cp "$(BIN_DIR)/baseset/"*.obs "$(BASESET_DIR)/" $(Q)cp "$(BIN_DIR)/baseset/opntitle.dat" "$(BASESET_DIR)/" $(Q)cp "$(BIN_DIR)/baseset/"*.obm "$(BASESET_DIR)/" $(Q)cp "$(BIN_DIR)/lang/"*.lng "$(LANG_DIR)/" $(Q)cp "$(ROOT_DIR)/readme.txt" "$(BUNDLE_DIR)/" $(Q)cp "$(ROOT_DIR)/COPYING" "$(BUNDLE_DIR)/" $(Q)cp "$(ROOT_DIR)/known-bugs.txt" "$(BUNDLE_DIR)/" $(Q)cp "$(ROOT_DIR)/docs/multiplayer.txt" "$(BUNDLE_DIR)/docs/" $(Q)cp "$(ROOT_DIR)/changelog.txt" "$(BUNDLE_DIR)/" ifdef MAN_DIR $(Q)mkdir -p "$(BUNDLE_DIR)/man/" $(Q)cp "$(ROOT_DIR)/docs/openttd.6" "$(BUNDLE_DIR)/man/" $(Q)gzip -9 "$(BUNDLE_DIR)/man/openttd.6" endif $(Q)cp "$(ROOT_DIR)/media/openttd.32.xpm" "$(BUNDLE_DIR)/media/" $(Q)cp "$(ROOT_DIR)/media/openttd."*.png "$(BUNDLE_DIR)/media/" $(Q)cp "$(BIN_DIR)/scripts/"* "$(BUNDLE_DIR)/scripts/" ifdef MENU_DIR $(Q)cp "$(ROOT_DIR)/media/openttd.desktop" "$(BUNDLE_DIR)/media/" $(Q)$(AWK) -f "$(ROOT_DIR)/media/openttd.desktop.translation.awk" "$(SRC_DIR)/lang/"*.txt | $(SORT) | $(AWK) -f "$(ROOT_DIR)/media/openttd.desktop.filter.awk" >> "$(BUNDLE_DIR)/media/openttd.desktop" $(Q)sed s/=openttd/=$(BINARY_NAME)/g "$(BUNDLE_DIR)/media/openttd.desktop" > "$(ROOT_DIR)/media/openttd.desktop.install" endif ifeq ($(TTD), openttd.exe) $(Q)unix2dos "$(BUNDLE_DIR)/docs/"* "$(BUNDLE_DIR)/readme.txt" "$(BUNDLE_DIR)/COPYING" "$(BUNDLE_DIR)/changelog.txt" "$(BUNDLE_DIR)/known-bugs.txt" ifeq ($(OS), DOS) $(Q)cp "$(ROOT_DIR)/os/dos/cwsdpmi.txt" "$(BUNDLE_DIR)/docs/" ifndef STRIP $(Q)cp "$(ROOT_DIR)/os/dos/cwsdpmi.exe" "$(TTD_DIR)/" endif endif endif ### Packing the current bundle into several compressed file formats ### # # Zips & dmgs do not contain a root folder, i.e. they have files in the root of the zip/dmg. # gzip, bzip2 and lha archives have a root folder, with the same name as the bundle. # # One can supply a custom name by adding BUNDLE_NAME:= to the make command. # bundle_zip: bundle @echo '[BUNDLE] Creating $(BUNDLE_NAME).zip' $(Q)mkdir -p "$(BUNDLES_DIR)" $(Q)cd "$(BUNDLE_DIR)" && zip -r $(shell if test -z "$(VERBOSE)"; then echo '-q'; fi) "$(BUNDLES_DIR)/$(BUNDLE_NAME).zip" . bundle_7z: bundle @echo '[BUNDLE] Creating $(BUNDLE_NAME).7z' $(Q)mkdir -p "$(BUNDLES_DIR)" $(Q)cd "$(BUNDLE_DIR)" && 7z a "$(BUNDLES_DIR)/$(BUNDLE_NAME).7z" . bundle_gzip: bundle @echo '[BUNDLE] Creating $(BUNDLE_NAME).tar.gz' $(Q)mkdir -p "$(BUNDLES_DIR)/.gzip/$(BUNDLE_NAME)" $(Q)cp -R "$(BUNDLE_DIR)/"* "$(BUNDLES_DIR)/.gzip/$(BUNDLE_NAME)/" $(Q)cd "$(BUNDLES_DIR)/.gzip" && tar -zc$(shell if test -n "$(VERBOSE)"; then echo 'v'; fi)f "$(BUNDLES_DIR)/$(BUNDLE_NAME).tar.gz" "$(BUNDLE_NAME)" $(Q)rm -rf "$(BUNDLES_DIR)/.gzip" bundle_bzip2: bundle @echo '[BUNDLE] Creating $(BUNDLE_NAME).tar.bz2' $(Q)mkdir -p "$(BUNDLES_DIR)/.bzip2/$(BUNDLE_NAME)" $(Q)cp -R "$(BUNDLE_DIR)/"* "$(BUNDLES_DIR)/.bzip2/$(BUNDLE_NAME)/" $(Q)cd "$(BUNDLES_DIR)/.bzip2" && tar -jc$(shell if test -n "$(VERBOSE)"; then echo 'v'; fi)f "$(BUNDLES_DIR)/$(BUNDLE_NAME).tar.bz2" "$(BUNDLE_NAME)" $(Q)rm -rf "$(BUNDLES_DIR)/.bzip2" bundle_lzma: bundle @echo '[BUNDLE] Creating $(BUNDLE_NAME).tar.lzma' $(Q)mkdir -p "$(BUNDLES_DIR)/.lzma/$(BUNDLE_NAME)" $(Q)cp -R "$(BUNDLE_DIR)/"* "$(BUNDLES_DIR)/.lzma/$(BUNDLE_NAME)/" $(Q)cd "$(BUNDLES_DIR)/.lzma" && tar --lzma -c$(shell if test -n "$(VERBOSE)"; then echo 'v'; fi)f "$(BUNDLES_DIR)/$(BUNDLE_NAME).tar.lzma" "$(BUNDLE_NAME)" $(Q)rm -rf "$(BUNDLES_DIR)/.lzma" bundle_xz: bundle @echo '[BUNDLE] Creating $(BUNDLE_NAME).tar.xz' $(Q)mkdir -p "$(BUNDLES_DIR)/.xz/$(BUNDLE_NAME)" $(Q)cp -R "$(BUNDLE_DIR)/"* "$(BUNDLES_DIR)/.xz/$(BUNDLE_NAME)/" $(Q)cd "$(BUNDLES_DIR)/.xz" && tar --xz -c$(shell if test -n "$(VERBOSE)"; then echo 'v'; fi)f "$(BUNDLES_DIR)/$(BUNDLE_NAME).tar.xz" "$(BUNDLE_NAME)" $(Q)rm -rf "$(BUNDLES_DIR)/.xz" bundle_lha: bundle @echo '[BUNDLE] Creating $(BUNDLE_NAME).lha' $(Q)mkdir -p "$(BUNDLES_DIR)/.lha/$(BUNDLE_NAME)" $(Q)cp -R "$(BUNDLE_DIR)/"* "$(BUNDLES_DIR)/.lha/$(BUNDLE_NAME)/" $(Q)cd "$(BUNDLES_DIR)/.lha" && lha ao6 "$(BUNDLES_DIR)/$(BUNDLE_NAME).lha" "$(BUNDLE_NAME)" $(Q)rm -rf "$(BUNDLES_DIR)/.lha" bundle_dmg: bundle @echo '[BUNDLE] Creating $(BUNDLE_NAME).dmg' $(Q)mkdir -p "$(BUNDLES_DIR)/OpenTTD $(REV)" $(Q)cp -R "$(BUNDLE_DIR)/" "$(BUNDLES_DIR)/OpenTTD $(REV)" $(Q)hdiutil create -ov -format UDZO -srcfolder "$(BUNDLES_DIR)/OpenTTD $(REV)" "$(BUNDLES_DIR)/$(BUNDLE_NAME).dmg" $(Q)rm -fr "$(BUNDLES_DIR)/OpenTTD $(REV)" bundle_exe: all @echo '[BUNDLE] Creating $(BUNDLE_NAME).exe' $(Q)mkdir -p "$(BUNDLES_DIR)" $(Q)unix2dos "$(ROOT_DIR)/docs/"*.txt "$(ROOT_DIR)/readme.txt" "$(ROOT_DIR)/COPYING" "$(ROOT_DIR)/changelog.txt" "$(ROOT_DIR)/known-bugs.txt" $(Q)cd $(ROOT_DIR)/os/windows/installer && makensis.exe //DVERSION_INCLUDE=version_$(PLATFORM).txt install.nsi $(Q)mv $(ROOT_DIR)/os/windows/installer/*$(PLATFORM).exe "$(BUNDLES_DIR)/$(BUNDLE_NAME).exe" ifdef OSXAPP install: @echo '[INSTALL] Cannot install the OSX Application Bundle' else install: bundle @echo '[INSTALL] Installing OpenTTD' $(Q)install -d "$(INSTALL_BINARY_DIR)" $(Q)install -d "$(INSTALL_ICON_DIR)" $(Q)install -d "$(INSTALL_DATA_DIR)/ai" $(Q)install -d "$(INSTALL_DATA_DIR)/baseset" $(Q)install -d "$(INSTALL_DATA_DIR)/lang" $(Q)install -d "$(INSTALL_DATA_DIR)/scripts" ifeq ($(TTD), openttd.exe) $(Q)install -m 755 "$(BUNDLE_DIR)/$(TTD)" "$(INSTALL_BINARY_DIR)/${BINARY_NAME}.exe" else $(Q)install -m 755 "$(BUNDLE_DIR)/$(TTD)" "$(INSTALL_BINARY_DIR)/${BINARY_NAME}" endif $(Q)install -m 644 "$(BUNDLE_DIR)/lang/"* "$(INSTALL_DATA_DIR)/lang" $(Q)install -m 644 "$(BUNDLE_DIR)/ai/"* "$(INSTALL_DATA_DIR)/ai" $(Q)install -m 644 "$(BUNDLE_DIR)/baseset/"* "$(INSTALL_DATA_DIR)/baseset" $(Q)install -m 644 "$(BUNDLE_DIR)/scripts/"* "$(INSTALL_DATA_DIR)/scripts" ifndef DO_NOT_INSTALL_DOCS $(Q)install -d "$(INSTALL_DOC_DIR)" $(Q)install -m 644 "$(BUNDLE_DIR)/docs/"* "$(BUNDLE_DIR)/readme.txt" "$(BUNDLE_DIR)/known-bugs.txt" "$(INSTALL_DOC_DIR)" endif ifndef DO_NOT_INSTALL_CHANGELOG $(Q)install -d "$(INSTALL_DOC_DIR)" $(Q)install -m 644 "$(BUNDLE_DIR)/changelog.txt" "$(INSTALL_DOC_DIR)" endif ifndef DO_NOT_INSTALL_LICENSE $(Q)install -d "$(INSTALL_DOC_DIR)" $(Q)install -m 644 "$(BUNDLE_DIR)/COPYING" "$(INSTALL_DOC_DIR)" endif $(Q)install -m 644 "$(BUNDLE_DIR)/media/openttd.32.xpm" "$(INSTALL_ICON_DIR)/${BINARY_NAME}.32.xpm" ifdef ICON_THEME_DIR $(Q)install -d "$(INSTALL_ICON_THEME_DIR)" $(Q)install -d "$(INSTALL_ICON_THEME_DIR)/16x16/apps" $(Q)install -m 644 "$(BUNDLE_DIR)/media/openttd.16.png" "$(INSTALL_ICON_THEME_DIR)/16x16/apps/${BINARY_NAME}.png" $(Q)install -d "$(INSTALL_ICON_THEME_DIR)/32x32/apps" $(Q)install -m 644 "$(BUNDLE_DIR)/media/openttd.32.png" "$(INSTALL_ICON_THEME_DIR)/32x32/apps/${BINARY_NAME}.png" $(Q)install -d "$(INSTALL_ICON_THEME_DIR)/48x48/apps" $(Q)install -m 644 "$(BUNDLE_DIR)/media/openttd.48.png" "$(INSTALL_ICON_THEME_DIR)/48x48/apps/${BINARY_NAME}.png" $(Q)install -d "$(INSTALL_ICON_THEME_DIR)/64x64/apps" $(Q)install -m 644 "$(BUNDLE_DIR)/media/openttd.64.png" "$(INSTALL_ICON_THEME_DIR)/64x64/apps/${BINARY_NAME}.png" $(Q)install -d "$(INSTALL_ICON_THEME_DIR)/128x128/apps" $(Q)install -m 644 "$(BUNDLE_DIR)/media/openttd.128.png" "$(INSTALL_ICON_THEME_DIR)/128x128/apps/${BINARY_NAME}.png" $(Q)install -d "$(INSTALL_ICON_THEME_DIR)/256x256/apps" $(Q)install -m 644 "$(BUNDLE_DIR)/media/openttd.256.png" "$(INSTALL_ICON_THEME_DIR)/256x256/apps/${BINARY_NAME}.png" else $(Q)install -m 644 "$(BUNDLE_DIR)/media/"*.png "$(INSTALL_ICON_DIR)" endif ifdef MAN_DIR ifndef DO_NOT_INSTALL_MAN $(Q)install -d "$(INSTALL_MAN_DIR)" $(Q)install -m 644 "$(BUNDLE_DIR)/man/openttd.6.gz" "$(INSTALL_MAN_DIR)/${BINARY_NAME}.6.gz" endif endif ifdef MENU_DIR $(Q)install -d "$(INSTALL_MENU_DIR)" $(Q)install -m 644 "$(ROOT_DIR)/media/openttd.desktop.install" "$(INSTALL_MENU_DIR)/${BINARY_NAME}.desktop" endif endif # OSXAPP