Makefile.bundle
changeset 10057 a6dea11e197d
parent 10056 48659f7d4fa5
child 10058 83345e93c7fb
equal deleted inserted replaced
10056:48659f7d4fa5 10057:a6dea11e197d
     1 #
       
     2 # Creation of bundles
       
     3 #
       
     4 
       
     5 # The revision is needed for the bundle name and creating an OSX application bundle.
       
     6 ifdef REVISION
       
     7 REV := $(REVISION)
       
     8 else
       
     9 # Are we a SVN dir?
       
    10 ifeq ($(shell if test -d $(SRC_DIR)/.svn; then echo 1; fi), 1)
       
    11 # Find if the local source if modified
       
    12 REV_MODIFIED := $(shell svnversion $(SRC_DIR) | sed -n 's/.*\(M\).*/\1/p' )
       
    13 # Find the revision like: rXXXX-branch
       
    14 REV := $(shell LC_ALL=C svn info $(SRC_DIR) | $(AWK) '/^URL:.*branches/ { split($$2, a, "/"); for (i in a) if(a[i]=="branches") { BRANCH="-"a[i+1]; break } } /^Last Changed Rev:/ { REV="r"$$4"$(REV_MODIFIED)" } END { print REV BRANCH }')
       
    15 endif
       
    16 endif
       
    17 # Make sure we have something in REV
       
    18 ifeq ($(REV),)
       
    19 REV := norev000
       
    20 endif
       
    21 
       
    22 ifndef BUNDLE_NAME
       
    23 BUNDLE_NAME = OTTD-$(OS)-custom-$(REV)
       
    24 endif
       
    25 
       
    26 # An OSX application bundle needs the data files, lang files and openttd executable in a different location.
       
    27 ifdef OSXAPP
       
    28 DATA_DIR = $(BUNDLE_DIR)/$(OSXAPP)/Contents/Resources/data
       
    29 LANG_DIR = $(BUNDLE_DIR)/$(OSXAPP)/Contents/Resources/lang
       
    30 TTD_DIR  = $(BUNDLE_DIR)/$(OSXAPP)/Contents/MacOS
       
    31 else
       
    32 DATA_DIR = $(BUNDLE_DIR)/data
       
    33 LANG_DIR = $(BUNDLE_DIR)/lang
       
    34 TTD_DIR  = $(BUNDLE_DIR)
       
    35 endif
       
    36 
       
    37 bundle: all
       
    38 	@echo '[BUNDLE] Constructing bundle'
       
    39 	$(Q)rm -rf   "${BUNDLE_DIR}"
       
    40 	$(Q)mkdir -p "${BUNDLE_DIR}"
       
    41 	$(Q)mkdir -p "$(BUNDLE_DIR)/docs"
       
    42 	$(Q)mkdir -p "$(BUNDLE_DIR)/scenario"
       
    43 	$(Q)mkdir -p "$(BUNDLE_DIR)/scenario/heightmap"
       
    44 	$(Q)mkdir -p "$(BUNDLE_DIR)/media"
       
    45 	$(Q)mkdir -p "$(TTD_DIR)"
       
    46 	$(Q)mkdir -p "$(DATA_DIR)"
       
    47 	$(Q)mkdir -p "$(LANG_DIR)"
       
    48 ifdef OSXAPP
       
    49 	$(Q)mkdir -p "$(BUNDLE_DIR)/$(OSXAPP)/Contents/Resources"
       
    50 	$(Q)echo "APPL????" >                                          "$(BUNDLE_DIR)/$(OSXAPP)/Contents/PkgInfo"
       
    51 	$(Q)cp    "$(ROOT_DIR)/os/macosx/openttd.icns"                 "$(BUNDLE_DIR)/$(OSXAPP)/Contents/Resources/openttd.icns"
       
    52 	$(Q)$(ROOT_DIR)/os/macosx/plistgen.sh                          "${BUNDLE_DIR}/$(OSXAPP)" "$(REV)"
       
    53 	$(Q)cp    "$(ROOT_DIR)/docs/OSX_install_instructions.txt"      "$(BUNDLE_DIR)/docs/"
       
    54 	$(Q)cp    "$(ROOT_DIR)/os/macosx/splash.png"                   "$(DATA_DIR)"
       
    55 endif
       
    56 	$(Q)cp "$(BIN_DIR)/$(TTD)"                "$(TTD_DIR)/"
       
    57 	$(Q)cp "$(BIN_DIR)/data/"*.grf            "$(DATA_DIR)/"
       
    58 	$(Q)cp "$(BIN_DIR)/data/"*.obg            "$(DATA_DIR)/"
       
    59 	$(Q)cp "$(BIN_DIR)/data/opntitle.dat"     "$(DATA_DIR)/"
       
    60 	$(Q)cp "$(BIN_DIR)/lang/"*.lng            "$(LANG_DIR)/"
       
    61 	$(Q)cp "$(ROOT_DIR)/readme.txt"           "$(BUNDLE_DIR)/"
       
    62 	$(Q)cp "$(ROOT_DIR)/COPYING"              "$(BUNDLE_DIR)/"
       
    63 	$(Q)cp "$(ROOT_DIR)/known-bugs.txt"       "$(BUNDLE_DIR)/"
       
    64 	$(Q)cp "$(ROOT_DIR)/docs/multiplayer.txt" "$(BUNDLE_DIR)/docs/"
       
    65 	$(Q)cp "$(ROOT_DIR)/docs/32bpp.txt"       "$(BUNDLE_DIR)/docs/"
       
    66 	$(Q)cp "$(ROOT_DIR)/changelog.txt"        "$(BUNDLE_DIR)/"
       
    67 ifdef MAN_DIR
       
    68 	$(Q)mkdir -p "$(BUNDLE_DIR)/man/"
       
    69 	$(Q)cp "$(ROOT_DIR)/docs/openttd.6"       "$(BUNDLE_DIR)/man/"
       
    70 	$(Q)gzip "$(BUNDLE_DIR)/man/openttd.6"
       
    71 endif
       
    72 	$(Q)cp "$(ROOT_DIR)/media/openttd.32.xpm" "$(BUNDLE_DIR)/media/"
       
    73 	$(Q)cp "$(ROOT_DIR)/media/openttd."*.png  "$(BUNDLE_DIR)/media/"
       
    74 ifdef MENU_DIR
       
    75 	$(Q)cp "$(ROOT_DIR)/media/openttd.desktop" "$(BUNDLE_DIR)/media/"
       
    76 endif
       
    77 ifeq ($(shell if test -n "`ls -l \"$(BIN_DIR)/scenario/\"*.scn 2> /dev/null`"; then echo 1; fi), 1)
       
    78 	$(Q)cp "$(BIN_DIR)/scenario/"*.scn        "$(BUNDLE_DIR)/scenario/"
       
    79 endif
       
    80 ifeq ($(shell if test -n "`ls -l \"$(BIN_DIR)/scenario/heightmaps/\"* 2>/dev/null`"; then echo 1; fi), 1)
       
    81 	$(Q)cp "$(BIN_DIR)/scenario/heightmaps/"* "$(BUNDLE_DIR)/scenario/heightmap/"
       
    82 endif
       
    83 ifeq ($(TTD), openttd.exe)
       
    84 	$(Q)unix2dos "$(BUNDLE_DIR)/docs/"* "$(BUNDLE_DIR)/readme.txt" "$(BUNDLE_DIR)/COPYING" "$(BUNDLE_DIR)/changelog.txt" "$(BUNDLE_DIR)/known-bugs.txt"
       
    85 endif
       
    86 
       
    87 ### Packing the current bundle into several compressed file formats ###
       
    88 #
       
    89 # Zips & dmgs do not contain a root folder, i.e. they have files in the root of the zip/dmg.
       
    90 # gzip, bzip2 and lha archives have a root folder, with the same name as the bundle.
       
    91 #
       
    92 # One can supply a custom name by adding BUNDLE_NAME:=<name> to the make command.
       
    93 #
       
    94 bundle_zip: bundle
       
    95 	@echo '[BUNDLE] Creating $(BUNDLE_NAME).zip'
       
    96 	$(Q)mkdir -p "$(BUNDLES_DIR)"
       
    97 	$(Q)cd "$(BUNDLE_DIR)" && zip -r $(shell if test -z "$(VERBOSE)"; then echo '-q'; fi) "$(BUNDLES_DIR)/$(BUNDLE_NAME).zip" .
       
    98 
       
    99 bundle_gzip: bundle
       
   100 	@echo '[BUNDLE] Creating $(BUNDLE_NAME).tar.gz'
       
   101 	$(Q)mkdir -p "$(BUNDLES_DIR)/.gzip/$(BUNDLE_NAME)"
       
   102 	$(Q)cp -R    "$(BUNDLE_DIR)/"* "$(BUNDLES_DIR)/.gzip/$(BUNDLE_NAME)/"
       
   103 	$(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)"
       
   104 	$(Q)rm -rf   "$(BUNDLES_DIR)/.gzip"
       
   105 
       
   106 bundle_bzip2: bundle
       
   107 	@echo '[BUNDLE] Creating $(BUNDLE_NAME).tar.bz2'
       
   108 	$(Q)mkdir -p "$(BUNDLES_DIR)/.bzip2/$(BUNDLE_NAME)"
       
   109 	$(Q)cp -R    "$(BUNDLE_DIR)/"* "$(BUNDLES_DIR)/.bzip2/$(BUNDLE_NAME)/"
       
   110 	$(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)"
       
   111 	$(Q)rm -rf   "$(BUNDLES_DIR)/.bzip2"
       
   112 
       
   113 bundle_lha: bundle
       
   114 	@echo '[BUNDLE] Creating $(BUNDLE_NAME).lha'
       
   115 	$(Q)mkdir -p "$(BUNDLES_DIR)/.lha/$(BUNDLE_NAME)"
       
   116 	$(Q)cp -R    "$(BUNDLE_DIR)/"* "$(BUNDLES_DIR)/.lha/$(BUNDLE_NAME)/"
       
   117 	$(Q)cd "$(BUNDLES_DIR)/.lha" && lha ao6 "$(BUNDLES_DIR)/$(BUNDLE_NAME).lha" "$(BUNDLE_NAME)"
       
   118 	$(Q)rm -rf   "$(BUNDLES_DIR)/.lha"
       
   119 
       
   120 bundle_dmg: bundle
       
   121 	@echo '[BUNDLE] Creating $(BUNDLE_NAME).dmg'
       
   122 	$(Q)mkdir -p "$(BUNDLES_DIR)/OpenTTD $(REV)"
       
   123 	$(Q)cp -R "$(BUNDLE_DIR)/" "$(BUNDLES_DIR)/OpenTTD $(REV)"
       
   124 	$(Q)hdiutil create -ov -format UDZO -srcfolder "$(BUNDLES_DIR)/OpenTTD $(REV)" "$(BUNDLES_DIR)/$(BUNDLE_NAME).dmg"
       
   125 	$(Q)rm -fr "$(BUNDLES_DIR)/OpenTTD $(REV)"
       
   126 
       
   127 bundle_exe: all
       
   128 	@echo '[BUNDLE] Creating $(BUNDLE_NAME).exe'
       
   129 	$(Q)mkdir -p "$(BUNDLES_DIR)"
       
   130 	$(Q)unix2dos "$(ROOT_DIR)/docs/"* "$(ROOT_DIR)/readme.txt" "$(ROOT_DIR)/COPYING" "$(ROOT_DIR)/changelog.txt" "$(ROOT_DIR)/known-bugs.txt"
       
   131 	$(Q)cd $(ROOT_DIR)/os/win32/installer && makensis.exe //DVERSION_INCLUDE=version_$(PLATFORM).txt install.nsi
       
   132 	$(Q)mv $(ROOT_DIR)/os/win32/installer/*$(PLATFORM).exe "$(BUNDLES_DIR)/$(BUNDLE_NAME).exe"
       
   133 
       
   134 ifdef OSXAPP
       
   135 install:
       
   136 	@echo '[INSTALL] Cannot install the OSX Application Bundle'
       
   137 else
       
   138 install: bundle
       
   139 	@echo '[INSTALL] Installing OpenTTD'
       
   140 	$(Q)install -d "$(INSTALL_BINARY_DIR)"
       
   141 	$(Q)install -d "$(INSTALL_ICON_DIR)"
       
   142 	$(Q)install -d "$(INSTALL_DATA_DIR)/gm"
       
   143 	$(Q)install -d "$(INSTALL_DATA_DIR)/data"
       
   144 	$(Q)install -d "$(INSTALL_DATA_DIR)/lang"
       
   145 	$(Q)install -d "$(INSTALL_DOC_DIR)"
       
   146 	$(Q)install -m 755 "$(BUNDLE_DIR)/$(TTD)" "$(INSTALL_BINARY_DIR)"
       
   147 	$(Q)install -m 644 "$(BUNDLE_DIR)/lang/"* "$(INSTALL_DATA_DIR)/lang"
       
   148 	$(Q)install -m 644 "$(BUNDLE_DIR)/data/"* "$(INSTALL_DATA_DIR)/data"
       
   149 	$(Q)install -m 644 "$(BUNDLE_DIR)/docs/"* "$(INSTALL_DOC_DIR)"
       
   150 	$(Q)install -m 644 "$(BUNDLE_DIR)/media/openttd.32.xpm" "$(INSTALL_ICON_DIR)"
       
   151 ifdef ICON_THEME_DIR
       
   152 	$(Q)install -d "$(INSTALL_ICON_THEME_DIR)"
       
   153 	$(Q)install -d "$(INSTALL_ICON_THEME_DIR)/16x16/apps"
       
   154 	$(Q)install -m 644 "$(BUNDLE_DIR)/media/openttd.16.png" "$(INSTALL_ICON_THEME_DIR)/16x16/apps"
       
   155 	$(Q)install -d "$(INSTALL_ICON_THEME_DIR)/32x32/apps"
       
   156 	$(Q)install -m 644 "$(BUNDLE_DIR)/media/openttd.32.png" "$(INSTALL_ICON_THEME_DIR)/32x32/apps"
       
   157 	$(Q)install -d "$(INSTALL_ICON_THEME_DIR)/48x48/apps"
       
   158 	$(Q)install -m 644 "$(BUNDLE_DIR)/media/openttd.48.png" "$(INSTALL_ICON_THEME_DIR)/48x48/apps"
       
   159 	$(Q)install -d "$(INSTALL_ICON_THEME_DIR)/64x64/apps"
       
   160 	$(Q)install -m 644 "$(BUNDLE_DIR)/media/openttd.64.png" "$(INSTALL_ICON_THEME_DIR)/64x64/apps"
       
   161 	$(Q)install -d "$(INSTALL_ICON_THEME_DIR)/128x128/apps"
       
   162 	$(Q)install -m 644 "$(BUNDLE_DIR)/media/openttd.128.png" "$(INSTALL_ICON_THEME_DIR)/128x128/apps"
       
   163 	$(Q)install -d "$(INSTALL_ICON_THEME_DIR)/256x256/apps"
       
   164 	$(Q)install -m 644 "$(BUNDLE_DIR)/media/openttd.256.png" "$(INSTALL_ICON_THEME_DIR)/256x256/apps"
       
   165 else
       
   166 	$(Q)install -m 644 "$(BUNDLE_DIR)/media/"*.png "$(INSTALL_ICON_DIR)"
       
   167 endif
       
   168 ifdef MAN_DIR
       
   169 	$(Q)install -d "$(INSTALL_MAN_DIR)"
       
   170 	$(Q)install -m 644 "$(BUNDLE_DIR)/man/openttd.6.gz" "$(INSTALL_MAN_DIR)"
       
   171 endif
       
   172 ifdef MENU_DIR
       
   173 	$(Q)install -d "$(INSTALL_MENU_DIR)"
       
   174 	$(Q)install -m 644 "$(BUNDLE_DIR)/media/openttd.desktop" "$(INSTALL_MENU_DIR)"
       
   175 endif
       
   176 	$(Q)cp -R "$(BUNDLE_DIR)/scenario" "$(INSTALL_DATA_DIR)"
       
   177 endif # OSXAPP