qPCR4vir / nana

a modern C++ GUI library
http://nanapro.org
Boost Software License 1.0
16 stars 2 forks source link

Cannot build RC v1.73 with clang-6.0 [Ubuntu 18.04] #37

Closed ppetraki closed 4 years ago

ppetraki commented 4 years ago
rm -rf ReleaseClang && cmake -BReleaseClang -DCMAKE_BUILD_TYPE=Release -GNinja -DCMAKE_C_COMPILER=/usr/bin/clang -DCMAKE_CXX_COMPILER=/usr/bin/clang++ && cmake --build ReleaseClang

-- The CXX compiler identification is Clang 6.0.0
-- Check for working CXX compiler: /usr/bin/clang++
-- Check for working CXX compiler: /usr/bin/clang++ -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Detecting CXX compile features
-- Detecting CXX compile features - done
You are using nana directly from original sources. (Recommended!) If this was not your intention, and what you want is to install precomplied nana first, then please tern ON option NANA_CMAKE_INSTALL 
-- Found X11: /usr/include   
-- Looking for XOpenDisplay in /usr/lib/x86_64-linux-gnu/libX11.so;/usr/lib/x86_64-linux-gnu/libXext.so
-- Looking for XOpenDisplay in /usr/lib/x86_64-linux-gnu/libX11.so;/usr/lib/x86_64-linux-gnu/libXext.so - found
-- Looking for gethostbyname
-- Looking for gethostbyname - found
-- Looking for connect
-- Looking for connect - found
-- Looking for remove
-- Looking for remove - found
-- Looking for shmat
-- Looking for shmat - found
-- Looking for IceConnectionNumber in ICE
-- Looking for IceConnectionNumber in ICE - found
-- Found Freetype: /usr/lib/x86_64-linux-gnu/libfreetype.so (found version "2.8.1") 
-- Found PkgConfig: /usr/bin/pkg-config (found version "0.29.1") 
-- Checking for module 'fontconfig'
--   Found fontconfig, version 2.12.6
-- Found Fontconfig: /usr/lib/x86_64-linux-gnu/libfontconfig.so  
-- Looking for C++ include pthread.h
-- Looking for C++ include pthread.h - found
-- Performing Test CMAKE_HAVE_LIBC_PTHREAD
-- Performing Test CMAKE_HAVE_LIBC_PTHREAD - Failed
-- Check if compiler accepts -pthread
-- Check if compiler accepts -pthread - yes
-- Found Threads: TRUE  
-- Looking for C++ include filesystem
-- Looking for C++ include filesystem - found
-- Looking for C++ include experimental/filesystem
-- Looking for C++ include experimental/filesystem - found
-- C++ Filesystem header:      
-- Performing Test CXX17_BUILTIN
-- Performing Test CXX17_BUILTIN - Failed
-- Performing Test CXX17_FLAG
-- Performing Test CXX17_FLAG - Success
-- C++ Standard-17 support:    via -std=c++17
-- Performing Test C++17FS_FLAG
-- Performing Test C++17FS_FLAG - Success
-- C++ Filesystem library:     builtin
-- Configuring done
-- Generating done
-- Build files have been written to: /home/ppetraki/Sandbox/hacking/Nana-rc/nana-RC.v1.7.3/ReleaseClang
[7/80] Building CXX object CMakeFiles/nana.dir/source/charset.cpp.o
../source/charset.cpp:1130:14: warning: moving a temporary object prevents copy elision [-Wpessimizing-move]
                                        data_ = std::move(str());
                                                ^
../source/charset.cpp:1130:14: note: remove std::move call here
                                        data_ = std::move(str());
                                                ^~~~~~~~~~     ~
../source/charset.cpp:1240:23: warning: moving a temporary object prevents copy elision [-Wpessimizing-move]
                                wdata_for_move_ = std::move(wstr());
                                                  ^
../source/charset.cpp:1240:23: note: remove std::move call here
                                wdata_for_move_ = std::move(wstr());
                                                  ^~~~~~~~~~      ~
