1. Introduction
2. Installing MacPorts
2.1. Install Xcode
2.2. Install MacPorts
2.3. Upgrade MacPorts
2.4. Uninstall MacPorts
2.5. MacPorts and the Shell
3. Using MacPorts
3.1. The port Command
3.2. Port Variants
3.3. Common Tasks
3.4. Port Binaries
4. Portfile Development
4.1. Portfile Introduction
4.2. Creating a Portfile
4.3. Example Portfiles
4.4. Port Variants
4.5. Patch Files
4.6. Local Portfile Repositories
4.7. Portfile Best Practices
4.8. MacPorts' buildbot
5. Portfile Reference
5.1. Global Keywords
5.2. Global Variables
5.3. Port Phases
5.4. Dependencies
5.5. Variants
5.6. Tcl Extensions & Useful Tcl Commands
5.7. StartupItems
5.8. Livecheck / Distcheck
5.9. PortGroups
5.10. PortGroup Introduction
5.11. PortGroup github
5.12. PortGroup gnustep
5.13. PortGroup golang
5.14. PortGroup haskell
5.15. PortGroup java
5.16. PortGroup perl5
5.17. PortGroup python
5.18. PortGroup ruby
5.19. PortGroup xcode
6. MacPorts Internals
6.1. File Hierarchy
6.2. Configuration Files
6.3. Port Images
6.4. APIs and Libs
6.5. The MacPorts Registry
6.6. Tests
7. MacPorts Project
7.1. Using Trac for Tickets
7.2. Using Git and GitHub
7.3. Contributing to MacPorts
7.4. Port Update Policies
7.5. Updating Documentation
7.6. MacPorts Membership
7.7. The PortMgr Team
8. MacPorts Guide Glossary
Glossary

5.12. 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.

5.12.1. 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

5.12.2. 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

5.12.3. 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