diff options
author | midipix <writeonce@midipix.org> | 2015-09-21 23:30:03 -0400 |
---|---|---|
committer | midipix <writeonce@midipix.org> | 2016-11-10 23:35:21 -0500 |
commit | bd5bd5df26c6a82db479a39022b218fd45765be1 (patch) | |
tree | b69ef851b2aac686065d09f2d74ef4c063186348 /sysinfo | |
parent | b59520a939af9869f6a0f84848d2be5c59a64fc1 (diff) | |
download | perk-bd5bd5df26c6a82db479a39022b218fd45765be1.tar.bz2 perk-bd5bd5df26c6a82db479a39022b218fd45765be1.tar.xz |
build system: add support for non-portable host headers.
Diffstat (limited to 'sysinfo')
-rwxr-xr-x | sysinfo/host/host.sh | 82 |
1 files changed, 82 insertions, 0 deletions
diff --git a/sysinfo/host/host.sh b/sysinfo/host/host.sh new file mode 100755 index 0000000..50186e7 --- /dev/null +++ b/sysinfo/host/host.sh @@ -0,0 +1,82 @@ +#!/bin/sh + +error_msg() +{ + echo $@ >&2 +} + +host_test() +{ + mb_hdrdir=$(pwd)/build + mkdir -p $mb_hdrdir || exit 2 + + if [ x"$mb_compiler" = x ]; then + echo "config error: compiler not set." + exit 2 + fi + + "$mb_compiler" -dM -E - < /dev/null > /dev/null && return 0 + + error_msg "config error: invalid compiler." + exit 2 +} + +host_endian_h() +{ + mb_header='endian.h' + rm -f "$mb_hdrdir"/$mb_header + + # portable + "$mb_compiler" $mb_cflags \ + --include=$mb_header -E - < /dev/null > /dev/null 2>/dev/null \ + && return 0 + + # non-portable + mb_hosthdr= + + [ -z $mb_hosthdr ] && "$mb_compiler" $mb_cflags \ + --include='sys/'$mb_header -E - < /dev/null > /dev/null 2>/dev/null \ + && mb_hosthdr='sys/'$mb_header + + [ -z $mb_hosthdr ] && "$mb_compiler" $mb_cflags \ + --include='machine/'$mb_header -E - < /dev/null > /dev/null 2>/dev/null \ + && mb_hosthdr='machine/'$mb_header + + if [ x"$mb_hosthdr" = x ]; then + error_msg "config error: could not find an alternate <$mb_header>." + exit 2 + fi + + printf "#include <%s>\\n" $mb_hosthdr > "$mb_hdrdir"/$mb_header || exit 2 +} + + +# one: args +for arg ; do + case "$arg" in + --help) usage + ;; + --compiler=*) + mb_compiler=${arg#*=} + ;; + --cflags=*) + mb_cflags=${arg#*=} + ;; + *) + error_msg ${arg#}: "unsupported config argument." + exit 2 + ;; + esac +done + + +# two: test +host_test + + +# three: headers +host_endian_h + + +# all done +exit 0 |