The makefile package is a simple, powerful and extensible way to write makefiles for a GNUstep-based project.
Find a file
Adam Fedor 41d6211321 Version 0.6.6
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/tools/make/branches/freeze-0_6_6@7178 72102866-910b-0410-8b05-ffd578937521
2000-08-07 14:19:42 +00:00
.cvsignore Add executable startup script 1999-06-02 03:16:12 +00:00
aggregate.make Make stuff more robust by stripping space that might confuse. 1999-02-15 09:20:19 +00:00
application.make Use plmerge to incorporate appnameInfo.plist. 2000-04-21 05:56:17 +00:00
brain.make Removed some old java code 2000-06-21 11:25:05 +00:00
bundle.make Final fixes for DLLs 2000-06-30 22:29:10 +00:00
ChangeLog Version 0.6.6 2000-08-07 14:19:42 +00:00
common.make Use -classpath when compiling, adding ./ to $(CLASSPATH) 2000-07-28 10:05:23 +00:00
config.guess Support for DLLs, etc 2000-06-13 15:14:23 +00:00
config.h.in Support for linking with different types of a library. 1997-10-03 21:12:56 +00:00
config.make.in Removed old java stuff 2000-06-21 11:28:01 +00:00
config.site Allow for separate system root 1999-10-11 15:40:37 +00:00
config.sub Merge from 0.6.5 2000-02-19 00:40:47 +00:00
config_thread.m Better configuration, gui will compile without DPS 1998-09-03 14:35:49 +00:00
configure Final fixes for DLLs 2000-06-30 22:29:10 +00:00
configure.in Final fixes for DLLs 2000-06-30 22:29:10 +00:00
COPYING Add license file. 1997-11-19 22:05:32 +00:00
cpu.sh Initial revision 1997-09-16 01:07:48 +00:00
ctool.make Fix ctool installation. 2000-07-18 08:42:50 +00:00
debugapp.in config.sub fixes 1999-12-03 04:33:31 +00:00
depend.make New dependencies... 1999-10-24 03:15:37 +00:00
DESIGN Use dashes instead of underscores in the library combo. Renamed makefiles to GNUmakefile. Use all the user, local and system directories for searching after headers and libraries. 1997-10-28 19:00:28 +00:00
documentation.make Correct typo. 2000-03-27 18:30:46 +00:00
executable.template.in config.sub fixes 1999-12-03 04:33:31 +00:00
GNUmakefile.in Added jni.make to the list of files 2000-07-28 12:33:29 +00:00
GNUmakefile.postamble Renamed Makefiles to GNUmakefile. 1997-10-28 03:13:18 +00:00
gnustep-make.spec Merge from 0.6.5 2000-02-19 00:40:47 +00:00
GNUstep.csh.in Add network root 2000-08-02 18:54:50 +00:00
GNUstep.sh.in Add network root 2000-08-02 18:54:50 +00:00
gswapp.make View display an tiff improvements 2000-04-13 19:23:16 +00:00
gswbundle.make View display an tiff improvements 2000-04-13 19:23:16 +00:00
install-sh Initial revision 1997-09-16 01:07:48 +00:00
java.make Added support for jni headers 2000-07-25 13:04:32 +00:00
jni.make New file 2000-07-28 12:32:13 +00:00
ld_lib_path.csh HPUX changes 2000-04-06 15:01:12 +00:00
ld_lib_path.sh HPUX changes 2000-04-06 15:01:12 +00:00
library.make Cygwin fixes 2000-06-22 02:55:28 +00:00
MediaBook.func Support for DLLs, etc 2000-06-13 15:14:23 +00:00
MediaBook.sh * MediaBook.sh (MB_GNUSTEP_SOURCE, MB_FINANCE_SOURCE): New variables. 1999-02-21 01:20:17 +00:00
mkinstalldirs Better NetBSD support 2000-03-06 17:21:56 +00:00
names.make Build fixes 2000-02-21 22:01:08 +00:00
objc.make Fixed running 'make install' without having run 'make' before 2000-06-20 17:52:44 +00:00
openapp.in Removed old java code 2000-06-21 11:22:05 +00:00
opentool.in config.sub fixes 1999-12-03 04:33:31 +00:00
os.sh Initial revision 1997-09-16 01:07:48 +00:00
palette.make Allow setting of palettes install dir 2000-07-16 19:36:23 +00:00
README Config/make fixes 1999-06-04 04:26:07 +00:00
rootinstall.sh Added more uninstall commands. 1999-11-10 19:35:25 +00:00
rootuninstall.sh * opentool.in: New file. 1999-02-18 06:22:33 +00:00
rules.make Added again rule for APPLICATION_ICON which got lost in a change 2000-07-29 20:33:25 +00:00
service.make Fix LDFLAGS 1999-09-15 02:41:46 +00:00
setlocaltz.sh * MediaBook.sh (MB_GNUSTEP_SOURCE, MB_FINANCE_SOURCE): New variables. 1999-02-21 01:20:17 +00:00
subproject.make Support for DLLs, etc 2000-06-13 15:14:23 +00:00
target.make revert bundle flags 2000-06-27 20:44:34 +00:00
test-application.make Make stuff more robust by stripping space that might confuse. 1999-02-15 09:20:19 +00:00
test-tool.make Make stuff more robust by stripping space that might confuse. 1999-02-15 09:20:19 +00:00
tool.make Final fixes for DLLs 2000-06-30 22:29:10 +00:00
transform_paths.sh Support for DLLs, etc 2000-06-13 15:14:23 +00:00
vendor.sh Initial revision 1997-09-16 01:07:48 +00:00
which_lib.c Support for DLLs, etc 2000-06-13 15:14:23 +00:00
which_lib.pl.in Support for DLLs, etc 2000-06-13 15:14:23 +00:00
woapp.make Final fixes for DLLs 2000-06-30 22:29:10 +00:00
wobundle.make Final fixes for DLLs 2000-06-30 22:29:10 +00:00

