NFOX.COM



NFMake v 0.2

NFMake was created as a tool for building OpenStep projects on GNUstep. It was designed to parse a PB.project file directly instead of having to maintain parallel makefiles. The eventual goal is to have nfmake part of a larger development package that deals with building the project directly instead of handing off the job to make.

While it is nowhere near complete, it is good enough for us to use on a daily basis for building frameworks, tools, bundles, and the sort. We have ceased using Makefiles and make, and simply edit the PB.project files, which are in a standard plist format.

Major Changes

v 0.2 - first actual numbered version

v 0.1 - Not numbered - Added to GNUstep

Creating a PB.project file for a new project

<< TO DO>>

About our project layout philosophy.

// eventuall go is set it yourself

// right now not as flexible, so you may want to follow our scheme

// System overridden by network

// network overridden by local

// that overridden by the user

// what all these paths mean

// TOPIC - What is in a GNUstep project

// an executable

// resources

// headers

Building nfmake

  1. As provided the source build everything into ~/spool. This directory will be created if it doesn't exist. This will be configurable in a later release. If this causes problems, a quick fix is to change the single line in PBProject.m that refers to ~/spool. This should eventually be configurable by NFMAKERC

  2. // setup your cshrc appropriately

  3. // make sure that certain environment variables are set

  4. run make.csh

  5. nfmake_boot install

  6. test it out on various projects

How it works

  1. nfmake_main.m looks in the current working directory for a PB.project file.

  2. The PBProject class parses the contents of PB.project and determines the project type.

  3. MakeStyle is a generic superclass that know about building projects. It has several subclasses, each of which know how to build one or more types of projects. For instance, ApplicationStyle know how to build applications. It picks the appropriate subclass by calling the +buildsType: method.

  4. Once an appropriate subclass has been found, the command line arguments are passed to -makeTarget:

Cool Things



What works


Builds

Installs

Notes

Application




Frameworks




Bundles




SubProjects




GNUstepWeb






What doesn't work.

Not all targets are accepted., and invalid targets usually do not raise an error.

Due to some as of yet undetermined bug in NSTask, a call to sleep takes place after each call to launch. This is to avoid choking on

If a PB.project lists itself or a non-existant directory as a subproject, and infinite loop of building occurs.

Nfmake assumes xgps.

The code is very gross. It was quickly put together and is still being worked on.

Send questions or comments to Karl Kraft