string(REGEX REPLACE ".*\\\"([^\\\"]*)\\\".*" "\\1" GIT_HEAD_ID "${GITVERSION_H}")
elseif ()
# Unknown revision
+ # TODO: We could look for a .git and get the revision from HEAD
set(GIT_HEAD_ID "UNKNOWN")
endif ()
# Determine compiler characteristics
include(CheckCSourceCompiles)
+# Like check_c_source_compiles, but sets the result to either
+# 0 (error while compiling) or 1 (compiled successfully)
+# Required for compatibility with autotool's AC_CHECK_DECLS
+function (check_c_source_compiles_numeric _prog _var)
+ check_c_source_compiles("${_prog}" "${_var}")
+ if ("${${_var}}")
+ set("${_var}" 1 PARENT_SCOPE)
+ else ()
+ set("${_var}" 0 PARENT_SCOPE)
+ endif ()
+endfunction ()
+
+
check_c_source_compiles("
int func(void) __attribute__((__warn_unused_result__));
int main() { return 0; }
endif ()
check_c_source_compiles("
+ static void foo(void) __attribute__ ((unused));
+ int main() { return 0; }
+ " HAVE___ATTRIBUTE__)
+
+
+check_c_source_compiles_numeric("
#include <strings.h>
int main() { ffs(0); return 0; }
" HAVE_DECL_FFS)
-if (NOT HAVE_DECL_FFS)
- set(HAVE_DECL_FFS 0)
-endif ()
-check_c_source_compiles("
+check_c_source_compiles_numeric("
int main() { __builtin_ffs(0); return 0; }
" HAVE_DECL___BUILTIN_FFS)
-if (NOT HAVE_DECL___BUILTIN_FFS)
- set(HAVE_DECL___BUILTIN_FFS 0)
+
+check_c_source_compiles_numeric("
+ #include <intrin.h>
+ int main() { _BitScanForward(NULL, 0); return 0; }
+ " HAVE_DECL__BITSCANFORWARD)
+
+if (NOT HAVE_DECL_FFS AND
+ NOT HAVE_DECL___BUILTIN_FFS AND
+ NOT HAVE_DECL__BITSCANFORWARD)
+ message(FATAL_ERROR "No ffs implementation found")
endif ()
-check_c_source_compiles("
- static void foo(void) __attribute__ ((unused));
- int main() { return 0; }
- " HAVE___ATTRIBUTE__)
+
+check_c_source_compiles_numeric("
+ #include <strings.h>
+ int main() { strcasecmp(\"\", \"\"); return 0; }
+ " HAVE_DECL_STRCASECMP)
+
+check_c_source_compiles_numeric("
+ #include <string.h>
+ int main() { _stricmp(\"\", \"\"); return 0; }
+ " HAVE_DECL__STRICMP)
+
+if (NOT HAVE_DECL_STRCASECMP AND NOT HAVE_DECL__STRICMP)
+ message(FATAL_ERROR "No strcasecmp implementation found")
+endif ()
+
+
+check_c_source_compiles_numeric("
+ #include <strings.h>
+ int main() { strncasecmp(\"\", \"\", 0); return 0; }
+ " HAVE_DECL_STRNCASECMP)
+
+check_c_source_compiles_numeric("
+ #include <string.h>
+ int main() { _strnicmp(\"\", \"\", 0); return 0; }
+ " HAVE_DECL__STRNICMP)
+
+if (NOT HAVE_DECL_STRNCASECMP AND NOT HAVE_DECL__STRNICMP)
+ message(FATAL_ERROR "No strncasecmp implementation found")
+endif ()
+
+
+check_c_source_compiles_numeric("
+ #include <stdio.h>
+ int main() { snprintf((void*)0, 0, \"\"); return 0; }
+ " HAVE_DECL_SNPRINTF)
+
+check_c_source_compiles_numeric("
+ #include <stdio.h>
+ int main() { _snprintf((void*)0, 0, \"\"); return 0; }
+ " HAVE_DECL__SNPRINTF)
+
+if (NOT HAVE_DECL_SNPRINTF AND NOT HAVE_DECL__SNPRINTF)
+ message(FATAL_ERROR "No snprintf implementation found")
+endif ()
# Write configure result
configure_file("External/gitversion.h.cmake" "${ISL_BINARY_DIR}/gitversion.h")
configure_file("External/isl_config.h.cmake" "${ISL_BINARY_DIR}/isl_config.h")
-file(WRITE "${ISL_BINARY_DIR}/include/isl/stdint.h" "#include <stdint.h>")
# ISL files to compile
set (ISL_FILES
External/isl/isl_equalities.c
External/isl/isl_factorization.c
External/isl/isl_farkas.c
+ External/isl/isl_ffs.c
External/isl/isl_flow.c
External/isl/isl_fold.c
External/isl/isl_hash.c
+/* define if your compiler has __attribute__ */
+#cmakedefine HAVE___ATTRIBUTE__ /**/
-/* most gcc compilers know a function __attribute__((__warn_unused_result__))
- */
+/* most gcc compilers know a function __attribute__((__warn_unused_result__)) */
#define GCC_WARN_UNUSED_RESULT @GCC_WARN_UNUSED_RESULT@
+
/* Define to 1 if you have the declaration of `ffs', and to 0 if you don't. */
#define HAVE_DECL_FFS @HAVE_DECL_FFS@
don't. */
#define HAVE_DECL___BUILTIN_FFS @HAVE_DECL___BUILTIN_FFS@
-/* define if your compiler has __attribute__ */
-#cmakedefine HAVE___ATTRIBUTE__ /**/
+/* Define to 1 if you have the declaration of `_BitScanForward', and to 0 if
+ you don't. */
+#define HAVE_DECL__BITSCANFORWARD @HAVE_DECL__BITSCANFORWARD@
+
+
+/* Define to 1 if you have the declaration of `strcasecmp', and to 0 if you
+ don't. */
+#define HAVE_DECL_STRCASECMP @HAVE_DECL_STRCASECMP@
+
+/* Define to 1 if you have the declaration of `_stricmp', and to 0 if you
+ don't. */
+#define HAVE_DECL__STRICMP @HAVE_DECL__STRICMP@
+
+
+/* Define to 1 if you have the declaration of `strncasecmp', and to 0 if you
+ don't. */
+#define HAVE_DECL_STRNCASECMP @HAVE_DECL_STRNCASECMP@
+
+/* Define to 1 if you have the declaration of `_strnicmp', and to 0 if you
+ don't. */
+#define HAVE_DECL__STRNICMP @HAVE_DECL__STRNICMP@
+
+
+/* Define to 1 if you have the declaration of `snprintf', and to 0 if you
+ don't. */
+#define HAVE_DECL_SNPRINTF @HAVE_DECL_SNPRINTF@
+
+/* Define to 1 if you have the declaration of `_snprintf', and to 0 if you
+ don't. */
+#define HAVE_DECL__SNPRINTF @HAVE_DECL__SNPRINTF@
+
/* use gmp to implement isl_int */
#cmakedefine USE_GMP_FOR_MP