# PortGroup gnustep

PortGroup gnustep allows for efficient porting of GNUstep-based open source software using the GNU objective-C runtime that defines options for the configuration, build, and destroot phases, and also defines some values for GNUstep-based software. A minimum Portfile using the gnustep PortGroup class need only define the fetch and the checksum phases.

## gnustep PortGroup Specific Keywords

Portfiles using the gnustep PortGroup allow for port authors to set the following keywords in addition to the general Portfile keywords.

gnustep.post_flags

  An associative array which specifies the sub-directories relative to ${worksrcpath} and the SHARED_LD_POSTFLAGS variables to be added to GNUmakefile.preamble in those sub-directories. This helps making the patching process easier on Darwin.

  - Type: optional

  - Default: none

  - Example:

        platform darwin {
            array set gnustep.post_flags {
                BundleSubDir "-lfoo -lbar"
            }
        }

gnustep.cc

  Define the gcc compiler to use when compiling a port.

  - Type: optional

  - Default: gcc-mp-4.2

  - Example:

        gnustep.cc gcc-mp-4.3

variant with_docs

  Many GNUstep packages include a Documentation sub-directory that is not built by default. Enabling this variant builds and installs the included documentation.

  - Type: optional

  - Example:

        %% port install gnustep-gui +with_docs

## gnustep FilesystemLayout Keywords

PortGroup gnustep supports both the traditional gnustep file layout and the new fhs file layout. However, a given ported application does not necessarily support both. The Portfiles have access to many procedures to handle these two layouts:

set_gnustep_make

  Sets GNUSTEP_MAKEFILES according to the FilesystemLayout

set_gnustep_env

  Sets DYLD_LIBRARY_PATH and PATH for the gnustep FilesystemLayout

gnustep_layout

  Returns true (1) if current file layout is gnustep

set_system_library

  Sets GNUSTEP_SYSTEM_LIBRARY according to the FilesystemLayout

set_local_library

  Sets GNUSTEP_LOCAL_LIBRARY according to the FilesystemLayout

## gnustep PortGroup Sugar

Portfiles using PortGroup gnustep do not need to define the following variables:

categories

  Default: gnustep

homepage

  Default: http://www.gnustep.org/

master_sites

  Default: gnustep:core

depends_lib

  Default: gnustep-core

use_configure

  Default: no

configure.env

  Default: DYLD_LIBRARY_PATH PATH

configure.pre_args-append

  Default: CC=gcc-mp-4.2 GNUSTEP_MAKEFILES

build.type

  Default: gnu

build.env

  Default: DYLD_LIBRARY_PATH PATH

build.pre_args-append

  Default: messages=yes

destroot.env

  Default: DYLD_LIBRARY_PATH PATH

destroot.pre_args-append

  Default: messages=yes