From cb6cd63bf02abaf17c0ed443840bc7f5bfe82ffc Mon Sep 17 00:00:00 2001 From: Mehmet Samet Duman Date: Tue, 10 Mar 2026 22:21:51 +0300 Subject: init Top-level monolithic build entrypoint for Project Tick BSD/Linux `bin` ports. Signed-off-by: Mehmet Samet Duman --- .gitignore | 27 ++ .gitmodules | 117 ++++++++ README.md | 58 ++++ cat | 1 + chflags | 1 + chmod | 1 + configure | 892 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ cp | 1 + cpuset | 1 + csh | 1 + date | 1 + dd | 1 + df | 1 + domainname | 1 + echo | 1 + ed | 1 + expr | 1 + freebsd-version | 1 + getfacl | 1 + hostname | 1 + kill | 1 + ln | 1 + ls | 1 + mkdir | 1 + mv | 1 + nproc | 1 + pax | 1 + pkill | 1 + ps | 1 + pwait | 1 + pwd | 1 + realpath | 1 + rm | 1 + rmail | 1 + rmdir | 1 + setfacl | 1 + sh | 1 + sleep | 1 + stty | 1 + sync | 1 + test | 1 + timeout | 1 + uuidgen | 1 + 43 files changed, 1133 insertions(+) create mode 100644 .gitignore create mode 100644 .gitmodules create mode 100644 README.md create mode 160000 cat create mode 160000 chflags create mode 160000 chmod create mode 100755 configure create mode 160000 cp create mode 160000 cpuset create mode 160000 csh create mode 160000 date create mode 160000 dd create mode 160000 df create mode 160000 domainname create mode 160000 echo create mode 160000 ed create mode 160000 expr create mode 160000 freebsd-version create mode 160000 getfacl create mode 160000 hostname create mode 160000 kill create mode 160000 ln create mode 160000 ls create mode 160000 mkdir create mode 160000 mv create mode 160000 nproc create mode 160000 pax create mode 160000 pkill create mode 160000 ps create mode 160000 pwait create mode 160000 pwd create mode 160000 realpath create mode 160000 rm create mode 160000 rmail create mode 160000 rmdir create mode 160000 setfacl create mode 160000 sh create mode 160000 sleep create mode 160000 stty create mode 160000 sync create mode 160000 test create mode 160000 timeout create mode 160000 uuidgen diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000000..58ad8e3fbe --- /dev/null +++ b/.gitignore @@ -0,0 +1,27 @@ +*.a +*.core +*.lo +*.nossppico +*.o +*.orig +*.pico +*.pieo +*.po +*.rej +*.so +*.so.[0-9]* +*.sw[nop] +*~ +.*DS_Store +.cache +.clangd +.ccls-cache +.depend* +compile_commands.json +compile_commands.events.json +tags +build/ +out/ +.linux-obj/ +/GNUmakefile +/config.mk diff --git a/.gitmodules b/.gitmodules new file mode 100644 index 0000000000..aab7403f07 --- /dev/null +++ b/.gitmodules @@ -0,0 +1,117 @@ +[submodule "cat"] + path = cat + url = https://gitlab.com/project-tick/distro/bin/cat +[submodule "chflags"] + path = chflags + url = https://gitlab.com/project-tick/distro/bin/chflags +[submodule "chmod"] + path = chmod + url = https://gitlab.com/project-tick/distro/bin/chmod +[submodule "cp"] + path = cp + url = https://gitlab.com/project-tick/distro/bin/cp +[submodule "cpuset"] + path = cpuset + url = https://gitlab.com/project-tick/distro/bin/cpuset +[submodule "csh"] + path = csh + url = https://gitlab.com/project-tick/distro/bin/csh +[submodule "date"] + path = date + url = https://gitlab.com/project-tick/distro/bin/date +[submodule "dd"] + path = dd + url = https://gitlab.com/project-tick/distro/bin/dd +[submodule "df"] + path = df + url = https://gitlab.com/project-tick/distro/bin/df +[submodule "domainname"] + path = domainname + url = https://gitlab.com/project-tick/distro/bin/domainname +[submodule "echo"] + path = echo + url = https://gitlab.com/project-tick/distro/bin/echo +[submodule "ed"] + path = ed + url = https://gitlab.com/project-tick/distro/bin/ed +[submodule "expr"] + path = expr + url = https://gitlab.com/project-tick/distro/bin/expr +[submodule "freebsd-version"] + path = freebsd-version + url = https://gitlab.com/project-tick/distro/bin/linux-version +[submodule "getfacl"] + path = getfacl + url = https://gitlab.com/project-tick/distro/bin/getfacl +[submodule "hostname"] + path = hostname + url = https://gitlab.com/project-tick/distro/bin/hostname +[submodule "kill"] + path = kill + url = https://gitlab.com/project-tick/distro/bin/kill +[submodule "ln"] + path = ln + url = https://gitlab.com/project-tick/distro/bin/ln +[submodule "ls"] + path = ls + url = https://gitlab.com/project-tick/distro/bin/ls +[submodule "mkdir"] + path = mkdir + url = https://gitlab.com/project-tick/distro/bin/mkdir +[submodule "mv"] + path = mv + url = https://gitlab.com/project-tick/distro/bin/mv +[submodule "nproc"] + path = nproc + url = https://gitlab.com/project-tick/distro/bin/nproc +[submodule "pax"] + path = pax + url = https://gitlab.com/project-tick/distro/bin/pax +[submodule "pkill"] + path = pkill + url = https://gitlab.com/project-tick/distro/bin/pkill +[submodule "ps"] + path = ps + url = https://gitlab.com/project-tick/distro/bin/ps +[submodule "pwait"] + path = pwait + url = https://gitlab.com/project-tick/distro/bin/pwait +[submodule "pwd"] + path = pwd + url = https://gitlab.com/project-tick/distro/bin/pwd +[submodule "realpath"] + path = realpath + url = https://gitlab.com/project-tick/distro/bin/realpath +[submodule "rm"] + path = rm + url = https://gitlab.com/project-tick/distro/bin/rm +[submodule "rmail"] + path = rmail + url = https://gitlab.com/project-tick/distro/bin/rmail +[submodule "rmdir"] + path = rmdir + url = https://gitlab.com/project-tick/distro/bin/rmdir +[submodule "setfacl"] + path = setfacl + url = https://gitlab.com/project-tick/distro/bin/setfacl +[submodule "sh"] + path = sh + url = https://gitlab.com/project-tick/distro/bin/sh +[submodule "sleep"] + path = sleep + url = https://gitlab.com/project-tick/distro/bin/sleep +[submodule "stty"] + path = stty + url = https://gitlab.com/project-tick/distro/bin/stty +[submodule "sync"] + path = sync + url = https://gitlab.com/project-tick/distro/bin/sync +[submodule "test"] + path = test + url = https://gitlab.com/project-tick/distro/bin/test +[submodule "timeout"] + path = timeout + url = https://gitlab.com/project-tick/distro/bin/timeout +[submodule "uuidgen"] + path = uuidgen + url = https://gitlab.com/project-tick/distro/bin/uuidgen diff --git a/README.md b/README.md new file mode 100644 index 0000000000..e7931f95ae --- /dev/null +++ b/README.md @@ -0,0 +1,58 @@ +# bin + +Top-level monolithic build entrypoint for Project Tick BSD/Linux `bin` ports. + +This directory provides a `./configure && make` workflow that orchestrates all +ported subcommands while keeping each subdirectory's own `GNUmakefile` as the +build source of truth. + +## Build + +```sh +./configure +make -f GNUmakefile -j"$(nproc)" all +``` + +Default behavior is musl-first toolchain selection (`musl-gcc`/musl-capable +clang candidates), with generated top-level overrides for common variables +(`CC`, `AR`, `RANLIB`, `CPPFLAGS`, `CFLAGS`, `LDFLAGS`, etc.). + +## Test + +```sh +make -f GNUmakefile test +``` + +This runs each subdirectory test target through the top-level orchestrator. +Environment-limited tests may print `SKIP` and continue. + +## Outputs + +All generated artifacts are centralized under: + +```text +build/ # object and generated intermediate files +out/ # final binaries and test helper outputs +``` + +Subdirectories are prepared to use these shared roots during top-level builds. + +## Maintenance Targets + +```sh +make -f GNUmakefile clean +make -f GNUmakefile distclean +make -f GNUmakefile reconfigure +``` + +- `clean`: removes shared `build/` and `out/` +- `distclean`: also removes generated top-level `GNUmakefile` and `config.mk` +- `reconfigure`: regenerates top-level build files + +## Notes + +- Subdirectory `GNUmakefile` files are not replaced; the top-level file only + drives and overrides invocation context. +- `GNUmakefile` and `config.mk` are generated artifacts from `./configure`. +- For command-specific behavior, limitations, and port notes, see each + subdirectory `README.md`. diff --git a/cat b/cat new file mode 160000 index 0000000000..7f792c1c56 --- /dev/null +++ b/cat @@ -0,0 +1 @@ +Subproject commit 7f792c1c56a38c0d39a7e0b99d1636b642d78efd diff --git a/chflags b/chflags new file mode 160000 index 0000000000..e9b78def2f --- /dev/null +++ b/chflags @@ -0,0 +1 @@ +Subproject commit e9b78def2f086a356ec092a7f9af1e1613749efe diff --git a/chmod b/chmod new file mode 160000 index 0000000000..abd723dd04 --- /dev/null +++ b/chmod @@ -0,0 +1 @@ +Subproject commit abd723dd0477f5009c8e77bc85412ca8917bf662 diff --git a/configure b/configure new file mode 100755 index 0000000000..822f420b70 --- /dev/null +++ b/configure @@ -0,0 +1,892 @@ +#!/bin/sh + +set -eu +umask 022 + +SELF_DIR=$(CDPATH= cd -- "$(dirname -- "$0")" && pwd) +cd "$SELF_DIR" + +TMP_DIR="$SELF_DIR/build/configure" +LOG_FILE="$TMP_DIR/config.log" +CONFIG_MK="$SELF_DIR/config.mk" +GNUMAKEFILE="$SELF_DIR/GNUmakefile" + +mkdir -p "$TMP_DIR" +: >"$LOG_FILE" + +PREFIX="/usr/local" +BINDIR="" +BINDIR_SET=0 +LOCAL_DIR="/usr/local" +ALLOW_GLIBC=0 +FAIL_IF_MISSING=0 +USER_CC="" +HOST="" +BUILD="" +EXTRA_CPPFLAGS="" +EXTRA_CFLAGS="" +EXTRA_LDFLAGS="" + +ENV_CC=${CC-} +ENV_CPPFLAGS=${CPPFLAGS-} +ENV_CFLAGS=${CFLAGS-} +ENV_LDFLAGS=${LDFLAGS-} + +usage() { + cat <<'USAGE' +Usage: ./configure [options] + +General: + --help show this help + --prefix=PATH install prefix (default: /usr/local) + --bindir=PATH install bindir (default: /bin) + --host=TRIPLE target host triple + --build=TRIPLE build triple + +Toolchain: + --cc=COMMAND force compiler command + --allow-glibc allow glibc toolchain fallback + +Flags: + --extra-cppflags=FLAGS extra CPPFLAGS + --extra-cflags=FLAGS extra CFLAGS + --extra-ldflags=FLAGS extra LDFLAGS + +Local paths: + --with-local-dir=PATH add PATH/include and PATH/lib when present + --without-local-dir disable local include/lib probing + +Policy: + --enable-fail-if-missing fail when optional probes are missing +USAGE +} + +msg_checking() { + printf 'checking %s... ' "$1" +} + +msg_result() { + printf '%s\n' "$1" +} + +warn() { + printf 'configure: warning: %s\n' "$*" >&2 +} + +die() { + printf 'configure: error: %s\n' "$*" >&2 + exit 1 +} + +normalize_ws() { + printf '%s' "$1" | sed 's/[[:space:]][[:space:]]*/ /g; s/^ //; s/ $//' +} + +escape_make() { + printf '%s' "$1" | sed 's/\$/$$/g' +} + +escape_sed() { + printf '%s' "$1" | sed 's/[\\/&]/\\&/g' +} + +to_macro() { + printf '%s' "$1" | tr '/.-' '___' | tr '[:lower:]' '[:upper:]' +} + +choose_tool() { + tool_var=$1 + shift + for candidate in "$@"; do + if [ -n "$candidate" ] && command -v "$candidate" >/dev/null 2>&1; then + eval "$tool_var=\$candidate" + return 0 + fi + done + return 1 +} + +can_compile_with() { + cc_try=$1 + cat >"$TMP_DIR/conftest.c" <<'SRC' +int main(void) { return 0; } +SRC + printf '$ %s\n' "$cc_try -x c $TMP_DIR/conftest.c -o $TMP_DIR/conftest" >>"$LOG_FILE" + if sh -c "$cc_try -x c '$TMP_DIR/conftest.c' -o '$TMP_DIR/conftest'" >>"$LOG_FILE" 2>&1; then + return 0 + fi + return 1 +} + +can_run_with() { + cc_try=$1 + cat >"$TMP_DIR/conftest.c" <<'SRC' +#include +#include +int main(void) { + char *ep = NULL; + long v = strtol("1", &ep, 10); + char buf[8]; + (void)snprintf(buf, sizeof(buf), "%ld", v); + return (ep == NULL || buf[0] != '1'); +} +SRC + printf '$ %s\n' "$cc_try -D_GNU_SOURCE -D_DEFAULT_SOURCE -D_XOPEN_SOURCE=700 -x c $TMP_DIR/conftest.c -o $TMP_DIR/conftest" >>"$LOG_FILE" + if ! sh -c "$cc_try -D_GNU_SOURCE -D_DEFAULT_SOURCE -D_XOPEN_SOURCE=700 -x c '$TMP_DIR/conftest.c' -o '$TMP_DIR/conftest'" >>"$LOG_FILE" 2>&1; then + return 1 + fi + printf '$ %s\n' "$TMP_DIR/conftest" >>"$LOG_FILE" + if "$TMP_DIR/conftest" >>"$LOG_FILE" 2>&1; then + return 0 + fi + return 1 +} + +can_compile_stdatomic_with() { + cc_try=$1 + cat >"$TMP_DIR/conftest.c" <<'SRC' +#include +int main(void) { + _Atomic int x = 1; + return (int)x - 1; +} +SRC + printf '$ %s\n' "$cc_try -x c $TMP_DIR/conftest.c -o $TMP_DIR/conftest" >>"$LOG_FILE" + if sh -c "$cc_try -x c '$TMP_DIR/conftest.c' -o '$TMP_DIR/conftest'" >>"$LOG_FILE" 2>&1; then + return 0 + fi + return 1 +} + +pick_compiler() { + cc_try=$1 + [ -n "$cc_try" ] || return 1 + set -- $cc_try + cc_prog=$1 + command -v "$cc_prog" >/dev/null 2>&1 || return 1 + if can_compile_with "$cc_try"; then + if [ "$REQUIRE_RUNNABLE_CC" -eq 1 ] && ! can_run_with "$cc_try"; then + return 1 + fi + if ! can_compile_stdatomic_with "$cc_try"; then + return 1 + fi + CC_SELECTED=$cc_try + return 0 + fi + return 1 +} + +try_cc() { + code=$1 + extra_cppflags=${2-} + extra_ldflags=${3-} + cat >"$TMP_DIR/conftest.c" <>"$LOG_FILE" + if sh -c "$CC_SELECTED $CFG_CPPFLAGS $extra_cppflags $CFG_CFLAGS $CFG_LDFLAGS $extra_ldflags '$TMP_DIR/conftest.c' -o '$TMP_DIR/conftest'" >>"$LOG_FILE" 2>&1; then + return 0 + fi + return 1 +} + +record_cpp_define() { + name=$1 + value=$2 + printf '%s := %s\n' "$name" "$value" >>"$CONFIG_MK_TMP" + if [ "$value" = "1" ]; then + CONF_CPPFLAGS="$CONF_CPPFLAGS -D${name}=1" + fi +} + +check_header() { + hdr=$1 + macro="HAVE_$(to_macro "$hdr")" + msg_checking "for $hdr" + if try_cc "#include <$hdr> +int main(void) { return 0; }" "" ""; then + msg_result yes + record_cpp_define "$macro" 1 + else + msg_result no + record_cpp_define "$macro" 0 + fi +} + +check_func() { + func=$1 + includes=$2 + macro="HAVE_$(to_macro "$func")" + msg_checking "for $func" + if try_cc "$includes +#include +int main(void) { void *p = (void *)(uintptr_t)&$func; return p == 0; }" "" ""; then + msg_result yes + record_cpp_define "$macro" 1 + else + msg_result no + record_cpp_define "$macro" 0 + fi +} + +check_lib_symbol() { + lib=$1 + sym=$2 + msg_checking "for $sym in -l$lib" + if try_cc "char $sym(); +int main(void) { return $sym() == 0; }" "" "-l$lib"; then + msg_result yes + return 0 + fi + msg_result no + return 1 +} + +for arg in "$@"; do + case "$arg" in + --help) + usage + exit 0 + ;; + --prefix=*) + PREFIX=${arg#*=} + ;; + --bindir=*) + BINDIR=${arg#*=} + BINDIR_SET=1 + ;; + --host=*) + HOST=${arg#*=} + ;; + --build=*) + BUILD=${arg#*=} + ;; + --cc=*) + USER_CC=${arg#*=} + ;; + --allow-glibc) + ALLOW_GLIBC=1 + ;; + --enable-fail-if-missing) + FAIL_IF_MISSING=1 + ;; + --with-local-dir=*) + LOCAL_DIR=${arg#*=} + ;; + --without-local-dir) + LOCAL_DIR=no + ;; + --extra-cppflags=*) + EXTRA_CPPFLAGS=${arg#*=} + ;; + --extra-cflags=*) + EXTRA_CFLAGS=${arg#*=} + ;; + --extra-ldflags=*) + EXTRA_LDFLAGS=${arg#*=} + ;; + *) + die "unknown option: $arg" + ;; + esac +done + +if [ "$BINDIR_SET" -ne 1 ]; then + BINDIR="$PREFIX/bin" +fi + +HOST_OS=$(uname -s 2>/dev/null || echo unknown) +HOST_ARCH=$(uname -m 2>/dev/null || echo unknown) +DEFAULT_TRIPLE="${HOST_ARCH}-unknown-${HOST_OS}" +[ -n "$HOST" ] || HOST="$DEFAULT_TRIPLE" +[ -n "$BUILD" ] || BUILD="$DEFAULT_TRIPLE" +REQUIRE_RUNNABLE_CC=0 +if [ "$HOST" = "$BUILD" ]; then + REQUIRE_RUNNABLE_CC=1 +fi + +msg_checking "for C compiler" +CC_SELECTED="" +if [ -n "$USER_CC" ]; then + pick_compiler "$USER_CC" || die "requested compiler is not usable: $USER_CC" +elif [ -n "$ENV_CC" ]; then + if ! pick_compiler "$ENV_CC"; then + warn "environment CC unusable or disallowed: $ENV_CC" + fi +fi +if [ -z "$CC_SELECTED" ]; then + pick_compiler "musl-clang" || true +fi +if [ -z "$CC_SELECTED" ]; then + pick_compiler "clang --target=${HOST_ARCH}-linux-musl" || true +fi +if [ -z "$CC_SELECTED" ]; then + pick_compiler "clang --target=${HOST_ARCH}-unknown-linux-musl" || true +fi +if [ -z "$CC_SELECTED" ]; then + pick_compiler "musl-gcc" || true +fi +if [ -z "$CC_SELECTED" ]; then + pick_compiler "clang" || true +fi +if [ -z "$CC_SELECTED" ]; then + pick_compiler "cc" || true +fi +if [ -z "$CC_SELECTED" ]; then + pick_compiler "gcc" || true +fi +[ -n "$CC_SELECTED" ] || die "no usable compiler found" +msg_result "$CC_SELECTED" + +msg_checking "for C preprocessor" +if sh -c "$CC_SELECTED -E '$TMP_DIR/conftest.c'" >/dev/null 2>&1; then + CPP_SELECTED="$CC_SELECTED -E" + msg_result "$CPP_SELECTED" +else + die "no working preprocessor via selected compiler" +fi + +msg_checking "for make" +if choose_tool MAKE gmake make; then + msg_result "$MAKE" +else + die "no make tool found" +fi + +msg_checking "for archiver" +if choose_tool AR llvm-ar ar; then + msg_result "$AR" +else + die "no archiver found" +fi + +msg_checking "for ranlib" +if choose_tool RANLIB llvm-ranlib ranlib; then + msg_result "$RANLIB" +else + die "no ranlib found" +fi + +msg_checking "for nm" +if choose_tool NM llvm-nm nm; then + msg_result "$NM" +else + msg_result no + NM=: +fi + +msg_checking "for awk" +if choose_tool AWK gawk mawk awk; then + msg_result "$AWK" +else + die "no awk found" +fi + +msg_checking "for shell" +if choose_tool SH sh; then + msg_result "$SH" +else + die "no POSIX shell found" +fi + +msg_checking "for pkg-config" +PKG_CONFIG="" +if choose_tool PKG_CONFIG pkgconf pkg-config; then + msg_result "$PKG_CONFIG" +else + msg_result no +fi + +CC_MACHINE=$(sh -c "$CC_SELECTED -dumpmachine" 2>/dev/null || echo unknown) +msg_checking "target compiler triplet" +msg_result "$CC_MACHINE" + +LIBC_KIND=unknown + +if command -v file >/dev/null 2>&1; then + cat >"$TMP_DIR/conftest.c" <<'SRC' +int main(void) { return 0; } +SRC + printf '$ %s\n' "$CC_SELECTED -x c $TMP_DIR/conftest.c -o $TMP_DIR/conftest" >>"$LOG_FILE" + if sh -c "$CC_SELECTED -x c '$TMP_DIR/conftest.c' -o '$TMP_DIR/conftest'" >>"$LOG_FILE" 2>&1; then + FILE_TEXT=$(file "$TMP_DIR/conftest" 2>/dev/null || true) + case "$FILE_TEXT" in + *ld-musl*|*musl*) + LIBC_KIND=musl + ;; + *ld-linux*|*GNU/Linux*) + LIBC_KIND=glibc + ;; + esac + fi +fi + +if [ "$LIBC_KIND" = "unknown" ]; then + CC_MACROS=$(printf '\n' | sh -c "$CC_SELECTED -dM -E -x c -" 2>/dev/null || true) + case "$CC_MACROS" in + *"__GLIBC__"*) LIBC_KIND=glibc ;; + *"__MUSL__"*) LIBC_KIND=musl ;; + esac +fi +if [ "$LIBC_KIND" = "unknown" ]; then + case "$CC_MACHINE" in + *musl*) + LIBC_KIND=musl + ;; + *gnu*|*glibc*) + LIBC_KIND=glibc + ;; + esac +fi + +msg_checking "for libc type" +msg_result "$LIBC_KIND" + +if [ "$LIBC_KIND" = "glibc" ] && [ "$ALLOW_GLIBC" -ne 1 ]; then + die "glibc toolchain detected; refusing by default (use --allow-glibc to override)" +fi + +IS_MUSL=0 +if [ "$LIBC_KIND" = "musl" ]; then + IS_MUSL=1 +fi + +CFG_CPPFLAGS=$(normalize_ws "-D_DEFAULT_SOURCE -D_XOPEN_SOURCE=700 $ENV_CPPFLAGS $EXTRA_CPPFLAGS") +CFG_CFLAGS=$(normalize_ws "-O2 -g -pipe $ENV_CFLAGS $EXTRA_CFLAGS") +CFG_LDFLAGS=$(normalize_ws "$ENV_LDFLAGS $EXTRA_LDFLAGS") + +if [ "$LOCAL_DIR" != "no" ] && [ -n "$LOCAL_DIR" ]; then + msg_checking "for local include directory" + if [ -d "$LOCAL_DIR/include" ]; then + CFG_CPPFLAGS=$(normalize_ws "$CFG_CPPFLAGS -I$LOCAL_DIR/include") + msg_result "$LOCAL_DIR/include" + else + msg_result no + fi + + msg_checking "for local library directory" + if [ -d "$LOCAL_DIR/lib" ]; then + CFG_LDFLAGS=$(normalize_ws "$CFG_LDFLAGS -L$LOCAL_DIR/lib") + msg_result "$LOCAL_DIR/lib" + else + msg_result no + fi +fi + +msg_checking "whether we are cross compiling" +CROSS_COMPILING=0 +if try_cc "int main(void) { return 0; }" "" ""; then + if "$TMP_DIR/conftest" >/dev/null 2>&1; then + msg_result no + else + CROSS_COMPILING=1 + msg_result yes + fi +else + CROSS_COMPILING=1 + msg_result yes +fi + +EXEEXT="" +msg_checking "for executable suffix" +if [ -x "$TMP_DIR/conftest.exe" ]; then + EXEEXT=.exe +fi +msg_result "${EXEEXT:-none}" + +JOBS_HINT=$(getconf _NPROCESSORS_ONLN 2>/dev/null || true) +if [ -z "$JOBS_HINT" ] && command -v nproc >/dev/null 2>&1; then + JOBS_HINT=$(nproc 2>/dev/null || true) +fi +case "$JOBS_HINT" in +''|*[!0-9]*) JOBS_HINT=1 ;; +esac + +CONFIG_MK_TMP="$TMP_DIR/config.mk.$$" +: >"$CONFIG_MK_TMP" + +TIMESTAMP=$(date -u '+%Y-%m-%dT%H:%M:%SZ') +printf '# Auto-generated by ./configure on %s\n' "$TIMESTAMP" >>"$CONFIG_MK_TMP" +printf 'CONF_CPPFLAGS :=\n' >>"$CONFIG_MK_TMP" +printf 'CONF_LDFLAGS :=\n' >>"$CONFIG_MK_TMP" +printf 'CONF_LIBS :=\n' >>"$CONFIG_MK_TMP" +printf 'CONFIGURE_TIMESTAMP := %s\n' "$TIMESTAMP" >>"$CONFIG_MK_TMP" +printf 'CONFIGURE_HOST := %s\n' "$(escape_make "$HOST")" >>"$CONFIG_MK_TMP" +printf 'CONFIGURE_BUILD := %s\n' "$(escape_make "$BUILD")" >>"$CONFIG_MK_TMP" +printf 'CONFIGURE_CC_MACHINE := %s\n' "$(escape_make "$CC_MACHINE")" >>"$CONFIG_MK_TMP" +printf 'CONFIGURE_LIBC := %s\n' "$(escape_make "$LIBC_KIND")" >>"$CONFIG_MK_TMP" +printf 'CROSS_COMPILING := %s\n' "$CROSS_COMPILING" >>"$CONFIG_MK_TMP" +printf 'EXEEXT := %s\n' "$(escape_make "$EXEEXT")" >>"$CONFIG_MK_TMP" + +CONF_CPPFLAGS="" + +msg_checking "for common system headers" +msg_result "(probing)" +for hdr in \ + stdlib.h stdio.h stdint.h inttypes.h stdbool.h stddef.h \ + string.h strings.h unistd.h errno.h fcntl.h signal.h \ + sys/types.h sys/stat.h sys/time.h sys/resource.h sys/wait.h \ + sys/select.h sys/ioctl.h sys/param.h sys/socket.h netdb.h \ + poll.h sys/poll.h termios.h stropts.h pthread.h \ + sys/event.h sys/timerfd.h sys/acl.h attr/xattr.h linux/xattr.h \ + dlfcn.h langinfo.h locale.h wchar.h wctype.h; do + check_header "$hdr" +done + +msg_checking "for common C library functions" +msg_result "(probing)" +check_func getcwd '#include ' +check_func realpath '#include ' +check_func fchdir '#include ' +check_func fstatat '#include ' +check_func openat '#include ' +check_func copy_file_range '#include ' +check_func memmove '#include ' +check_func strlcpy '#include ' +check_func strlcat '#include ' +check_func explicit_bzero '#include ' +check_func getline '#include ' +check_func getentropy '#include ' +check_func posix_spawn '#include ' +check_func clock_gettime '#include ' +check_func poll '#include ' +check_func kqueue '#include ' +check_func timerfd_create '#include ' +check_func pipe2 '#include ' +check_func closefrom '#include ' +check_func getrandom '#include ' + +msg_checking "for optional system libraries" +msg_result "(probing)" +CONF_LIBS="" +if check_lib_symbol crypt crypt; then + CONF_LIBS="$CONF_LIBS -lcrypt" + CRYPTO_LIBS='-lcrypt' +else + CRYPTO_LIBS='' + if [ "$FAIL_IF_MISSING" -eq 1 ]; then + die "libcrypt not found and --enable-fail-if-missing was requested" + fi +fi +if check_lib_symbol dl dlopen; then + CONF_LIBS="$CONF_LIBS -ldl" +fi +if check_lib_symbol pthread pthread_create; then + CONF_LIBS="$CONF_LIBS -lpthread" +fi +if check_lib_symbol rt clock_gettime; then + CONF_LIBS="$CONF_LIBS -lrt" +fi +if check_lib_symbol util openpty; then + CONF_LIBS="$CONF_LIBS -lutil" +fi +if check_lib_symbol attr setxattr; then + CONF_LIBS="$CONF_LIBS -lattr" +fi +if check_lib_symbol selinux is_selinux_enabled; then + CONF_LIBS="$CONF_LIBS -lselinux" +fi + +EDITLINE_CPPFLAGS="" +EDITLINE_LIBS="" +msg_checking "for libedit via pkg-config" +if [ -n "$PKG_CONFIG" ] && "$PKG_CONFIG" --exists libedit >/dev/null 2>&1; then + EDITLINE_CPPFLAGS=$($PKG_CONFIG --cflags libedit 2>/dev/null || true) + EDITLINE_LIBS=$($PKG_CONFIG --libs libedit 2>/dev/null || true) + msg_result yes +else + msg_result no +fi +if [ -n "$EDITLINE_CPPFLAGS$EDITLINE_LIBS" ]; then + msg_checking "whether libedit pkg-config flags are usable" + if try_cc "int main(void) { return 0; }" "$EDITLINE_CPPFLAGS" "$EDITLINE_LIBS"; then + msg_result yes + else + msg_result no + EDITLINE_CPPFLAGS="" + EDITLINE_LIBS="" + fi +fi + +printf 'CONF_CPPFLAGS += %s\n' "$(escape_make "$(normalize_ws "$CONF_CPPFLAGS")")" >>"$CONFIG_MK_TMP" +printf 'CONF_LDFLAGS +=\n' >>"$CONFIG_MK_TMP" +printf 'CONF_LIBS += %s\n' "$(escape_make "$(normalize_ws "$CONF_LIBS")")" >>"$CONFIG_MK_TMP" + +mv "$CONFIG_MK_TMP" "$CONFIG_MK" + +SUBDIR_LIST=$( + for mk in ./*/GNUmakefile; do + [ -f "$mk" ] || continue + d=${mk#./} + d=${d%/GNUmakefile} + printf '%s\n' "$d" + done | LC_ALL=C sort +) +[ -n "$SUBDIR_LIST" ] || die "no subdirectories with GNUmakefile found" +SUBDIRS_ONE_LINE=$(printf '%s\n' "$SUBDIR_LIST" | tr '\n' ' ' | sed 's/ $//') + +CC_MAKE=$(escape_make "$CC_SELECTED") +AR_MAKE=$(escape_make "$AR") +RANLIB_MAKE=$(escape_make "$RANLIB") +NM_MAKE=$(escape_make "$NM") +AWK_MAKE=$(escape_make "$AWK") +SH_MAKE=$(escape_make "$SH") +CPPFLAGS_MAKE=$(escape_make "$CFG_CPPFLAGS") +CFLAGS_MAKE=$(escape_make "$CFG_CFLAGS") +LDFLAGS_MAKE=$(escape_make "$CFG_LDFLAGS") +CRYPTO_LIBS_MAKE=$(escape_make "$CRYPTO_LIBS") +EDITLINE_CPPFLAGS_MAKE=$(escape_make "$EDITLINE_CPPFLAGS") +EDITLINE_LIBS_MAKE=$(escape_make "$EDITLINE_LIBS") +PREFIX_MAKE=$(escape_make "$PREFIX") +BINDIR_MAKE=$(escape_make "$BINDIR") +SUBDIRS_MAKE=$(escape_make "$SUBDIRS_ONE_LINE") + +GNUMAKEFILE_TMP="$TMP_DIR/GNUmakefile.$$" +cat >"$GNUMAKEFILE_TMP" <<'EOF_MK' +# Auto-generated by ./configure on @TIMESTAMP@. +# Regenerate with ./configure. + +.DEFAULT_GOAL := all + +-include $(CURDIR)/config.mk + +CONFIGURE_HOST := @HOST@ +CONFIGURE_BUILD := @BUILD@ +CONFIGURE_CC_MACHINE := @CC_MACHINE@ +CONFIGURE_LIBC := @LIBC@ +CONFIGURE_MUSL := @IS_MUSL@ +JOBS_HINT := @JOBS_HINT@ + +ifeq ($(origin CC), default) +CC := @CC@ +endif +ifeq ($(origin CC), environment) +CC := @CC@ +endif + +AR ?= @AR@ +ifeq ($(origin AR), default) +AR := @AR@ +endif +ifeq ($(origin AR), environment) +AR := @AR@ +endif + +RANLIB ?= @RANLIB@ +ifeq ($(origin RANLIB), default) +RANLIB := @RANLIB@ +endif +ifeq ($(origin RANLIB), environment) +RANLIB := @RANLIB@ +endif + +NM ?= @NM@ +AWK ?= @AWK@ +SH ?= @SH@ + +CPPFLAGS += @CPPFLAGS@ +CPPFLAGS += $(CONF_CPPFLAGS) +CFLAGS ?= @CFLAGS@ +LDFLAGS += @LDFLAGS@ +LDFLAGS += $(CONF_LDFLAGS) + +CRYPTO_LIBS ?= @CRYPTO_LIBS@ +EDITLINE_CPPFLAGS ?= @EDITLINE_CPPFLAGS@ +EDITLINE_LIBS ?= @EDITLINE_LIBS@ + +PREFIX ?= @PREFIX@ +BINDIR ?= @BINDIR@ +DESTDIR ?= + +MONO_BUILDDIR ?= $(CURDIR)/build +MONO_OUTDIR ?= $(CURDIR)/out +MONO_BINDIR := $(MONO_OUTDIR)/bin + +SUBDIRS := @SUBDIRS@ +SUBDIR_ALIASES := $(filter-out test,$(SUBDIRS)) + +SUBMAKE_OVERRIDES = \ + CC="$(CC)" \ + AR="$(AR)" \ + AWK="$(AWK)" \ + RANLIB="$(RANLIB)" \ + NM="$(NM)" \ + SH="$(SH)" \ + CRYPTO_LIBS="$(CRYPTO_LIBS)" \ + EDITLINE_CPPFLAGS="$(EDITLINE_CPPFLAGS)" \ + EDITLINE_LIBS="$(EDITLINE_LIBS)" \ + PREFIX="$(PREFIX)" \ + BINDIR="$(BINDIR)" \ + DESTDIR="$(DESTDIR)" \ + CROSS_COMPILING="$(CROSS_COMPILING)" \ + EXEEXT="$(EXEEXT)" + +.PHONY: all clean clean-% distclean maintainer-clean rebuild reconfigure \ + check check-% test status stage install list print-config print-subdirs \ + help prepare prepare-% unprepare + +all: $(addprefix build-,$(SUBDIRS)) + +$(SUBDIR_ALIASES): %: build-% + +prepare: $(addprefix prepare-,$(SUBDIRS)) + +prepare-%: + @mkdir -p "$(MONO_BUILDDIR)/$*" "$(MONO_OUTDIR)" + @if [ -e "$*/build" ] && [ ! -L "$*/build" ]; then rm -rf "$*/build"; fi + @ln -sfn "../build/$*" "$*/build" + @if [ -e "$*/out" ] && [ ! -L "$*/out" ]; then rm -rf "$*/out"; fi + @ln -sfn "../out" "$*/out" + +unprepare: + @set -e; \ + for d in $(SUBDIRS); do \ + if [ -L "$$d/build" ]; then rm -f "$$d/build"; fi; \ + if [ -L "$$d/out" ]; then rm -f "$$d/out"; fi; \ + done + +build-%: prepare-% + +env CPPFLAGS="$(CPPFLAGS)" CFLAGS="$(CFLAGS)" LDFLAGS="$(LDFLAGS)" \ + $(MAKE) -C "$*" -f GNUmakefile $(SUBMAKE_OVERRIDES) all + +clean: $(addprefix clean-,$(SUBDIRS)) + @rm -rf "$(MONO_BUILDDIR)" "$(MONO_OUTDIR)" + +distclean: clean unprepare + @rm -f "$(CURDIR)/config.mk" "$(CURDIR)/GNUmakefile" "$(CURDIR)/GNUMakeFile" + +maintainer-clean: distclean + +rebuild: clean all + +reconfigure: + @$(SH) "$(CURDIR)/configure" + +clean-%: + +env CPPFLAGS="$(CPPFLAGS)" CFLAGS="$(CFLAGS)" LDFLAGS="$(LDFLAGS)" \ + $(MAKE) -C "$*" -f GNUmakefile $(SUBMAKE_OVERRIDES) clean + +check: $(addprefix check-,$(SUBDIRS)) + +check-%: prepare-% + +env CPPFLAGS="$(CPPFLAGS)" CFLAGS="$(CFLAGS)" LDFLAGS="$(LDFLAGS)" \ + $(MAKE) -C "$*" -f GNUmakefile $(SUBMAKE_OVERRIDES) test + +test: check + +status: + @printf 'build root: %s\n' "$(MONO_BUILDDIR)" + @printf 'out root: %s\n' "$(MONO_OUTDIR)" + @ls -1 "$(MONO_OUTDIR)" 2>/dev/null || true + +stage: all + @mkdir -p "$(MONO_BINDIR)" + @set -e; \ + for f in "$(MONO_OUTDIR)"/*; do \ + [ -f "$$f" ] || continue; \ + [ -x "$$f" ] || continue; \ + case "$$f" in \ + *.a|*.o|*.lo) continue ;; \ + esac; \ + cp -f "$$f" "$(MONO_BINDIR)/"; \ + done + +install: stage + @mkdir -p "$(DESTDIR)$(BINDIR)" + @set -e; \ + for f in "$(MONO_BINDIR)"/*; do \ + [ -f "$$f" ] || continue; \ + [ -x "$$f" ] || continue; \ + cp -f "$$f" "$(DESTDIR)$(BINDIR)/"; \ + done + +list: + @printf '%s\n' $(SUBDIRS) + +print-subdirs: + @printf '%s\n' $(SUBDIRS) + +print-config: + @printf 'CC=%s\n' "$(CC)" + @printf 'AR=%s\n' "$(AR)" + @printf 'RANLIB=%s\n' "$(RANLIB)" + @printf 'NM=%s\n' "$(NM)" + @printf 'CPPFLAGS=%s\n' "$(CPPFLAGS)" + @printf 'CFLAGS=%s\n' "$(CFLAGS)" + @printf 'LDFLAGS=%s\n' "$(LDFLAGS)" + @printf 'LDLIBS=%s\n' "$(CONF_LIBS)" + @printf 'MONO_BUILDDIR=%s\n' "$(MONO_BUILDDIR)" + @printf 'MONO_OUTDIR=%s\n' "$(MONO_OUTDIR)" + @printf 'CONFIGURE_LIBC=%s\n' "$(CONFIGURE_LIBC)" + @printf 'CONFIGURE_CC_MACHINE=%s\n' "$(CONFIGURE_CC_MACHINE)" + +help: + @printf '%s\n' 'Targets:' + @printf '%s\n' ' all prepare clean distclean maintainer-clean rebuild reconfigure' + @printf '%s\n' ' check test status stage install list print-subdirs print-config help' + @printf '%s\n' 'Suggested: make -f GNUmakefile -j$(JOBS_HINT) all' +EOF_MK + +sed \ + -e "s|@TIMESTAMP@|$(escape_sed "$TIMESTAMP")|g" \ + -e "s|@HOST@|$(escape_sed "$HOST")|g" \ + -e "s|@BUILD@|$(escape_sed "$BUILD")|g" \ + -e "s|@CC_MACHINE@|$(escape_sed "$CC_MACHINE")|g" \ + -e "s|@LIBC@|$(escape_sed "$LIBC_KIND")|g" \ + -e "s|@IS_MUSL@|$(escape_sed "$IS_MUSL")|g" \ + -e "s|@JOBS_HINT@|$(escape_sed "$JOBS_HINT")|g" \ + -e "s|@CC@|$(escape_sed "$CC_MAKE")|g" \ + -e "s|@AR@|$(escape_sed "$AR_MAKE")|g" \ + -e "s|@RANLIB@|$(escape_sed "$RANLIB_MAKE")|g" \ + -e "s|@NM@|$(escape_sed "$NM_MAKE")|g" \ + -e "s|@AWK@|$(escape_sed "$AWK_MAKE")|g" \ + -e "s|@SH@|$(escape_sed "$SH_MAKE")|g" \ + -e "s|@CPPFLAGS@|$(escape_sed "$CPPFLAGS_MAKE")|g" \ + -e "s|@CFLAGS@|$(escape_sed "$CFLAGS_MAKE")|g" \ + -e "s|@LDFLAGS@|$(escape_sed "$LDFLAGS_MAKE")|g" \ + -e "s|@CRYPTO_LIBS@|$(escape_sed "$CRYPTO_LIBS_MAKE")|g" \ + -e "s|@EDITLINE_CPPFLAGS@|$(escape_sed "$EDITLINE_CPPFLAGS_MAKE")|g" \ + -e "s|@EDITLINE_LIBS@|$(escape_sed "$EDITLINE_LIBS_MAKE")|g" \ + -e "s|@PREFIX@|$(escape_sed "$PREFIX_MAKE")|g" \ + -e "s|@BINDIR@|$(escape_sed "$BINDIR_MAKE")|g" \ + -e "s|@SUBDIRS@|$(escape_sed "$SUBDIRS_MAKE")|g" \ + "$GNUMAKEFILE_TMP" >"$GNUMAKEFILE" +rm -f "$GNUMAKEFILE_TMP" +rm -f "$SELF_DIR/GNUMakeFile" + +cat >>"$LOG_FILE" <} +cflags: ${CFG_CFLAGS:-} +ldflags: ${CFG_LDFLAGS:-} +conf_cppflags: ${CONF_CPPFLAGS:-} +conf_libs: ${CONF_LIBS:-} +crypto libs: ${CRYPTO_LIBS:-} +editline cppflags: ${EDITLINE_CPPFLAGS:-} +editline libs: ${EDITLINE_LIBS:-} +prefix: $PREFIX +bindir: $BINDIR +cross compiling: $CROSS_COMPILING +subdirs: $SUBDIRS_ONE_LINE +EOF_LOG + +msg_result "" +printf 'configure: created %s\n' "$GNUMAKEFILE" +printf 'configure: created %s\n' "$CONFIG_MK" +printf 'configure: libc=%s compiler=%s subdirs=%s\n' "$LIBC_KIND" "$CC_SELECTED" "$(printf '%s\n' "$SUBDIR_LIST" | wc -l | tr -d ' ')" +printf 'configure: run %s\n' "make -f GNUmakefile -j$JOBS_HINT all" diff --git a/cp b/cp new file mode 160000 index 0000000000..07152ace4e --- /dev/null +++ b/cp @@ -0,0 +1 @@ +Subproject commit 07152ace4e0e484f31e08030227a3d91bc803335 diff --git a/cpuset b/cpuset new file mode 160000 index 0000000000..c41b67bfa8 --- /dev/null +++ b/cpuset @@ -0,0 +1 @@ +Subproject commit c41b67bfa876d63ab4511bdd89fae4c2b66331e8 diff --git a/csh b/csh new file mode 160000 index 0000000000..9fcd5aad4b --- /dev/null +++ b/csh @@ -0,0 +1 @@ +Subproject commit 9fcd5aad4bbd6e9e4e0791b193168db0bd861cb9 diff --git a/date b/date new file mode 160000 index 0000000000..ae4c58645a --- /dev/null +++ b/date @@ -0,0 +1 @@ +Subproject commit ae4c58645a13317bb8540d47f8f7cfa768f17eb2 diff --git a/dd b/dd new file mode 160000 index 0000000000..54a575952b --- /dev/null +++ b/dd @@ -0,0 +1 @@ +Subproject commit 54a575952b5661c61d14538277d3548ca939b342 diff --git a/df b/df new file mode 160000 index 0000000000..04298aa63d --- /dev/null +++ b/df @@ -0,0 +1 @@ +Subproject commit 04298aa63d4ae1546bed105cb8cb0245b3646ee5 diff --git a/domainname b/domainname new file mode 160000 index 0000000000..f28fddc2e8 --- /dev/null +++ b/domainname @@ -0,0 +1 @@ +Subproject commit f28fddc2e8208bca202d0074d14d2bb914dcc59e diff --git a/echo b/echo new file mode 160000 index 0000000000..74324d021b --- /dev/null +++ b/echo @@ -0,0 +1 @@ +Subproject commit 74324d021b4424d2b9b21a8593f4c7680837a275 diff --git a/ed b/ed new file mode 160000 index 0000000000..93528dc40c --- /dev/null +++ b/ed @@ -0,0 +1 @@ +Subproject commit 93528dc40c12704e0f9ca16475e97e68b4317fb9 diff --git a/expr b/expr new file mode 160000 index 0000000000..23bf7a79f5 --- /dev/null +++ b/expr @@ -0,0 +1 @@ +Subproject commit 23bf7a79f51567e56bfb4fc657e3dc66c36b41de diff --git a/freebsd-version b/freebsd-version new file mode 160000 index 0000000000..d768fb6b2c --- /dev/null +++ b/freebsd-version @@ -0,0 +1 @@ +Subproject commit d768fb6b2c853a5658f5e671056e0dc48897f358 diff --git a/getfacl b/getfacl new file mode 160000 index 0000000000..550119fbc3 --- /dev/null +++ b/getfacl @@ -0,0 +1 @@ +Subproject commit 550119fbc3fe5fb6677c00484944354aa98f4b37 diff --git a/hostname b/hostname new file mode 160000 index 0000000000..b19672b599 --- /dev/null +++ b/hostname @@ -0,0 +1 @@ +Subproject commit b19672b599d80bb29d054b7bd39abb3f146037e3 diff --git a/kill b/kill new file mode 160000 index 0000000000..4888cfe1b3 --- /dev/null +++ b/kill @@ -0,0 +1 @@ +Subproject commit 4888cfe1b3ad8e83935dc7b061bdbdade5d3ebfd diff --git a/ln b/ln new file mode 160000 index 0000000000..b972052b8d --- /dev/null +++ b/ln @@ -0,0 +1 @@ +Subproject commit b972052b8d6d2339bc27f924db78cfd35df73c30 diff --git a/ls b/ls new file mode 160000 index 0000000000..06b170dd48 --- /dev/null +++ b/ls @@ -0,0 +1 @@ +Subproject commit 06b170dd48138a26fdfe1b822ba9846a26a2fa0f diff --git a/mkdir b/mkdir new file mode 160000 index 0000000000..4360cafc08 --- /dev/null +++ b/mkdir @@ -0,0 +1 @@ +Subproject commit 4360cafc082b73ed9578911ed2dd8e022f4a5924 diff --git a/mv b/mv new file mode 160000 index 0000000000..eef48ae3a0 --- /dev/null +++ b/mv @@ -0,0 +1 @@ +Subproject commit eef48ae3a05a5829217d2b6a8e74c0cb5f978cf3 diff --git a/nproc b/nproc new file mode 160000 index 0000000000..b02e14aacf --- /dev/null +++ b/nproc @@ -0,0 +1 @@ +Subproject commit b02e14aacf37412ca3632719075c9c42967e23b6 diff --git a/pax b/pax new file mode 160000 index 0000000000..9b3dc150a6 --- /dev/null +++ b/pax @@ -0,0 +1 @@ +Subproject commit 9b3dc150a69468a36aa956d4e5d3beaa1c05b659 diff --git a/pkill b/pkill new file mode 160000 index 0000000000..c07449c1ae --- /dev/null +++ b/pkill @@ -0,0 +1 @@ +Subproject commit c07449c1ae05a076b9e554267513c794c86e3ba5 diff --git a/ps b/ps new file mode 160000 index 0000000000..29b985290c --- /dev/null +++ b/ps @@ -0,0 +1 @@ +Subproject commit 29b985290c171926c765c571e8711276c4d9aae0 diff --git a/pwait b/pwait new file mode 160000 index 0000000000..2dea771892 --- /dev/null +++ b/pwait @@ -0,0 +1 @@ +Subproject commit 2dea7718929906912270d2d02cc19fbbf2848579 diff --git a/pwd b/pwd new file mode 160000 index 0000000000..e19ed3fe0f --- /dev/null +++ b/pwd @@ -0,0 +1 @@ +Subproject commit e19ed3fe0f247b74692c23b07d02ee3779ab5fc9 diff --git a/realpath b/realpath new file mode 160000 index 0000000000..2dcbe84cc3 --- /dev/null +++ b/realpath @@ -0,0 +1 @@ +Subproject commit 2dcbe84cc3ca1a0c737aa8a46710ad0abcd83ff9 diff --git a/rm b/rm new file mode 160000 index 0000000000..f17620ba69 --- /dev/null +++ b/rm @@ -0,0 +1 @@ +Subproject commit f17620ba69abf0400ff9043d53539db8cc2fa840 diff --git a/rmail b/rmail new file mode 160000 index 0000000000..dfe4433f74 --- /dev/null +++ b/rmail @@ -0,0 +1 @@ +Subproject commit dfe4433f744e8e68d04dee0eab4eb9ae2a884c3e diff --git a/rmdir b/rmdir new file mode 160000 index 0000000000..3d6a84a5af --- /dev/null +++ b/rmdir @@ -0,0 +1 @@ +Subproject commit 3d6a84a5af67021ba95ebe6fd5b28e1e2d979253 diff --git a/setfacl b/setfacl new file mode 160000 index 0000000000..a4ca535a68 --- /dev/null +++ b/setfacl @@ -0,0 +1 @@ +Subproject commit a4ca535a68ee1a8f0d906cf633344d67238d133f diff --git a/sh b/sh new file mode 160000 index 0000000000..126b33a9db --- /dev/null +++ b/sh @@ -0,0 +1 @@ +Subproject commit 126b33a9db9b44a56f2c62d18346746ec1330766 diff --git a/sleep b/sleep new file mode 160000 index 0000000000..2283ae2924 --- /dev/null +++ b/sleep @@ -0,0 +1 @@ +Subproject commit 2283ae2924693a1f4370a7dc423ace87b52600c2 diff --git a/stty b/stty new file mode 160000 index 0000000000..f59550da80 --- /dev/null +++ b/stty @@ -0,0 +1 @@ +Subproject commit f59550da80c3bd763f1d9782b3b3a06f16826889 diff --git a/sync b/sync new file mode 160000 index 0000000000..a304c2b9dd --- /dev/null +++ b/sync @@ -0,0 +1 @@ +Subproject commit a304c2b9dd922485b980b94fe635b512d9dce9c2 diff --git a/test b/test new file mode 160000 index 0000000000..ceefe27a76 --- /dev/null +++ b/test @@ -0,0 +1 @@ +Subproject commit ceefe27a76f3b2075abbf01b0c44375363967af6 diff --git a/timeout b/timeout new file mode 160000 index 0000000000..f4f5c8986d --- /dev/null +++ b/timeout @@ -0,0 +1 @@ +Subproject commit f4f5c8986d45eb2db27a9a7c1439e60d3f22260c diff --git a/uuidgen b/uuidgen new file mode 160000 index 0000000000..5cdcecb6c2 --- /dev/null +++ b/uuidgen @@ -0,0 +1 @@ +Subproject commit 5cdcecb6c24e931462c92c66ead41a572302b454 -- cgit 0.0.5-2-1-g0f52