GNUstep makefile package
========================

This document discusses the configuration and installation tasks for
the GNUstep makefile package.

Read the DESIGN documentation for detailed information about the
design and implementation of the GNUstep makefile package.

What is the GNUstep makefile package?
=====================================

The makefile package is a simplistic, powerful and extensible way to
write makefiles for a GNUstep-based project.  It allows the user to
write a GNUstep-based project without having to deal with the complex
issues associated with the configuration and installation of the core
GNUstep libraries.  It also allows the user to easily create
cross-compiled binaries.

Configuring the GNUstep makefile package
========================================

The GNUstep makefile package uses the Autoconf mechanism for
configuration; it checks some host capabilties which are used by
all GNUstep software.  To configure just type:

./configure

The GNUstep makefile package needs a root directory.  If the
GNUSTEP_SYSTEM_ROOT environment variable is set then configure will
use its value as the root directory.  You can also specify the root
directory when you run configure with the prefix paramter; the
following command makes /usr/local/GNUstep the root directory:

./configure --prefix=/usr/local/GNUstep

If you do not have the GNUSTEP_SYSTEM_ROOT environment variable set
and you do not specify a root directory when running configure, then
configure will use /usr/GNUstep as the default root directory.

Installing the GNUstep makefile package
=======================================

After you configure the GNUstep makefile package, then you need to
compile the programs that come with the package.  Currently there is
only a single C program which needs to be compiled; all of the other
files are either shell scripts or makefile fragments, so you can
compile and install the makefile package in one step with:

make install

After you have installed the GNUstep makefile package, there is still
some minor administration to be performed.  Based upon whether you are
setting up the GNUstep environment for a single user or all users on
your system, perform the appropriate step below.

Setting up the GNUstep environment for all users
================================================

The GNUstep environment and thus usage of the makefile package is
based almost solely upon the GNUSTEP_SYSTEM_ROOT environment variable.
So essentially the setup involved is to make sure that the variable is
defined for all users.  The GNUstep.sh file within the makefile
package contains all of the environment variable settings required, so
you want to call that shell.  For most UNIX systems, the easiest way
to do that is to modify the system rc.local file which is executed
upon system startup; add lines similar to these:

# Setup for the GNUstep environment
. /usr/GNUstep/Makefiles/GNUstep.sh

This will source in the GNUstep.sh file and set the environment
variables; thus making them available for all users. Before executing
this script, you can setup a default path for searching for tools
and apps by defining the variable GNUSTEP_PATHPREFIX_LIST (and exporting
it). By defualt, it's set to

$GNUSTEP_USER_ROOT:$GNUSTEP_LOCAL_ROOT:$GNUSTEP_SYSTEM_ROOT

which might look something like this:

~/GNUstep:/usr/GNUstep/Local:/usr/GNUstep

when all is done.

Setting up the GNUstep environment for a single user
====================================================

The GNUstep environment and thus usage of the makefile package is
based almost solely upon the GNUSTEP_SYSTEM_ROOT environment variable.
So essentially the setup involved is to make sure that the variable is
defined for the user.  The GNUstep.sh file within the makefile package
contains all of the environment variable settings required, so you
want to call that shell when the user logs in to the system.  Most
shells have some file that you read upon login, for example the BASH
shell reads the .bash_profile file in the user's home directory.  So
you can add the following lines to that file:

# Setup for the GNUstep environment
. /usr/GNUstep/Makefiles/GNUstep.sh

This will source in the GNUstep.sh file and set the environment
variables; thus making them available for the user.

Configuring the GNUstep makefile package for a cross-compile target
===================================================================

By default when you run configure, it assumes that you want to create
executables for the same host that you are compiling on; however, the
GNUstep makefile package has been designed to support cross-compiling
just as easily as normal compiling.  In order to add a cross-compile
target to the GNUstep makefile package, you must rerun configure for
that target and reinstall the makefile package.  By rerunning
configure, the appropriate target settings are determined, and
reinstalling the makefile package installs the appropriate files for
that target.  The target parameter is used to specify the target
platform for cross-compiling:

./configure --target=i386-mingw32
make install

Note that configuring and installing for a cross-compile target does
not eliminate or overwrite the files for any other targets that you
may have configured.  So if you wish to setup the GNUstep makefile
package for multiple targets then just perform the above steps
multiple times.

./configure --target=i386-mingw32
make install
./configure --target=sparc-solaris2.5
make install
./configure --target=alpha-linux-gnu
make install

History
=======

The GNUstep makefile package was designed by Scott Christley
<scottc@net-community.com> and Ovidiu Predescu <ovidiu@net-community.com>.

Flags for building shared libraries and bundles on several systems were
originally identified by Mircea Oancea <mircea@pathcom.com>.

Richard Frith-Macdonald <richard@brainstorm.co.uk> also contributed with ideas.

Questions and/or Bug Reports
============================

The initial implementation was performed by Scott Christley
<scottc@net-community.com> and Ovidiu Predescu <ovidiu@net-community.com>, so
you may send questions and/or bug reports to them or to 
<bug-gnustep@gnu.org>