|
@@ -1,8 +1,11 @@
|
|
|
-# title: GRASS GIS Mac OS X Build
|
|
|
+| :exclamation: Instructions below are not up-to-date. Update in progress. |
|
|
|
+|---------------------------------------------------------------------------|
|
|
|
+
|
|
|
+# GRASS GIS Mac OS X Build
|
|
|
|
|
|
(and other Mac notes)
|
|
|
|
|
|
-**Table of Contents**
|
|
|
+## Table of Contents
|
|
|
|
|
|
- Quickstart
|
|
|
- About
|
|
@@ -21,48 +24,45 @@
|
|
|
- Universal NetPBM
|
|
|
- Universal FFMPEG
|
|
|
|
|
|
-Quickstart
|
|
|
-==========
|
|
|
+## Quickstart
|
|
|
|
|
|
To build a Mac OS X application, add this to your configure options:
|
|
|
|
|
|
-\--prefix=/Applications \--enable-macosx-app
|
|
|
+`--prefix=/Applications --enable-macosx-app`
|
|
|
|
|
|
-About
|
|
|
-=====
|
|
|
+## About
|
|
|
|
|
|
This builds GRASS as a Mac OS X application, more or less.
|
|
|
|
|
|
The startup wrapper is a simple AppleScript that fires up a custom
|
|
|
grass.sh (instead of the standard grass6x) and quits, leaving grass.sh
|
|
|
running in a new Terminal window. The custom grass.sh takes care of some
|
|
|
-default and required environment settings (so the user doesn\'t have to
|
|
|
-fiddle with .bash\_profile), makes sure X11 in running, then starts
|
|
|
+default and required environment settings (so the user doesn't have to
|
|
|
+fiddle with .bash_profile), makes sure X11 in running, then starts
|
|
|
init.sh.
|
|
|
|
|
|
-Building GRASS
|
|
|
-==============
|
|
|
+## Building GRASS
|
|
|
|
|
|
Building GRASS as a Mac OS X application is pretty much the same as for
|
|
|
-a unix build (see the \"INSTALL\" document for details). For an
|
|
|
+a unix build (see the [INSTALL](../INSTALL) document for details). For an
|
|
|
application, just add this option to configure:
|
|
|
|
|
|
-\--enable-macosx-app
|
|
|
+`--enable-macosx-app`
|
|
|
|
|
|
-With this option, the \--prefix specified is the path where GRASS.app
|
|
|
-will be installed. The default GRASS prefix is /usr/local, but for a Mac
|
|
|
-OS X application it should be /Applications. It is not possible to have
|
|
|
+With this option, the `--prefix` specified is the path where GRASS.app
|
|
|
+will be installed. The default GRASS prefix is `/usr/local`, but for a Mac
|
|
|
+OS X application it should be `/Applications`. It is not possible to have
|
|
|
alternative default prefixes in configure, so you must set
|
|
|
-\--prefix=/Applications yourself for configure.
|
|
|
+`--prefix=/Applications` yourself for configure.
|
|
|
|
|
|
The makefile tries to figure out the location of the GDAL programs, from
|
|
|
-the configured GDAL libs. This is set in grass.sh, and if it doesn\'t
|
|
|
+the configured GDAL libs. This is set in grass.sh, and if it doesn't
|
|
|
correctly figure it out (some GRASS commands fail to find needed GDAL
|
|
|
-commands), set GDAL\_BIN before running make:
|
|
|
+commands), set `GDAL_BIN` before running make:
|
|
|
|
|
|
-export GDAL\_BIN=\[/path/to/gdal/bin\]
|
|
|
+`export GDAL_BIN=[/path/to/gdal/bin]`
|
|
|
|
|
|
-[Universal Build]{.underline}
|
|
|
+### Universal Build
|
|
|
|
|
|
The GRASS build system is very friendly to a Universal build (unlike
|
|
|
libtool-based builds). *This applies to a standard unix build as well as
|
|
@@ -79,190 +79,207 @@ The SDKs in Leopard are mostly taken care of.
|
|
|
|
|
|
For example, /usr/local:
|
|
|
|
|
|
+```sh
|
|
|
sudo ln -s /usr/local /Developer/SDKs/MacOSX10.4u.sdk/usr/local
|
|
|
+```
|
|
|
|
|
|
For Leopard, there may be problems locating bin programs. Add the
|
|
|
following:
|
|
|
|
|
|
+```sh
|
|
|
sudo ln -s /usr/local/bin /Developer/SDKs/MacOSX10.4u.sdk/usr/local/bin
|
|
|
-
|
|
|
sudo ln -s /usr/local/bin /Developer/SDKs/MacOSX10.5.sdk/usr/local/bin
|
|
|
+```
|
|
|
|
|
|
If there are subfolders involved that are not already in the SDK, add
|
|
|
them first. Say you have some libraries in /Users/Shared/unix (I put my
|
|
|
static libraries there):
|
|
|
|
|
|
+```sh
|
|
|
sudo mkdir -p /Developer/SDKs/MacOSX10.4u.sdk/Users/Shared
|
|
|
-
|
|
|
-ln -s /Users/Shared/unix
|
|
|
-/Developer/SDKs/MacOSX10.4u.sdk/Users/Shared/unix
|
|
|
+ln -s /Users/Shared/unix /Developer/SDKs/MacOSX10.4u.sdk/Users/Shared/unix
|
|
|
+```
|
|
|
|
|
|
For /Library/Frameworks:
|
|
|
|
|
|
+```sh
|
|
|
sudo mkdir -p /Developer/SDKs/MacOSX10.4u.sdk/Library
|
|
|
-
|
|
|
-sudo ln -s /Library/Frameworks
|
|
|
+sudo ln -s /Library/Frameworks \
|
|
|
/Developer/SDKs/MacOSX10.4u.sdk/Library/Frameworks
|
|
|
+```
|
|
|
|
|
|
**• Universal Dependencies**. Make sure all your extra dependencies are
|
|
|
Universal.
|
|
|
|
|
|
**• Tiger+**. This will NOT work on anything less than OSX 10.4.
|
|
|
|
|
|
-If those check OK, here\'s what to do. Simply add the universal flags to
|
|
|
+If those check OK, here's what to do. Simply add the universal flags to
|
|
|
all compile and link commands. This is done by setting CFLAGS, CXXFLAGS
|
|
|
and LDFLAGS before configuring the build. The basic flags are:
|
|
|
|
|
|
--arch ppc -arch i386
|
|
|
+`-arch ppc -arch i386`
|
|
|
|
|
|
If you are building on OSX 10.4 PPC only, also add this:
|
|
|
|
|
|
--isysroot /Developer/SDKs/MacOSX10.4u.sdk
|
|
|
+`-isysroot /Developer/SDKs/MacOSX10.4u.sdk`
|
|
|
|
|
|
Put it all together, for an Intel Mac on OSX 10.4 or any Mac on 10.5+:
|
|
|
|
|
|
-export CFLAGS=\"-arch ppc -arch i386\"
|
|
|
-
|
|
|
-export CXXFLAGS=\"-arch ppc -arch i386\"
|
|
|
-
|
|
|
-export LDFLAGS=\"-arch ppc -arch i386\"
|
|
|
+```sh
|
|
|
+export CFLAGS="-arch ppc -arch i386"
|
|
|
+export CXXFLAGS="-arch ppc -arch i386"
|
|
|
+export LDFLAGS="-arch ppc -arch i386"
|
|
|
+```
|
|
|
|
|
|
Or for OSX 10.4 PPC:
|
|
|
|
|
|
+```sh
|
|
|
export SDKROOT=/Developer/SDKs/MacOSX10.4u.sdk
|
|
|
-
|
|
|
-export CFLAGS=\"-arch ppc -arch i386 -isysroot \$SDKROOT\"
|
|
|
-
|
|
|
-export CXXFLAGS=\"-arch ppc -arch i386 -isysroot \$SDKROOT\"
|
|
|
-
|
|
|
-export LDFLAGS=\"-arch ppc -arch i386 -isysroot \$SDKROOT\"
|
|
|
+export CFLAGS="-arch ppc -arch i386 -isysroot $SDKROOT"
|
|
|
+export CXXFLAGS="-arch ppc -arch i386 -isysroot $SDKROOT"
|
|
|
+export LDFLAGS="-arch ppc -arch i386 -isysroot $SDKROOT"
|
|
|
+```
|
|
|
|
|
|
For OSX 10.5, you can also build for 64bit (all processors except the
|
|
|
first Intel Core Duo), just add:
|
|
|
|
|
|
--arch ppc64 -arch x86\_64
|
|
|
+`-arch ppc64 -arch x86_64`
|
|
|
|
|
|
-Optimization
|
|
|
-------------
|
|
|
+### Optimization
|
|
|
|
|
|
By default, GRASS configures with debugging symbols turned on (the
|
|
|
-\"-g\" flag), and level 2 optimization (\"-O2\"). If you don\'t want
|
|
|
+"-g" flag), and level 2 optimization ("-O2"). If you don't want
|
|
|
debugging on (it greatly increases the binary size) or want to use a
|
|
|
different optimization, just add an optimization flag to the above
|
|
|
CFLAGS and CXXFLAGS exports. Specifying an optimization disables
|
|
|
debugging. Some common optimizations are (see the gcc man page for
|
|
|
complete details):
|
|
|
|
|
|
--O2 most optimizations, a common default
|
|
|
+- `-O2` most optimizations, a common default
|
|
|
+- `-O3` high
|
|
|
+- `-Os` optimize for speed, also keep the binary size small (the Apple standard)
|
|
|
|
|
|
--O3 high
|
|
|
-
|
|
|
--Os optimize for speed, also keep the binary size small (the Apple
|
|
|
-standard)
|
|
|
-
|
|
|
-If you want debugging with a different optimization flag, use one of the
|
|
|
-above optimization flags plus \"-g\".
|
|
|
+If you want debugging with a different optimization flag, use one of the above
|
|
|
+optimization flags plus "-g".
|
|
|
|
|
|
Remember to separate all flags with spaces.
|
|
|
|
|
|
-Configure Example
|
|
|
------------------
|
|
|
+### Configure Example
|
|
|
|
|
|
As an example, to build GRASS using my frameworks and Tcl/Tk as built in
|
|
|
the build notes below, this should work *(for a standard unix build,
|
|
|
-just remove the \--prefix and \--enable-macosx-app flags)*:
|
|
|
-
|
|
|
-./configure \--with-freetype
|
|
|
-\--with-freetype-includes=\"/Library/Frameworks/FreeType.framework/unix/include/freetype2
|
|
|
-/Library/Frameworks/FreeType.framework/unix/include\"
|
|
|
-\--with-freetype-libs=/Library/Frameworks/FreeType.framework/unix/lib
|
|
|
-\--with-gdal=/Library/Frameworks/GDAL.framework/Programs/gdal-config
|
|
|
-\--with-geos=/Library/Frameworks/GEOS.framework/Programs/geos-config
|
|
|
-\--with-proj
|
|
|
-\--with-proj-includes=/Library/Frameworks/PROJ.framework/unix/include
|
|
|
-\--with-proj-libs=/Library/Frameworks/PROJ.framework/unix/lib
|
|
|
-\--with-proj-share=/Library/Frameworks/PROJ.framework/Resources/proj
|
|
|
-\--with-jpeg-includes=/Library/Frameworks/UnixImageIO.framework/unix/include
|
|
|
-\--with-jpeg-libs=/Library/Frameworks/UnixImageIO.framework/unix/lib
|
|
|
-\--with-png-includes=/Library/Frameworks/UnixImageIO.framework/unix/include
|
|
|
-\--with-png-libs=/Library/Frameworks/UnixImageIO.framework/unix/lib
|
|
|
-\--with-tiff-includes=/Library/Frameworks/UnixImageIO.framework/unix/include
|
|
|
-\--with-tiff-libs=/Library/Frameworks/UnixImageIO.framework/unix/lib
|
|
|
-\--without-postgres \--without-mysql \--with-odbc \--with-sqlite
|
|
|
-\--with-sqlite-libs=/Library/Frameworks/SQLite3.framework/unix/lib
|
|
|
-\--with-sqlite-includes=/Library/Frameworks/SQLite3.framework/unix/include
|
|
|
-\--with-fftw-includes=/Library/Frameworks/FFTW3.framework/unix/include
|
|
|
-\--with-fftw-libs=/Library/Frameworks/FFTW3.framework/unix/lib
|
|
|
-\--with-cxx
|
|
|
-\--with-tcltk-includes=\"/Library/Frameworks/Tcl.framework/Headers
|
|
|
-/Library/Frameworks/Tk.framework/Headers
|
|
|
-/Library/Frameworks/Tk.framework/PrivateHeaders\"
|
|
|
-\--with-tcltk-libs=/usr/local/lib \--with-x \--without-motif
|
|
|
-\--without-glw \--with-opengl=aqua \--without-readline
|
|
|
-\--prefix=/Applications \--enable-macosx-app
|
|
|
-
|
|
|
-That\'s a long line, but you have to be very explicit in the GRASS
|
|
|
-configure (and yes, the UnixImageIO framework is used multiple times).
|
|
|
-
|
|
|
-If you don\'t have the PROJ framework programs folder in your shell
|
|
|
+just remove the `--prefix` and `--enable-macosx-app` flags)*:
|
|
|
+
|
|
|
+```sh
|
|
|
+./configure \
|
|
|
+ --with-freetype \
|
|
|
+ --with-freetype-includes= \
|
|
|
+ "/Library/Frameworks/FreeType.framework/unix/include/freetype2 \
|
|
|
+ /Library/Frameworks/FreeType.framework/unix/include" \
|
|
|
+ --with-freetype-libs=/Library/Frameworks/FreeType.framework/unix/lib \
|
|
|
+ --with-gdal=/Library/Frameworks/GDAL.framework/Programs/gdal-config \
|
|
|
+ --with-geos=/Library/Frameworks/GEOS.framework/Programs/geos-config \
|
|
|
+ --with-proj \
|
|
|
+ --with-proj-includes=/Library/Frameworks/PROJ.framework/unix/include \
|
|
|
+ --with-proj-libs=/Library/Frameworks/PROJ.framework/unix/lib \
|
|
|
+ --with-proj-share=/Library/Frameworks/PROJ.framework/Resources/proj \
|
|
|
+ --with-jpeg-includes=/Library/Frameworks/UnixImageIO.framework/unix/include \
|
|
|
+ --with-jpeg-libs=/Library/Frameworks/UnixImageIO.framework/unix/lib \
|
|
|
+ --with-png-includes=/Library/Frameworks/UnixImageIO.framework/unix/include \
|
|
|
+ --with-png-libs=/Library/Frameworks/UnixImageIO.framework/unix/lib \
|
|
|
+ --with-tiff-includes=/Library/Frameworks/UnixImageIO.framework/unix/include \
|
|
|
+ --with-tiff-libs=/Library/Frameworks/UnixImageIO.framework/unix/lib \
|
|
|
+ --without-postgres \
|
|
|
+ --without-mysql \
|
|
|
+ --with-odbc \
|
|
|
+ --with-sqlite \
|
|
|
+ --with-sqlite-libs=/Library/Frameworks/SQLite3.framework/unix/lib \
|
|
|
+ --with-sqlite-includes=/Library/Frameworks/SQLite3.framework/unix/include \
|
|
|
+ --with-fftw-includes=/Library/Frameworks/FFTW3.framework/unix/include \
|
|
|
+ --with-fftw-libs=/Library/Frameworks/FFTW3.framework/unix/lib \
|
|
|
+ --with-cxx \
|
|
|
+ --with-tcltk-includes="/Library/Frameworks/Tcl.framework/Headers \
|
|
|
+ /Library/Frameworks/Tk.framework/Headers \
|
|
|
+ /Library/Frameworks/Tk.framework/PrivateHeaders" \
|
|
|
+ --with-tcltk-libs=/usr/local/lib \
|
|
|
+ --with-x \
|
|
|
+ --without-motif \
|
|
|
+ --without-glw \
|
|
|
+ --with-opengl=aqua \
|
|
|
+ --without-readline \
|
|
|
+ --prefix=/Applications \
|
|
|
+ --enable-macosx-app
|
|
|
+```
|
|
|
+
|
|
|
+That's a long line, but you have to be very explicit in the GRASS configure
|
|
|
+(and yes, the UnixImageIO framework is used multiple times).
|
|
|
+
|
|
|
+If you don't have the PROJ framework programs folder in your shell
|
|
|
PATH, it will fail to find nad2bin. To correct this set NAD2BIN before
|
|
|
running configure:
|
|
|
|
|
|
-export NAD2BIN=/Library/Frameworks/PROJ.framework/Programs/nad2bin
|
|
|
+`export NAD2BIN=/Library/Frameworks/PROJ.framework/Programs/nad2bin`
|
|
|
|
|
|
Sometimes, for mysterious reasons so far, the automatic check for X11
|
|
|
fails. Depending on various conditions, you may immediately notice this
|
|
|
-because configure stops. If X11 isn\'t found automatically, add this to
|
|
|
+because configure stops. If X11 isn't found automatically, add this to
|
|
|
the configure line *(this applies to both the unix build and app
|
|
|
build)*:
|
|
|
|
|
|
-\--x-includes=/usr/X11R6/include \--x-libraries=/usr/X11R6/lib
|
|
|
-
|
|
|
-To install the new Python GUI (see REQUIREMENTS.html and
|
|
|
-gui/wxpython/README, wxpython installer available at
|
|
|
-[wxpython.org](http://wxpython.org/)), add this to configure (fill in
|
|
|
-the correct version at x.x.x.x for the wxpython you have installed):
|
|
|
+`--x-includes=/usr/X11R6/include --x-libraries=/usr/X11R6/lib`
|
|
|
|
|
|
-\--with-python
|
|
|
+To install the new Python GUI (see [REQUIREMENTS.html](../REQUIREMENTS.html)
|
|
|
+and [gui/wxpython/README](../gui/wxpython/README), wxpython installer
|
|
|
+available at [wxpython.org](http://wxpython.org/)), add this to configure (fill
|
|
|
+in the correct version at x.x.x.x for the wxpython you have installed):
|
|
|
|
|
|
-\--with-wxwidgets=/usr/local/lib/wxPython-unicode-x.x.x.x/bin/wx-config
|
|
|
+```
|
|
|
+--with-python
|
|
|
+--with-wxwidgets=/usr/local/lib/wxPython-unicode-x.x.x.x/bin/wx-config
|
|
|
+```
|
|
|
|
|
|
Note: as of wxpython 2.8.8.0 you can use an external wxpython with the
|
|
|
system Python on Leopard.
|
|
|
|
|
|
If you want ffmpeg support (see build instructions below), add this:
|
|
|
|
|
|
-\--with-ffmpeg \--with-ffmpeg-includes=\"/usr/local/include
|
|
|
-/usr/local/include/libavcodec /usr/local/include/libavdevice
|
|
|
-/usr/local/include/libavformat /usr/local/include/libavutil
|
|
|
-/usr/local/include/libswscale\" \--with-ffmpeg-libs=/usr/local/lib
|
|
|
+```sh
|
|
|
+--with-ffmpeg \
|
|
|
+--with-ffmpeg-includes="/usr/local/include \
|
|
|
+ /usr/local/include/libavcodec /usr/local/include/libavdevice \
|
|
|
+ /usr/local/include/libavformat /usr/local/include/libavutil \
|
|
|
+ /usr/local/include/libswscale" \
|
|
|
+--with-ffmpeg-libs=/usr/local/lib
|
|
|
+```
|
|
|
|
|
|
For cairo support (see build instructions at
|
|
|
-[kyngchaos.com](http://www.kyngchaos.com/macosx:build:cairo)), add this:
|
|
|
+[kyngchaos.com](https://web.archive.org/web/20161112052733/http://www.kyngchaos.com/macosx/build/cairo/)), add this:
|
|
|
|
|
|
-\--with-cairo \--with-cairo-includes=/usr/local/include/cairo
|
|
|
-\--with-cairo-libs=/usr/local/lib \--with-cairo-ldflags=-lcairo
|
|
|
+```sh
|
|
|
+--with-cairo \
|
|
|
+--with-cairo-includes=/usr/local/include/cairo \
|
|
|
+--with-cairo-libs=/usr/local/lib \
|
|
|
+--with-cairo-ldflags=-lcairo
|
|
|
+```
|
|
|
|
|
|
-Leopard Notes
|
|
|
--------------
|
|
|
+### Leopard Notes
|
|
|
|
|
|
• Linker Problem
|
|
|
|
|
|
-The linker in Leopard\'s GCC from Xcode 3.0 has a bit of a problem with
|
|
|
-some libraries, notably X11\'s libGL. When trying to link libGL (for
|
|
|
+The linker in Leopard's GCC from Xcode 3.0 has a bit of a problem with
|
|
|
+some libraries, notably X11's libGL. When trying to link libGL (for
|
|
|
example), it spits back an error:
|
|
|
|
|
|
-ld: cycle in dylib re-exports with /usr/X11/lib/libGL.dylib for
|
|
|
-architecture i386
|
|
|
+`ld: cycle in dylib re-exports with /usr/X11/lib/libGL.dylib for
|
|
|
+architecture i386`
|
|
|
|
|
|
Xcode 3.1 does not have this problem. In other words, make sure to
|
|
|
install the latest Xcode.
|
|
|
|
|
|
-Building an Installer Package
|
|
|
------------------------------
|
|
|
+### Building an Installer Package
|
|
|
|
|
|
After running make, make bindist will assemble an installer package.
|
|
|
-This will have the name \"GRASS-\[version\].pkg\" and will be found in
|
|
|
+This will have the name "GRASS-[version].pkg" and will be found in
|
|
|
the macosx folder in the GRASS source. On Tiger, there **will be** some
|
|
|
**non-fatal errors** - *this is normal* and the installer package is
|
|
|
still generated correctly.
|
|
@@ -273,231 +290,208 @@ The installer takes care of binary installation, and creating the
|
|
|
This installer currently does NOT do any verification of installed
|
|
|
dependencies or system version.
|
|
|
|
|
|
-Bundling Libraries and Programs
|
|
|
--------------------------------
|
|
|
+### Bundling Libraries and Programs
|
|
|
|
|
|
Additional dependent libraries and programs can be bundled with the
|
|
|
application package to make a more portable and easily installed GRASS
|
|
|
-application. See macosx/pkg/bundle.make for details.
|
|
|
+application. See `macosx/pkg/bundle.make` for details.
|
|
|
|
|
|
-GRASS uses DYLD\_LIBRARY\_PATH, which is set to the application\'s lib
|
|
|
+GRASS uses `DYLD_LIBRARY_PATH`, which is set to the application's lib
|
|
|
folder, so it will find any libraries that are there that are not found
|
|
|
in their expected locations. It also adds the application bin folder to
|
|
|
-the PATH, so helper programs installed there will be found.
|
|
|
+the `PATH`, so helper programs installed there will be found.
|
|
|
|
|
|
-There is NO need to bundle *everything*. Bundling readily available
|
|
|
-libraries and programs installed in standard locations is not necessary.
|
|
|
-Some things you might want to bundle include:
|
|
|
+There is NO need to bundle *everything*. Bundling readily available libraries
|
|
|
+and programs installed in standard locations is not necessary. Some things
|
|
|
+you might want to bundle include:
|
|
|
|
|
|
-\- GPSBabel (CLI)
|
|
|
-
|
|
|
-\- NetPBM programs (just what is used in GRASS)
|
|
|
-
|
|
|
-\- other support CLI programs for script modules
|
|
|
-
|
|
|
-\- ffmpeg libraries
|
|
|
-
|
|
|
-\- Postgres library (libpq)
|
|
|
+- GPSBabel (CLI)
|
|
|
+- NetPBM programs (just what is used in GRASS)
|
|
|
+- other support CLI programs for script modules
|
|
|
+- ffmpeg libraries
|
|
|
+- Postgres library (libpq)
|
|
|
|
|
|
Things to leave out:
|
|
|
|
|
|
-\- applications that duplicate the above items (ie GPSBabel.app)
|
|
|
-
|
|
|
-\- /Library/Frameworks stuff
|
|
|
+- applications that duplicate the above items (ie GPSBabel.app)
|
|
|
+- /Library/Frameworks stuff
|
|
|
|
|
|
-Developer Notes
|
|
|
-===============
|
|
|
+## Developer Notes
|
|
|
|
|
|
The applescript startup and grass.sh can be customized if desired, ie
|
|
|
for a more complex startup that might give the user a dialog for startup
|
|
|
options. They just provide the basic core to build upon.
|
|
|
|
|
|
-Help Files
|
|
|
-==========
|
|
|
+## Help Files
|
|
|
|
|
|
Help files are linked into the OSX help system. Independent of what
|
|
|
-browser you choose to open help files (GRASS\_HTML\_BROWSER), you can
|
|
|
-open Help Viewer from almost any application\'s Help menu (it\'s best to
|
|
|
+browser you choose to open help files (`GRASS_HTML_BROWSER`), you can
|
|
|
+open Help Viewer from almost any application's Help menu (it's best to
|
|
|
use Mac Help from the Finder Help menu), and GRASS Help will be
|
|
|
available in the Library menu.
|
|
|
|
|
|
Since they are linked to the help system, if GRASS.app is moved or
|
|
|
renamed, the link will be broken. This may change in the future.
|
|
|
|
|
|
-Addon Modules
|
|
|
-=============
|
|
|
+## Addon Modules
|
|
|
|
|
|
modbuild deprecated (not installed now). Makefile changes in progress to
|
|
|
allow compiling external modules.
|
|
|
|
|
|
-Dependency Build Notes
|
|
|
-======================
|
|
|
+## Dependency Build Notes
|
|
|
|
|
|
They apply to any OSX build, not just an application package build:
|
|
|
|
|
|
-Universal Aqua Tcl/Tk
|
|
|
----------------------
|
|
|
+### Universal Aqua Tcl/Tk
|
|
|
|
|
|
The simplest way to install Tcl/Tk Aqua is to download
|
|
|
-[ActiveTcl](http://www.activestate.com/Products/activetcl/) from
|
|
|
+[ActiveTcl](https://www.activestate.com/products/tcl/) from
|
|
|
ActiveState. This will give you a universal 32bit Tcl/Tk Aqua (64bit is
|
|
|
-currently not possible). [Make sure to run the *convenience* commands
|
|
|
-below.]{.underline}
|
|
|
+currently not possible). Make sure to run the *convenience* commands
|
|
|
+below.
|
|
|
|
|
|
To make it easier to configure for GRASS (and other software), run these
|
|
|
commands in a Terminal:
|
|
|
|
|
|
-sudo ln -sf /Library/Frameworks/Tcl.framework/Versions/8.5/Tcl
|
|
|
-/usr/local/lib/libtcl.dylib
|
|
|
-
|
|
|
-sudo ln -sf /Library/Frameworks/Tcl.framework/Versions/8.5/Tcl
|
|
|
-/usr/local/lib/libtcl8.5.dylib
|
|
|
-
|
|
|
-sudo ln -sf
|
|
|
-/Library/Frameworks/Tcl.framework/Versions/8.5/libtclstub8.5.a
|
|
|
-/usr/local/lib/libtclstub8.5.a
|
|
|
-
|
|
|
-sudo ln -sf /Library/Frameworks/Tk.framework/Versions/8.5/Tk
|
|
|
-/usr/local/lib/libtk.dylib
|
|
|
-
|
|
|
-sudo ln -sf /Library/Frameworks/Tk.framework/Versions/8.5/Tk
|
|
|
-/usr/local/lib/libtk8.5.dylib
|
|
|
-
|
|
|
-sudo ln -sf /Library/Frameworks/Tk.framework/Versions/8.5/libtkstub8.5.a
|
|
|
-/usr/local/lib/libtkstub8.5.a
|
|
|
-
|
|
|
-Universal GPSBabel
|
|
|
-------------------
|
|
|
+```sh
|
|
|
+sudo ln -sf /Library/Frameworks/Tcl.framework/Versions/8.5/Tcl \
|
|
|
+ /usr/local/lib/libtcl.dylib
|
|
|
+sudo ln -sf /Library/Frameworks/Tcl.framework/Versions/8.5/Tcl \
|
|
|
+ /usr/local/lib/libtcl8.5.dylib
|
|
|
+sudo ln -sf \
|
|
|
+ /Library/Frameworks/Tcl.framework/Versions/8.5/libtclstub8.5.a \
|
|
|
+ /usr/local/lib/libtclstub8.5.a
|
|
|
+sudo ln -sf /Library/Frameworks/Tk.framework/Versions/8.5/Tk \
|
|
|
+ /usr/local/lib/libtk.dylib
|
|
|
+sudo ln -sf /Library/Frameworks/Tk.framework/Versions/8.5/Tk \
|
|
|
+ /usr/local/lib/libtk8.5.dylib
|
|
|
+sudo ln -sf /Library/Frameworks/Tk.framework/Versions/8.5/libtkstub8.5.a \
|
|
|
+ /usr/local/lib/libtkstub8.5.a
|
|
|
+```
|
|
|
+
|
|
|
+### Universal GPSBabel
|
|
|
|
|
|
A universal GPSBabel CLI executable is now included in the OSX binary
|
|
|
from [www.gpsbabel.org](http://www.gpsbabel.org/). This does not need to
|
|
|
be 64bit.
|
|
|
|
|
|
-Universal NetPBM
|
|
|
-----------------
|
|
|
+### Universal NetPBM
|
|
|
|
|
|
-NetPBM is not too hard to build, it\'s just weird. These instructions
|
|
|
+NetPBM is not too hard to build, it's just weird. These instructions
|
|
|
use my UnixImageIO framework for the tiff, jpeg, png and jasper
|
|
|
libraries.
|
|
|
|
|
|
First, grab the [NetPBM](http://netpbm.sourceforge.net/) source and
|
|
|
-unzip it. Now it gets strange - it\'s an interactive configuration, and
|
|
|
-the various stages don\'t communicate with each other. Cd to the source
|
|
|
+unzip it. Now it gets strange - it's an interactive configuration, and
|
|
|
+the various stages don't communicate with each other. Cd to the source
|
|
|
folder in a Terminal and:
|
|
|
|
|
|
-./configure
|
|
|
+`./configure` ↵
|
|
|
|
|
|
-**\<enter\>** to begin
|
|
|
+`Platform [darwin] ==>` ↵
|
|
|
|
|
|
-Platform \[darwin\] ==\> **\<enter\>**
|
|
|
+`Netpbm shared library directory [default] ==> `**`/usr/local`**
|
|
|
|
|
|
-Netpbm shared library directory \[default\] ==\> **/usr/local**
|
|
|
+choose where you will install it
|
|
|
+default is NOT /usr/local or any location at all, so you MUST set this
|
|
|
|
|
|
-> *choose where you will install it*
|
|
|
->
|
|
|
-> *default is NOT /usr/local or any location at all, so you MUST set
|
|
|
-> this*
|
|
|
+`regular or merge [regular] ==>` ↵
|
|
|
|
|
|
-regular or merge \[regular\] ==\> **\<enter\>**
|
|
|
+`static or shared [shared] ==>` ↵
|
|
|
|
|
|
-static or shared \[shared\] ==\> **\<enter\>**
|
|
|
+could use static, since GRASS only needs a few of the progs
|
|
|
|
|
|
-> *could use static, since GRASS only needs a few of the progs*
|
|
|
+`'#include' argument or NONE [<inttypes.h>] ==>` ↵
|
|
|
|
|
|
-\'\#include\' argument or NONE \[\<inttypes.h\>\] ==\> **\<enter\>**
|
|
|
+`What is your JPEG (graphics format) library?`
|
|
|
+`library filename or 'none' [libjpeg.so] ==>`
|
|
|
+ **`/Library/Frameworks/UnixImageIO.framework/unix/lib/libjpeg.dylib`**
|
|
|
|
|
|
-What is your JPEG (graphics format) library?
|
|
|
+`JPEG header directory [default] ==>`
|
|
|
+**`/Library/Frameworks/UnixImageIO.framework/Headers`**
|
|
|
|
|
|
-library filename or \'none\' \[libjpeg.so\] ==\>
|
|
|
-**/Library/Frameworks/UnixImageIO.framework/unix/lib/libjpeg.dylib**
|
|
|
+`What is your TIFF (graphics format) library?`
|
|
|
+`library filename or 'none' [libtiff.so] ==>`
|
|
|
+ **`/Library/Frameworks/UnixImageIO.framework/unix/lib/libtiff.dylib`**
|
|
|
|
|
|
-JPEG header directory \[default\] ==\>
|
|
|
-**/Library/Frameworks/UnixImageIO.framework/Headers**
|
|
|
+`TIFF header directory [default] ==>`
|
|
|
+ **`/Library/Frameworks/UnixImageIO.framework/Headers`**
|
|
|
|
|
|
-What is your TIFF (graphics format) library?
|
|
|
+`What is your PNG (graphics format) library?`
|
|
|
+`library filename or 'none' [libpng.so] ==>`
|
|
|
+ **`/Library/Frameworks/UnixImageIO.framework/unix/lib/libpng.dylib`**
|
|
|
|
|
|
-library filename or \'none\' \[libtiff.so\] ==\>
|
|
|
-**/Library/Frameworks/UnixImageIO.framework/unix/lib/libtiff.dylib**
|
|
|
+`PNG header directory [default] ==>`
|
|
|
+ **`/Library/Frameworks/UnixImageIO.framework/Headers`**
|
|
|
|
|
|
-TIFF header directory \[default\] ==\>
|
|
|
-**/Library/Frameworks/UnixImageIO.framework/Headers**
|
|
|
+`What is your Z (compression) library?`
|
|
|
+`library filename or 'none' [libz.so] ==>` **`-lz`**
|
|
|
|
|
|
-What is your PNG (graphics format) library?
|
|
|
+`Z header directory [default] ==>` ↵
|
|
|
|
|
|
-library filename or \'none\' \[libpng.so\] ==\>
|
|
|
-**/Library/Frameworks/UnixImageIO.framework/unix/lib/libpng.dylib**
|
|
|
+`Documentation URL [http://netpbm.sourceforge.net/doc/] ==>` ↵
|
|
|
|
|
|
-PNG header directory \[default\] ==\>
|
|
|
-**/Library/Frameworks/UnixImageIO.framework/Headers**
|
|
|
+ignore warning about libz
|
|
|
|
|
|
-What is your Z (compression) library?
|
|
|
-
|
|
|
-library filename or \'none\' \[libz.so\] ==\> **-lz**
|
|
|
-
|
|
|
-Z header directory \[default\] ==\> **\<enter\>**
|
|
|
-
|
|
|
-Documentation URL \[http://netpbm.sourceforge.net/doc/\] ==\>
|
|
|
-**\<enter\>**
|
|
|
-
|
|
|
-> *ignore warning about libz*
|
|
|
-
|
|
|
-echo \"JASPERLIB =
|
|
|
-/Library/Frameworks/UnixImageIO.framework/unix/lib/libjasper.dylib\"
|
|
|
-\>\> Makefile.config
|
|
|
-
|
|
|
-echo \"JASPERHDR\_DIR =
|
|
|
-/Library/Frameworks/UnixImageIO.framework/Headers\" \>\> Makefile.config
|
|
|
+```sh
|
|
|
+echo "JASPERLIB = /Library/Frameworks/UnixImageIO.framework/unix/lib/libjasper.dylib" \
|
|
|
+ >> Makefile.config
|
|
|
+echo "JASPERHDR_DIR = /Library/Frameworks/UnixImageIO.framework/Headers" \
|
|
|
+ >> Makefile.config
|
|
|
+```
|
|
|
|
|
|
For Tiger:
|
|
|
|
|
|
-echo \"CC = /usr/bin/gcc -arch ppc -arch i386 -isysroot
|
|
|
-/Developer/SDKs/MacOSX10.4u.sdk\" \>\> Makefile.config
|
|
|
+```sh
|
|
|
+echo "CC = /usr/bin/gcc -arch ppc -arch i386 -isysroot /Developer/SDKs/MacOSX10.4u.sdk" \
|
|
|
+ >> Makefile.config
|
|
|
+```
|
|
|
|
|
|
For Leopard:
|
|
|
|
|
|
-echo \"CC = /usr/bin/gcc -arch ppc -arch i386 -arch ppc64 -arch
|
|
|
-x86\_64\" \>\> Makefile.config
|
|
|
+```sh
|
|
|
+echo "CC = /usr/bin/gcc -arch ppc -arch i386 -arch ppc64 -arch x86\_64" \
|
|
|
+ >> Makefile.config
|
|
|
+```
|
|
|
|
|
|
+```sh
|
|
|
make
|
|
|
-
|
|
|
make package pkgdir=/path/to/some/temp/dir
|
|
|
+```
|
|
|
|
|
|
-> *it will create the folder and copy all binaries there*
|
|
|
+it will create the folder and copy all binaries there
|
|
|
|
|
|
-sudo ./installnetpbm
|
|
|
+`sudo ./installnetpbm`
|
|
|
|
|
|
then answer some more questions:
|
|
|
|
|
|
-Where is the install package you created with \'make package\'?
|
|
|
-
|
|
|
-package directory (/tmp/netpbm) ==\> **/path/to/some/temp/dir**
|
|
|
+`Where is the install package you created with 'make package'?`
|
|
|
+`package directory (/tmp/netpbm) ==>` **`/path/to/some/temp/dir`**
|
|
|
|
|
|
-> *same location as specified in the make package step (lack of
|
|
|
-> inter-communication!)*
|
|
|
+same location as specified in the make package step (lack of
|
|
|
+ inter-communication!)
|
|
|
|
|
|
-install prefix (/usr/local/netpbm) ==\> **/usr/local**
|
|
|
+`install prefix (/usr/local/netpbm) ==>` **`/usr/local`**
|
|
|
|
|
|
-> *same location used for the Netpbm shared library directory (again,
|
|
|
-> lack of inter-communication!)*
|
|
|
->
|
|
|
-> *(it may ask you if you want to create the dir)*
|
|
|
+same location used for the Netpbm shared library directory (again,
|
|
|
+lack of inter-communication!)
|
|
|
+(it may ask you if you want to create the dir)
|
|
|
|
|
|
-It\'ll ask for subfolders for bin, lib, data, headers, man
|
|
|
+It'll ask for subfolders for bin, lib, data, headers, man
|
|
|
|
|
|
-For data, type: **/usr/local/share/netpbm**
|
|
|
+For data, type: **`/usr/local/share/netpbm`**
|
|
|
|
|
|
-For man, type: **/usr/local/share/man**
|
|
|
+For man, type: **`/usr/local/share/man`**
|
|
|
|
|
|
For the rest, use the defaults
|
|
|
|
|
|
-don\'t create the manweb.conf file
|
|
|
+don't create the manweb.conf file
|
|
|
|
|
|
-And that\'s it.
|
|
|
+And that's it.
|
|
|
|
|
|
-Universal FFMPEG
|
|
|
-----------------
|
|
|
+### Universal FFMPEG
|
|
|
|
|
|
-[version:]{.underline} [0.5](http://www.ffmpeg.org/download.html)
|
|
|
+version: [0.5](http://www.ffmpeg.org/download.html)
|
|
|
|
|
|
FFMPEG is constantly changing, and release versions are rare. For
|
|
|
simplicity use the 0.5 release version. If you know anything about SVN
|
|
@@ -506,151 +500,156 @@ not in more recent SVN versions, so if configure complains about an
|
|
|
invalid option, just remove it.
|
|
|
|
|
|
This will build a basic FFMPEG as dynamic libraries for use with GRASS.
|
|
|
-The default static libraries don\'t work now because of reloc errors and
|
|
|
+The default static libraries don't work now because of reloc errors and
|
|
|
the need for extra link flags. No extra formats are included, such as
|
|
|
mp3lame and xvid. None of the ffmpeg programs are included either (GRASS
|
|
|
-doesn\'t need them).
|
|
|
+doesn't need them).
|
|
|
|
|
|
-It\'s a multi-step build, 1 for each architecture. Create a folder
|
|
|
+It's a multi-step build, 1 for each architecture. Create a folder
|
|
|
inside the source for each arch:
|
|
|
|
|
|
+```sh
|
|
|
mkdir build-i386
|
|
|
-
|
|
|
mkdir build-ppc
|
|
|
+```
|
|
|
|
|
|
and also for Leopard:
|
|
|
|
|
|
-mkdir build-x86\_64
|
|
|
-
|
|
|
+```sh
|
|
|
+mkdir build-x86_64
|
|
|
mkdir build-ppc64
|
|
|
+```
|
|
|
|
|
|
For i386 and ppc arches, if building on Tiger, you must add the
|
|
|
following to extra-cflags and extra-ldflags in the configure command:
|
|
|
|
|
|
--isysroot /Developer/SDKs/MacOSX10.4u.sdk
|
|
|
+`-isysroot /Developer/SDKs/MacOSX10.4u.sdk`
|
|
|
|
|
|
For i386:
|
|
|
|
|
|
+```sh
|
|
|
cd build-i386
|
|
|
-
|
|
|
-../configure \--enable-shared \--disable-static \--disable-debug
|
|
|
-\--disable-ffserver \--disable-network \--enable-gpl \--enable-pthreads
|
|
|
-\--enable-swscale \--disable-vhook \--disable-ffplay \--disable-ffmpeg
|
|
|
-\--disable-amd3dnow \--arch=i386 \--extra-cflags=\"-arch i386\"
|
|
|
-\--extra-ldflags=\"-arch i386\"
|
|
|
+../configure --enable-shared --disable-static --disable-debug \
|
|
|
+ --disable-ffserver --disable-network --enable-gpl --enable-pthreads \
|
|
|
+ --enable-swscale --disable-vhook --disable-ffplay --disable-ffmpeg \
|
|
|
+ --disable-amd3dnow --arch=i386 --extra-cflags="-arch i386" \
|
|
|
+ --extra-ldflags="-arch i386"
|
|
|
+```
|
|
|
|
|
|
If you are building *on* a PPC Mac, you need to add the flag
|
|
|
-\"\--enable-cross-compile\" to the above configure command.
|
|
|
+"`--enable-cross-compile`" to the above configure command.
|
|
|
|
|
|
+```sh
|
|
|
make
|
|
|
-
|
|
|
sudo make install
|
|
|
+```
|
|
|
|
|
|
-Install at this point installs everything. We don\'t care about the
|
|
|
+Install at this point installs everything. We don't care about the
|
|
|
installed libraries yet, we just need the headers there.
|
|
|
|
|
|
Now, the PPC build:
|
|
|
|
|
|
+```sh
|
|
|
cd ../build-ppc
|
|
|
-
|
|
|
-../configure \--enable-shared \--disable-static \--disable-debug
|
|
|
-\--disable-ffserver \--disable-network \--enable-gpl \--enable-pthreads
|
|
|
-\--enable-swscale \--disable-vhook \--disable-ffplay \--disable-ffmpeg
|
|
|
-\--enable-altivec \--arch=ppc \--extra-cflags=\"-arch ppc\"
|
|
|
-\--extra-ldflags=\"-arch ppc\"
|
|
|
-
|
|
|
+../configure --enable-shared --disable-static --disable-debug \
|
|
|
+ --disable-ffserver --disable-network --enable-gpl --enable-pthreads \
|
|
|
+ --enable-swscale --disable-vhook --disable-ffplay --disable-ffmpeg \
|
|
|
+ --enable-altivec --arch=ppc --extra-cflags="-arch ppc" \
|
|
|
+ --extra-ldflags="-arch ppc"
|
|
|
make
|
|
|
-
|
|
|
-Don\'t install this one, there is no need.
|
|
|
+```
|
|
|
+Don't install this one, there is no need.
|
|
|
|
|
|
If you are building for Leopard, also do the 64bit varieties, otherwise
|
|
|
skip to the lipo step below.
|
|
|
|
|
|
-For x86\_64:
|
|
|
+For x86_64:
|
|
|
|
|
|
-cd build-x86\_64
|
|
|
|
|
|
-../configure \--enable-shared \--disable-static \--disable-debug
|
|
|
-\--disable-ffserver \--disable-network \--enable-gpl \--enable-pthreads
|
|
|
-\--enable-swscale \--disable-vhook \--disable-ffplay \--disable-ffmpeg
|
|
|
-\--disable-amd3dnow \--arch=x86\_64 \--extra-cflags=\"-arch x86\_64\"
|
|
|
-\--extra-ldflags=\"-arch x86\_64\"
|
|
|
+```sh
|
|
|
+cd build-x86_64
|
|
|
+../configure --enable-shared --disable-static --disable-debug \
|
|
|
+ --disable-ffserver --disable-network --enable-gpl --enable-pthreads \
|
|
|
+ --enable-swscale --disable-vhook --disable-ffplay --disable-ffmpeg \
|
|
|
+ --disable-amd3dnow --arch=x86_64 --extra-cflags="-arch x86\_64" \
|
|
|
+ --extra-ldflags="-arch x86_64"
|
|
|
+```
|
|
|
|
|
|
Again, if you are building *on* a PPC Mac, you need to add the flag
|
|
|
-\"\--enable-cross-compile\" to the above configure command.
|
|
|
+"`--enable-cross-compile`" to the above configure command.
|
|
|
|
|
|
-make
|
|
|
+`make`
|
|
|
|
|
|
And ppc64:
|
|
|
|
|
|
+```sh
|
|
|
cd ../build-ppc64
|
|
|
-
|
|
|
-../configure \--enable-shared \--disable-static \--disable-debug
|
|
|
-\--disable-ffserver \--disable-network \--enable-gpl \--enable-pthreads
|
|
|
-\--enable-swscale \--disable-vhook \--disable-ffplay \--disable-ffmpeg
|
|
|
-\--enable-altivec \--arch=ppc64 \--extra-cflags=\"-arch ppc64\"
|
|
|
-\--extra-ldflags=\"-arch ppc64\"
|
|
|
+../configure --enable-shared --disable-static --disable-debug \
|
|
|
+ --disable-ffserver --disable-network --enable-gpl --enable-pthreads \
|
|
|
+ --enable-swscale --disable-vhook --disable-ffplay --disable-ffmpeg \
|
|
|
+ --enable-altivec --arch=ppc64 --extra-cflags="-arch ppc64" \
|
|
|
+ --extra-ldflags="-arch ppc64"
|
|
|
+```
|
|
|
|
|
|
Here, if you are building *on* an Intel Mac, you need to add the flag
|
|
|
-\"\--enable-cross-compile\" to the above configure command. Also, it
|
|
|
+"`--enable-cross-compile`" to the above configure command. Also, it
|
|
|
will fail to completely identify it as 64bit, so you need to fix 2
|
|
|
files.
|
|
|
|
|
|
-In **config.h**, find the HAVE\_PPC64 define and set it to 1:
|
|
|
+In **config.h**, find the `HAVE_PPC64` define and set it to 1:
|
|
|
|
|
|
-\#define HAVE\_PPC64 1
|
|
|
+`#define HAVE_PPC64 1`
|
|
|
|
|
|
In **config.mak**, add this line to the end of the file:
|
|
|
|
|
|
-HAVE\_PPC64=yes
|
|
|
+`HAVE_PPC64=yes`
|
|
|
|
|
|
Then finish:
|
|
|
|
|
|
-make
|
|
|
+`make`
|
|
|
|
|
|
Now use lipo to merge them together, first drop down to the ffmpeg
|
|
|
source folder:
|
|
|
|
|
|
-cd ..
|
|
|
+`cd ..`
|
|
|
|
|
|
For each of the libraries:
|
|
|
|
|
|
libavcodec
|
|
|
-
|
|
|
libavdevice
|
|
|
-
|
|
|
libavformat
|
|
|
-
|
|
|
libavutil
|
|
|
-
|
|
|
libswscale
|
|
|
|
|
|
-run the following lipo command (fill in the [libname]{.underline} in all
|
|
|
+run the following lipo command (fill in the **`[LIBNAME]`** in all
|
|
|
places). For Leopard:
|
|
|
|
|
|
-sudo lipo -create
|
|
|
-build-ppc/[libname]{.underline}/[libname]{.underline}.dylib
|
|
|
-build-i386/[libname]{.underline}/[libname]{.underline}.dylib
|
|
|
-build-ppc64/[libname]{.underline}/[libname]{.underline}.dylib
|
|
|
-build-x86\_64/[libname]{.underline}/[libname]{.underline}.dylib -output
|
|
|
-/usr/local/lib/[libname]{.underline}.dylib
|
|
|
+```sh
|
|
|
+sudo lipo -create \
|
|
|
+ build-ppc/[LIBNAME]/[LIBNAME].dylib \
|
|
|
+ build-i386/[LIBNAME]/[LIBNAME].dylib \
|
|
|
+ build-ppc64/[LIBNAME]/[LIBNAME].dylib \
|
|
|
+ build-x86_64/[LIBNAME]/[LIBNAME].dylib \
|
|
|
+ -output /usr/local/lib/[LIBNAME].dylib
|
|
|
+```
|
|
|
|
|
|
For Tiger:
|
|
|
|
|
|
-sudo lipo -create
|
|
|
-build-ppc/[libname]{.underline}/[libname]{.underline}.dylib
|
|
|
-build-i386/[libname]{.underline}/[libname]{.underline}.dylib -output
|
|
|
-/usr/local/lib/[libname]{.underline}.dylib
|
|
|
+```sh
|
|
|
+sudo lipo -create \
|
|
|
+ build-ppc/[LIBNAME]/[LIBNAME].dylib \
|
|
|
+ build-i386/[LIBNAME]/[LIBNAME].dylib \
|
|
|
+ -output /usr/local/lib/[LIBNAME].dylib
|
|
|
+```
|
|
|
|
|
|
Done.
|
|
|
|
|
|
© 2006-2008 by the GRASS Development Team
|
|
|
|
|
|
-This program is free software under the GNU General Public License
|
|
|
-(\>=v2).
|
|
|
+This program is free software under the GNU General Public License (>=v2).
|
|
|
|
|
|
\- William Kyngesburye
|
|
|
|
|
|
-<kyngchaos@kyngchaos.com>
|
|
|
+kyngchaos@kyngchaos.com
|
|
|
|
|
|
-<http://www.kyngchaos.com/>
|
|
|
+http://www.kyngchaos.com/
|