# Copyright (C) 2012 Modelon AB # This program is free software: you can redistribute it and/or modify # it under the terms of the BSD style license. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # FMILIB_License.txt file for more details. # You should have received a copy of the FMILIB_License.txt file # along with this program. If not, contact Modelon AB . if(NOT C99SNPRINTFDIR) set(C99SNPRINTFDIR ${FMILIBRARYHOME}/ThirdParty/c99_snprintf) set(C99SNPRINTF_LIBRARIES c99snprintf) INCLUDE (CheckIncludeFiles) CHECK_INCLUDE_FILES(stdarg.h HAVE_STDARG_H) CHECK_INCLUDE_FILES(stdlib.h HAVE_STDLIB_H) CHECK_INCLUDE_FILES(stddef.h HAVE_STDDEF_H) CHECK_INCLUDE_FILES(stdint.h HAVE_STDINT_H) CHECK_INCLUDE_FILES(stdlib.h HAVE_STDLIB_H) CHECK_INCLUDE_FILES(inttypes.h HAVE_INTTYPES_H) CHECK_INCLUDE_FILES(locale.h HAVE_LOCALE_H) INCLUDE (CheckSymbolExists) INCLUDE (CheckFunctionExists) CHECK_SYMBOL_EXISTS(snprintf stdio.h HAVE_SNPRINTF_SYM) CHECK_SYMBOL_EXISTS(vasprintf stdio.h HAVE_VASPRINTF_SYM) CHECK_SYMBOL_EXISTS(asprintf stdio.h HAVE_ASPRINTF_SYM) CHECK_FUNCTION_EXISTS(snprintf HAVE_SNPRINTF_FCN) CHECK_FUNCTION_EXISTS(vasprintf HAVE_VASPRINTF_FCN) CHECK_FUNCTION_EXISTS(asprintf HAVE_ASPRINTF_FCN) FMIL_EVAL_CONDITION(HAVE_SNPRINTF HAVE_SNPRINTF_SYM OR HAVE_SNPRINTF_FCN) FMIL_EVAL_CONDITION(HAVE_VASPRINTF HAVE_VASPRINTF_SYM OR HAVE_VASPRINTF_FCN) FMIL_EVAL_CONDITION(HAVE_ASPRINTF HAVE_ASPRINTF_SYM OR HAVE_ASPRINTF_FCN) CHECK_FUNCTION_EXISTS(localeconv HAVE_LOCALECONV) INCLUDE (CheckTypeSize) # SET(CMAKE_EXTRA_INCLUDE_FILES header) #CHECK_TYPE_SIZE(type variable) # SET(CMAKE_EXTRA_INCLUDE_FILES) CHECK_TYPE_SIZE("long double" HAVE_LONG_DOUBLE) CHECK_TYPE_SIZE("long long int" HAVE_LONG_LONG_INT) CHECK_TYPE_SIZE("unsigned long long int" HAVE_UNSIGNED_LONG_LONG_INT) SET(CMAKE_EXTRA_INCLUDE_FILES locale.h) CHECK_TYPE_SIZE("struct lconv" LCONV) SET(CMAKE_EXTRA_INCLUDE_FILES) include(CheckStructHasMember) CHECK_STRUCT_HAS_MEMBER ("struct lconv" decimal_point locale.h HAVE_LCONV_DECIMAL_POINT) CHECK_STRUCT_HAS_MEMBER ("struct lconv" thousands_sep locale.h HAVE_LCONV_THOUSANDS_SEP) INCLUDE (CheckSymbolExists) CHECK_TYPE_SIZE(intmax_t HAVE_INTMAX_T) CHECK_TYPE_SIZE(uintmax_t HAVE_UINTMAX_T) CHECK_TYPE_SIZE(uintptr_t HAVE_UINTPTR_T) CHECK_TYPE_SIZE(ptrdiff_t HAVE_PTRDIFF_T) include(CheckSymbolExists) CHECK_SYMBOL_EXISTS(va_copy stdarg.h HAVE_VA_COPY) CHECK_SYMBOL_EXISTS(__va_copy stdarg.h HAVE___VA_COPY) set(CHECKS HAVE_SNPRINTF HAVE_VASPRINTF HAVE_ASPRINTF HAVE_STDARG_H HAVE_STDDEF_H HAVE_STDINT_H HAVE_STDLIB_H HAVE_INTTYPES_H HAVE_LOCALE_H HAVE_LOCALECONV HAVE_LCONV_DECIMAL_POINT HAVE_LCONV_THOUSANDS_SEP HAVE_LONG_DOUBLE HAVE_LONG_LONG_INT HAVE_UNSIGNED_LONG_LONG_INT HAVE_INTMAX_T HAVE_UINTMAX_T HAVE_UINTPTR_T HAVE_PTRDIFF_T HAVE_VA_COPY HAVE___VA_COPY) foreach(check ${CHECKS}) if(${${check}}) set(DEFINES ${DEFINES} -D${check}=${${check}}) endif() endforeach() if(NOT HAVE_VSNPRINTF) set(DEFINES ${DEFINES} -Drpl_vsnprintf=jm_rpl_vsnprintf) endif() if(NOT HAVE_SNPRINTF) set(DEFINES ${DEFINES} -Dsnprintf=jm_rpl_snprintf -Drpl_snprintf=jm_rpl_snprintf) endif() if(NOT HAVE_VASPRINTF) set(DEFINES ${DEFINES} -Dvasprintf=jm_rpl_vasprintf -Drpl_vasprintf=jm_rpl_vasprintf) endif() if(NOT HAVE_ASPRINTF) set(DEFINES ${DEFINES} -Dasprintf=jm_rpl_asprintf -Drpl_asprintf=jm_rpl_asprintf) endif() add_definitions(${DEFINES}) file(WRITE ${CMAKE_BINARY_DIR}/c99snprintf_defs "${DEFINES}") add_library(c99snprintf c99-snprintf_1.1/snprintf.c) if(CYGWIN) message("not tested") endif(CYGWIN) endif()