jeanguyomarch / eovim

The Enlightened Neovim
https://github.com/jeanguyomarch/eovim/wiki
MIT License
193 stars 3 forks source link

Build with flags '-Wl,--no-undefined' #15

Closed awissu closed 6 years ago

awissu commented 6 years ago

Hi! I bumped into rpmlint erros when building rpm in OBS:

[   86s] [ 63%] Building C object CMakeFiles/eovim.dir/src/prefs.c.o
[   86s] /usr/bin/cc -DBUILD_DATA_DIR=\"/home/abuild/rpmbuild/BUILD/eovim-0.1.99+git20171207.93bcb51/build\" -DBUILD_PLUGINS_DIR=\"/home/abuild/rpmbuild/BUILD/eovim-0.1.99+git20171207.93bcb51/build/plugins\" -DHAVE_PLUGINS=1 -DLIB_SUFFIX=\"\" -DMODULE_EXT=\".so\" -DPACKAGE_BIN_DIR=\"/usr/bin\" -DPACKAGE_DATA_DIR=\"/usr/share/eovim\" -DPACKAGE_LIB_DIR=\"/usr/lib\" -DSOURCE_DATA_DIR=\"/home/abuild/rpmbuild/BUILD/eovim-0.1.99+git20171207.93bcb51/data\" -isystem /usr/include/efl-1 -isystem /usr/include/eina-1 -isystem /usr/include/eina-1/eina -isystem /usr/include/eet-1 -isystem /usr/include/emile-1 -isystem /usr/include/eo-1 -isystem /usr/include/evas-1 -isystem /usr/include/evas-1/canvas -isystem /usr/include/libpng16 -isystem /usr/include/harfbuzz -isystem /usr/include/fribidi -isystem /usr/include/freetype2 -isystem /usr/include/ecore-1 -isystem /usr/include/glib-2.0 -isystem /usr/lib/glib-2.0/include -isystem /usr/include/luajit-5_1-2.1 -isystem /usr/include/edje-1 -isystem /usr/include/ecore-audio-1 -isystem /usr/include/eio-1 -isystem /usr/include/efreet-1 -isystem /usr/include/ecore-ipc-1 -isystem /usr/include/embryo-1 -isystem /usr/include/ecore-imf-evas-1 -isystem /usr/include/ecore-imf-1 -isystem /usr/include/ecore-evas-1 -isystem /usr/include/ecore-drm2-1 -isystem /usr/include/elput-1 -isystem /usr/include/libinput -isystem /usr/include/libxkbcommon -isystem /usr/include/ecore-input-evas-1 -isystem /usr/include/ecore-input-1 -isystem /usr/include/eeze-1 -isystem /usr/include/libmount -isystem /usr/include/blkid -isystem /usr/include/uuid -isystem /usr/include/ecore-file-1 -isystem /usr/include/ecore-con-1 -isystem /usr/include/eldbus-1 -isystem /usr/include/dbus-1.0 -isystem /usr/lib/dbus-1.0/include -isystem /usr/include/elementary-1 -isystem /usr/include/libdrm -isystem /usr/include/ecore-wl2-1 -isystem /usr/include/wayland -isystem /usr/include/ecore-fb-1 -isystem /usr/include/ecore-x-1 -isystem /usr/include/elocation-1 -isystem /usr/include/emotion-1 -isystem /usr/include/ethumb-client-1 -isystem /usr/include/ethumb-1 -I/home/abuild/rpmbuild/BUILD/eovim-0.1.99+git20171207.93bcb51/src/include -I/home/abuild/rpmbuild/BUILD/eovim-0.1.99+git20171207.93bcb51/build/include  -fomit-frame-pointer -fmessage-length=0 -grecord-gcc-switches -O2 -Wall -D_FORTIFY_SOURCE=2 -fstack-protector-strong -funwind-tables -fasynchronous-unwind-tables -fstack-clash-protection -g -g -DNDEBUG -O2 -g -DNDEBUG   -Wall -Wextra -Wshadow -Winit-self -Wfloat-equal -Wtrigraphs -Wconversion -Wcast-align -Wlogical-op -Wunsafe-loop-optimizations -Wdouble-promotion -Wformat=2 -std=gnu11 -o CMakeFiles/eovim.dir/src/prefs.c.o   -c /home/abuild/rpmbuild/BUILD/eovim-0.1.99+git20171207.93bcb51/src/prefs.c
[   86s] CMakeFiles/imageviewer.dir/imageviewer/plugin.c.o: In function `_preview_add':
[   86s] /home/abuild/rpmbuild/BUILD/eovim-0.1.99+git20171207.93bcb51/plugins/imageviewer/plugin.c:77: undefined reference to `evas_object_event_callback_add'
[   86s] /home/abuild/rpmbuild/BUILD/eovim-0.1.99+git20171207.93bcb51/plugins/imageviewer/plugin.c:82: undefined reference to `evas_object_size_hint_weight_set'
[   86s] /home/abuild/rpmbuild/BUILD/eovim-0.1.99+git20171207.93bcb51/plugins/imageviewer/plugin.c:83: undefined reference to `evas_object_size_hint_align_set'
[   86s] /home/abuild/rpmbuild/BUILD/eovim-0.1.99+git20171207.93bcb51/plugins/imageviewer/plugin.c:86: undefined reference to `evas_object_geometry_get'
[   86s] /home/abuild/rpmbuild/BUILD/eovim-0.1.99+git20171207.93bcb51/plugins/imageviewer/plugin.c:92: undefined reference to `evas_object_size_hint_min_set'
[   86s] /home/abuild/rpmbuild/BUILD/eovim-0.1.99+git20171207.93bcb51/plugins/imageviewer/plugin.c:96: undefined reference to `evas_object_show'
[   86s] /home/abuild/rpmbuild/BUILD/eovim-0.1.99+git20171207.93bcb51/plugins/imageviewer/plugin.c:97: undefined reference to `evas_object_show'
[   86s] /home/abuild/rpmbuild/BUILD/eovim-0.1.99+git20171207.93bcb51/plugins/imageviewer/plugin.c:98: undefined reference to `evas_object_focus_set'
[   86s] /home/abuild/rpmbuild/BUILD/eovim-0.1.99+git20171207.93bcb51/plugins/imageviewer/plugin.c:100: undefined reference to `evas_object_focus_set'
[   86s] CMakeFiles/imageviewer.dir/imageviewer/plugin.c.o: In function `_popup_close_cb':
[   86s] /home/abuild/rpmbuild/BUILD/eovim-0.1.99+git20171207.93bcb51/plugins/imageviewer/plugin.c:64: undefined reference to `evas_object_focus_set'
[   86s] /home/abuild/rpmbuild/BUILD/eovim-0.1.99+git20171207.93bcb51/plugins/imageviewer/plugin.c:65: undefined reference to `evas_object_del'
[   86s] collect2: error: ld returned 1 exit status
jeanguyomarch commented 6 years ago

Hi, I cannot reproduce that on my side. I've added locally the -Wl,--no-undefined, which I can find in cmake's logs, but the errors do not show up :/

[ 95%] Building C object plugins/CMakeFiles/imageviewer.dir/imageviewer/plugin.c.o
cd /home/jean/e/eovim/build/plugins && /usr/bin/cc -Dimageviewer_EXPORTS -isystem /usr/local/include/efl-1 -isystem /usr/local/include/eina-1 -isystem /usr/local/include/eina-1/eina -isystem /usr/local/include/elementary-1 -isystem /usr/local/include/ecore-wl2-1 -isystem /usr/local/include/elocation-1 -isystem /usr/local/include/efreet-1 -isystem /usr/local/include/emotion-1 -isystem /usr/local/include/ethumb-client-1 -isystem /usr/local/include/ethumb-1 -isystem /usr/local/include/edje-1 -isystem /usr/local/include/ecore-audio-1 -isystem /usr/local/include/eio-1 -isystem /usr/local/include/ecore-ipc-1 -isystem /usr/local/include/embryo-1 -isystem /usr/local/include/ecore-imf-evas-1 -isystem /usr/local/include/ecore-imf-1 -isystem /usr/local/include/ecore-evas-1 -isystem /usr/local/include/ecore-input-evas-1 -isystem /usr/local/include/ecore-input-1 -isystem /usr/local/include/eeze-1 -isystem /usr/local/include/ecore-file-1 -isystem /usr/local/include/ecore-con-1 -isystem /usr/local/include/eldbus-1 -isystem /usr/local/include/evas-1 -isystem /usr/local/include/evas-1/canvas -isystem /usr/local/include/ecore-1 -isystem /usr/local/include/eet-1 -isystem /usr/local/include/emile-1 -isystem /usr/local/include/eo-1 -isystem /usr/include/libmount -isystem /usr/include/blkid -isystem /usr/include/uuid -isystem /usr/include/dbus-1.0 -isystem /usr/lib/x86_64-linux-gnu/dbus-1.0/include -isystem /usr/include/libpng16 -isystem /usr/include/fribidi -isystem /usr/include/freetype2 -isystem /usr/include/glib-2.0 -isystem /usr/lib/x86_64-linux-gnu/glib-2.0/include -isystem /usr/include/luajit-2.0 -isystem /home/jean/e/eovim/.deps/_sysroot/include -isystem /home/jean/e/eovim/src/include -isystem /home/jean/e/eovim/build/include  -g -fPIC   -Wall -Wextra -Wshadow -Winit-self -Wfloat-equal -Wtrigraphs -Wconversion -Wcast-align -Wlogical-op -Wunsafe-loop-optimizations -Wdouble-promotion -Wformat=2 -Wl,--no-undefined -std=gnu11 -o CMakeFiles/imageviewer.dir/imageviewer/plugin.c.o   -c /home/jean/e/eovim/plugins/imageviewer/plugin.c
[100%] Linking C shared module imageviewer.so

By looking at the errors thrown, I may guess a fix, but I'm not quite sure. I assume OBS is this. I didn't know about that, seems pretty nice!