Post by Michael JacksonI _think_ there are issues with generating a file that is later used by
CMake. I think. The other issue is that every time you run CMake (by
default) that file is going to be written, then configured by cmake which
will most likely mean a larger recompile than might be necessary.
I don't see the problem here. Most projects just have a one-to-one
relationship between the tests that they perform such as looking for
include files, and the entries in their configuration file.
So if you do a test looking for <sys/types.h> then you would also have an
Yes, this has a large initial "coming up to speed" but once you have it
adding a few more tests is simple and fast.
Thanks for the advice, Progress so far:-
A decenT config.h file is generated as per the instructions you provided.
here is the major parts of it:-
#######################
/*--------------------------------------------------------------------------
* This file is autogenerated from config.h.in
* during the cmake configuration of your project. If you need to make changes
* edit the original file NOT THIS FILE.
* --------------------------------------------------------------------------
*/
#ifndef _CONFIGURATION_HEADER_GUARD_H_
#define _CONFIGURATION_HEADER_GUARD_H_
/* Disable deprecated functions and enums while building */
#define GSL_DISABLE_DEPRECATED 1
/* Define if you have inline with C99 behavior */
#define HAVE_C99_INLINE HAVE_C99_INLINE 0
/* Define to 1 if you have the declaration of `acosh', and to 0 if you don't.
*/
#define HAVE_DECL_ACOSH HAVE_DECL_ACOSH 1
/* Define to 1 if you have the declaration of `asinh', and to 0 if you don't.
*/
#define HAVE_DECL_ASINH HAVE_DECL_ASINH 1
/* Define to 1 if you have the declaration of `atanh', and to 0 if you don't.
*/
#define HAVE_DECL_ATANH HAVE_DECL_ATANH 1
/* Define to 1 if you have the declaration of `expm1', and to 0 if you don't.
*/
#define HAVE_DECL_EXPM1 HAVE_DECL_EXPM1 1
/* Define to 1 if you have the declaration of `feenableexcept', and to 0 if
you don't. */
#define HAVE_DECL_FEENABLEEXCEPT HAVE_DECL_FEENABLEEXCEPT 1
/* Define to 1 if you have the declaration of `fesettrapenable', and to 0 if
you don't. */
#define HAVE_DECL_FESETTRAPENABLE HAVE_DECL_FESETTRAPENABLE 0
/* Define to 1 if you have the declaration of `finite', and to 0 if you don't.
*/
#define HAVE_DECL_FINITE HAVE_DECL_FINITE 1
/* Define to 1 if you have the declaration of `frexp', and to 0 if you don't.
*/
#define HAVE_DECL_FREXP HAVE_DECL_FREXP 1
/* Define to 1 if you have the declaration of `hypot', and to 0 if you don't.
*/
#define HAVE_DECL_HYPOT HAVE_DECL_HYPOT 1
/* Define to 1 if you have the declaration of `isfinite', and to 0 if you
don't. */
#define HAVE_DECL_ISFINITE HAVE_DECL_ISFINITE 1
/* Define to 1 if you have the declaration of `isinf', and to 0 if you don't.
*/
#define HAVE_DECL_ISINF HAVE_DECL_ISINF 1
/* Define to 1 if you have the declaration of `isnan', and to 0 if you don't.
*/
#define HAVE_DECL_ISNAN HAVE_DECL_ISNAN 1
/* Define to 1 if you have the declaration of `ldexp', and to 0 if you don't.
*/
#define HAVE_DECL_LDEXP HAVE_DECL_LDEXP 1
/* Define to 1 if you have the declaration of `log1p', and to 0 if you don't.
*/
#define HAVE_DECL_LOG1P HAVE_DECL_LOG1P 1
/* Define to 1 if you have the <dlfcn.h> header file. */
#define HAVE_DLFCN_H HAVE_DLFCN_H 1
/* Define to 1 if you don't have `vprintf' but do have `_doprnt.' */
#define HAVE_DOPRNT HAVE_DOPRNT 0
/* Defined if you have ansi EXIT_SUCCESS and EXIT_FAILURE in stdlib.h */
#define HAVE_EXIT_SUCCESS_AND_FAILURE HAVE_EXIT_SUCCESS_AND_FAILURE 1
/* Defined on architectures with excess floating-point precision */
#define HAVE_EXTENDED_PRECISION_REGISTERS HAVE_EXTENDED_PRECISION_REGISTERS 1
/* Define if x86 processor has sse extensions. */
#define HAVE_FPU_X86_SSE HAVE_FPU_X86_SSE 1
/* Define to 1 if you have the <ieeefp.h> header file. */
#define HAVE_IEEEFP_H HAVE_IEEEFP_H 0
/* Define this if IEEE comparisons work correctly (e.g. NaN != NaN) */
#define HAVE_IEEE_COMPARISONS HAVE_IEEE_COMPARISONS 1
/* Define this if IEEE denormalized numbers are available */
#define HAVE_IEEE_DENORMALS HAVE_IEEE_DENORMALS 1
/* Define if you have inline */
#define HAVE_INLINE HAVE_INLINE 0
/* Define to 1 if you have the <inttypes.h> header file. */
#define HAVE_INTTYPES_H HAVE_INTTYPES_H 1
/* Define to 1 if you have the `m' library (-lm). */
#define HAVE_LIBM HAVE_LIBM 1
/* Define to 1 if you have the `memcpy' function. */
#define HAVE_MEMCPY HAVE_MEMCPY 1
/* Define to 1 if you have the `memmove' function. */
#define HAVE_MEMMOVE HAVE_MEMMOVE 1
/* Define to 1 if you have the <memory.h> header file. */
#define HAVE_MEMORY_H HAVE_MEMORY_H 1
/* Define this if printf can handle %Lf for long double */
#define HAVE_PRINTF_LONGDOUBLE HAVE_PRINTF_LONGDOUBLE 1
/* Define to 1 if you have the <stdint.h> header file. */
#define HAVE_STDINT_H HAVE_STDINT_H 1
/* Define to 1 if you have the <stdlib.h> header file. */
#define HAVE_STDLIB_H HAVE_STDLIB_H 1
/* Define to 1 if you have the `strdup' function. */
#define HAVE_STRDUP HAVE_STRDUP 1
/* Define to 1 if you have the <strings.h> header file. */
#define HAVE_STRINGS_H HAVE_STRINGS_H 1
/* Define to 1 if you have the <string.h> header file. */
#define HAVE_STRING_H HAVE_STRING_H 1
/* Define to 1 if you have the `strtol' function. */
#define HAVE_STRTOL HAVE_STRTOL 1
/* Define to 1 if you have the `strtoul' function. */
#define HAVE_STRTOUL HAVE_STRTOUL 1
/* Define to 1 if you have the <sys/stat.h> header file. */
#define HAVE_SYS_STAT_H HAVE_SYS_STAT_H 1
/* Define to 1 if you have the <sys/types.h> header file. */
#define HAVE_SYS_TYPES_H HAVE_SYS_TYPES_H 1
/* Define to 1 if you have the <unistd.h> header file. */
#define HAVE_UNISTD_H HAVE_UNISTD_H 1
/* Define to 1 if you have the `vprintf' function. */
#define HAVE_VPRINTF HAVE_VPRINTF 1
/* Define if you need to hide the static definitions of inline functions */
#define HIDE_INLINE_STATIC HIDE_INLINE_STATIC 0
/* Define to the sub-directory in which libtool stores uninstalled libraries.
*/
#define LT_OBJDIR LT_OBJDIR 0
/* Define to 1 if you have the ANSI C header files. */
#define STDC_HEADERS 1
-------
-------
/* Define to 1 if type `char' is unsigned and you are not using gcc. */
#ifndef __CHAR_UNSIGNED__
# undef __CHAR_UNSIGNED__
#endif
/* Define to `__inline__' or `__inline' if that's what the C compiler
calls it, or to nothing if 'inline' is not supported under any name. */
#ifndef __cplusplus
#define inline 0
#endif
/* Define to `unsigned int' if <sys/types.h> does not define. */
#define size_t 0
/* Define to empty if the keyword `volatile' does not work. Warning: valid
code using `volatile' can become incorrect without. Disable with care. */
#define volatile 0
/* Define one of these if you have a known IEEE arithmetic interface */
------
------
#define HAVE_GNUX86_IEEE_INTERFACE HAVE_GNUX86_IEEE_INTERFACE 1
--------
#if HAVE_EXTENDED_PRECISION_REGISTERS
#define GSL_COERCE_DBL(x) (gsl_coerce_double(x))
#else
#define GSL_COERCE_DBL(x) (x)
#endif
------
-----
#endif
################################
the bad news is there is a troublesome section (the last shown) therein
leading to cmake errors shown below:-
----------- snippet from the cmake output
~TESTS/gsl-1.14/sys/minmax.c
In file included from ~/sys/minmax.c:20:
~/build/config.h:16:1: warning: "HAVE_DECL_ACOSH" redefined
<command-line>: warning: this is the location of the previous definition
~/build/config.h:20:1: warning: "HAVE_DECL_ASINH" redefined
<command-line>: warning: this is the location of the previous definition
~/build/config.h:24:1: warning: "HAVE_DECL_ATANH" redefined
<command-line>: warning: this is the location of the previous definition
~/build/config.h:28:1: warning: "HAVE_DECL_EXPM1" redefined
<command-line>: warning: this is the location of the previous definition
~/build/config.h:32:1: warning: "HAVE_DECL_FEENABLEEXCEPT" redefined
<command-line>: warning: this is the location of the previous definition
~/build/config.h:48:1: warning: "HAVE_DECL_HYPOT" redefined
<command-line>: warning: this is the location of the previous definition
~/build/config.h:52:1: warning: "HAVE_DECL_ISFINITE" redefined
<command-line>: warning: this is the location of the previous definition
~/build/config.h:68:1: warning: "HAVE_DECL_LOG1P" redefined
<command-line>: warning: this is the location of the previous definition
~/build/config.h:77:1: warning: "HAVE_EXIT_SUCCESS_AND_FAILURE" redefined
<command-line>: warning: this is the location of the previous definition
~/build/config.h:89:1: warning: "HAVE_IEEE_COMPARISONS" redefined
<command-line>: warning: this is the location of the previous definition
~/build/config.h:92:1: warning: "HAVE_IEEE_DENORMALS" redefined
<command-line>: warning: this is the location of the previous definition
~/build/config.h:113:1: warning: "HAVE_PRINTF_LONGDOUBLE" redefined
<command-line>: warning: this is the location of the previous definition
~/build/config.h:200:1: warning: "inline" redefined
<command-line>: warning: this is the location of the previous definition
~/build/config.h:245:5: error: missing binary operator before token "1"
############
line 245 is this line
#if HAVE_EXTENDED_PRECISION_REGISTERS
Si I am perplexed where this '1' came from or indeed which '1' is being
referred to
advice would be appreciaed.
sincerely
luxInteg