summaryrefslogtreecommitdiff
path: root/project/config
diff options
context:
space:
mode:
Diffstat (limited to 'project/config')
-rw-r--r--project/config/cfgdefs.sh109
1 files changed, 54 insertions, 55 deletions
diff --git a/project/config/cfgdefs.sh b/project/config/cfgdefs.sh
index 81a9912..7738fda 100644
--- a/project/config/cfgdefs.sh
+++ b/project/config/cfgdefs.sh
@@ -10,10 +10,15 @@
# finally, cfgdefs.sh may update the contents of the
# build-time-generated cfgdefs.mk.
+
# cfgdefs helper functions
. "$mb_project_dir/project/config/cfghost.sh"
+# sofort's config test framework
+. "$mb_project_dir/sofort/cfgtest.sh"
+
+
# no custom switches yet
for arg ; do
case "$arg" in
@@ -30,78 +35,72 @@ cfgdefs_set_cfghost_flavors()
cfghost_set_native_cfghost
}
-# cfghost
-cfgdefs_set_cfghost_flavors
-# system tests: target
-mb_cfgdefs_cc=$(make -s -f Makefile.tmp .display-cc)
-mb_cfgdefs_cflags=$(make -s -f Makefile.tmp .display-cflags)
+cfgdefs_perform_target_tests()
+{
+ # init
+ cfgtest_target_section
-printf '\n\n#system tests: target\n' >> $mb_pwd/cfgdefs.mk
+ # headers
+ cfgtest_header_absence 'stropts.h'
-# <stropts.h>
-$mb_cfgdefs_cc $mb_cfgdefs_cflags -E -xc - \
- --include=stropts.h < /dev/null \
- > /dev/null 2>/dev/null || \
- printf 'CFLAGS_CONFIG\t\t+= -DHAVE_NO_STROPTS_H\n' \
- >> $mb_pwd/cfgdefs.mk
+ # openssl
+ mb_cfgtest_headers='openssl/x509.h'
-# openssl 1.1 or newer or a compatible libressl
-printf 'void * addr = &X509_NAME_ENTRY_set;' \
- | $mb_cfgdefs_cc $mb_cfgdefs_cflags \
- --include=openssl/x509.h -S -xc - -o - \
- > /dev/null 2>/dev/null && \
- printf 'CFLAGS_CONFIG\t\t+= -DOPENSSL_VERSION_1_1\n' \
- >> $mb_pwd/cfgdefs.mk
+ cfgtest_interface_presence 'X509_NAME_ENTRY_set' \
+ && cfgtest_cflags_append '-DOPENSSL_VERSION_1_1'
-# ncurses: python refers to the internals of typedef struct _win_st WINDOW
-printf 'CFLAGS_CONFIG\t\t+= -DNCURSES_INTERNALS\n' >> $mb_pwd/cfgdefs.mk
+ # ncurses: python refers to members of typedef struct _win_st WINDOW
+ cfgtest_cflags_append '-DNCURSES_INTERNALS'
-# ncurses: tinfo
-mb_ncurses_libs="-lpanelw -lncursesw"
+ # ncurses libs
+ mb_ncurses_libs='-lpanelw -lncursesw'
+ mb_ncurses_tinfo='-ltinfo'
-if [ $mb_disable_shared = 'yes' ]; then
- printf 'int main(void){return 0;}' \
- | $mb_cfgdefs_cc $mb_cfgdefs_cflags \
- -ltinfo -o a.out -xc - \
- < /dev/null 2>/dev/null \
- && mb_ncurses_libs="$mb_ncurses_libs -ltinfo"
-else
- $mb_cfgdefs_cc $mb_cfgdefs_cflags \
- -shared -ltinfo -o a.out -xc - \
- < /dev/null 2>/dev/null \
- && mb_ncurses_libs="$mb_ncurses_libs -ltinfo"
-fi
+ cfgtest_library_presence $mb_ncurses_tinfo \
+ && mb_ncurses_libs="$mb_ncurses_libs $mb_ncurses_tinfo"
-printf 'LDFLAGS_NCURSES_LIBS\t+= %s\n' "$mb_ncurses_libs" \
- >> $mb_pwd/cfgdefs.mk
+ mb_cfgtest_makevar='LDFLAGS_NCURSES_LIBS'
+ cfgtest_makevar_append $mb_ncurses_libs
+ # pretty cfgdefs.mk
+ cfgtest_newline
+}
-# system tests: (native) pycompile
-printf '\n\n#system tests: (native) pycompile\n' >> $mb_pwd/cfgdefs.mk
-$mb_native_cc -E -xc - \
- --include=stropts.h < /dev/null \
- > /dev/null 2>/dev/null || \
- printf 'PYCOMPILE_CFLAGS\t+= -DHAVE_NO_STROPTS_H\n' \
- >> $mb_pwd/cfgdefs.mk
+cfgdefs_perform_native_tests()
+{
+ # init
+ cfgtest_native_section
-# ncurses: tinfo
-mb_ncurses_libs="-lpanelw -lncursesw"
+ # headers
+ cfgtest_header_absence 'stropts.h'
-printf 'int main(void){return 0;}' \
- | $mb_native_cc \
- -ltinfo -o a.out -xc - \
- < /dev/null 2>/dev/null \
- && mb_ncurses_libs="$mb_ncurses_libs -ltinfo"
+ # ncurses: python refers to members of typedef struct _win_st WINDOW
+ cfgtest_cflags_append '-DNCURSES_INTERNALS'
-printf 'PYCOMPILE_NCURSES_LIBS\t+= %s\n' "$mb_ncurses_libs" \
- >> $mb_pwd/cfgdefs.mk
+ # ncurses libs
+ mb_ncurses_libs='-lpanelw -lncursesw'
+ mb_ncurses_tinfo='-ltinfo'
+ cfgtest_library_presence $mb_ncurses_tinfo \
+ && mb_ncurses_libs="$mb_ncurses_libs $mb_ncurses_tinfo"
+
+ cfgtest_ldflags_append $mb_ncurses_libs
+
+ # pretty cfgdefs.mk
+ cfgtest_newline
+}
+
+
+# cfghost
+cfgdefs_set_cfghost_flavors
-# clean-up
-rm -f a.out
+# target-specific tests
+cfgdefs_perform_target_tests
+# native system tests
+cfgdefs_perform_native_tests
# all done
return 0