../source/charset.cpp:1277:22: warning: moving a temporary object prevents copy elision [-Wpessimizing-move]
                                data_for_move_ = std::move(str());
                                                 ^
../source/charset.cpp:1277:22: note: remove std::move call here
                                data_for_move_ = std::move(str());
                                                 ^~~~~~~~~~     ~
3 warnings generated.
[23/80] Building CXX object CMakeFiles/nana.dir/source/gui/filebox.cpp.o
FAILED: CMakeFiles/nana.dir/source/gui/filebox.cpp.o 
/usr/bin/clang++  -DNANA_IGNORE_CONF -I../include -isystem /usr/include/freetype2 -O3 -march=native -mtune=native -DNDEBUG   -Wall -pthread -std=gnu++17 -MD -MT CMakeFiles/nana.dir/source/gui/filebox.cpp.o -MF CMakeFiles/nana.dir/source/gui/filebox.cpp.o.d -o CMakeFiles/nana.dir/source/gui/filebox.cpp.o -c ../source/gui/filebox.cpp
../source/gui/filebox.cpp:1604:37: error: no member named 'weakly_canonical' in namespace 'std::filesystem'
                : impl_(new implement{ owner, fs::weakly_canonical(init_path).make_preferred(), title, false})
                                              ~~~~^
1 error generated.
[32/80] Building CXX object CMakeFiles/nana.dir/source/gui/place.cpp.o
ninja: build stopped: subcommand failed.

qPCR4vir commented 4 years ago

I'm very sorry. Somewhere in the forum I said I updated the RC and now I keep it in the master of my fork: https://github.com/qPCR4vir/nana, but I think the real release will be more like in my branch https://github.com/qPCR4vir/nana/tree/minor_change. Just see: https://github.com/cnjinhao/nana/pull/496. It will be great if you can test that before it is released.

ppetraki commented 4 years ago

OK...Clang-6.0 still fails with the same error. Clang-8.0 succeeds. Why isn't this branch in the main repo? Now the bugs reporting is spread out over two domains.

std::filesystem::weakly_canonical simply isn't there. canonical works, but may not be what you want. You might need a try_compile check around this and import your own version etc.

ppetraki@vanguard:~/Sandbox/hacking/minor_change$ rm -rf Release && cmake -BRelease -DCMAKE_BUILD_TYPE=Release -GNinja -DCMAKE_C_COMPILER=/usr/bin/clang-6.0 -DCMAKE_CXX_COMPILER=/usr/bin/clang++-6.0  && cmake --build Release
-- The CXX compiler identification is Clang 6.0.0
-- Check for working CXX compiler: /usr/bin/clang++-6.0
-- Check for working CXX compiler: /usr/bin/clang++-6.0 -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Detecting CXX compile features
-- Detecting CXX compile features - done
You are using nana directly from original sources. (Recommended!) If this was not your intention, and what you want is to install precomplied nana first, then please tern ON option NANA_CMAKE_INSTALL 
-- Found X11: /usr/include   
-- Looking for XOpenDisplay in /usr/lib/x86_64-linux-gnu/libX11.so;/usr/lib/x86_64-linux-gnu/libXext.so
-- Looking for XOpenDisplay in /usr/lib/x86_64-linux-gnu/libX11.so;/usr/lib/x86_64-linux-gnu/libXext.so - found
-- Looking for gethostbyname
-- Looking for gethostbyname - found
-- Looking for connect
-- Looking for connect - found
-- Looking for remove
-- Looking for remove - found
-- Looking for shmat
-- Looking for shmat - found
-- Looking for IceConnectionNumber in ICE
-- Looking for IceConnectionNumber in ICE - found
-- Found Freetype: /usr/lib/x86_64-linux-gnu/libfreetype.so (found version "2.8.1") 
-- Found PkgConfig: /usr/bin/pkg-config (found version "0.29.1") 
-- Checking for module 'fontconfig'
--   Found fontconfig, version 2.12.6
-- Found Fontconfig: /usr/lib/x86_64-linux-gnu/libfontconfig.so  
-- Looking for C++ include pthread.h
-- Looking for C++ include pthread.h - found
-- Performing Test CMAKE_HAVE_LIBC_PTHREAD
-- Performing Test CMAKE_HAVE_LIBC_PTHREAD - Failed
-- Check if compiler accepts -pthread
-- Check if compiler accepts -pthread - yes
-- Found Threads: TRUE  
-- Looking for C++ include filesystem
-- Looking for C++ include filesystem - found
-- Looking for C++ include experimental/filesystem
-- Looking for C++ include experimental/filesystem - found
-- C++ Filesystem header:      
-- Performing Test CXX17_BUILTIN
-- Performing Test CXX17_BUILTIN - Failed
-- Performing Test CXX17_FLAG
-- Performing Test CXX17_FLAG - Success
-- C++ Standard-17 support:    via -std=c++17
-- Performing Test C++17FS_FLAG
-- Performing Test C++17FS_FLAG - Success
-- C++ Filesystem library:     builtin
-- Configuring done
-- Generating done
-- Build files have been written to: /home/ppetraki/Sandbox/hacking/minor_change/Release
[6/80] Building CXX object CMakeFiles/nana.dir/source/charset.cpp.o
../source/charset.cpp:1130:14: warning: moving a temporary object prevents copy elision [-Wpessimizing-move]
                                        data_ = std::move(str());
                                                ^
