]> git.xonotic.org Git - xonotic/netradiant.git/commitdiff
New Apple OS X application bundle based on work done for GtkRadiant 1.6.4. Produces...
authorJay Dolan <jay@jaydolan.com>
Sat, 14 Feb 2015 14:37:38 +0000 (09:37 -0500)
committerJay Dolan <jay@jaydolan.com>
Sat, 14 Feb 2015 14:37:38 +0000 (09:37 -0500)
setup/data/osx/Makefile [new file with mode: 0644]
setup/data/osx/NetRadiant.app/Contents/Info.plist [new file with mode: 0644]
setup/data/osx/NetRadiant.app/Contents/MacOS/radiant [new file with mode: 0755]
setup/data/osx/NetRadiant.app/Contents/Resources/etc/fonts/fonts.conf [new file with mode: 0644]
setup/data/osx/NetRadiant.app/Contents/Resources/etc/gtk-2.0/gtkrc [new file with mode: 0644]
setup/data/osx/NetRadiant.app/Contents/Resources/etc/pango/pangorc [new file with mode: 0644]
setup/data/osx/NetRadiant.app/Contents/Resources/lib/.turd [new file with mode: 0644]
setup/data/osx/NetRadiant.app/Contents/Resources/radiant.icns [new file with mode: 0644]
setup/data/osx/NetRadiant.app/Contents/Resources/share/gtk-2.0/icons/.turd [new file with mode: 0644]
setup/data/osx/NetRadiant.app/Contents/Resources/share/gtk-2.0/themes/.turd [new file with mode: 0644]
setup/data/osx/README.md [new file with mode: 0644]

