MacOS X App Octave Shell Script
Jump to navigation
Jump to search
The script below is intended to be part of a MacOS X App bundle for Octave. This script is called by the App launcher script. The script is responsible for initializing the shell environment and running Octave.
#!/bin/sh # Copyright (C) 2007-2008, Thomas Treichl and Paul Kienzle # Copyright (C) 2009-2011, Thomas Treichl # Copyright (C) 2012, Ben Abbott # This program 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; either version 3 of the License, or # (at your option) any later version. # # This program 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 this program; If not, see <http://www.gnu.org/licenses/>. # Checks if Octave is started from a file that is a link or if this # file has been taken directly to startup the Octave program. VER="3.7.0+" if [ -L "$0" ] ; then ROOT="$(dirname $(readlink -f "$0"))" else ROOT="$(cd "$(dirname "$0")" 2>/dev/null && pwd)" fi ROOT="$(dirname "${ROOT}")" # Remove MacPorts from the path PATH="/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/X11/bin" # Setting up various path information variables that are needed to # startup the Octave program. OCTAVE_HOME="${ROOT}" PATH="${ROOT}/bin:${PATH}" if [ -z ${DYLD_FALLBACK_LIBRARY_PATH} ]; then DYLD_FALLBACK_LIBRARY_PATH="${ROOT}/lib" else DYLD_FALLBACK_LIBRARY_PATH="${ROOT}/lib:${DYLD_FALLBACK_LIBRARY_PATH}" fi DYLD_FALLBACK_LIBRARY_PATH="${ROOT}/lib/octave/$VER:${DYLD_FALLBACK_LIBRARY_PATH}" DYLD_FALLBACK_LIBRARY_PATH="${ROOT}/lib/gcc44:${DYLD_FALLBACK_LIBRARY_PATH}" if [ -z ${DYLD_FRAMEWORK_PATH} ]; then DYLD_FRAMEWORK_PATH="${ROOT}/Library/Frameworks" else DYLD_FRAMEWORK_PATH="${ROOT}/Library/Frameworks:${DYLD_FRAMEWORK_PATH}" fi # Setting up various path information variables that are needed to run # the "mkoctfile" and "mex" commands from within the Octave program. INCLUDEDIR="\"${ROOT}/include/Octave-${VER}\"" CFLAGS="-I\"${ROOT}/include/curl\" -I\"${ROOT}/include/readline\" ${CFLAGS}" FFLAGS="-I\"${ROOT}/include/curl\" -I\"${ROOT}/include/readline\" ${FFLAGS}" CPPFLAGS="-I\"${ROOT}/include/curl\" -I\"${ROOT}/include/readline\" ${CPPFLAGS}" CXXFLAGS="-I\"${ROOT}/include/curl\" -I\"${ROOT}/include/readline\" ${CXXFLAGS}" LDFLAGS="-L\"${ROOT}/lib\" -L\"${ROOT}/lib/octave/$VER\" ${LDFLAGS}" XTRA_CXXFLAGS=" " OCT_LINK_OPTS="\"${ROOT}/lib/gcc44/libstdc++.6.dylib\"" OCTLIBDIR="\"${ROOT}/lib/octave/${VER}\"" LIBDIR="\"${ROOT}/lib\"" OCTINCLUDEDIR="\"${ROOT}/include/Octave-${VER}/octave\"" # These default include paths are set by mkoctfile-2.9.12 automatically # CFLAGS="-I${ROOT}/include -I${ROOT}/include/octave/$VER" # Fortran stuff. FIXME - spaces in LIBDIR? FLIBS="-L${LIBDIR} -L${LIBDIR}/gcc44/gcc/x86_64-apple-darwin11/4.4.6 -L${LIBDIR}/gcc44/gcc/x86_64-apple-darwin11/4.4.6/../../.. -lm -lgfortranbegin -lgfortran" # Setting up other variables that are needed to run the Octave program # or mkoctfile and to install packages. DL_LDFLAGS="-bundle -bundle_loader \"${ROOT}/bin/octave-$VER\"" SED="/usr/bin/sed" CC=`mkoctfile -p CC` CXX=`mkoctfile -p CXX` F77=`mkoctfile -p F77` CC="$(basename $CC)" CXX="$(basename $CXX)" F77="$(basename $F77)" CC=\"${ROOT}/bin/$CC\" CXX=\"${ROOT}/bin/$CXX\" F77=\"${ROOT}/bin/$F77\" # Ghostscript stuff GS_LIB="${ROOT}/share/ghostscript/9.05/Resource/Init" GS_LIB="${GS_LIB}:${ROOT}/share/ghostscript/9.05/Resource" if [ -z ${GS_FONTPATH} ]; then GS_FONTPATH="${GS_LIB}:${ROOT}/share/ghostscript/fonts:${ROOT}/share/ghostscript/Resource/Font" else GS_FONTPATH="${GS_LIB}:${ROOT}/share/ghostscript/fonts:${ROOT}/share/ghostscript/Resource/Font:${GS_FONTPATH}" fi # Add /usr/X11/share/fonts to GS_FONTPATH ? GS_OPTIONS="-sGenericResourceDir=\"${ROOT}/share/ghostscript/9.05/Resource/\"" GS_OPTIONS="${GS_OPTIONS} -sFontResourceDir=\"${ROOT}/share/ghostscript/9.05/Resource/Font/\"" # Gnuplot stuff GNUTERM=aqua GNUTERMAPP="${ROOT}/Applications/AquaTerm.app" AQUATERM_PATH="${GNUTERMAPP}" # If AquaTerm is running, use AppleScript to tell it to quit. This is done to ensure # the AquaTerm which is running is part of the app bundle. osascript 2>&1>/dev/null <<EOF tell application "System Events" to set ProcessList to get name of every process if ProcessList contains "AquaTerm" then quit application "AquaTerm" delay 0.5 end if EOF open "${GNUTERMAPP}" # Invoke Octave, preserving spaces in all the input arguments. OCTAVE_HOME="${OCTAVE_HOME}" PATH="${PATH}" \ DYLD_FALLBACK_LIBRARY_PATH="${DYLD_FALLBACK_LIBRARY_PATH}" \ CC="${CC}" CXX="${CXX}" F77="${F77}" \ LD_CXX="${CXX}" DL_LD="${CXX}" \ CFLAGS="${CFLAGS}" CPPFLAGS="${CPPFLAGS}" \ CXXFLAGS="${CXXFLAGS}" XTRA_CXXFLAGS="${XTRA_CXXFLAGS}" \ FFLAGS="${FFLAGS}" LDFLAGS="${LDFLAGS}" FLIBS="${FLIBS}" \ DL_LDFLAGS="${DL_LDFLAGS}" \ INCLUDEDIR="${INCLUDEDIR}" LIBDIR="${LIBDIR}" \ OCTINCLUDEDIR="${OCTINCLUDEDIR}" OCTLIBDIR="${OCTLIBDIR}" \ OCT_LINK_OPTS="${OCT_LINK_OPTS}" \ SED="$SED" MAGICK_HOME="${ROOT}" \ FONTCONFIG_PATH="${ROOT}/etc/fonts" \ GS_FONTPATH="${GS_FONTPATH}" GS_LIB="${GS_LIB}" GS_OPTIONS="${GS_OPTIONS}" \ DYLD_FRAMEWORK_PATH="${DYLD_FRAMEWORK_PATH}" \ AQUATERM_PATH="${AQUATERM_PATH}" \ GNUTERM="${GNUTERM}" \ GNUTERMAPP="${GNUTERMAPP}" \ "${ROOT}/bin/octave-$VER" "$@" # Use AppleScript to kill the icon in the dock. # FIXME - how to replace "Octave-3.7.0+" with "Octave-$VER" osascript 2>&1>/dev/null <<EOF tell application "Octave-3.7.0+" quit end tell EOF