../source/charset.cpp:1130:14: note: remove std::move call here
                                        data_ = std::move(str());
                                                ^~~~~~~~~~     ~
../source/charset.cpp:1240:23: warning: moving a temporary object prevents copy elision [-Wpessimizing-move]
                                wdata_for_move_ = std::move(wstr());
                                                  ^
../source/charset.cpp:1240:23: note: remove std::move call here
                                wdata_for_move_ = std::move(wstr());
                                                  ^~~~~~~~~~      ~
../source/charset.cpp:1277:22: warning: moving a temporary object prevents copy elision [-Wpessimizing-move]
                                data_for_move_ = std::move(str());
                                                 ^
../source/charset.cpp:1277:22: note: remove std::move call here
                                data_for_move_ = std::move(str());
                                                 ^~~~~~~~~~     ~
3 warnings generated.
[23/80] Building CXX object CMakeFiles/nana.dir/source/gui/filebox.cpp.o
FAILED: CMakeFiles/nana.dir/source/gui/filebox.cpp.o 
/usr/bin/clang++-6.0  -DNANA_IGNORE_CONF -I../include -isystem /usr/include/freetype2 -O3 -march=native -mtune=native -DNDEBUG   -Wall -pthread -std=gnu++17 -MD -MT CMakeFiles/nana.dir/source/gui/filebox.cpp.o -MF CMakeFiles/nana.dir/source/gui/filebox.cpp.o.d -o CMakeFiles/nana.dir/source/gui/filebox.cpp.o -c ../source/gui/filebox.cpp
../source/gui/filebox.cpp:1604:37: error: no member named 'weakly_canonical' in namespace 'std::filesystem'
                : impl_(new implement{ owner, fs::weakly_canonical(init_path).make_preferred(), title, false})
                                              ~~~~^
1 error generated.
[32/80] Building CXX object CMakeFiles/nana.dir/source/gui/place.cpp.o
ninja: build stopped: subcommand failed.

Clang-8.0

rm -rf Release && cmake -BRelease -DCMAKE_BUILD_TYPE=Release -GNinja -DCMAKE_C_COMPILER=/usr/bin/clang-8 -DCMAKE_CXX_COMPILER=/usr/bin/clang++-8  && cmake --build Release