diff --git a/setup/data/osx/Makefile b/setup/data/osx/Makefile
new file mode 100644 (file)
index 0000000..eb9ecad
--- /dev/null
@@ -0,0 +1,83 @@
+# Makefile for NetRadiant.app, requires http://macdylibbundler.sourceforge.net/
+
+INSTALL = ../../../install
+TARGET = target
+RESOURCES = $(TARGET)/NetRadiant.app/Contents/Resources
+BINDIR = $(RESOURCES)/install
+CONFDIR = $(RESOURCES)/etc
+DATADIR = $(RESOURCES)/share
+LIBDIR = $(RESOURCES)/lib
+VERSION = 1.5.0
+DMG = $(TARGET)/NetRadiant-$(VERSION).dmg
+VOLUME_NAME = "NetRadiant $(VERSION)"
+
+# We must rewrite some Gtk configuration files, which vary from environment to
+# environment depending on where you've installed MacPorts. Fun!
+
+MACPORTS_PREFIX := $(shell which port | sed 's:/bin/port::')
+PREFIX_SED_EXPR = "s:$(MACPORTS_PREFIX):@executable_path/..:g"
+
+all: install bundle
+
+-pre-install:
+       install -d $(TARGET)
+       cp -r NetRadiant.app $(TARGET)
+       find $(TARGET) -name .turd -delete
+       
+-gtk-runtime-gdk-pixbuf-2.0:
+       cp -r $(MACPORTS_PREFIX)/lib/gdk-pixbuf-2.0 $(LIBDIR)
+       find $(LIBDIR)/gdk-pixbuf-2.0 -type f ! -name "*.so" -delete
+       
+       gdk-pixbuf-query-loaders | sed $(PREFIX_SED_EXPR) > \
+               $(CONFDIR)/gtk-2.0/gdk-pixbuf.loaders
+
+-gtk-runtime-pango:
+       cp -r $(MACPORTS_PREFIX)/lib/pango $(LIBDIR)
+       find $(LIBDIR)/pango -type f ! -name "*.so" -delete
+       
+       pango-querymodules | sed $(PREFIX_SED_EXPR) > \
+               $(CONFDIR)/pango/pango.modules
+       
+-gtk-runtime: -gtk-runtime-gdk-pixbuf-2.0 -gtk-runtime-pango
+       cp -r $(MACPORTS_PREFIX)/lib/gtk-2.0 $(LIBDIR)
+       find $(LIBDIR)/gtk-2.0 -type f ! -name "*.so" -delete   
+       
+       rm -rf $(LIBDIR)/gtk-2.0/{includes,modules}
+       rm -rf $(LIBDIR)/gtk-2.0/*/printbackends
+       
+       cp -r $(MACPORTS_PREFIX)/share/themes/Default $(RESOURCES)/share
+       
+       gtk-query-immodules-2.0 | sed $(PREFIX_SED_EXPR) > \
+               $(CONFDIR)/gtk-2.0/gtk.immodules
+
+install: -pre-install -gtk-runtime
+       cp -r $(INSTALL) $(RESOURCES)
+       #rm -rf `find $(INSTDIR)/installs -type d -name .svn`
+
+bundle:
+       
+       # The Radiant plugins (modules) are a little funky
+       # Some of them are actually linked against the build directory
+       
+       test -L install || ln -s $(INSTALL)
+       
+       dylibbundler -b \
+               -x $(BINDIR)/radiant \
+               -x $(BINDIR)/q2map \
+               -x $(BINDIR)/q3data \
+               -x $(BINDIR)/q3map2 \
+               -x $(BINDIR)/qdata3 \
+               `find $(BINDIR)/modules -name "*.dylib" | xargs -I {} echo -x {}` \
+               `find $(LIBDIR) -name "*.dylib" | xargs -I {} echo -x {}` \
+       -d $(LIBDIR) -of -p @executable_path/../lib
+       
+       rm -f install
+
+image:
+       find $(TARGET) -name .DS_Store -delete
+       ln -f -s /Applications $(TARGET)/Applications
+       hdiutil create -ov $(DMG) -srcfolder $(TARGET) -volname $(VOLUME_NAME)
+       rm $(TARGET)/Applications
+
+clean:
+       rm -rf $(TARGET)/*
diff --git a/setup/data/osx/NetRadiant.app/Contents/Info.plist b/setup/data/osx/NetRadiant.app/Contents/Info.plist
new file mode 100644 (file)
index 0000000..75796b1
--- /dev/null
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+        <key>CFBundleDevelopmentRegion</key>
+        <string>English</string>
+        <key>CFBundleDisplayName</key>
+        <string>NetRadiant</string>
+        <key>CFBundleExecutable</key>
+        <string>radiant</string>
+        <key>CFBundleIconFile</key>
+        <string>radiant.icns</string>
+        <key>CFBundleIdentifier</key>
+        <string>org.xonotic.netradiant</string>
+        <key>CFBundleName</key>
+        <string>NetRadiant</string>
+        <key>CFBundlePackageType</key>
+        <string>APPL</string>
+        <key>CFBundleShortVersionString</key>
+        <string>1.5.0</string>
+        <key>CFBundleSignature</key>
+        <string>????</string>
+        <key>CFBundleVersion</key>
+        <string>1.5.0</string>
+        <key>LSMinimumSystemVersion</key>
+        <string>10.7</string>
+</dict>
+</plist>
diff --git a/setup/data/osx/NetRadiant.app/Contents/MacOS/radiant b/setup/data/osx/NetRadiant.app/Contents/MacOS/radiant
new file mode 100755 (executable)
index 0000000..701a7fe
--- /dev/null
@@ -0,0 +1,35 @@
+#!/bin/bash
+
+RADIANT_HOME=$(dirname "$0")
+RADIANT_HOME=${RADIANT_HOME/NetRadiant.app*/NetRadiant.app}
+
+echo
+echo "Starting NetRadiant in ${RADIANT_HOME}"
+echo
+
+set -x
+
+resources="${RADIANT_HOME}/Contents/Resources"
+
+export FONTCONFIG_PATH="${resources}/etc/fonts"
+export FC_DEBUG=1024
+
+export GDK_GL_LIBGL_PATH="${resources}/lib/libGL.1.dylib"
+export GDK_GL_LIBGLU_PATH="${resources}/lib/libGLU.1.dylib"
+
+export GDK_PATH="${resources}"
+export GDK_PIXBUF_MODULE_FILE="${resources}/etc/gtk-2.0/gdk-pixbuf.loaders"
+
+export GOBJECT_PATH="${resources}"
+
+export GTK_DATA_PREFIX="${resources}"
+export GTK_EXE_PREFIX="${resources}"
+export GTK_PATH="${resources}"
+
+export PANGO_SYSCONFDIR="${resources}/etc"
+export PANGO_LIBDIR="${resources}/lib"
+
+cd "${resources}/install"
+./radiant &
+
+set +x
\ No newline at end of file
diff --git a/setup/data/osx/NetRadiant.app/Contents/Resources/etc/fonts/fonts.conf b/setup/data/osx/NetRadiant.app/Contents/Resources/etc/fonts/fonts.conf
new file mode 100644 (file)
index 0000000..7183a4b
--- /dev/null
@@ -0,0 +1,133 @@
+<?xml version="1.0"?>
+<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
+<fontconfig>
+
+<!--
+  Adjusted FontConfig for GtkRadiant.app. Include only paths which Mac users
+  will more than likely have.
+-->
+
+<!--
+  Font directory list
+-->
+       <dir>/usr/X11/lib/X11/fonts</dir>
+       <dir>/Library/Fonts</dir>
+       <dir>/System/Library/Fonts</dir>
+       <dir prefix="xdg">fonts</dir>
+
+<!--
+  Accept deprecated 'mono' alias, replacing it with 'monospace'
+-->
+       <match target="pattern">
+               <test qual="any" name="family">
+                       <string>mono</string>
+               </test>
+               <edit name="family" mode="assign" binding="same">
+                       <string>monospace</string>
+               </edit>
+       </match>
+
+<!--
+  Accept alternate 'sans serif' spelling, replacing it with 'sans-serif'
+-->
+       <match target="pattern">
+               <test qual="any" name="family">
+                       <string>sans serif</string>
+               </test>
+               <edit name="family" mode="assign" binding="same">
+                       <string>sans-serif</string>
+               </edit>
+       </match>
+
+<!--
+  Accept deprecated 'sans' alias, replacing it with 'sans-serif'
+-->
+       <match target="pattern">
+               <test qual="any" name="family">
+                       <string>sans</string>
+               </test>
+               <edit name="family" mode="assign" binding="same">
+                       <string>sans-serif</string>
+               </edit>
+       </match>
+
+<!-- Font cache directory list -->
+       <cachedir prefix="xdg">fontconfig</cachedir>
+
+       <config>
+<!--
+  These are the default Unicode chars that are expected to be blank
+  in fonts.  All other blank chars are assumed to be broken and
+  won't appear in the resulting charsets
+ -->
+               <blank>
+                       <int>0x0020</int>       <!-- SPACE -->
+                       <int>0x00A0</int>       <!-- NO-BREAK SPACE -->
+                       <int>0x00AD</int>       <!-- SOFT HYPHEN -->
+                       <int>0x034F</int>       <!-- COMBINING GRAPHEME JOINER -->
+                       <int>0x0600</int>       <!-- ARABIC NUMBER SIGN -->
+                       <int>0x0601</int>       <!-- ARABIC SIGN SANAH -->
+                       <int>0x0602</int>       <!-- ARABIC FOOTNOTE MARKER -->
+                       <int>0x0603</int>       <!-- ARABIC SIGN SAFHA -->
+                       <int>0x06DD</int>       <!-- ARABIC END OF AYAH -->
+                       <int>0x070F</int>       <!-- SYRIAC ABBREVIATION MARK -->
+                       <int>0x115F</int>       <!-- HANGUL CHOSEONG FILLER -->
+                       <int>0x1160</int>       <!-- HANGUL JUNGSEONG FILLER -->
+                       <int>0x1680</int>       <!-- OGHAM SPACE MARK -->
+                       <int>0x17B4</int>       <!-- KHMER VOWEL INHERENT AQ -->
+                       <int>0x17B5</int>       <!-- KHMER VOWEL INHERENT AA -->
+                       <int>0x180E</int>       <!-- MONGOLIAN VOWEL SEPARATOR -->
+                       <int>0x2000</int>       <!-- EN QUAD -->
+                       <int>0x2001</int>       <!-- EM QUAD -->
+                       <int>0x2002</int>       <!-- EN SPACE -->
+                       <int>0x2003</int>       <!-- EM SPACE -->
+                       <int>0x2004</int>       <!-- THREE-PER-EM SPACE -->
+                       <int>0x2005</int>       <!-- FOUR-PER-EM SPACE -->
+                       <int>0x2006</int>       <!-- SIX-PER-EM SPACE -->
+                       <int>0x2007</int>       <!-- FIGURE SPACE -->
+                       <int>0x2008</int>       <!-- PUNCTUATION SPACE -->
+                       <int>0x2009</int>       <!-- THIN SPACE -->
+                       <int>0x200A</int>       <!-- HAIR SPACE -->
+                       <int>0x200B</int>       <!-- ZERO WIDTH SPACE -->
+                       <int>0x200C</int>       <!-- ZERO WIDTH NON-JOINER -->
+                       <int>0x200D</int>       <!-- ZERO WIDTH JOINER -->
+                       <int>0x200E</int>       <!-- LEFT-TO-RIGHT MARK -->
+                       <int>0x200F</int>       <!-- RIGHT-TO-LEFT MARK -->
+                       <int>0x2028</int>       <!-- LINE SEPARATOR -->
+                       <int>0x2029</int>       <!-- PARAGRAPH SEPARATOR -->
+                       <int>0x202A</int>       <!-- LEFT-TO-RIGHT EMBEDDING -->
+                       <int>0x202B</int>       <!-- RIGHT-TO-LEFT EMBEDDING -->
+                       <int>0x202C</int>       <!-- POP DIRECTIONAL FORMATTING -->
+                       <int>0x202D</int>       <!-- LEFT-TO-RIGHT OVERRIDE -->
+                       <int>0x202E</int>       <!-- RIGHT-TO-LEFT OVERRIDE -->
+                       <int>0x202F</int>       <!-- NARROW NO-BREAK SPACE -->
+                       <int>0x205F</int>       <!-- MEDIUM MATHEMATICAL SPACE -->
+                       <int>0x2060</int>       <!-- WORD JOINER -->
+                       <int>0x2061</int>       <!-- FUNCTION APPLICATION -->
+                       <int>0x2062</int>       <!-- INVISIBLE TIMES -->
+                       <int>0x2063</int>       <!-- INVISIBLE SEPARATOR -->
+                       <int>0x206A</int>       <!-- INHIBIT SYMMETRIC SWAPPING -->
+                       <int>0x206B</int>       <!-- ACTIVATE SYMMETRIC SWAPPING -->
+                       <int>0x206C</int>       <!-- INHIBIT ARABIC FORM SHAPING -->
+                       <int>0x206D</int>       <!-- ACTIVATE ARABIC FORM SHAPING -->
+                       <int>0x206E</int>       <!-- NATIONAL DIGIT SHAPES -->
+                       <int>0x206F</int>       <!-- NOMINAL DIGIT SHAPES -->
+                       <int>0x2800</int>       <!-- BRAILLE PATTERN BLANK -->
+                       <int>0x3000</int>       <!-- IDEOGRAPHIC SPACE -->
+                       <int>0x3164</int>       <!-- HANGUL FILLER -->
+                       <int>0xFEFF</int>       <!-- ZERO WIDTH NO-BREAK SPACE -->
+                       <int>0xFFA0</int>       <!-- HALFWIDTH HANGUL FILLER -->
+                       <int>0xFFF9</int>       <!-- INTERLINEAR ANNOTATION ANCHOR -->
+                       <int>0xFFFA</int>       <!-- INTERLINEAR ANNOTATION SEPARATOR -->
+                       <int>0xFFFB</int>       <!-- INTERLINEAR ANNOTATION TERMINATOR -->
+               </blank>
+<!--
+  Rescan configuration every 30 seconds when FcFontSetList is called
+ -->
+               <rescan>
+                       <int>30</int>
+               </rescan>
+       </config>
+
+</fontconfig>
+
diff --git a/setup/data/osx/NetRadiant.app/Contents/Resources/etc/gtk-2.0/gtkrc b/setup/data/osx/NetRadiant.app/Contents/Resources/etc/gtk-2.0/gtkrc
new file mode 100644 (file)
index 0000000..e69de29
diff --git a/setup/data/osx/NetRadiant.app/Contents/Resources/etc/pango/pangorc b/setup/data/osx/NetRadiant.app/Contents/Resources/etc/pango/pangorc
new file mode 100644 (file)
index 0000000..f56d343
--- /dev/null
@@ -0,0 +1 @@
+[Pango]
\ No newline at end of file
diff --git a/setup/data/osx/NetRadiant.app/Contents/Resources/lib/.turd b/setup/data/osx/NetRadiant.app/Contents/Resources/lib/.turd
new file mode 100644 (file)
index 0000000..e69de29
diff --git a/setup/data/osx/NetRadiant.app/Contents/Resources/radiant.icns b/setup/data/osx/NetRadiant.app/Contents/Resources/radiant.icns
new file mode 100644 (file)
index 0000000..339e718
Binary files /dev/null and b/setup/data/osx/NetRadiant.app/Contents/Resources/radiant.icns differ
diff --git a/setup/data/osx/NetRadiant.app/Contents/Resources/share/gtk-2.0/icons/.turd b/setup/data/osx/NetRadiant.app/Contents/Resources/share/gtk-2.0/icons/.turd
new file mode 100644 (file)
index 0000000..e69de29
diff --git a/setup/data/osx/NetRadiant.app/Contents/Resources/share/gtk-2.0/themes/.turd b/setup/data/osx/NetRadiant.app/Contents/Resources/share/gtk-2.0/themes/.turd
new file mode 100644 (file)
index 0000000..e69de29
diff --git a/setup/data/osx/README.md b/setup/data/osx/README.md
new file mode 100644 (file)
index 0000000..8122c17
--- /dev/null
@@ -0,0 +1,50 @@
+GtkRadiant for Apple OSX
+========================
+
+This directory provides packaging steps for GtkRadiant for OSX. This document describes compiling the application on OSX as well as generating distributable bundles using the framework provided in this directory.
+
+Dependencies & Compilation
+--------------------------
+
+Directions for OSX Mavericks 10.9 - your mileage may vary:
+
+- Install [MacPorts](http://macports.org).
+- Install [XQuartz](http://xquartz.macosforge.org/)
+
+- Install dependencies with MacPorts:
+
+```
+sudo port install dylibbundler pkgconfig gtkglext scons
+```
+
+- Get the GtkRadiant code and compile:
+
+```
+git clone https://github.com/TTimo/GtkRadiant.git
+cd GtkRadiant/
+scons
+```
+
+- Run the build:
+
+(from the GtkRadiant/ directory)
+```
+./install/radiant.bin
+```
+
+XQuartz note: on my configuration XQuartz doesn't automatically start for some reason. I have to open another terminal, and run the following command: `/Applications/Utilities/XQuartz.app/Contents/MacOS/X11.bin`, then start radiant. 
+    
+Building GtkRadiant.app
+-----------------------
+
+The `Makefile` in the 'apple/' directory will produce a distributable .app bundle for GtkRadiant using `dylibbundler`:
+
+```
+make
+make image
+```
+
+Getting help
+------------
+
+Get on irc: Quakenet #radiant, or ask on the mailing list, or post something on the issue tracker..