From abbeb0cab2380adf8ffb1f81ef2e88960241a6d3 Mon Sep 17 00:00:00 2001 From: Allen Byrne Date: Tue, 24 Mar 2020 13:21:27 -0500 Subject: TRILAB-24 use CHECK_STRUCT_HAS_MEMBER --- config/cmake_ext_mod/ConfigureChecks.cmake | 22 +++++---- config/cmake_ext_mod/HDFTests.c | 79 ------------------------------ release_docs/RELEASE.txt | 7 +++ 3 files changed, 20 insertions(+), 88 deletions(-) diff --git a/config/cmake_ext_mod/ConfigureChecks.cmake b/config/cmake_ext_mod/ConfigureChecks.cmake index 52cb7dd..33d4d6e 100644 --- a/config/cmake_ext_mod/ConfigureChecks.cmake +++ b/config/cmake_ext_mod/ConfigureChecks.cmake @@ -20,6 +20,7 @@ include (CheckSymbolExists) include (CheckTypeSize) include (CheckVariableExists) include (TestBigEndian) +include (CheckStructHasMember) #----------------------------------------------------------------------------- # APPLE/Darwin setup @@ -328,7 +329,7 @@ if (MINGW OR NOT WINDOWS) CHECK_FUNCTION_EXISTS (fseeko ${HDF_PREFIX}_HAVE_FSEEKO) - HDF_FUNCTION_TEST (HAVE_STAT64_STRUCT) + CHECK_STRUCT_HAS_MEMBER("struct stat64" st_blocks "sys/types.h;sys/stat.h" HAVE_STAT64_STRUCT) if (HAVE_STAT64_STRUCT) CHECK_FUNCTION_EXISTS (stat64 ${HDF_PREFIX}_HAVE_STAT64) endif () @@ -438,14 +439,18 @@ if (MINGW OR NOT WINDOWS) #----------------------------------------------------------------------------- # Check a bunch of time functions #----------------------------------------------------------------------------- + CHECK_STRUCT_HAS_MEMBER("struct tm" tm_gmtoff "time.h" ${HDF_PREFIX}_HAVE_TM_GMTOFF) + CHECK_STRUCT_HAS_MEMBER("struct tm" __tm_gmtoff "time.h" ${HDF_PREFIX}_HAVE___TM_GMTOFF) + CHECK_STRUCT_HAS_MEMBER("struct tm" tm_sec "sys/types.h;sys/time.h;time.h" ${HDF_PREFIX}_TIME_WITH_SYS_TIME) + if (${HDF_PREFIX}_HAVE_SYS_TIME_H) + CHECK_STRUCT_HAS_MEMBER("struct tm" tz_minuteswest "sys/types.h;sys/time.h;time.h" ${HDF_PREFIX}_HAVE_STRUCT_TIMEZONE) + else () + CHECK_STRUCT_HAS_MEMBER("struct tm" tz_minuteswest "sys/types.h;time.h" ${HDF_PREFIX}_HAVE_STRUCT_TIMEZONE) + endif () CHECK_FUNCTION_EXISTS (gettimeofday ${HDF_PREFIX}_HAVE_GETTIMEOFDAY) foreach (time_test - HAVE_TM_GMTOFF - HAVE___TM_GMTOFF # HAVE_TIMEZONE - HAVE_STRUCT_TIMEZONE GETTIMEOFDAY_GIVES_TZ - TIME_WITH_SYS_TIME HAVE_TM_ZONE HAVE_STRUCT_TM_TM_ZONE ) @@ -453,20 +458,19 @@ if (MINGW OR NOT WINDOWS) endforeach () if (NOT CYGWIN AND NOT MINGW) HDF_FUNCTION_TEST (HAVE_TIMEZONE) -# HDF_FUNCTION_TEST (HAVE_STAT_ST_BLOCKS) endif () # ---------------------------------------------------------------------- # Does the struct stat have the st_blocks field? This field is not Posix. # - HDF_FUNCTION_TEST (HAVE_STAT_ST_BLOCKS) + CHECK_STRUCT_HAS_MEMBER("struct stat" st_blocks "sys/types.h;sys/stat.h" ${HDF_PREFIX}_HAVE_STAT_ST_BLOCKS) # ---------------------------------------------------------------------- # How do we figure out the width of a tty in characters? # CHECK_FUNCTION_EXISTS (ioctl ${HDF_PREFIX}_HAVE_IOCTL) - HDF_FUNCTION_TEST (HAVE_STRUCT_VIDEOCONFIG) - HDF_FUNCTION_TEST (HAVE_STRUCT_TEXT_INFO) + CHECK_STRUCT_HAS_MEMBER ("struct videoconfig" numtextcols "" ${HDF_PREFIX}_HAVE_STRUCT_VIDEOCONFIG) + CHECK_STRUCT_HAS_MEMBER ("struct text_info" screenwidth "" ${HDF_PREFIX}_HAVE_STRUCT_TEXT_INFO) CHECK_FUNCTION_EXISTS (_getvideoconfig ${HDF_PREFIX}_HAVE__GETVIDEOCONFIG) CHECK_FUNCTION_EXISTS (gettextinfo ${HDF_PREFIX}_HAVE_GETTEXTINFO) CHECK_FUNCTION_EXISTS (_scrsize ${HDF_PREFIX}_HAVE__SCRSIZE) diff --git a/config/cmake_ext_mod/HDFTests.c b/config/cmake_ext_mod/HDFTests.c index 0b9b530..31a568a 100644 --- a/config/cmake_ext_mod/HDFTests.c +++ b/config/cmake_ext_mod/HDFTests.c @@ -88,25 +88,6 @@ int main(void) } #endif - -#ifdef TIME_WITH_SYS_TIME -/* Time with sys/time test */ - -#include -#include -#include - -int -main () -{ -if ((struct tm *) 0) -return 0; - ; - return 0; -} - -#endif - #ifdef STDC_HEADERS #include #include @@ -162,26 +143,6 @@ main () #endif /* HAVE_FUNCTION */ -#ifdef HAVE_TM_GMTOFF - -#ifdef HAVE_SYS_TIME_H -#include -#endif -#include -SIMPLE_TEST(struct tm tm; tm.tm_gmtoff=0); - -#endif /* HAVE_TM_GMTOFF */ - -#ifdef HAVE___TM_GMTOFF - -#ifdef HAVE_SYS_TIME_H -#include -#endif -#include -SIMPLE_TEST(struct tm tm; tm.__tm_gmtoff=0); - -#endif /* HAVE_TM___GMTOFF */ - #ifdef HAVE_TIMEZONE #ifdef HAVE_SYS_TIME_H @@ -192,24 +153,6 @@ SIMPLE_TEST(timezone=0); #endif /* HAVE_TIMEZONE */ -#ifdef HAVE_STRUCT_TIMEZONE - -#include -#ifdef HAVE_SYS_TIME_H -#include -#endif -#include -SIMPLE_TEST(struct timezone tz; tz.tz_minuteswest=0); - -#endif /* HAVE_STRUCT_TIMEZONE */ - -#ifdef HAVE_STAT_ST_BLOCKS - -#include -SIMPLE_TEST(struct stat sb; sb.st_blocks=0); - -#endif /* HAVE_STAT_ST_BLOCKS */ - #ifdef PRINTF_LL_WIDTH #ifdef HAVE_LONG_LONG @@ -319,16 +262,6 @@ int main() } #endif -#ifdef HAVE_STAT64_STRUCT -#include -#include ], -struct stat64 sb; -int main() -{ - return 0; -} -#endif - #ifdef TEST_DIRECT_VFD_WORKS #include #include @@ -432,18 +365,6 @@ int main () #endif /* HAVE_IOEO */ -#ifdef HAVE_STRUCT_VIDEOCONFIG - -SIMPLE_TEST(struct videoconfig w; w.numtextcols=0); - -#endif /* HAVE_STRUCT_VIDEOCONFIG */ - -#ifdef HAVE_STRUCT_TEXT_INFO - -SIMPLE_TEST(struct text_info w; w.screenwidth=0); - -#endif /* HAVE_STRUCT_TEXT_INFO */ - #if defined( HAVE_INLINE ) || defined( HAVE___INLINE__ ) || defined( HAVE___INLINE ) #ifndef __cplusplus #if defined( HAVE_INLINE ) diff --git a/release_docs/RELEASE.txt b/release_docs/RELEASE.txt index 17987f6..5451e85 100644 --- a/release_docs/RELEASE.txt +++ b/release_docs/RELEASE.txt @@ -48,6 +48,13 @@ New Features Configuration: ------------- + - CMake ConfigureChecks.cmake file now uses CHECK_STRUCT_HAS_MEMBER + + Some handcrafted tests in HDFTests.c has been removed and the CMake + CHECK_STRUCT_HAS_MEMBER module has been used. + + (ADB - 2020/03/24, TRILAB-24) + - Both build systems use same set of warnings flags GNU C warnings flags were moved to files in a config sub-folder -- cgit v0.12