a5b27582ab
git-svn-id: svn://svn.code.sf.net/p/sc2/code/trunk@2535 8092fc87-c524-0410-9efc-e669fe64eaf9
206 lines
8.7 KiB
Plaintext
206 lines
8.7 KiB
Plaintext
I've made this build system as a replacement for autoconf, autoheader,
|
|
automake, and aclocal as I found them to be too limiting and too slow.
|
|
This build system is not as complete as the auto* tools, but it's very
|
|
easy to extend.
|
|
|
|
Some of the most important differences between this system and autoconf:
|
|
- it has a menu-driven configuration
|
|
- when compiling, the current directory will never change
|
|
- the object files are stored in a seperate tree from the source files,
|
|
leaving the latter clean, and easier grep-able.
|
|
- multiple object trees can be used, so you can have for instance a
|
|
debugging tree and a release tree side by side.
|
|
- it builds faster, mostly because libtool isn't used.
|
|
|
|
|
|
The files
|
|
---------
|
|
|
|
These are the files in the directory with the build script.
|
|
Of these files only build.config should be modified for a specific build.
|
|
For unknown dependencies, additions to config_proginfo_build or
|
|
config_proginfo_host might need to be made. The other files should not
|
|
be modified.
|
|
Only build.sh is to be called directly.
|
|
|
|
ansi ansi colour definitions.
|
|
build.config configuration options for the program to build.
|
|
It contains the description of the configuration
|
|
menu, and specifies the dependencies.
|
|
The format of the menu description is listed briefly
|
|
below.
|
|
build.sh the sh script that is to be called for configuration,
|
|
building, and installation.
|
|
build_functions auxiliary functions to build.sh for building.
|
|
config_functions auxiliary functions to build.sh for configuration.
|
|
config_proginfo_build contains descriptions of dependencies for the
|
|
system where the code is being built.
|
|
The information in this file is used in particular
|
|
for detecting if those libraries and other external
|
|
programs are present.
|
|
config_proginfo_host contains descriptions of dependencies for the
|
|
system where the software will eventually be run.
|
|
The information in this file is used in particular
|
|
for detecting if those libraries and other external
|
|
programs are present.
|
|
menu_functions auxiliary functions to build.sh for menus.
|
|
|
|
|
|
The menu (from build.config)
|
|
----------------------------
|
|
|
|
There are three types of menu items.
|
|
|
|
- Type MENU
|
|
A menu with menu items.
|
|
- Variables:
|
|
- MENU_${NAME}_TITLE
|
|
The title of the menu.
|
|
- MENU_${NAME}_TEXT (optional)
|
|
The text to show with the menu.
|
|
- MENU_${NAME}_ITEMS
|
|
The names of the menu items (space-seperated).
|
|
- MENU_${NAME}_ITEM_${ITEMNAME}_TYPE
|
|
The type of a menu item.
|
|
- Type CHOICE:
|
|
A choice between several options.
|
|
- Variables:
|
|
- CHOICE_${NAME}_TITLE
|
|
The title of the choice menu.
|
|
- CHOICE_${NAME}_TEXT (optional)
|
|
The text to show with the choice menu.
|
|
- CHOICE_${NAME}_OPTIONS
|
|
The names of the options (space-seperated).
|
|
- CHOICE_${NAME}_OPTION_${OPTIONNAME}_TITLE
|
|
The title of a menu option.
|
|
- CHOICE_${NAME}_OPTION_${OPTIONNAME}_ACTION
|
|
A command to be evaluated if this option is used.
|
|
- CHOICE_${NAME}_OPTION_${OPTIONNAME}_VALID (set by the config program)
|
|
0 if the choice has been verified to be a valid choice
|
|
1 if the choice has been verified to be not a valid choice
|
|
<empty> if the choice hasn't been verified to be valid
|
|
- CHOICE_${NAME}_DEFAULT (optional)
|
|
The default choice.
|
|
- CHOICE_${NAME}_VALUE (set by the config program)
|
|
The current choice.
|
|
- Type INPUT:
|
|
A string that is user-definable.
|
|
- Variables:
|
|
- INPUT_${NAME}_TITLE
|
|
The title of the input field.
|
|
- INPUT_${NAME}_TEXT (optional)
|
|
The text to show with the input field.
|
|
- INPUT_${NAME}_VALIDATOR (optional)
|
|
A function to call after the user supplied a new value which
|
|
checks if the value is allowed. It should accept the new value as
|
|
an argument, and return 1 if the value is not allowed, or return 0
|
|
and output the (possibly modified) value, to accept it.
|
|
- INPUT_${NAME}_DEFAULT (optional)
|
|
The default value.
|
|
- INPUT_${NAME}_VALUE (set by the config program)
|
|
The current value.
|
|
- INPUT_${NAME}_OLD_VALUE (set by the config program)
|
|
The value as it was at the start of the config program.
|
|
- Type CHECK:
|
|
An option that can either be on or off, like a checkbox.
|
|
- Variables:
|
|
- CHECK_${NAME}_TITLE
|
|
The title of the input field.
|
|
- CHECK_${NAME}_DEFAULT (optional)
|
|
The default value, either 'CHECKED' or 'UNCHECKED'.
|
|
- CHECK_${NAME}_VALUE (set by the config program)
|
|
The current value, either 'CHECKED' or 'UNCHECKED'.
|
|
- CHECK_${NAME}_FIXED (optional)
|
|
A string that evaluates to 0 if this checkbox may not be changed.
|
|
|
|
|
|
|
|
Program info (from config_proginfo_build)
|
|
-----------------------------------------
|
|
|
|
Information about programs used should be supplied in the following form:
|
|
- PROG_${PROGRAM}_NAME
|
|
A string describing the program.
|
|
- PROG_${PROGRAM}_FILE
|
|
A string that evaluates to the executable that should be present if
|
|
this program is used.
|
|
- PROG_${PROGRAM}_ACTION (optional)
|
|
A command to be executed if this program is used, after the user is
|
|
done configuring.
|
|
- PROG_${PROGRAM}_DETECT (optional)
|
|
A command to be executed which should return 0 if the program is present
|
|
on the system, 1 if it is not present, or 2 to fallback to the default
|
|
detection. If no detect function was set, or it returned 2, 'type' is
|
|
used to check for the program in the path.
|
|
This command may include a shell command that modifies any of the
|
|
variables PROG_${PROGRAM}_FILE, PROG_${PROGRAM}_ACTION, or
|
|
PROG_${PROGRAM}_VERSION.
|
|
- PROG_${LIB}_DEPEND_DETECT_BIN (optional)
|
|
A list of space-separated binaries the detection of this program
|
|
depends on.
|
|
- PROG_${LIB}_DEPEND_DETECT_LIB (optional)
|
|
A list of space-separated libraries the detection of this program
|
|
depends on.
|
|
- PROG_${PROGRAM}_VERSION (optional)
|
|
A string that evaluates to the version of the executable that is
|
|
present, if it is present.
|
|
- PROG_${PROGRAM}_PRESENT (set by the configuration program)
|
|
0 if the program has been verified to be present
|
|
1 if the program has been verified to be not present
|
|
<empty> if presence of the program hasn't been verified
|
|
|
|
Information about build tools in general (say "a C compiler"), where you're
|
|
not interested in what program is actually called, should be supplied in
|
|
the following corm:
|
|
- BUILDTOOL_${TOOL}_NAME
|
|
A string describing the build tool.
|
|
- BUILDTOOL_${TOOL}_COMMAND
|
|
The command, with arguments, that is to be executed to run this tool.
|
|
- BUILDTOOL_${TOOL}_DEPEND
|
|
A whitespace separated list of programs (as described above)
|
|
that this tool depends on.
|
|
- BUILDTOOL_${TOOL}_PRESENT (set by the configuration program)
|
|
0 if the tool has been verified to be present
|
|
1 if the tool has been verified to be not present
|
|
<empty> if presence of the tool hasn't been verified
|
|
Each tool described, once detected, will be available through the environment
|
|
variable with the name as specified in $TOOL.
|
|
|
|
|
|
Library info (from config_proginfo_host)
|
|
-----------------------------------------
|
|
|
|
Information about libraries used should be supplied in the following form:
|
|
- LIB_${LIB}_NAME
|
|
A string describing the program.
|
|
- LIB_${LIB}_CFLAGS
|
|
A string which evaluates to the string to add to CFLAGS if this library
|
|
is used.
|
|
- LIB_${LIB}_LDLAGS
|
|
A string which evaluates to the string to add to LDLAGS if this library
|
|
is used.
|
|
- PROG_${LIB}_DETECT (optional)
|
|
A command to be executed which should return 0 if the library is present
|
|
on the system, 1 if it is not present, or 2 to fallback to the default
|
|
detection. If no detect function was set, or it returned 2,
|
|
an attempt is made to compile and link an empty C program with
|
|
the flags as in LIB_${LIB}_CFLAGS and LIB_${LIB}_LDFLAGS.
|
|
This command may include a shell command that modifies any of the
|
|
variables PROG_${LIB}_CFLAGS, PROG_${LIB}_LDFLAGS, or
|
|
PROG_${LIB}_VERSION.
|
|
- LIB_${LIB}_DEPEND_DETECT_BIN (optional)
|
|
A list of space-separated binaries the detection of this library depends
|
|
on.
|
|
- LIB_${LIB}_DEPEND_DETECT_LIB (optional)
|
|
A list of space-separated libraries the detection of this library depends
|
|
on.
|
|
- LIB_${LIB}_VERSION (optional)
|
|
A string that evaluates to the version of the library that is
|
|
present, if it is present.
|
|
- LIB_${LIB}_PRESENT (set by the configuration program)
|
|
0 if the library has been verified to be present
|
|
1 if the library has been verified to be not present
|
|
<empty> if presence of the library hasn't been verified
|
|
|
|
|