mirror of
https://github.com/gnustep/tools-make.git
synced 2025-04-22 13:50:47 +00:00
The makefile package is a simple, powerful and extensible way to write makefiles for a GNUstep-based project.
'nib2gmod-0_6_5'. git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/tools/make/tags/nib2gmod-0_6_5@6160 72102866-910b-0410-8b05-ffd578937521 |
||
---|---|---|
.cvsignore | ||
aggregate.make | ||
application.make | ||
brain.make | ||
bundle.make | ||
ChangeLog | ||
common.make | ||
config.guess | ||
config.h.in | ||
config.make.in | ||
config.site | ||
config.sub | ||
config_thread.m | ||
configure | ||
configure.in | ||
COPYING | ||
cpu.sh | ||
ctool.make | ||
debugapp.in | ||
depend.make | ||
DESIGN | ||
documentation.make | ||
executable.template.in | ||
GNUmakefile.in | ||
GNUmakefile.postamble | ||
gnustep-make.spec | ||
GNUstep.csh.in | ||
GNUstep.sh.in | ||
gswapp.make | ||
gswbundle.make | ||
install-sh | ||
ld_lib_path.csh | ||
ld_lib_path.sh | ||
library.make | ||
MediaBook.func | ||
MediaBook.sh | ||
mkinstalldirs | ||
names.make | ||
objc.make | ||
openapp.in | ||
opentool.in | ||
os.sh | ||
palette.make | ||
README | ||
rootinstall.sh | ||
rootuninstall.sh | ||
rules.make | ||
service.make | ||
setlocaltz.sh | ||
subproject.make | ||
target.make | ||
test-application.make | ||
test-tool.make | ||
tool.make | ||
transform_paths.sh | ||
vendor.sh | ||
which_lib.c | ||
which_lib.pl.in |
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>