|
 |
b3e7fa |
# in projects where [ $mb_use_custom_cfgdefs = yes ],
|
|
 |
b3e7fa |
# cfgdefs.sh is invoked from within ./configure via
|
|
 |
b3e7fa |
# . $mb_project_dir/project/cfgdefs.sh
|
|
 |
b3e7fa |
|
|
 |
b3e7fa |
|
|
 |
b3e7fa |
|
|
 |
b3e7fa |
# reflecting any changes to common config variables
|
|
 |
b3e7fa |
# made by cfgdefs.sh.
|
|
 |
b3e7fa |
|
|
 |
b3e7fa |
|
|
 |
b3e7fa |
# config-time generated cfgdefs.mk.
|
|
 |
b3e7fa |
|
|
 |
dbacce |
|
|
 |
dbacce |
# sofort's config test framework
|
|
 |
dbacce |
. "$mb_project_dir/sofort/cfgtest/cfgtest.sh"
|
|
 |
dbacce |
|
|
 |
dbacce |
|
|
 |
b3e7fa |
for arg ; do
|
|
 |
b3e7fa |
case "$arg" in
|
|
 |
b3e7fa |
*)
|
|
 |
b3e7fa |
error_msg ${arg#}: "unsupported config argument."
|
|
 |
b3e7fa |
exit 2
|
|
 |
b3e7fa |
esac
|
|
 |
b3e7fa |
done
|
|
 |
b3e7fa |
|
|
 |
b3e7fa |
|
|
 |
b3e7fa |
cfgdefs_bootstrap()
|
|
 |
b3e7fa |
{
|
|
 |
b3e7fa |
cfgdefs_bootstrap_done=${cfgdefs_bootstrap_done:-}
|
|
 |
b3e7fa |
|
|
 |
b3e7fa |
if [ _$cfgdefs_bootstrap_done = _yes ]; then
|
|
 |
b3e7fa |
return 0
|
|
 |
b3e7fa |
fi
|
|
 |
b3e7fa |
|
|
 |
b3e7fa |
cfgdefs_objs=
|
|
 |
b3e7fa |
|
|
 |
b3e7fa |
cfgdefs_utilsrc='make.c'
|
|
 |
b3e7fa |
|
|
 |
b3e7fa |
cfgdefs_sources="arch.c buf.c compat.c cond.c dir.c enum.c for.c hash.c job.c"
|
|
 |
b3e7fa |
cfgdefs_sources="$cfgdefs_sources lst.c main.c make_malloc.c meta.c metachar.c parse.c"
|
|
 |
b3e7fa |
cfgdefs_sources="$cfgdefs_sources str.c suff.c targ.c trace.c util.c var.c"
|
|
 |
b3e7fa |
|
|
 |
b3e7fa |
cfgdefs_cflags="-I${mb_source_dir}/src/internal"
|
|
 |
b3e7fa |
cfgdefs_cflags="$cfgdefs_cflags -D_PATH_DEFSYSPATH=\"${mb_source_dir}/mk\""
|
|
 |
cf1a49 |
cfgdefs_cflags="$cfgdefs_cflags $cfgdefs_added_defs"
|
|
 |
b3e7fa |
|
|
 |
b3e7fa |
cfgdefs_make="$mb_pwd/bootstrap/make"
|
|
 |
b3e7fa |
|
|
 |
b3e7fa |
mkdir -p "$mb_pwd/bootstrap"
|
|
 |
b3e7fa |
|
|
 |
b3e7fa |
printf '\n\n'
|
|
 |
b3e7fa |
|
|
 |
b3e7fa |
for src in $cfgdefs_utilsrc; do
|
|
 |
b3e7fa |
obj=${src%%.c}.o
|
|
 |
b3e7fa |
cfgdefs_objs="$cfgdefs_objs $mb_pwd/bootstrap/${obj}"
|
|
 |
b3e7fa |
|
|
 |
b3e7fa |
set -x
|
|
 |
b3e7fa |
|
|
 |
b3e7fa |
"$mb_native_cc" $mb_native_cflags $cfgdefs_cflags \
|
|
 |
b3e7fa |
-c "$mb_source_dir/src/${src}" \
|
|
 |
b3e7fa |
-o "$mb_pwd/bootstrap/${obj}"
|
|
 |
b3e7fa |
|
|
 |
b3e7fa |
set +x
|
|
 |
b3e7fa |
done
|
|
 |
b3e7fa |
|
|
 |
b3e7fa |
for src in $cfgdefs_sources; do
|
|
 |
b3e7fa |
obj=${src%%.c}.o
|
|
 |
b3e7fa |
cfgdefs_objs="$cfgdefs_objs $mb_pwd/bootstrap/${obj}"
|
|
 |
b3e7fa |
|
|
 |
b3e7fa |
set -x
|
|
 |
b3e7fa |
|
|
 |
b3e7fa |
"$mb_native_cc" $mb_native_cflags $cfgdefs_cflags \
|
|
 |
b3e7fa |
-c "$mb_source_dir/src/logic/${src}" \
|
|
 |
b3e7fa |
-o "$mb_pwd/bootstrap/${obj}"
|
|
 |
b3e7fa |
|
|
 |
b3e7fa |
set +x
|
|
 |
b3e7fa |
done
|
|
 |
b3e7fa |
|
|
 |
b3e7fa |
"$mb_native_cc" $mb_native_cflags $cfgdefs_cflags \
|
|
 |
b3e7fa |
$mb_native_ldflags $cfgdefs_objs \
|
|
 |
b3e7fa |
-o "$cfgdefs_make"
|
|
 |
b3e7fa |
|
|
 |
b3e7fa |
mb_make="$cfgdefs_make"
|
|
 |
b3e7fa |
|
|
 |
b3e7fa |
cfgdefs_bootstrap_done='yes'
|
|
 |
b3e7fa |
}
|
|
 |
b3e7fa |
|
|
 |
dbacce |
|
|
 |
dbacce |
cfgdefs_output_custom_defs()
|
|
 |
dbacce |
{
|
|
 |
dbacce |
cat "$mb_project_dir/project/config/cfgdefs.in" > cfgdefs.mk
|
|
 |
dbacce |
}
|
|
 |
dbacce |
|
|
 |
dbacce |
|
|
 |
dbacce |
cfgdefs_perform_common_tests()
|
|
 |
dbacce |
{
|
|
 |
cf1a49 |
# bootstrap
|
|
 |
cf1a49 |
cfgdefs_added_defs=
|
|
 |
cf1a49 |
|
|
 |
dbacce |
# interfaces
|
|
 |
dbacce |
mb_cfgtest_headers='stdio.h'
|
|
 |
dbacce |
cfgtest_interface_presence 'vsnprintf'
|
|
 |
dbacce |
|
|
 |
cf1a49 |
if [ $? = '0' ]; then
|
|
 |
cf1a49 |
cfgdefs_added_defs="$cfgdefs_added_defs -DHAVE_VSNPRINTF"
|
|
 |
cf1a49 |
fi
|
|
 |
cf1a49 |
|
|
 |
dbacce |
mb_cfgtest_headers='string.h'
|
|
 |
dbacce |
cfgtest_interface_presence 'strerror'
|
|
 |
dbacce |
|
|
 |
cf1a49 |
if [ $? = '0' ]; then
|
|
 |
cf1a49 |
cfgdefs_added_defs="$cfgdefs_added_defs -DHAVE_STRERROR"
|
|
 |
cf1a49 |
fi
|
|
 |
cf1a49 |
|
|
 |
dbacce |
mb_cfgtest_headers='sys/types.h unistd.h'
|
|
 |
dbacce |
cfgtest_interface_presence 'setpgid'
|
|
 |
dbacce |
|
|
 |
cf1a49 |
if [ $? = '0' ]; then
|
|
 |
cf1a49 |
cfgdefs_added_defs="$cfgdefs_added_defs -DHAVE_SETPGID"
|
|
 |
cf1a49 |
fi
|
|
 |
cf1a49 |
|
|
 |
dbacce |
mb_cfgtest_headers='sys/time.h sys/resource.h'
|
|
 |
dbacce |
cfgtest_interface_presence 'setrlimit'
|
|
 |
dbacce |
|
|
 |
cf1a49 |
if [ $? = '0' ]; then
|
|
 |
cf1a49 |
cfgdefs_added_defs="$cfgdefs_added_defs -DHAVE_SETRLIMIT"
|
|
 |
cf1a49 |
fi
|
|
 |
cf1a49 |
|
|
 |
dbacce |
mb_cfgtest_headers='stdlib.h'
|
|
 |
dbacce |
cfgtest_interface_presence 'setenv'
|
|
 |
dbacce |
|
|
 |
cf1a49 |
if [ $? = '0' ]; then
|
|
 |
cf1a49 |
cfgdefs_added_defs="$cfgdefs_added_defs -DHAVE_SETENV"
|
|
 |
cf1a49 |
fi
|
|
 |
cf1a49 |
|
|
 |
dbacce |
cfgtest_newline
|
|
 |
dbacce |
}
|
|
 |
dbacce |
|
|
 |
dbacce |
|
|
 |
dbacce |
cfgdefs_perform_native_tests()
|
|
 |
dbacce |
{
|
|
 |
dbacce |
# init
|
|
 |
dbacce |
cfgtest_newline
|
|
 |
dbacce |
cfgtest_native_section
|
|
 |
dbacce |
|
|
 |
dbacce |
# common tests
|
|
 |
dbacce |
cfgdefs_perform_common_tests
|
|
 |
dbacce |
|
|
 |
dbacce |
|
|
 |
dbacce |
cfgtest_newline
|
|
 |
dbacce |
}
|
|
 |
dbacce |
|
|
 |
dbacce |
cfgdefs_perform_target_tests()
|
|
 |
dbacce |
{
|
|
 |
dbacce |
# init
|
|
 |
dbacce |
cfgtest_newline
|
|
 |
dbacce |
cfgtest_host_section
|
|
 |
dbacce |
|
|
 |
dbacce |
# common tests
|
|
 |
dbacce |
cfgdefs_perform_common_tests
|
|
 |
dbacce |
|
|
 |
dbacce |
|
|
 |
dbacce |
cfgtest_newline
|
|
 |
dbacce |
}
|
|
 |
dbacce |
|
|
 |
dbacce |
# cfgdefs.in --> cfgdefs.mk
|
|
 |
dbacce |
cfgdefs_output_custom_defs
|
|
 |
dbacce |
|
|
 |
dbacce |
# strict: some tests might fail
|
|
 |
dbacce |
set +e
|
|
 |
dbacce |
|
|
 |
dbacce |
# bootstrapping cflags
|
|
 |
dbacce |
cfgdefs_perform_native_tests
|
|
 |
dbacce |
|
|
 |
dbacce |
# strict: restore mode
|
|
 |
dbacce |
set -e
|
|
 |
dbacce |
|
|
 |
b3e7fa |
# bootstrap
|
|
 |
b3e7fa |
cfgdefs_bootstrap
|
|
 |
b3e7fa |
|
|
 |
dbacce |
# strict: some tests might fail
|
|
 |
dbacce |
set +e
|
|
 |
dbacce |
|
|
 |
dbacce |
# target-specific tests
|
|
 |
dbacce |
cfgdefs_perform_target_tests
|
|
 |
dbacce |
|
|
 |
dbacce |
# strict: restore mode
|
|
 |
dbacce |
set -e
|
|
 |
dbacce |
|
|
 |
b3e7fa |
# all done
|
|
 |
b3e7fa |
return 0
|