From 2f49aa1268d6119e73a4d133c3395b25b81a1164 Mon Sep 17 00:00:00 2001
From: midipix <writeonce@midipix.org>
Date: Tue, 25 Dec 2018 02:08:48 -0500
Subject: sofort: cfgtest: test-framework files now reside under the cfgtest
 subdir.

---
 project/config/cfgdefs.sh |   2 +-
 sofort/cfgtest.sh         | 332 ----------------------------------------------
 sofort/cfgtest/cfgtest.sh | 332 ++++++++++++++++++++++++++++++++++++++++++++++
 3 files changed, 333 insertions(+), 333 deletions(-)
 delete mode 100644 sofort/cfgtest.sh
 create mode 100644 sofort/cfgtest/cfgtest.sh

diff --git a/project/config/cfgdefs.sh b/project/config/cfgdefs.sh
index e976ee6..f275ea1 100644
--- a/project/config/cfgdefs.sh
+++ b/project/config/cfgdefs.sh
@@ -16,7 +16,7 @@
 
 
 # sofort's config test framework
-. "$mb_project_dir/sofort/cfgtest.sh"
+. "$mb_project_dir/sofort/cfgtest/cfgtest.sh"
 
 
 for arg ; do
diff --git a/sofort/cfgtest.sh b/sofort/cfgtest.sh
deleted file mode 100644
index b8821bb..0000000
--- a/sofort/cfgtest.sh
+++ /dev/null
@@ -1,332 +0,0 @@
-# cfgtest.sh: sofort's config test framework,
-# for use from within a project's custom cfgdefs.sh.
-
-# in the common scenario, target-specific tests are preceded
-# by a single invocation of cfgtest_target_section, whereas
-# native (build) system tests are preceded by the invocation
-# of cfgtest_native_section.
-
-# cfgdefs fraework variables:
-# mb_cfgtest_cc:      the compiler used for the current test
-# mb_cfgtest_cflags:  the compiler flags used for the current test
-# mb_cfgtest_cfgtype: the type of the current test (target/native)
-# mb_cfgtest_makevar: the make variable affected by the current test
-# mb_cfgtest_headers: headers for ad-hoc inclusion with the current test
-
-
-cfgtest_newline()
-{
-	printf '\n' >> $mb_pwd/cfgdefs.mk
-}
-
-
-cfgtest_comment()
-{
-	mb_internal_str='#'
-
-	for mb_internal_arg ; do
-		mb_internal_str="$mb_internal_str $mb_internal_arg"
-	done
-
-	printf '%s\n' "$mb_internal_str" >> $mb_pwd/cfgdefs.mk
-}
-
-
-cfgtest_target_section()
-{
-	mb_cfgtest_cc=$(make -s -f "$mb_pwd/Makefile.tmp" .display-cc)
-	mb_cfgtest_cflags=$(make -s -f "$mb_pwd/Makefile.tmp" .display-cflags)
-	mb_cfgtest_cfgtype='target'
-
-	cfgtest_comment 'target-specific tests'
-}
-
-
-cfgtest_native_section()
-{
-	mb_cfgtest_cc="$mb_native_cc"
-	mb_cfgtest_cflags="$mb_native_cc_cflags"
-	mb_cfgtest_cfgtype='native'
-
-	cfgtest_comment 'native system tests'
-}
-
-
-cfgtest_makevar_append()
-{
-	mb_internal_str='+='
-
-	for mb_internal_arg ; do
-		if ! [ -z "$mb_internal_arg" ]; then
-			mb_internal_str="$mb_internal_str $mb_internal_arg"
-		fi
-	done
-
-	printf '%-24s%s\n' "$mb_cfgtest_makevar" "$mb_internal_str" \
-		>> $mb_pwd/cfgdefs.mk
-
-	unset cfgtest_internal_unit_test
-}
-
-
-cfgtest_cflags_append()
-{
-	if [ $mb_cfgtest_cfgtype = 'target' ]; then
-		mb_internal_makevar='CFLAGS_CONFIG'
-	else
-		mb_internal_makevar='NATIVE_CC_CFLAGS'
-	fi
-
-	mb_cfgtest_makevar_saved=$mb_cfgtest_makevar
-	mb_cfgtest_makevar=$mb_internal_makevar
-
-	cfgtest_makevar_append "$@"
-	mb_cfgtest_makevar=$mb_cfgtest_makevar_saved
-}
-
-
-cfgtest_ldflags_append()
-{
-	if [ $mb_cfgtest_cfgtype = 'target' ]; then
-		mb_internal_makevar='LDFLAGS_CONFIG'
-	else
-		mb_internal_makevar='NATIVE_CC_LDFLAGS'
-	fi
-
-	mb_cfgtest_makevar_saved=$mb_cfgtest_makevar
-	mb_cfgtest_makevar=$mb_internal_makevar
-
-	cfgtest_makevar_append "$@"
-	mb_cfgtest_makevar=$mb_cfgtest_makevar_saved
-}
-
-
-cfgtest_header_presence()
-{
-	$mb_cfgtest_cc -E -xc -             \
-			$mb_cfgtest_cflags  \
-			--include="$@"      \
-		< /dev/null                 \
-		> /dev/null 2>/dev/null     \
-	|| return
-
-	mb_internal_str=$(printf '%s%s' '-DHAVE_' "$@"    \
-			| sed -e 's/\./_/g' -e 's@/@_@g'  \
-			| tr "[:lower:]" "[:upper:]")
-
-	if [ -z ${cfgtest_internal_unit_test:-} ]; then
-		cfgtest_cflags_append "$mb_internal_str"
-	else
-		cfgtest_makevar_append "$mb_internal_str"
-	fi
-}
-
-
-cfgtest_header_absence()
-{
-	$mb_cfgtest_cc -E -xc -             \
-			$mb_cfgtest_cflags  \
-			--include="$@"      \
-		< /dev/null                 \
-		> /dev/null 2>/dev/null     \
-	&& return
-
-	mb_internal_str=$(printf '%s%s' '-DHAVE_NO_' "$@" \
-			| sed -e 's/\./_/g' -e 's@/@_@g'  \
-			| tr "[:lower:]" "[:upper:]")
-
-	if [ -z ${cfgtest_internal_unit_test:-} ]; then
-		cfgtest_cflags_append "$mb_internal_str"
-	else
-		cfgtest_makevar_append "$mb_internal_str"
-	fi
-}
-
-
-cfgtest_interface_presence()
-{
-	mb_internal_cflags=''
-
-	for mb_header in $mb_cfgtest_headers; do
-		mb_internal_cflags="$mb_internal_cflags --include=$mb_header"
-	done
-
-	printf 'void * addr = &%s;' "$@"                  \
-			| $mb_cfgtest_cc -S -xc - -o -    \
-			  $mb_cfgtest_cflags              \
-			  $mb_internal_cflags             \
-                > /dev/null 2>/dev/null                   \
-	|| return 1
-
-	mb_internal_str=$(printf '%s%s' '-DHAVE_' "$@"  \
-			| sed -e 's/\./_/g'             \
-			| tr "[:lower:]" "[:upper:]")
-
-	if [ -z ${cfgtest_internal_unit_test:-} ]; then
-		cfgtest_cflags_append "$mb_internal_str"
-	else
-		cfgtest_makevar_append "$mb_internal_str"
-	fi
-
-	return 0
-}
-
-
-cfgtest_decl_presence()
-{
-	mb_internal_cflags=''
-
-	for mb_header in $mb_cfgtest_headers; do
-		mb_internal_cflags="$mb_internal_cflags --include=$mb_header"
-	done
-
-	printf 'void * any = (void *)%s;' "$@"            \
-			| $mb_cfgtest_cc -S -xc - -o -    \
-			  $mb_cfgtest_cflags              \
-			  $mb_internal_cflags             \
-                > /dev/null 2>/dev/null                   \
-	|| return 1
-
-	# does the argument solely consist of the macro or enum member name?
-	mb_internal_str=$(printf '%s' "$@" | tr -d '[a-z][A-Z][0-9][_]')
-
-	if [ -n "$mb_internal_str" ]; then
-		return 0
-	fi
-
-	mb_internal_str=$(printf '%s%s' '-DHAVE_DECL_' "$@"  \
-			| sed -e 's/\./_/g'                  \
-			| tr "[:lower:]" "[:upper:]")
-
-	if [ -z ${cfgtest_internal_unit_test:-} ]; then
-		cfgtest_cflags_append "$mb_internal_str"
-	else
-		cfgtest_makevar_append "$mb_internal_str"
-	fi
-
-	return 0
-}
-
-
-cfgtest_type_size()
-{
-	mb_internal_cflags=''
-	mb_internal_size=''
-	mb_internal_test='char x[(sizeof(%s) == %s) ? 1 : -1];'
-
-	for mb_header in $mb_cfgtest_headers; do
-		mb_internal_cflags="$mb_internal_cflags --include=$mb_header"
-	done
-
-	for mb_internal_guess in 8 4 2 1 16 32 64 128; do
-		if [ -z $mb_internal_size ]; then
-			mb_internal_type="$@"
-
-			mb_internal_str=$(printf "$mb_internal_test"    \
-				"$mb_internal_type"                     \
-				"$mb_internal_guess")
-
-			printf '%s' "$mb_internal_str"                  \
-					| $mb_cfgtest_cc -S -xc - -o -  \
-					  $mb_cfgtest_cflags            \
-					  $mb_internal_cflags           \
-				> /dev/null 2>/dev/null                 \
-			&& mb_internal_size=$mb_internal_guess
-		fi
-	done
-
-	# unrecognized type, or type size not within range
-	if [ -z $mb_internal_size ]; then
-		return 1
-	fi
-
-	# -DSIZEOF_TYPE=SIZE
-	mb_internal_str=$(printf '%s%s=%s' '-DSIZEOF_'        \
-				"$mb_internal_type"           \
-				"$mb_internal_size"           \
-			| sed -e 's/\ /_/g' -e 's/*/P/g'      \
-			| tr "[:lower:]" "[:upper:]")
-
-	if [ -z ${cfgtest_internal_unit_test:-} ]; then
-		cfgtest_cflags_append "$mb_internal_str"
-	else
-		cfgtest_makevar_append "$mb_internal_str"
-	fi
-
-	return 0
-}
-
-
-cfgtest_code_snippet()
-{
-	mb_internal_cflags=''
-	mb_internal_test="$@"
-
-	for mb_header in $mb_cfgtest_headers; do
-		mb_internal_cflags="$mb_internal_cflags --include=$mb_header"
-	done
-
-	printf '%s' "$mb_internal_test"                 \
-			| $mb_cfgtest_cc -S -xc - -o -  \
-			  $mb_cfgtest_cflags            \
-			  $mb_internal_cflags           \
-		> /dev/null 2>/dev/null                 \
-	|| return 1
-
-	return 0
-}
-
-
-cfgtest_library_presence()
-{
-	printf 'int main(void){return 0;}'                \
-			| $mb_cfgtest_cc -o a.out -xc -   \
-			  $mb_cfgtest_cflags              \
-			  $@                              \
-                > /dev/null 2>/dev/null                   \
-	|| return 1
-
-	rm -f a.out
-
-	return 0
-}
-
-
-cfgtest_unit_header_presence()
-{
-	cfgtest_internal_unit_test='unit_test'
-	cfgtest_header_presence "$@" || return 1
-	return 0
-}
-
-
-cfgtest_unit_header_absence()
-{
-	cfgtest_internal_unit_test='unit_test'
-	cfgtest_header_absence "$@" || return 1
-	return 0
-}
-
-
-cfgtest_unit_interface_presence()
-{
-	cfgtest_internal_unit_test='unit_test'
-	cfgtest_interface_presence "$@" || return 1
-	return 0
-}
-
-
-cfgtest_unit_decl_presence()
-{
-	cfgtest_internal_unit_test='unit_test'
-	cfgtest_decl_presence "$@" || return 1
-	return 0
-}
-
-
-cfgtest_unit_type_size()
-{
-	cfgtest_internal_unit_test='unit_test'
-	cfgtest_type_size "$@" || return 1
-	return 0
-}
diff --git a/sofort/cfgtest/cfgtest.sh b/sofort/cfgtest/cfgtest.sh
new file mode 100644
index 0000000..b8821bb
--- /dev/null
+++ b/sofort/cfgtest/cfgtest.sh
@@ -0,0 +1,332 @@
+# cfgtest.sh: sofort's config test framework,
+# for use from within a project's custom cfgdefs.sh.
+
+# in the common scenario, target-specific tests are preceded
+# by a single invocation of cfgtest_target_section, whereas
+# native (build) system tests are preceded by the invocation
+# of cfgtest_native_section.
+
+# cfgdefs fraework variables:
+# mb_cfgtest_cc:      the compiler used for the current test
+# mb_cfgtest_cflags:  the compiler flags used for the current test
+# mb_cfgtest_cfgtype: the type of the current test (target/native)
+# mb_cfgtest_makevar: the make variable affected by the current test
+# mb_cfgtest_headers: headers for ad-hoc inclusion with the current test
+
+
+cfgtest_newline()
+{
+	printf '\n' >> $mb_pwd/cfgdefs.mk
+}
+
+
+cfgtest_comment()
+{
+	mb_internal_str='#'
+
+	for mb_internal_arg ; do
+		mb_internal_str="$mb_internal_str $mb_internal_arg"
+	done
+
+	printf '%s\n' "$mb_internal_str" >> $mb_pwd/cfgdefs.mk
+}
+
+
+cfgtest_target_section()
+{
+	mb_cfgtest_cc=$(make -s -f "$mb_pwd/Makefile.tmp" .display-cc)
+	mb_cfgtest_cflags=$(make -s -f "$mb_pwd/Makefile.tmp" .display-cflags)
+	mb_cfgtest_cfgtype='target'
+
+	cfgtest_comment 'target-specific tests'
+}
+
+
+cfgtest_native_section()
+{
+	mb_cfgtest_cc="$mb_native_cc"
+	mb_cfgtest_cflags="$mb_native_cc_cflags"
+	mb_cfgtest_cfgtype='native'
+
+	cfgtest_comment 'native system tests'
+}
+
+
+cfgtest_makevar_append()
+{
+	mb_internal_str='+='
+
+	for mb_internal_arg ; do
+		if ! [ -z "$mb_internal_arg" ]; then
+			mb_internal_str="$mb_internal_str $mb_internal_arg"
+		fi
+	done
+
+	printf '%-24s%s\n' "$mb_cfgtest_makevar" "$mb_internal_str" \
+		>> $mb_pwd/cfgdefs.mk
+
+	unset cfgtest_internal_unit_test
+}
+
+
+cfgtest_cflags_append()
+{
+	if [ $mb_cfgtest_cfgtype = 'target' ]; then
+		mb_internal_makevar='CFLAGS_CONFIG'
+	else
+		mb_internal_makevar='NATIVE_CC_CFLAGS'
+	fi
+
+	mb_cfgtest_makevar_saved=$mb_cfgtest_makevar
+	mb_cfgtest_makevar=$mb_internal_makevar
+
+	cfgtest_makevar_append "$@"
+	mb_cfgtest_makevar=$mb_cfgtest_makevar_saved
+}
+
+
+cfgtest_ldflags_append()
+{
+	if [ $mb_cfgtest_cfgtype = 'target' ]; then
+		mb_internal_makevar='LDFLAGS_CONFIG'
+	else
+		mb_internal_makevar='NATIVE_CC_LDFLAGS'
+	fi
+
+	mb_cfgtest_makevar_saved=$mb_cfgtest_makevar
+	mb_cfgtest_makevar=$mb_internal_makevar
+
+	cfgtest_makevar_append "$@"
+	mb_cfgtest_makevar=$mb_cfgtest_makevar_saved
+}
+
+
+cfgtest_header_presence()
+{
+	$mb_cfgtest_cc -E -xc -             \
+			$mb_cfgtest_cflags  \
+			--include="$@"      \
+		< /dev/null                 \
+		> /dev/null 2>/dev/null     \
+	|| return
+
+	mb_internal_str=$(printf '%s%s' '-DHAVE_' "$@"    \
+			| sed -e 's/\./_/g' -e 's@/@_@g'  \
+			| tr "[:lower:]" "[:upper:]")
+
+	if [ -z ${cfgtest_internal_unit_test:-} ]; then
+		cfgtest_cflags_append "$mb_internal_str"
+	else
+		cfgtest_makevar_append "$mb_internal_str"
+	fi
+}
+
+
+cfgtest_header_absence()
+{
+	$mb_cfgtest_cc -E -xc -             \
+			$mb_cfgtest_cflags  \
+			--include="$@"      \
+		< /dev/null                 \
+		> /dev/null 2>/dev/null     \
+	&& return
+
+	mb_internal_str=$(printf '%s%s' '-DHAVE_NO_' "$@" \
+			| sed -e 's/\./_/g' -e 's@/@_@g'  \
+			| tr "[:lower:]" "[:upper:]")
+
+	if [ -z ${cfgtest_internal_unit_test:-} ]; then
+		cfgtest_cflags_append "$mb_internal_str"
+	else
+		cfgtest_makevar_append "$mb_internal_str"
+	fi
+}
+
+
+cfgtest_interface_presence()
+{
+	mb_internal_cflags=''
+
+	for mb_header in $mb_cfgtest_headers; do
+		mb_internal_cflags="$mb_internal_cflags --include=$mb_header"
+	done
+
+	printf 'void * addr = &%s;' "$@"                  \
+			| $mb_cfgtest_cc -S -xc - -o -    \
+			  $mb_cfgtest_cflags              \
+			  $mb_internal_cflags             \
+                > /dev/null 2>/dev/null                   \
+	|| return 1
+
+	mb_internal_str=$(printf '%s%s' '-DHAVE_' "$@"  \
+			| sed -e 's/\./_/g'             \
+			| tr "[:lower:]" "[:upper:]")
+
+	if [ -z ${cfgtest_internal_unit_test:-} ]; then
+		cfgtest_cflags_append "$mb_internal_str"
+	else
+		cfgtest_makevar_append "$mb_internal_str"
+	fi
+
+	return 0
+}
+
+
+cfgtest_decl_presence()
+{
+	mb_internal_cflags=''
+
+	for mb_header in $mb_cfgtest_headers; do
+		mb_internal_cflags="$mb_internal_cflags --include=$mb_header"
+	done
+
+	printf 'void * any = (void *)%s;' "$@"            \
+			| $mb_cfgtest_cc -S -xc - -o -    \
+			  $mb_cfgtest_cflags              \
+			  $mb_internal_cflags             \
+                > /dev/null 2>/dev/null                   \
+	|| return 1
+
+	# does the argument solely consist of the macro or enum member name?
+	mb_internal_str=$(printf '%s' "$@" | tr -d '[a-z][A-Z][0-9][_]')
+
+	if [ -n "$mb_internal_str" ]; then
+		return 0
+	fi
+
+	mb_internal_str=$(printf '%s%s' '-DHAVE_DECL_' "$@"  \
+			| sed -e 's/\./_/g'                  \
+			| tr "[:lower:]" "[:upper:]")
+
+	if [ -z ${cfgtest_internal_unit_test:-} ]; then
+		cfgtest_cflags_append "$mb_internal_str"
+	else
+		cfgtest_makevar_append "$mb_internal_str"
+	fi
+
+	return 0
+}
+
+
+cfgtest_type_size()
+{
+	mb_internal_cflags=''
+	mb_internal_size=''
+	mb_internal_test='char x[(sizeof(%s) == %s) ? 1 : -1];'
+
+	for mb_header in $mb_cfgtest_headers; do
+		mb_internal_cflags="$mb_internal_cflags --include=$mb_header"
+	done
+
+	for mb_internal_guess in 8 4 2 1 16 32 64 128; do
+		if [ -z $mb_internal_size ]; then
+			mb_internal_type="$@"
+
+			mb_internal_str=$(printf "$mb_internal_test"    \
+				"$mb_internal_type"                     \
+				"$mb_internal_guess")
+
+			printf '%s' "$mb_internal_str"                  \
+					| $mb_cfgtest_cc -S -xc - -o -  \
+					  $mb_cfgtest_cflags            \
+					  $mb_internal_cflags           \
+				> /dev/null 2>/dev/null                 \
+			&& mb_internal_size=$mb_internal_guess
+		fi
+	done
+
+	# unrecognized type, or type size not within range
+	if [ -z $mb_internal_size ]; then
+		return 1
+	fi
+
+	# -DSIZEOF_TYPE=SIZE
+	mb_internal_str=$(printf '%s%s=%s' '-DSIZEOF_'        \
+				"$mb_internal_type"           \
+				"$mb_internal_size"           \
+			| sed -e 's/\ /_/g' -e 's/*/P/g'      \
+			| tr "[:lower:]" "[:upper:]")
+
+	if [ -z ${cfgtest_internal_unit_test:-} ]; then
+		cfgtest_cflags_append "$mb_internal_str"
+	else
+		cfgtest_makevar_append "$mb_internal_str"
+	fi
+
+	return 0
+}
+
+
+cfgtest_code_snippet()
+{
+	mb_internal_cflags=''
+	mb_internal_test="$@"
+
+	for mb_header in $mb_cfgtest_headers; do
+		mb_internal_cflags="$mb_internal_cflags --include=$mb_header"
+	done
+
+	printf '%s' "$mb_internal_test"                 \
+			| $mb_cfgtest_cc -S -xc - -o -  \
+			  $mb_cfgtest_cflags            \
+			  $mb_internal_cflags           \
+		> /dev/null 2>/dev/null                 \
+	|| return 1
+
+	return 0
+}
+
+
+cfgtest_library_presence()
+{
+	printf 'int main(void){return 0;}'                \
+			| $mb_cfgtest_cc -o a.out -xc -   \
+			  $mb_cfgtest_cflags              \
+			  $@                              \
+                > /dev/null 2>/dev/null                   \
+	|| return 1
+
+	rm -f a.out
+
+	return 0
+}
+
+
+cfgtest_unit_header_presence()
+{
+	cfgtest_internal_unit_test='unit_test'
+	cfgtest_header_presence "$@" || return 1
+	return 0
+}
+
+
+cfgtest_unit_header_absence()
+{
+	cfgtest_internal_unit_test='unit_test'
+	cfgtest_header_absence "$@" || return 1
+	return 0
+}
+
+
+cfgtest_unit_interface_presence()
+{
+	cfgtest_internal_unit_test='unit_test'
+	cfgtest_interface_presence "$@" || return 1
+	return 0
+}
+
+
+cfgtest_unit_decl_presence()
+{
+	cfgtest_internal_unit_test='unit_test'
+	cfgtest_decl_presence "$@" || return 1
+	return 0
+}
+
+
+cfgtest_unit_type_size()
+{
+	cfgtest_internal_unit_test='unit_test'
+	cfgtest_type_size "$@" || return 1
+	return 0
+}
-- 
cgit v1.2.3