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.
v 0.2 - first actual numbered version
Uses LD_LIBRARY_PATH envirnoment variable for creating -L flags to the compiler
Deal with multi-architecture. We use this to build on both RedHat 6.2 / x86 and LinuxPPC
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
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
// setup your cshrc appropriately
// make sure that certain environment variables are set
run make.csh
nfmake_boot install
test it out on various projects
nfmake_main.m looks in the current working directory for a PB.project file.
The PBProject class parses the contents of PB.project and determines the project type.
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.
Once an appropriate subclass has been found, the command line
arguments are passed to -makeTarget:
|
Builds |
Installs |
Notes |
---|---|---|---|
Application |
|
|
|
Frameworks |
|
|
|
Bundles |
|
|
|
SubProjects |
|
|
|
GNUstepWeb |
|
|
|
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