diff options
author | midipix <writeonce@midipix.org> | 2021-04-24 22:52:07 +0000 |
---|---|---|
committer | midipix <writeonce@midipix.org> | 2021-04-25 12:14:41 +0000 |
commit | b3e7fa5e706e99cfa1369196bd504c0830ff78e7 (patch) | |
tree | 128cda389e7a0c7a69fdc5c6ac13834ec6b3ea20 /project/config | |
parent | 087c88548c57a5b245f23ed796a7982e8db9f1fe (diff) | |
download | sbmake-b3e7fa5e706e99cfa1369196bd504c0830ff78e7.tar.bz2 sbmake-b3e7fa5e706e99cfa1369196bd504c0830ff78e7.tar.xz |
project: bootstrap and cfgdefs.sh: initial implementation.
Diffstat (limited to 'project/config')
-rw-r--r-- | project/config/cfgdefs.sh | 88 |
1 files changed, 88 insertions, 0 deletions
diff --git a/project/config/cfgdefs.sh b/project/config/cfgdefs.sh new file mode 100644 index 0000000..8400b6a --- /dev/null +++ b/project/config/cfgdefs.sh @@ -0,0 +1,88 @@ +# in projects where [ $mb_use_custom_cfgdefs = yes ], +# cfgdefs.sh is invoked from within ./configure via +# . $mb_project_dir/project/cfgdefs.sh + +# a successful return from cfgdefs.sh will be followed +# by a second invocation of the config_copy() function, +# reflecting any changes to common config variables +# made by cfgdefs.sh. + +# finally, cfgdefs.sh may update the contents of the +# config-time generated cfgdefs.mk. + +for arg ; do + case "$arg" in + *) + error_msg ${arg#}: "unsupported config argument." + exit 2 + esac +done + + +cfgdefs_bootstrap() +{ + cfgdefs_bootstrap_done=${cfgdefs_bootstrap_done:-} + + if [ _$cfgdefs_bootstrap_done = _yes ]; then + return 0 + fi + + cfgdefs_objs= + + cfgdefs_utilsrc='make.c' + + cfgdefs_sources="arch.c buf.c compat.c cond.c dir.c enum.c for.c hash.c job.c" + cfgdefs_sources="$cfgdefs_sources lst.c main.c make_malloc.c meta.c metachar.c parse.c" + cfgdefs_sources="$cfgdefs_sources str.c suff.c targ.c trace.c util.c var.c" + + cfgdefs_cflags="-I${mb_source_dir}/src/internal" + cfgdefs_cflags="$cfgdefs_cflags -D_PATH_DEFSYSPATH=\"${mb_source_dir}/mk\"" + cfgdefs_cflags="$cfgdefs_cflags -DHAVE_STRERROR -DHAVE_VSNPRINTF" + cfgdefs_cflags="$cfgdefs_cflags -DHAVE_SETPGID -DHAVE_SETRLIMIT -DHAVE_SETENV" + + cfgdefs_make="$mb_pwd/bootstrap/make" + + mkdir -p "$mb_pwd/bootstrap" + + printf '\n\n' + + for src in $cfgdefs_utilsrc; do + obj=${src%%.c}.o + cfgdefs_objs="$cfgdefs_objs $mb_pwd/bootstrap/${obj}" + + set -x + + "$mb_native_cc" $mb_native_cflags $cfgdefs_cflags \ + -c "$mb_source_dir/src/${src}" \ + -o "$mb_pwd/bootstrap/${obj}" + + set +x + done + + for src in $cfgdefs_sources; do + obj=${src%%.c}.o + cfgdefs_objs="$cfgdefs_objs $mb_pwd/bootstrap/${obj}" + + set -x + + "$mb_native_cc" $mb_native_cflags $cfgdefs_cflags \ + -c "$mb_source_dir/src/logic/${src}" \ + -o "$mb_pwd/bootstrap/${obj}" + + set +x + done + + "$mb_native_cc" $mb_native_cflags $cfgdefs_cflags \ + $mb_native_ldflags $cfgdefs_objs \ + -o "$cfgdefs_make" + + mb_make="$cfgdefs_make" + + cfgdefs_bootstrap_done='yes' +} + +# bootstrap +cfgdefs_bootstrap + +# all done +return 0 |