Restructuring of the unix build scripts.

Also, interrupted dependency builds are now detected.


git-svn-id: svn://svn.code.sf.net/p/sc2/code/trunk@1338 8092fc87-c524-0410-9efc-e669fe64eaf9
This commit is contained in:
meep-eep
2004-02-29 00:04:18 +00:00
parent 7a21deb2cd
commit ec6fc4867e
7 changed files with 347 additions and 219 deletions
+2
View File
@@ -1,4 +1,6 @@
Changes towards version 0.4:
- Restructuring of the unix build scripts.
Also, interrupted dependency builds are now detected. - SvdB
- Unix build: Make it possible to use another directory than the current
one for putting the build data in (such as build.vars, config.state,
the obj/ dir, and the final binary). - SvdB
+31
View File
@@ -0,0 +1,31 @@
This file describes the easiest way to use this build system from
a packaging system such as rpm.
If you want an interactive configuration, you can start the build process
like you would do manually:
./build.sh uqm
to build the game, and
./build.sh uqm install
to install it.
If you want the configuration to be non-interactive, you'll want to do
the following: execute
./build.sh uqm config
once. This will generate a 'config.vars' file, which you can then
include in your package. Then when you want to build the game, put this
file the directory pointed to by $BUILD_WORK (default is the current
directory), and do
./build.sh uqm reprocess_config
to generate all the configuration information for the build, and then
./build.sh uqm
to build the game, and
./build.sh uqm install
to install it.
You may wish to set the environment variable BUILD_WORK to a directory
where the files created in the configuration and build process should be
stored. That way, the source tree will remain clean and no write access
to it is required.
+41 -7
View File
@@ -1,15 +1,13 @@
#!/bin/sh
if [ -z "$BUILD_WORK" ]; then
BUILD_WORK=.
fi
# Include build functions used here
. build/unix/config_functions
. build/unix/menu_functions
. build/unix/ansi
uqm_requirements()
{
# Some requirements:
have_program gcc || exit 1
COMPILE="$PROG_gcc_FILE"
@@ -39,8 +37,10 @@ define_have_symbol stricmp
# Check for getopt.h
define_have_header getopt.h
}
uqm_prepare_config()
{
# Describe the menu:
MENU_main_ITEMS="debug graphics sound ioformat install_path"
MENU_main_TITLE="Main menu"
@@ -183,11 +183,17 @@ INPUT_install_libdir_VALIDATOR=validate_path
INPUT_install_sharedir_DEFAULT='$prefix/share'
INPUT_install_sharedir_TITLE="Location for sharable data"
INPUT_install_sharedir_VALIDATOR=validate_path
}
uqm_do_config()
{
# Show the menu and let people set things
do_menu MENU main "$BUILD_WORK/config.state"
echo "Configuration complete."
}
uqm_process_config() {
menu_process MENU main
# Set INSTALL_LIBDIR, INSTALL_BINDIR, and INSTALL_SHAREDIR to the specified
# values, replacing '$prefix' to the prefix set.
@@ -203,7 +209,8 @@ CONTENTDIR="${INSTALL_SHAREDIR}uqm/content"
CFLAGS="$CFLAGS -I \"$BUILD_WORK\""
# Export the HAVE_ symbols to config_unix.h, using config_unix.h.in as template
# Export the HAVE_ symbols to config_unix.h, using config_unix.h.ini
# as template.
SUBSTITUTE_VARS="$HAVE_SYMBOLS CONTENTDIR"
SUBSTITUTE_FILES="config_unix.h"
substitute_vars SUBSTITUTE_VARS SUBSTITUTE_FILES src "$BUILD_WORK"
@@ -219,5 +226,32 @@ substitute_vars SUBSTITUTE_VARS SUBSTITUTE_FILES . "$BUILD_WORK"
SUBSTITUTE_VARS="INSTALL_LIBDIR INSTALL_BINDIR INSTALL_SHAREDIR uqm_NAME"
SUBSTITUTE_FILES="uqm-wrapper"
substitute_vars SUBSTITUTE_VARS SUBSTITUTE_FILES build/unix "$BUILD_WORK"
}
uqm_load_config()
{
menu_load MENU main "$BUILD_WORK/config.state"
}
uqm_save_config()
{
menu_save MENU main "$BUILD_WORK/config.state"
}
uqm_pre_build() {
: # Nothing to do
}
uqm_post_build() {
: # Nothing to do
}
uqm_pre_install() {
: # Nothing to do
}
uqm_post_install() {
: # Nothing to do
}
+8
View File
@@ -95,6 +95,9 @@ export "${BUILD_PROJECT}_CFLAGS" "${BUILD_PROJECT}_LDFLAGS"
eval ${BUILD_PROJECT}_OBJS=\${${BUILD_PROJECT}_OBJS%/}/
export "${BUILD_PROJECT}_OBJS"
# Load the configuration functions
. build/unix/build.config
if [ $# -lt 2 ]; then
build_check_config
build_check_dependencies
@@ -108,6 +111,10 @@ case "$2" in
;;
config)
build_config
build_process_config
;;
reprocess_config)
build_reconfig
;;
depend)
build_check_config
@@ -125,3 +132,4 @@ case "$2" in
;;
esac
+34 -4
View File
@@ -73,6 +73,10 @@ build_rec_dependancies() {
echo "Building dependancy information..." 1>&2
# Remove the old dependency file, if it exists.
# The .tmp file is used to detect interrupted dependency builds.
rm -f -- "$DEPEND_FILE".tmp "$DEPEND_FILE"
BUILD_FILES_VAR=${BUILD_PROJECT}_EXTRA_OFILES
export BUILD_FILES_VAR
EXTRA_OFILES=`build_do_recursive build_collect_extra_o_files :`
@@ -88,7 +92,8 @@ build_rec_dependancies() {
done
echo
build_do_recursive build_dependancies :
} > "$DEPEND_FILE"
} > "$DEPEND_FILE".tmp
mv -f -- "$DEPEND_FILE".tmp "$DEPEND_FILE"
}
# Output the .o file for a .c file.
@@ -114,17 +119,38 @@ build_rec_collect_o_files() {
}
# Start the configure program.
# $1 = target
build_config() {
$SH build/unix/build.config
config_requirements
eval "${TARGET}_requirements"
eval "${TARGET}_prepare_config"
eval "${TARGET}_do_config"
}
build_reconfig() {
if [ ! -e "$BUILD_WORK/config.state" ]; then
echo "*** Warning: file 'config.state' not found - using defaults."
fi
config_requirements
eval "${TARGET}_requirements"
build_process_config
echo "Reconfiguring complete..." 1>&2
}
# Process the configuration information
build_process_config() {
eval "${TARGET}_process_config"
}
# Compile the lot.
# With the depend info set up, we can leave everything to make.
build_compile() {
eval "${TARGET}_pre_build"
eval CFLAGS="\${${BUILD_PROJECT}_CFLAGS}" \
LDFLAGS="\${${BUILD_PROJECT}_LDFLAGS}" \
DEPEND_FILE="\$BUILD_WORK/.depend.\${${BUILD_PROJECT}_NAME%/}" \
\$MAKE -f Makefile.build "\$BUILD_WORK/target-\${${BUILD_PROJECT}_NAME}"
eval "${TARGET}_post_build"
}
# Description: Remove the .o file for one .c file
@@ -165,12 +191,12 @@ build_distclean() {
# Description: check if the config files are present and load them.
# If they're not present, remake them.
build_check_config() {
[ ! -e "$BUILD_WORK/build.vars" -o -n "$BUILD_RUN_CONFIG" ] || return
[ ! -e "$BUILD_WORK/build.vars" ] || return
build_config || exit $?
build_process_config
. "$BUILD_WORK/build.vars"
. "${BUILD_REC_PATH:=./}Makeinfo"
unset BUILD_RUN_CONFIG
}
# Description: check if the necessary .depend file is present,
@@ -266,6 +292,8 @@ installsome() {
build_install() {
local SRC DEST MODE OWNER
eval "${TARGET}_pre_install"
local LIB LIBS LIBDIR
echo "Installing system-dependant data..." 1>&2
eval LIBS="\${${BUILD_PROJECT}_INSTALL_LIBS}"
@@ -304,6 +332,8 @@ build_install() {
eval OWNER="\${${BUILD_PROJECT}_INSTALL_BIN_${BIN}_OWNER}"
installsome "$SRC" "$DEST" "$MODE" "$OWNER"
done
eval "${TARGET}_post_install"
}
+2
View File
@@ -386,6 +386,7 @@ EOF
# Some initialisations
HAVE_SYMBOLS=""
config_requirements() {
# Requirements for the config program itself
have_program sed || exit 1
SED="$PROG_sed_FILE"
@@ -393,5 +394,6 @@ have_program tr || exit 1
TR="$PROG_tr_FILE"
have_program make || exit 1
MAKE="$PROG_make_FILE"
}
+37 -16
View File
@@ -603,28 +603,49 @@ menu_process_check() {
# Description: Start processing a menu
# Arguments: $1 - the type of the main menu
# $2 - the name of the main menu
# $3 - the path to the file to load and save the settings from/to
# (the file does not have to exist; in this case nothing is
# loaded)
# if the argument is empty, nothing is saved nor loaded
do_menu() {
local MENU_TYPE START_MENU SAVE_FILE
MENU_TYPE="$1"
START_MENU="$2"
SAVE_FILE="$3"
MENU_TYPE=$1
START_MENU=$2
if [ -n "$SAVE_FILE" -a -e "$SAVE_FILE" ]; then
. "$SAVE_FILE"
fi
menu_init "$MENU_TYPE" "$START_MENU"
menu_handle "$MENU_TYPE" "$START_MENU"
echo
if [ -n "$SAVE_FILE" ]; then
echo "Saving choices..."
menu_save "$MENU_TYPE" "$START_MENU" > "$SAVE_FILE"
fi
# echo "Propagating choices..."
menu_process "$MENU_TYPE" "$START_MENU"
}
# Description: Load the menu settings from file
# Arguments: $1 - the type of the menu (currently ignored)
# $2 - the name of the menu (currently ignored)
# $3 - the name of the file to load from
# Returns: 0 - if the file was loaded successfully
# 1 - if the file did not exist
menu_load() {
SAVE_FILE=$3
if [ ! -e "$SAVE_FILE" ]; then
return 1
fi
. "$SAVE_FILE"
return 0
}
# Description: Save the menu settings to file
# Arguments: $1 - the type of the menu
# $2 - the name of the menu
# $3 - the name of the file to save to
# Returns: 0 - if the file was saved successfully
menu_save() {
MENU_TYPE=$1
START_MENU=$2
SAVE_FILE=$3
echo "Saving choices..."
menu_save "$MENU_TYPE" "$START_MENU" > "$SAVE_FILE"
return 0
}