1
0
mirror of https://git.tartarus.org/simon/putty.git synced 2025-01-09 17:38:00 +00:00

Create OS X application bundles for PuTTY and pterm.

This commit adds two .plist files, which go in the app bundles; two
.bundle files, which are input to gtk-mac-bundler and explain to it
how to _create_ the bundles; and a piece of manual addition to
Makefile.am that actually runs gtk-mac-bundler after building the
gtkapp.c based binaries and the OSX launcher. The latter is
conditionalised on configuring --with-quartz (unlike the binaries
themselves, which you can build on other platforms too, though they
won't do much that's useful).
This commit is contained in:
Simon Tatham 2016-03-23 22:14:13 +00:00
parent 7d705ed1bd
commit c73f25564f
8 changed files with 181 additions and 2 deletions

2
.gitignore vendored
View File

@ -38,6 +38,8 @@
/puttyapp
/ptermapp
/osxlaunch
/unix/PuTTY.app
/unix/Pterm.app
/fuzzterm
/testbn
/*.DSA

12
Recipe
View File

@ -192,6 +192,18 @@ install-exec-local:
endif
!end
# In automake makefile, build the OS X app bundle, if configured in
# Quartz mode.
!begin am
if HAVE_QUARTZ
noinst_SCRIPTS = unix/PuTTY.app unix/Pterm.app
unix/PuTTY.app: unix/putty.bundle puttyapp osxlaunch
rm -rf $@ && gtk-mac-bundler $<
unix/Pterm.app: unix/pterm.bundle ptermapp osxlaunch
rm -rf $@ && gtk-mac-bundler $<
endif
!end
# Random symbols.
!begin cygwin vars
# _WIN32_IE is required to expose identifiers that only make sense on

View File

@ -51,8 +51,11 @@ AC_ARG_WITH([gssapi],
AC_ARG_WITH([quartz],
[AS_HELP_STRING([--with-quartz],
[build for the MacOS Quartz GTK back end])],
[AC_DEFINE([OSX_GTK], [1], [Define if building with GTK for MacOS.])],
[])
[AC_DEFINE([OSX_GTK], [1], [Define if building with GTK for MacOS.])
with_quartz=yes],
[with_quartz=no])
AM_CONDITIONAL([HAVE_QUARTZ],[test "x$with_quartz" = "xyes"])
WITH_GSSAPI=
AS_IF([test "x$with_gssapi" != xno],

View File

@ -7,6 +7,22 @@
* it's fully working.)
*/
/*
To build on OS X, you will need a build environment with GTK 3 and
gtk-mac-bundler, and also Halibut on the path (to build the man pages,
without which the standard Makefile will complain). Then, from a clean
checkout, do this:
./mkfiles.pl -U --with-quartz
make -C icons icns
make -C doc
make
and you should get unix/PuTTY.app and unix/PTerm.app as output.
*/
#include <assert.h>
#include <stdlib.h>

43
unix/pterm.bundle Normal file
View File

@ -0,0 +1,43 @@
<?xml version="1.0" standalone="no"?> <!--*- mode: xml -*-->
<app-bundle>
<meta>
<prefix name="default">${env:JHBUILD_PREFIX}</prefix>
<run-install-name-tool/>
<gtk>gtk+-3.0</gtk>
<!-- Optionally specify a launcher script to use. If the
application sets up everything needed itself, like
environment variable, linker paths, etc, a launcher script is
not needed. If the source path is left out, the default
script will be used.
-->
<launcher-script>${project}/../osxlaunch</launcher-script >
</meta>
<plist>${project}/pterm.plist</plist>
<main-binary dest="${bundle}/Contents/MacOS">
${project}/../ptermapp
</main-binary>
<binary>
${prefix}/lib/${gtkdir}/${pkg:${gtk}:gtk_binary_version}/immodules/*.so
</binary>
<binary>
${prefix}/lib/${gtkdir}/${pkg:${gtk}:gtk_binary_version}/printbackends/*.so
</binary>
<data>
${prefix}/share/themes/Adwaita
</data>
<data dest="${bundle}/Contents/Resources">
${project}/../icons/Pterm.icns
</data>
<icon-theme icons="auto">
Adwaita
</icon-theme>
</app-bundle>

30
unix/pterm.plist Normal file
View File

@ -0,0 +1,30 @@
<?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>CFBundleIconFile</key>
<string>Pterm.icns</string>
<key>CFBundleName</key>
<string>Pterm</string>
<key>CFBundleDisplayName</key>
<string>Pterm</string>
<key>CFBundleExecutable</key>
<string>Pterm</string>
<key>CFBundleVersion</key>
<string>Unidentified build</string>
<key>CFBundleShortVersionString</key>
<string>Unidentified build</string>
<key>CFBundleDevelopmentRegion</key>
<string>en</string>
<key>CFBundleIdentifier</key>
<string>org.tartarus.projects.putty.macpterm</string>
<key>CFBundleInfoDictionaryVersion</key>
<string>6.0</string>
<key>CFBundlePackageType</key>
<string>APPL</string>
<key>CFBundleSignature</key>
<string>????</string>
<key>NSHumanReadableCopyright</key>
<string>© 1997-2015 Simon Tatham. All rights reserved.</string>
</dict>
</plist>

43
unix/putty.bundle Normal file
View File

@ -0,0 +1,43 @@
<?xml version="1.0" standalone="no"?> <!--*- mode: xml -*-->
<app-bundle>
<meta>
<prefix name="default">${env:JHBUILD_PREFIX}</prefix>
<run-install-name-tool/>
<gtk>gtk+-3.0</gtk>
<!-- Optionally specify a launcher script to use. If the
application sets up everything needed itself, like
environment variable, linker paths, etc, a launcher script is
not needed. If the source path is left out, the default
script will be used.
-->
<launcher-script>${project}/../osxlaunch</launcher-script >
</meta>
<plist>${project}/putty.plist</plist>
<main-binary dest="${bundle}/Contents/MacOS">
${project}/../puttyapp
</main-binary>
<binary>
${prefix}/lib/${gtkdir}/${pkg:${gtk}:gtk_binary_version}/immodules/*.so
</binary>
<binary>
${prefix}/lib/${gtkdir}/${pkg:${gtk}:gtk_binary_version}/printbackends/*.so
</binary>
<data>
${prefix}/share/themes/Adwaita
</data>
<data dest="${bundle}/Contents/Resources">
${project}/../icons/PuTTY.icns
</data>
<icon-theme icons="auto">
Adwaita
</icon-theme>
</app-bundle>

30
unix/putty.plist Normal file
View File

@ -0,0 +1,30 @@
<?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>CFBundleIconFile</key>
<string>PuTTY.icns</string>
<key>CFBundleName</key>
<string>PuTTY</string>
<key>CFBundleDisplayName</key>
<string>PuTTY</string>
<key>CFBundleExecutable</key>
<string>PuTTY</string>
<key>CFBundleVersion</key>
<string>Unidentified build</string>
<key>CFBundleShortVersionString</key>
<string>Unidentified build</string>
<key>CFBundleDevelopmentRegion</key>
<string>en</string>
<key>CFBundleIdentifier</key>
<string>org.tartarus.projects.putty.macputty</string>
<key>CFBundleInfoDictionaryVersion</key>
<string>6.0</string>
<key>CFBundlePackageType</key>
<string>APPL</string>
<key>CFBundleSignature</key>
<string>????</string>
<key>NSHumanReadableCopyright</key>
<string>© 1997-2015 Simon Tatham. All rights reserved.</string>
</dict>
</plist>