diff options
-rw-r--r-- | COPYING.SOFORT | 2 | ||||
-rw-r--r-- | README.SBMAKE (renamed from README) | 0 | ||||
-rw-r--r-- | project/common.mk | 5 | ||||
-rw-r--r-- | project/config/cfgdefs.in | 10 | ||||
-rw-r--r-- | project/config/cfgdefs.sh | 37 | ||||
-rw-r--r-- | project/extras.mk | 20 | ||||
-rw-r--r-- | project/headers.mk | 2 | ||||
-rw-r--r-- | sofort/ccenv/ccenv.sh | 25 | ||||
-rw-r--r-- | sofort/cfgtest/cfgtest.sh | 2 |
9 files changed, 82 insertions, 21 deletions
diff --git a/COPYING.SOFORT b/COPYING.SOFORT index 75a98e1..1c8a6c1 100644 --- a/COPYING.SOFORT +++ b/COPYING.SOFORT @@ -2,7 +2,7 @@ /* */ /* sofort: portable software project skeleton */ /* */ -/* Copyright (C) 2015--2023 SysDeer Technologies, LLC */ +/* Copyright (C) 2015--2024 SysDeer Technologies, LLC */ /* */ /* sofort provides a build system that can be incorporated into Works */ /* which may or may not be covered by a copyleft license. THE FOLLOWING */ diff --git a/project/common.mk b/project/common.mk index af510bf..35d4bef 100644 --- a/project/common.mk +++ b/project/common.mk @@ -4,12 +4,11 @@ API_SRCS = \ src/logic/compat.c \ src/logic/cond.c \ src/logic/dir.c \ - src/logic/enum.c \ src/logic/for.c \ src/logic/hash.c \ src/logic/job.c \ src/logic/lst.c \ - src/logic/main.c \ + src/logic/make.c \ src/logic/make_malloc.c \ src/logic/meta.c \ src/logic/metachar.c \ @@ -22,6 +21,6 @@ API_SRCS = \ src/logic/var.c \ APP_SRCS = \ - src/make.c + src/main.c COMMON_SRCS = $(API_SRCS) $(INTERNAL_SRCS) diff --git a/project/config/cfgdefs.in b/project/config/cfgdefs.in index e69de29..c63687f 100644 --- a/project/config/cfgdefs.in +++ b/project/config/cfgdefs.in @@ -0,0 +1,10 @@ +# cfgdefs.mk: build project definitions and variable assignments, +# generated by the project-specific cfgdefs.sh. + +# changes made to this file will be gone the next time +# you run ./configure. + +# for persistent post-configure, ad-hoc changes to the +# build project, use usrdefs.mk instead. + +CFLAGS_CONFIG += -D_PATH_DEFSYSPATH=\"@cfgdefs_default_sys_path@\" diff --git a/project/config/cfgdefs.sh b/project/config/cfgdefs.sh index 34bd609..a4e859f 100644 --- a/project/config/cfgdefs.sh +++ b/project/config/cfgdefs.sh @@ -17,10 +17,27 @@ for arg ; do case "$arg" in + --with-default-sys-path=*) + cfgdefs_default_sys_path=${arg##*=} + ;; *) error_msg ${arg#}: "unsupported config argument." exit 2 esac + + case "${cfgdefs_default_sys_path:-empty}" in + /*) + ;; + + empty) + error_msg "$mb_script: --with-default-sys-path: empty paths are not allowed." + exit 2 + ;; + + *) + error_msg "$mb_script: --with-default-sys-path: relative paths are not allowed." + exit 2 + esac done @@ -34,16 +51,17 @@ cfgdefs_bootstrap() cfgdefs_objs= - cfgdefs_utilsrc='make.c' + cfgdefs_utilsrc='main.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="arch.c buf.c compat.c cond.c dir.c for.c hash.c job.c" + cfgdefs_sources="$cfgdefs_sources lst.c make.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= cfgdefs_cflags="$cfgdefs_cflags -I${mb_source_dir}/src/internal" cfgdefs_cflags="$cfgdefs_cflags -D_PATH_DEFSYSPATH=\"${mb_source_dir}/mk\"" cfgdefs_cflags="$cfgdefs_cflags $cfgdefs_added_defs" + cfgdefs_cflags="$cfgdefs_cflags -D_XOPEN_SOURCE=700" cfgtest_native_section @@ -64,7 +82,8 @@ cfgdefs_bootstrap() output_step_prolog 'compiling' "./bootstrap/${obj}" - printf '\n$ %s %s\n' "$mb_native_cc $cfgdefs_cflags" '\' >&3 + printf '\n$ %s %s\n' "$mb_native_cc $mb_native_cflags" '\' >&3 + printf '\n$ %s\n' "$cfgdefs_cflags" '\' >&3 printf '\t-c %s %s\n' "$mb_source_dir/src/${src}" '\' >&3 printf '\t-o %s %s\n\n\n' "$mb_pwd/bootstrap/${obj}" >&3 @@ -82,7 +101,8 @@ cfgdefs_bootstrap() output_step_prolog 'compiling' "./bootstrap/${obj}" - printf '\n$ %s %s\n' "$mb_native_cc $cfgdefs_cflags" '\' >&3 + printf '\n$ %s %s\n' "$mb_native_cc $mb_native_cflags" '\' >&3 + printf '\n$ %s\n' "$cfgdefs_cflags" '\' >&3 printf '\t-c %s %s\n' "$mb_source_dir/src/logic/${src}" '\' >&3 printf '\t-o %s %s\n\n\n' "$mb_pwd/bootstrap/${obj}" >&3 @@ -118,7 +138,12 @@ cfgdefs_bootstrap() cfgdefs_output_custom_defs() { - cat "$mb_project_dir/project/config/cfgdefs.in" > cfgdefs.mk + cfgdefs_default_sys_path="${cfgdefs_default_sys_path:-/usr/share/mk}" + + sed \ + -e 's#@cfgdefs_default_sys_path@#'"$cfgdefs_default_sys_path"'#g' \ + "$mb_project_dir/project/config/cfgdefs.in" \ + > cfgdefs.mk } diff --git a/project/extras.mk b/project/extras.mk index 7fbc567..5a9a8f7 100644 --- a/project/extras.mk +++ b/project/extras.mk @@ -1,5 +1,4 @@ -SYS_MK_DIR = $(DATADIR)/mk -CFLAGS_CONFIG += -D_PATH_DEFSYSPATH=\"$(SYS_MK_DIR)\" +SYS_MK_DIR = $(DATADIR)/mk MK_FILES = \ $(SOURCE_DIR)/mk/ChangeLog \ @@ -9,6 +8,8 @@ MK_FILES = \ $(SOURCE_DIR)/mk/auto.obj.mk \ $(SOURCE_DIR)/mk/autoconf.mk \ $(SOURCE_DIR)/mk/autodep.mk \ + $(SOURCE_DIR)/mk/cc-wrap.mk \ + $(SOURCE_DIR)/mk/ccm.dep.mk \ $(SOURCE_DIR)/mk/compiler.mk \ $(SOURCE_DIR)/mk/cython.mk \ $(SOURCE_DIR)/mk/dep.mk \ @@ -27,6 +28,7 @@ MK_FILES = \ $(SOURCE_DIR)/mk/init.mk \ $(SOURCE_DIR)/mk/install-new.mk \ $(SOURCE_DIR)/mk/java.mk \ + $(SOURCE_DIR)/mk/jobs.mk \ $(SOURCE_DIR)/mk/ldorder.mk \ $(SOURCE_DIR)/mk/lib.mk \ $(SOURCE_DIR)/mk/libnames.mk \ @@ -42,10 +44,12 @@ MK_FILES = \ $(SOURCE_DIR)/mk/meta2deps.sh \ $(SOURCE_DIR)/mk/mk-files.txt \ $(SOURCE_DIR)/mk/mkopt.sh \ + $(SOURCE_DIR)/mk/newlog.sh \ $(SOURCE_DIR)/mk/nls.mk \ $(SOURCE_DIR)/mk/obj.mk \ $(SOURCE_DIR)/mk/options.mk \ $(SOURCE_DIR)/mk/own.mk \ + $(SOURCE_DIR)/mk/posix.mk \ $(SOURCE_DIR)/mk/prlist.mk \ $(SOURCE_DIR)/mk/prog.mk \ $(SOURCE_DIR)/mk/progs.mk \ @@ -54,9 +58,11 @@ MK_FILES = \ $(SOURCE_DIR)/mk/srctop.mk \ $(SOURCE_DIR)/mk/stage-install.sh \ $(SOURCE_DIR)/mk/subdir.mk \ + $(SOURCE_DIR)/mk/suffixes.mk \ $(SOURCE_DIR)/mk/sys.clean-env.mk \ $(SOURCE_DIR)/mk/sys.debug.mk \ $(SOURCE_DIR)/mk/sys.dependfile.mk \ + $(SOURCE_DIR)/mk/sys.dirdeps.mk \ $(SOURCE_DIR)/mk/sys.mk \ $(SOURCE_DIR)/mk/sys.vars.mk \ $(SOURCE_DIR)/mk/target-flags.mk \ @@ -74,12 +80,18 @@ MK_SYS_FILES = \ $(SOURCE_DIR)/mk/sys/NetBSD.mk \ $(SOURCE_DIR)/mk/sys/OSF1.mk \ $(SOURCE_DIR)/mk/sys/OpenBSD.mk \ + $(SOURCE_DIR)/mk/sys/SCO_SV.mk \ $(SOURCE_DIR)/mk/sys/SunOS.mk \ $(SOURCE_DIR)/mk/sys/UnixWare.mk \ install-mk: - mkdir -p $(SYS_MK_DIR) $(DESTDIR)$(SYS_MK_DIR)/sys + mkdir -p $(DESTDIR)$(SYS_MK_DIR) + mkdir -p $(DESTDIR)$(SYS_MK_DIR)/sys cp -p $(MK_FILES) $(DESTDIR)$(SYS_MK_DIR) cp -p $(MK_SYS_FILES) $(DESTDIR)$(SYS_MK_DIR)/sys -install: install-mk +install-man: + mkdir -p $(DESTDIR)$(DATADIR)/man/man1/ + cp -p $(SOURCE_DIR)/man/make.1 $(DESTDIR)$(DATADIR)/man/man1/$(NICKNAME).1 + +install: install-mk install-man diff --git a/project/headers.mk b/project/headers.mk index 872f706..fe24bdd 100644 --- a/project/headers.mk +++ b/project/headers.mk @@ -2,7 +2,6 @@ INTERNAL_HEADERS = \ $(SOURCE_DIR)/src/internal/buf.h \ $(SOURCE_DIR)/src/internal/config.h \ $(SOURCE_DIR)/src/internal/dir.h \ - $(SOURCE_DIR)/src/internal/enum.h \ $(SOURCE_DIR)/src/internal/hash.h \ $(SOURCE_DIR)/src/internal/job.h \ $(SOURCE_DIR)/src/internal/lst.h \ @@ -10,7 +9,6 @@ INTERNAL_HEADERS = \ $(SOURCE_DIR)/src/internal/make_malloc.h \ $(SOURCE_DIR)/src/internal/metachar.h \ $(SOURCE_DIR)/src/internal/meta.h \ - $(SOURCE_DIR)/src/internal/nonints.h \ $(SOURCE_DIR)/src/internal/pathnames.h \ $(SOURCE_DIR)/src/internal/str.h \ $(SOURCE_DIR)/src/internal/trace.h \ diff --git a/sofort/ccenv/ccenv.sh b/sofort/ccenv/ccenv.sh index fdba47e..d975c6b 100644 --- a/sofort/ccenv/ccenv.sh +++ b/sofort/ccenv/ccenv.sh @@ -1118,10 +1118,6 @@ ccenv_set_os() fi case "$ccenv_cchost" in - *-*-*-* ) - ccenv_tip=${ccenv_cchost%-*} - ccenv_os=${ccenv_tip#*-*-} - ;; *-*-musl | *-*-gnu ) ccenv_tip=${ccenv_cchost%-*} ccenv_os=${ccenv_tip#*-} @@ -1129,6 +1125,13 @@ ccenv_set_os() *-*-solaris* ) ccenv_os='solaris' ;; + *-*-*bsd* | *-*-dragonfly* ) + ccenv_os='bsd' + ;; + *-*-*-* ) + ccenv_tip=${ccenv_cchost%-*} + ccenv_os=${ccenv_tip#*-*-} + ;; *-*-* ) ccenv_os=${ccenv_cchost#*-*-} ;; @@ -1440,6 +1443,19 @@ ccenv_set_os_gate_switches() fi } +ccenv_set_os_bsd_switches() +{ + if [ "$ccenv_os" = 'bsd' ]; then + mb_cfgtest_headers='sys/mman.h' + + if ! cfgtest_macro_definition 'MAP_ANON'; then + ccenv_cflags_os="${ccenv_cflags_os} -D__BSD_VISIBLE" + fi + + mb_cfgtest_headers= + fi +} + ccenv_output_defs() { ccenv_in="$mb_project_dir/sofort/ccenv/ccenv.in" @@ -1806,6 +1822,7 @@ ccenv_set_toolchain_variables() ccenv_set_os_dso_patterns ccenv_set_os_pe_switches ccenv_set_os_gate_switches + ccenv_set_os_bsd_switches ccenv_set_cc_attr_visibility_vars ccenv_output_defs diff --git a/sofort/cfgtest/cfgtest.sh b/sofort/cfgtest/cfgtest.sh index 8e1db07..7bb27a0 100644 --- a/sofort/cfgtest/cfgtest.sh +++ b/sofort/cfgtest/cfgtest.sh @@ -423,7 +423,7 @@ cfgtest_interface_presence() # init cfgtest_prolog 'interface' "${1}" - cfgtest_code_snippet=$(printf 'void * addr = &%s;\n' "${1}") + cfgtest_code_snippet=$(printf 'void (*addr)() = (void (*)())&%s;\n' "${1}") cfgtest_common_init |