-- The CXX compiler identification is Clang 8.0.0
-- Check for working CXX compiler: /usr/bin/clang++-8
-- Check for working CXX compiler: /usr/bin/clang++-8 -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Detecting CXX compile features
-- Detecting CXX compile features - done
You are using nana directly from original sources. (Recommended!) If this was not your intention, and what you want is to install precomplied nana first, then please tern ON option NANA_CMAKE_INSTALL 
-- Found X11: /usr/include   
-- Looking for XOpenDisplay in /usr/lib/x86_64-linux-gnu/libX11.so;/usr/lib/x86_64-linux-gnu/libXext.so
-- Looking for XOpenDisplay in /usr/lib/x86_64-linux-gnu/libX11.so;/usr/lib/x86_64-linux-gnu/libXext.so - found
-- Looking for gethostbyname
-- Looking for gethostbyname - found
-- Looking for connect
-- Looking for connect - found
-- Looking for remove
-- Looking for remove - found
-- Looking for shmat
-- Looking for shmat - found
-- Looking for IceConnectionNumber in ICE
-- Looking for IceConnectionNumber in ICE - found
-- Found Freetype: /usr/lib/x86_64-linux-gnu/libfreetype.so (found version "2.8.1") 
-- Found PkgConfig: /usr/bin/pkg-config (found version "0.29.1") 
-- Checking for module 'fontconfig'
--   Found fontconfig, version 2.12.6
-- Found Fontconfig: /usr/lib/x86_64-linux-gnu/libfontconfig.so  
-- Looking for C++ include pthread.h
-- Looking for C++ include pthread.h - found
-- Performing Test CMAKE_HAVE_LIBC_PTHREAD
-- Performing Test CMAKE_HAVE_LIBC_PTHREAD - Failed
-- Check if compiler accepts -pthread
-- Check if compiler accepts -pthread - yes
-- Found Threads: TRUE  
-- Looking for C++ include filesystem
-- Looking for C++ include filesystem - found
-- Looking for C++ include experimental/filesystem
-- Looking for C++ include experimental/filesystem - found
-- C++ Filesystem header:      
-- Performing Test CXX17_BUILTIN
-- Performing Test CXX17_BUILTIN - Failed
-- Performing Test CXX17_FLAG
-- Performing Test CXX17_FLAG - Success
-- C++ Standard-17 support:    via -std=c++17
-- Performing Test C++17FS_FLAG
-- Performing Test C++17FS_FLAG - Success
-- C++ Filesystem library:     builtin
-- Configuring done
-- Generating done
-- Build files have been written to: /home/ppetraki/Sandbox/hacking/minor_change/Release
[7/80] Building CXX object CMakeFiles/nana.dir/source/charset.cpp.o
../source/charset.cpp:1130:14: warning: moving a temporary object prevents copy elision [-Wpessimizing-move]
                                        data_ = std::move(str());
                                                ^
../source/charset.cpp:1130:14: note: remove std::move call here
                                        data_ = std::move(str());
                                                ^~~~~~~~~~     ~
../source/charset.cpp:1240:23: warning: moving a temporary object prevents copy elision [-Wpessimizing-move]
                                wdata_for_move_ = std::move(wstr());
                                                  ^
../source/charset.cpp:1240:23: note: remove std::move call here
                                wdata_for_move_ = std::move(wstr());
                                                  ^~~~~~~~~~      ~
../source/charset.cpp:1277:22: warning: moving a temporary object prevents copy elision [-Wpessimizing-move]
                                data_for_move_ = std::move(str());
                                                 ^
../source/charset.cpp:1277:22: note: remove std::move call here
                                data_for_move_ = std::move(str());
                                                 ^~~~~~~~~~     ~
3 warnings generated.
[80/80] Linking CXX static library libnana.a
qPCR4vir commented 4 years ago

hummm, thank! But it have to be "fixed" here or here and in the corresponding implementation. Better to the include/nana/c++defines.hpp add STD_FS_NEED_weakly_canonical or soo. But in code, not in cmake, because many don't use cmake. This is the kind of things we will eliminate in vC++20.

ppetraki commented 4 years ago

Builds fine on clang-6.0/8.0 as of HEAD c8535497b1482a8fa4c61296d7fda606585353a0 on branch minor_change.