[CMake] cmake config.h

luxInteg lux-integ at btconnect.com
Sat Jan 29 15:02:18 EST 2011


On Wednesday 26 January 2011 19:07:57 Michael Jackson wrote:
> I _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
> entry in your config.h.in file like this:
> 
> #cmakedefine01 HAVE_SYSTYPES_H  @HAVE_SYSTYPES_H@
> 
> 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


More information about the CMake mailing list