Changeset: 20831b61f40c for MonetDB URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=20831b61f40c Modified Files: CMakeLists.txt clients/odbc/driver/SQLTables.c monetdb5/extras/rapi/CMakeLists.txt Branch: cmake-fun Log Message:
Intel compiler fixes. diffs (118 lines): diff --git a/CMakeLists.txt b/CMakeLists.txt --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -102,7 +102,7 @@ set(WITH_LIBXML2 "AUTO" CACHE STRING "In set(WITH_LZ4 "AUTO" CACHE STRING "Include lz4 library support (default=AUTO)") # Check with HAVE_LIBLZ4 set(WITH_PROJ "AUTO" CACHE STRING "Include proj support (default=AUTO)") # Check with HAVE_PROJ set(WITH_READLINE "AUTO" CACHE STRING "Include readline support (default=AUTO)") # Check with HAVE_LIBREADLINE -set(WITH_REGEX "PCRE" CACHE STRING "Use either PCRE or POSIX regular expressions (default=PCRE if available)") # Check with HAVE_LIBPCRE and HAVE_POSIX_REGEX +set(WITH_REGEX "AUTO" CACHE STRING "Use either PCRE or POSIX regular expressions (default=PCRE if available)") # Check with HAVE_LIBPCRE and HAVE_POSIX_REGEX set(WITH_SNAPPY "AUTO" CACHE STRING "Include snappy support (default=AUTO)") # Check with HAVE_LIBSNAPPY set(WITH_UUID "AUTO" CACHE STRING "Include UUID support (default=AUTO)") # Check with HAVE_UUID set(WITH_VALGRIND "NO" CACHE STRING "Include valgrind support (default=NO)") # Check with HAVE_VALGRIND @@ -149,11 +149,28 @@ else() set(CMAKE_INSTALL_RPATH "${CMAKE_INSTALL_FULL_LIBDIR}") endif() +function(MT_checkCompilerFlag Flag) # WARNING this doesn't work with LINK_OPTIONS yet! + if(NOT "${CMAKE_C_FLAGS}" MATCHES "${Flag}") + string(REGEX REPLACE "[-/=,]" "" FLAG_TEST "${Flag}") # cmake will get confused if we don't remove - / = , + cmake_push_check_state() + set(CMAKE_REQUIRED_FLAGS "${CMAKE_REQUIRED_FLAGS} ${Flag}") + check_c_source_compiles("int main(int argc,char** argv){(void)argc;(void)argv;return 0;}" COMPILER_${FLAG_TEST}) + cmake_pop_check_state() + if(COMPILER_${FLAG_TEST}) + set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${Flag}" PARENT_SCOPE) + endif() + endif() +endfunction() + if(${CMAKE_SYSTEM_NAME} STREQUAL "Linux") add_definitions(-D_GNU_SOURCE -D_XOPEN_SOURCE) set(CMAKE_REQUIRED_DEFINITIONS "${CMAKE_REQUIRED_DEFINITIONS} -D_GNU_SOURCE -D_XOPEN_SOURCE") # required for tests endif() if(${CMAKE_C_COMPILER_ID} STREQUAL "Intel") + if(${CMAKE_SYSTEM_NAME} STREQUAL "Linux") + MT_checkCompilerFlag("-no-gcc") + add_definitions(-D_Float32=float -D_Float64="long double" -D_Float32x=double -D_Float64x="long double") + endif() if(EXISTS "${ROOT}/usr/include/math.h") # see https://software.intel.com/en-us/forums/intel-c-compiler/topic/760979 file(READ "${ROOT}/usr/include/math.h" TMPTXT) string(FIND "${TMPTXT}" "_LIB_VERSION_TYPE" FOUND_VERSION) @@ -161,6 +178,7 @@ if(${CMAKE_C_COMPILER_ID} STREQUAL "Inte set(INTEL_MATH_H_HACK ON CACHE INTERNAL "must use intel math.h hack") endif() endif() + set(__attribute__(a) ON) set(NAN_CANNOT_BE_USED_AS_INITIALIZER ON CACHE INTERNAL "NaN cannot be used as an initializer") # This hack is only required by the Intel compiler elseif(MSVC) set(_Noreturn "__declspec(noreturn)") @@ -649,19 +667,6 @@ else() #GCC, clang and Apple clang endif() endif() -function(MT_checkCompilerFlag Flag) # WARNING this doesn't work with LINK_OPTIONS yet! - if(NOT "${CMAKE_C_FLAGS}" MATCHES "${Flag}") - string(REGEX REPLACE "[-/=,]" "" FLAG_TEST "${Flag}") # cmake will get confused if we don't remove - / = , - cmake_push_check_state() - set(CMAKE_REQUIRED_FLAGS "${CMAKE_REQUIRED_FLAGS} ${Flag}") - check_c_source_compiles("int main(int argc,char** argv){(void)argc;(void)argv;return 0;}" COMPILER_${FLAG_TEST}) - cmake_pop_check_state() - if(COMPILER_${FLAG_TEST}) - set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${Flag}" PARENT_SCOPE) - endif() - endif() -endfunction() - if(${ENABLE_STRICT} STREQUAL "YES") if(${CMAKE_C_COMPILER_ID} MATCHES "^GNU|Clang|AppleClang$") MT_checkCompilerFlag("-W") @@ -702,15 +707,16 @@ if(${ENABLE_STRICT} STREQUAL "YES") MT_checkCompilerFlag("-Wno-char-subscripts") MT_checkCompilerFlag("-Wunreachable-code") elseif(${CMAKE_C_COMPILER_ID} STREQUAL "Intel") - if(NOT WIN32) + if(WIN32) + set(INTEL_OPTION_EXTRA "Q") + else() MT_checkCompilerFlag("${COMPILER_OPTION}shared-intel") endif() MT_checkCompilerFlag("${COMPILER_OPTION}Wall") MT_checkCompilerFlag("${COMPILER_OPTION}Wcheck") MT_checkCompilerFlag("${COMPILER_OPTION}Werror-all") - # WINDOWS set(INTEL_CHECK_EXTRA "Q") - #MT_checkCompilerFlag("${COMPILER_OPTION}${INTEL_CHECK_EXTRA}we140,147,181,266,271,593,810") - #MT_checkCompilerFlag("${COMPILER_OPTION}${INTEL_CHECK_EXTRA}wd193,279,981,1357,1418,1419,2259") + MT_checkCompilerFlag("${COMPILER_OPTION}${INTEL_OPTION_EXTRA}we140,147,181,266,271,593,810") + MT_checkCompilerFlag("${COMPILER_OPTION}${INTEL_OPTION_EXTRA}wd193,279,981,1357,1418,1419,2259") elseif(MSVC) MT_checkCompilerFlag("/WX") endif() diff --git a/clients/odbc/driver/SQLTables.c b/clients/odbc/driver/SQLTables.c --- a/clients/odbc/driver/SQLTables.c +++ b/clients/odbc/driver/SQLTables.c @@ -211,7 +211,7 @@ MNDBTables(ODBCStmt *stmt, if (NameLength4 > 0) { /* filtering requested on table type */ - char buf[32]; /* the longest string is "GLOBAL TEMPORARY TABLE" */ + char buf[32] = {'\0'}; /* the longest string is "GLOBAL TEMPORARY TABLE" */ int i; size_t j; diff --git a/monetdb5/extras/rapi/CMakeLists.txt b/monetdb5/extras/rapi/CMakeLists.txt --- a/monetdb5/extras/rapi/CMakeLists.txt +++ b/monetdb5/extras/rapi/CMakeLists.txt @@ -55,7 +55,11 @@ if(HAVE_LIBR) target_link_libraries(rapi PRIVATE ${RAPI_LINK_LIBRARIES}) set_target_properties(rapi PROPERTIES OUTPUT_NAME _rapi) target_compile_definitions(rapi PRIVATE LIBRAPI) - if(NOT MSVC) + cmake_push_check_state() + set(CMAKE_REQUIRED_FLAGS "${CMAKE_REQUIRED_FLAGS};-Wno-redundant-decls") + check_c_source_compiles("int main(int argc,char** argv){(void)argc;(void)argv;return 0;}" COMPILER_Wnoredundantdecls) # Warning don't add '-' or '/' to the output variable! + cmake_pop_check_state() + if(COMPILER_Wnoredundantdecls) target_compile_options(rapi PRIVATE -Wno-redundant-decls) endif() _______________________________________________ checkin-list mailing list checkin-list@monetdb.org https://www.monetdb.org/mailman/listinfo/checkin-list