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