1 # Copyright (C) 2012 Modelon AB
\r
3 # This program is free software: you can redistribute it and/or modify
\r
4 # it under the terms of the BSD style license.
\r
6 # This program is distributed in the hope that it will be useful,
\r
7 # but WITHOUT ANY WARRANTY; without even the implied warranty of
\r
8 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
\r
9 # FMILIB_License.txt file for more details.
\r
11 # You should have received a copy of the FMILIB_License.txt file
\r
12 # along with this program. If not, contact Modelon AB <http://www.modelon.com>.
\r
14 if(NOT C99SNPRINTFDIR)
\r
15 set(C99SNPRINTFDIR ${FMILIBRARYHOME}/ThirdParty/c99_snprintf)
\r
16 set(C99SNPRINTF_LIBRARIES c99snprintf)
\r
18 INCLUDE (CheckIncludeFiles)
\r
19 CHECK_INCLUDE_FILES(stdarg.h HAVE_STDARG_H)
\r
20 CHECK_INCLUDE_FILES(stdlib.h HAVE_STDLIB_H)
\r
21 CHECK_INCLUDE_FILES(stddef.h HAVE_STDDEF_H)
22 CHECK_INCLUDE_FILES(stdint.h HAVE_STDINT_H)
23 CHECK_INCLUDE_FILES(stdlib.h HAVE_STDLIB_H)
24 CHECK_INCLUDE_FILES(inttypes.h HAVE_INTTYPES_H)
25 CHECK_INCLUDE_FILES(locale.h HAVE_LOCALE_H)
27 INCLUDE (CheckSymbolExists)
\r
28 INCLUDE (CheckFunctionExists)
\r
29 CHECK_SYMBOL_EXISTS(snprintf stdio.h HAVE_SNPRINTF_SYM)
30 CHECK_SYMBOL_EXISTS(vasprintf stdio.h HAVE_VASPRINTF_SYM)
31 CHECK_SYMBOL_EXISTS(asprintf stdio.h HAVE_ASPRINTF_SYM)
\r
32 CHECK_FUNCTION_EXISTS(snprintf HAVE_SNPRINTF_FCN)
\r
33 CHECK_FUNCTION_EXISTS(vasprintf HAVE_VASPRINTF_FCN)
\r
34 CHECK_FUNCTION_EXISTS(asprintf HAVE_ASPRINTF_FCN)
\r
36 FMIL_EVAL_CONDITION(HAVE_SNPRINTF HAVE_SNPRINTF_SYM OR HAVE_SNPRINTF_FCN)
\r
37 FMIL_EVAL_CONDITION(HAVE_VASPRINTF HAVE_VASPRINTF_SYM OR HAVE_VASPRINTF_FCN)
\r
38 FMIL_EVAL_CONDITION(HAVE_ASPRINTF HAVE_ASPRINTF_SYM OR HAVE_ASPRINTF_FCN)
\r
40 CHECK_FUNCTION_EXISTS(localeconv HAVE_LOCALECONV)
\r
42 INCLUDE (CheckTypeSize)
\r
43 # SET(CMAKE_EXTRA_INCLUDE_FILES header)
\r
44 #CHECK_TYPE_SIZE(type variable)
\r
45 # SET(CMAKE_EXTRA_INCLUDE_FILES)
\r
46 CHECK_TYPE_SIZE("long double" HAVE_LONG_DOUBLE)
\r
47 CHECK_TYPE_SIZE("long long int" HAVE_LONG_LONG_INT)
\r
48 CHECK_TYPE_SIZE("unsigned long long int" HAVE_UNSIGNED_LONG_LONG_INT)
\r
50 SET(CMAKE_EXTRA_INCLUDE_FILES locale.h)
\r
51 CHECK_TYPE_SIZE("struct lconv" LCONV)
\r
52 SET(CMAKE_EXTRA_INCLUDE_FILES)
\r
53 include(CheckStructHasMember)
\r
54 CHECK_STRUCT_HAS_MEMBER ("struct lconv" decimal_point locale.h HAVE_LCONV_DECIMAL_POINT)
\r
55 CHECK_STRUCT_HAS_MEMBER ("struct lconv" thousands_sep locale.h HAVE_LCONV_THOUSANDS_SEP)
\r
56 INCLUDE (CheckSymbolExists)
\r
58 CHECK_TYPE_SIZE(intmax_t HAVE_INTMAX_T)
\r
59 CHECK_TYPE_SIZE(uintmax_t HAVE_UINTMAX_T)
\r
60 CHECK_TYPE_SIZE(uintptr_t HAVE_UINTPTR_T)
\r
61 CHECK_TYPE_SIZE(ptrdiff_t HAVE_PTRDIFF_T)
63 include(CheckSymbolExists)
64 CHECK_SYMBOL_EXISTS(va_copy stdarg.h HAVE_VA_COPY)
65 CHECK_SYMBOL_EXISTS(__va_copy stdarg.h HAVE___VA_COPY)
78 HAVE_LCONV_DECIMAL_POINT
\r
79 HAVE_LCONV_THOUSANDS_SEP
\r
82 HAVE_UNSIGNED_LONG_LONG_INT
\r
90 foreach(check ${CHECKS})
\r
92 set(DEFINES ${DEFINES} -D${check}=${${check}})
\r
96 if(NOT HAVE_VSNPRINTF)
97 set(DEFINES ${DEFINES} -Drpl_vsnprintf=jm_rpl_vsnprintf)
100 if(NOT HAVE_SNPRINTF)
101 set(DEFINES ${DEFINES}
102 -Dsnprintf=jm_rpl_snprintf
103 -Drpl_snprintf=jm_rpl_snprintf)
106 if(NOT HAVE_VASPRINTF)
107 set(DEFINES ${DEFINES}
108 -Dvasprintf=jm_rpl_vasprintf
109 -Drpl_vasprintf=jm_rpl_vasprintf)
112 if(NOT HAVE_ASPRINTF)
113 set(DEFINES ${DEFINES}
114 -Dasprintf=jm_rpl_asprintf
115 -Drpl_asprintf=jm_rpl_asprintf)
118 add_definitions(${DEFINES})
\r
120 file(WRITE ${CMAKE_BINARY_DIR}/c99snprintf_defs "${DEFINES}")
\r
122 add_library(c99snprintf c99-snprintf_1.1/snprintf.c)
\r
125 message("not tested")
\r