Hi there and many thanks for sqlite!
I am reporting a problem compiling latest sqlite(3.17) on MAC OSX 10.8.5
$ ./configure && make
Compilation fails with the following messages:
sqlite3.c:28836:10: error: use of unknown builtin '__builtin_add_overflow'
[-Wimplicit-function-declaration]
return __builtin_add_overflow(*pA, iB, pA);
^
sqlite3.c:28856:10: error: use of unknown builtin '__builtin_sub_overflow'
[-Wimplicit-function-declaration]
return __builtin_sub_overflow(*pA, iB, pA);
^
sqlite3.c:28856:10: note: did you mean '__builtin_add_overflow'?
sqlite3.c:28836:10: note: '__builtin_add_overflow' declared here
return __builtin_add_overflow(*pA, iB, pA);
^
sqlite3.c:28871:10: error: use of unknown builtin '__builtin_mul_overflow'
[-Wimplicit-function-declaration]
return __builtin_mul_overflow(*pA, iB, pA);
^
sqlite3.c:28871:10: note: did you mean '__builtin_sub_overflow'?
sqlite3.c:28856:10: note: '__builtin_sub_overflow' declared here
return __builtin_sub_overflow(*pA, iB, pA);
^
3 errors generated.
----------------------
The compilation settings/versions:
$ clang --version
Apple LLVM version 5.1 (clang-503.0.40) (based on LLVM 3.4svn)
Target: x86_64-apple-darwin12.6.0
Thread model: posix
$ gcc --version
Configured with: --prefix=/Applications/Xcode.app/Contents/Developer/usr
--with-gxx-include-dir=/usr/include/c++/4.2.1
Apple LLVM version 5.1 (clang-503.0.40) (based on LLVM 3.4svn)
Target: x86_64-apple-darwin12.6.0
Thread model: posix
The following program (borrowed from sqlite3.c)
# define GCC_VERSION
(__GNUC__*1000000+__GNUC_MINOR__*1000+__GNUC_PATCHLEVEL__)
# define CLANG_VERSION
(__clang_major__*1000000+__clang_minor__*1000+__clang_patchlevel__)
#include <stdio.h>
int main(void){
printf("CLANG_VERSION: %d\n", CLANG_VERSION);
printf("GCC_VERSION: %d\n", GCC_VERSION);
}
gives the following response on my system:
$ gcc a.c && a.out
CLANG_VERSION: 5001000
GCC_VERSION: 4002001
-------------
Your program compiles fine if I modify sqlite3.c not to use the builtin
functions the compiler complains about:
Clearly the test (e.g. line 28856 of sqlite3.c) :
#if GCC_VERSION>=5004000 || CLANG_VERSION>=4000000
return __builtin_mul_overflow(*pA, iB, pA);
is not the correct one UNLESS my clang (which is version 5.1 or should i
say 'Apple' version 5.1?) does understands builtins and needs some
special flags to use them.
I have posted a question on stackoverflow
(http://stackoverflow.com/questions/42234112/osx-10-8-5-gcc-fails-to-recognise-clang5-extension-builtin-mul-overflow)
about this problem as I am trying to figure out whether it is my system
to be blamed and whether I have these builtins.
---------------
FYI, one response from stackoverflow might be helpful for your development:
"Testing the version of clang is usually a bad idea, upstream and Apple
have completely different versioning schemes... __has_builtin is the
recommended way to check for builtins on clang. – Marc Glisse"
-----------------
Many thanks for providing sqlite and all the work you are doing,
Andreas Hadjiprocopis.
_______________________________________________
sqlite-users mailing list
sqlite-users@mailinglists.sqlite.org
http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users