1*4882a593SmuzhiyunFrom a50fc9bde098e4e89584a5da9f94f620c11b6733 Mon Sep 17 00:00:00 2001 2*4882a593SmuzhiyunFrom: Fabrice Fontaine <fontaine.fabrice@gmail.com> 3*4882a593SmuzhiyunDate: Sun, 16 Aug 2020 12:31:46 +0200 4*4882a593SmuzhiyunSubject: [PATCH] CMakeLists.txt: add C language to project statement 5*4882a593SmuzhiyunMIME-Version: 1.0 6*4882a593SmuzhiyunContent-Type: text/plain; charset=UTF-8 7*4882a593SmuzhiyunContent-Transfer-Encoding: 8bit 8*4882a593Smuzhiyun 9*4882a593SmuzhiyunThis will fix the detection of atomic: 10*4882a593Smuzhiyun 11*4882a593Smuzhiyun-- Performing Test HAVE_CXX_ATOMICS64_WITHOUT_LIB 12*4882a593Smuzhiyun-- Performing Test HAVE_CXX_ATOMICS64_WITHOUT_LIB - Failed 13*4882a593Smuzhiyun-- Looking for __atomic_load_8 in atomic 14*4882a593Smuzhiyun-- Looking for __atomic_load_8 in atomic - not found 15*4882a593SmuzhiyunCMake Error at CMakeModules/CheckAtomic.cmake:76 (message): 16*4882a593Smuzhiyun Host compiler appears to require libatomic for 64-bit operations, but 17*4882a593Smuzhiyun cannot find it. 18*4882a593SmuzhiyunCall Stack (most recent call first): 19*4882a593Smuzhiyun CMakeLists.txt:19 (include) 20*4882a593Smuzhiyun 21*4882a593SmuzhiyunIndeed if C language is not enabled, the test will be run with the C++ 22*4882a593Smuzhiyuncompiler resulting in the following error: 23*4882a593Smuzhiyun 24*4882a593SmuzhiyunBuilding CXX object CMakeFiles/cmTC_fad22.dir/CheckFunctionExists.cxx.o 25*4882a593Smuzhiyun/tmp/instance-0/output-1/host/bin/mipsel-linux-g++ --sysroot=/tmp/instance-0/output-1/host/mipsel-buildroot-linux-gnu/sysroot -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -Os -D_FORTIFY_SOURCE=1 -Wall -Wconversion -pedantic -Wextra -Wno-missing-field-initializers -DCHECK_FUNCTION_EXISTS=__atomic_load_8 -DNDEBUG -o CMakeFiles/cmTC_fad22.dir/CheckFunctionExists.cxx.o -c /tmp/instance-0/output-1/build/pistache-f2f5a50fbfb5b8ef6cf1d3d2a9d442a8270e375d/CMakeFiles/CheckLibraryExists/CheckFunctionExists.cxx 26*4882a593Smuzhiyun<command-line>: error: new declaration 'char __atomic_load_8()' ambiguates built-in declaration 'long long unsigned int __atomic_load_8(const volatile void*, int)' [-fpermissive] 27*4882a593Smuzhiyun/tmp/instance-0/output-1/build/pistache-f2f5a50fbfb5b8ef6cf1d3d2a9d442a8270e375d/CMakeFiles/CheckLibraryExists/CheckFunctionExists.cxx:7:3: note: in expansion of macro 'CHECK_FUNCTION_EXISTS' 28*4882a593Smuzhiyun CHECK_FUNCTION_EXISTS(void); 29*4882a593Smuzhiyun ^~~~~~~~~~~~~~~~~~~~~ 30*4882a593Smuzhiyun/tmp/instance-0/output-1/build/pistache-f2f5a50fbfb5b8ef6cf1d3d2a9d442a8270e375d/CMakeFiles/CheckLibraryExists/CheckFunctionExists.cxx: In function 'int main(int, char**)': 31*4882a593Smuzhiyun/tmp/instance-0/output-1/build/pistache-f2f5a50fbfb5b8ef6cf1d3d2a9d442a8270e375d/CMakeFiles/CheckLibraryExists/CheckFunctionExists.cxx:17:25: error: too few arguments to function 'long long unsigned int __atomic_load_8(const volatile void*, int)' 32*4882a593Smuzhiyun CHECK_FUNCTION_EXISTS(); 33*4882a593Smuzhiyun ^ 34*4882a593Smuzhiyun 35*4882a593Smuzhiyunwhereas with a C compiler, we'll get: 36*4882a593Smuzhiyun 37*4882a593SmuzhiyunBuilding C object CMakeFiles/cmTC_4b0f4.dir/CheckFunctionExists.c.o 38*4882a593Smuzhiyun/home/fabrice/buildroot/output/host/bin/riscv32-linux-gcc --sysroot=/home/fabrice/buildroot/output/host/riscv32-buildroot-linux-gnu/sysroot -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -Os -DCHECK_FUNCTION_EXISTS=__atomic_load_8 -DNDEBUG -o CMakeFiles/cmTC_4b0f4.dir/CheckFunctionExists.c.o -c /usr/share/cmake-3.16/Modules/CheckFunctionExists.c 39*4882a593Smuzhiyun<command-line>: warning: conflicting types for built-in function ‘__atomic_load_8’ [-Wbuiltin-declaration-mismatch] 40*4882a593Smuzhiyun/usr/share/cmake-3.16/Modules/CheckFunctionExists.c:7:3: note: in expansion of macro ‘CHECK_FUNCTION_EXISTS’ 41*4882a593Smuzhiyun CHECK_FUNCTION_EXISTS(void); 42*4882a593Smuzhiyun ^~~~~~~~~~~~~~~~~~~~~ 43*4882a593SmuzhiyunLinking C executable cmTC_4b0f4 44*4882a593Smuzhiyun/usr/bin/cmake -E cmake_link_script CMakeFiles/cmTC_4b0f4.dir/link.txt --verbose=1 45*4882a593Smuzhiyun/home/fabrice/buildroot/output/host/bin/riscv32-linux-gcc --sysroot=/home/fabrice/buildroot/output/host/riscv32-buildroot-linux-gnu/sysroot -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -Os -DCHECK_FUNCTION_EXISTS=__atomic_load_8 -DNDEBUG CMakeFiles/cmTC_4b0f4.dir/CheckFunctionExists.c.o -o cmTC_4b0f4 -latomic 46*4882a593Smuzhiyun 47*4882a593SmuzhiyunFixes: 48*4882a593Smuzhiyun - http://autobuild.buildroot.org/results/2bf06c6a9e55b449ec5875cf9415a9e55b2065d6 49*4882a593Smuzhiyun 50*4882a593SmuzhiyunSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com> 51*4882a593Smuzhiyun--- 52*4882a593Smuzhiyun CMakeLists.txt | 2 +- 53*4882a593Smuzhiyun 1 file changed, 1 insertion(+), 1 deletion(-) 54*4882a593Smuzhiyun 55*4882a593Smuzhiyundiff --git a/CMakeLists.txt b/CMakeLists.txt 56*4882a593Smuzhiyunindex edc73c5..0286647 100644 57*4882a593Smuzhiyun--- a/CMakeLists.txt 58*4882a593Smuzhiyun+++ b/CMakeLists.txt 59*4882a593Smuzhiyun@@ -9,7 +9,7 @@ set(CMAKE_CXX_STANDARD_REQUIRED ON) 60*4882a593Smuzhiyun set(CMAKE_CXX_EXTENSIONS OFF) 61*4882a593Smuzhiyun 62*4882a593Smuzhiyun project (pistache 63*4882a593Smuzhiyun- LANGUAGES CXX) 64*4882a593Smuzhiyun+ LANGUAGES C CXX) 65*4882a593Smuzhiyun 66*4882a593Smuzhiyun include(GNUInstallDirs) 67*4882a593Smuzhiyun 68*4882a593Smuzhiyun-- 69*4882a593Smuzhiyun2.27.0 70*4882a593Smuzhiyun 71