-
Notifications
You must be signed in to change notification settings - Fork 48
Open
Description
$ uname -smr
NetBSD 10.1 amd64
$ git clone --depth 1 https://github.com/orbitalquark/textadept
$ cd textadept
$ git log --oneline
eb8857f (grafted, HEAD -> default, tag: textadept_nightly, origin/default, origin/HEAD) Fixed menu not showing key shortcuts for cut and copy.
$ cmake -S . -B build_dir -D CMAKE_BUILD_TYPE=None \
-D CMAKE_INSTALL_PREFIX:PATH=/usr/local \
-D GTK2=OFF -D GTK3=ON -D QT=OFF -D CURSES=OFF
$ cmake --build build_dir -jIt fails with:
...
[ 97%] Built target textadept_gtk
[ 98%] Building C object CMakeFiles/textadept-gtk.dir/src/textadept.c.o
[100%] Linking CXX executable textadept-gtk
ld: cannot find -ldl
ld: cannot find -lgtk-3
ld: cannot find -lgdk-3
ld: cannot find -lpangocairo-1.0
ld: cannot find -lcairo-gobject
ld: cannot find -lgdk_pixbuf-2.0
ld: cannot find -latk-1.0
ld: cannot find -lpango-1.0
ld: cannot find -lcairo
ld: cannot find -lharfbuzz
ld: cannot find -lgio-2.0
ld: cannot find -lgobject-2.0
ld: cannot find -lglib-2.0
gmake[2]: *** [CMakeFiles/textadept-gtk.dir/build.make:110: textadept-gtk] Error 1
gmake[1]: *** [CMakeFiles/Makefile2:341: CMakeFiles/textadept-gtk.dir/all] Error 2
gmake: *** [Makefile:136: all] Error 2
Result is similar with latest release (12.6 atm).
NetBSD pkgin installs packages in /usr/pkg:
$ pkgconf --libs cairo
-Wl,-R/usr/pkg/lib -L/usr/pkg/lib -lcairo
$ pkgconf --cflags cairo
-I/usr/pkg/include/cairo -I/usr/pkg/include -I/usr/pkg/include/freetype2 -I/usr/pkg/include/libpng16 -I/usr/X11R7/include -D_REENTRANT -I/usr/pkg/include/pixman-1
/usr/local is empty and open for user installs which I'm using for Textadept.
Workaround
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 95622b8..3598995 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -7,6 +7,9 @@ set(CMAKE_CXX_STANDARD_REQUIRED ON)
if(APPLE)
set(CMAKE_OSX_DEPLOYMENT_TARGET 11 CACHE STRING "")
endif()
+if (CMAKE_HOST_SYSTEM_NAME STREQUAL NetBSD)
+ list(APPEND CMAKE_EXE_LINKER_FLAGS "-L/usr/pkg/lib -Wl,-rpath=/usr/pkg/lib")
+endif()
project(textadept LANGUAGES C CXX)
@@ -170,7 +173,7 @@ target_compile_definitions(lua PRIVATE
$<IF:$<BOOL:${WIN32}>,LUA_BUILD_AS_DLL,$<IF:$<BOOL:${APPLE}>,LUA_USE_MACOSX,LUA_USE_LINUX>>
$<$<CONFIG:Debug>:LUA_USE_APICHECK>)
# Note: can use "$<$<BOOL:${LINUX}>:dl>" in CMake 3.25.
-target_link_libraries(lua PRIVATE $<$<NOT:$<OR:$<BOOL:${WIN32}>,$<BOOL:${APPLE}>>>:dl>)
+target_link_libraries(lua PRIVATE $<$<NOT:$<OR:$<BOOL:${WIN32}>,$<BOOL:${APPLE}>,$<STREQUAL:$<UPPER_CASE:${CMAKE_SYSTEM_NAME}>,NETBSD>>>:dl>)
# LPeg.
add_library(lpeg STATIC)-Wl,-R doesn't work - link completes, but binary doesn't find the libraries.
With these changes build succeeds:
$ cmake --build build_dir -j
...
[ 97%] Built target textadept_gtk
[ 98%] Linking CXX executable textadept-gtk
ld: warning: libintl.so.1, needed by /usr/pkg/lib/libgtk-3.so, may conflict with libintl.so.8
[100%] Built target textadept-gtk
Note on `-Wl,-rpath`
-Wl,-rpath=... like in the patch above works. With -Wl,-R=..., it doesn't work:
$ textadept-gtk
textadept-gtk: Shared object "libgtk-3.so.0" not found
$ ldd `which textadept-gtk`
/usr/local/bin/textadept-gtk:
-lgtk-3.0 => not found
-lgdk-3.0 => not found
-lpangocairo-1.0.0 => not found
-lcairo-gobject.2 => not found
-lgdk_pixbuf-2.0.0 => not found
-latk-1.0.0 => not found
-lpango-1.0.0 => not found
-lcairo.2 => not found
-lharfbuzz.0 => not found
-lgio-2.0.0 => not found
-lgobject-2.0.0 => not found
-lglib-2.0.0 => not found
-lintl.8 => not found
-lstdc++.9 => /usr/lib/libstdc++.so.9
-lm.0 => /usr/lib/libm.so.0
-lc.12 => /usr/lib/libc.so.12
-lgcc_s.1 => /usr/lib/libgcc_s.so.1
-lpthread.1 => /usr/lib/libpthread.so.1
With -Wl,-rpath:
$ ldd `which textadept-gtk`
/usr/local/bin/textadept-gtk:
-lgtk-3.0 => /usr/pkg/lib/libgtk-3.so.0
-lgdk-3.0 => /usr/pkg/lib/libgdk-3.so.0
-lm.0 => /usr/lib/libm.so.0
-lc.12 => /usr/lib/libc.so.12
-lgdk_pixbuf-2.0.0 => /usr/pkg/lib/libgdk_pixbuf-2.0.so.0
-lglib-2.0.0 => /usr/pkg/lib/libglib-2.0.so.0
-lintl.1 => /usr/lib/libintl.so.1
-lpcre2-8.0 => /usr/pkg/lib/libpcre2-8.so.0
-lpthread.1 => /usr/lib/libpthread.so.1
-lgobject-2.0.0 => /usr/pkg/lib/libgobject-2.0.so.0
-lffi.8 => /usr/pkg/lib/libffi.so.8
-lgmodule-2.0.0 => /usr/pkg/lib/libgmodule-2.0.so.0
-lgio-2.0.0 => /usr/pkg/lib/libgio-2.0.so.0
-lz.1 => /usr/pkg/lib/libz.so.1
-lpng16.16 => /usr/pkg/lib/libpng16.so.16
-ljpeg.9 => /usr/pkg/lib/libjpeg.so.9
-lcairo.2 => /usr/pkg/lib/libcairo.so.2
-lfontconfig.2 => /usr/X11R7/lib/libfontconfig.so.2
-lexpat.2 => /usr/lib/libexpat.so.2
-lfreetype.19 => /usr/X11R7/lib/libfreetype.so.19
-lbz2.1 => /usr/lib/libbz2.so.1
-lgcc_s.1 => /usr/lib/libgcc_s.so.1
-lfreetype.6 => /usr/pkg/lib/libfreetype.so.6
-lbrotlidec.1 => /usr/pkg/lib/libbrotlidec.so.1
-lbrotlicommon.1 => /usr/pkg/lib/libbrotlicommon.so.1
-lX11.7 => /usr/X11R7/lib/libX11.so.7
-lxcb.2 => /usr/X11R7/lib/libxcb.so.2
-lXau.7 => /usr/X11R7/lib/libXau.so.7
-lXdmcp.7 => /usr/X11R7/lib/libXdmcp.so.7
-lXext.7 => /usr/X11R7/lib/libXext.so.7
-lXrender.2 => /usr/X11R7/lib/libXrender.so.2
-lxcb-render.0 => /usr/X11R7/lib/libxcb-render.so.0
-lxcb-shm.0 => /usr/X11R7/lib/libxcb-shm.so.0
-lpixman-1.0 => /usr/pkg/lib/libpixman-1.so.0
-lpango-1.0.0 => /usr/pkg/lib/libpango-1.0.so.0
-lfribidi.0 => /usr/pkg/lib/libfribidi.so.0
-lharfbuzz.0 => /usr/pkg/lib/libharfbuzz.so.0
-lgraphite2.3 => /usr/pkg/lib/libgraphite2.so.3
-lstdc++.9 => /usr/lib/libstdc++.so.9
-lcairo-gobject.2 => /usr/pkg/lib/libcairo-gobject.so.2
-lepoxy.0 => /usr/X11R7/lib/libepoxy.so.0
-lfontconfig.1 => /usr/pkg/lib/libfontconfig.so.1
-lpangocairo-1.0.0 => /usr/pkg/lib/libpangocairo-1.0.so.0
-lpangoft2-1.0.0 => /usr/pkg/lib/libpangoft2-1.0.so.0
-lrt.1 => /usr/lib/librt.so.1
-lxkbcommon.0 => /usr/pkg/lib/libxkbcommon.so.0
-lwayland-client.0 => /usr/pkg/lib/libwayland-client.so.0
-lepoll-shim.0 => /usr/pkg/lib/libepoll-shim.so.0
-lwayland-cursor.0 => /usr/pkg/lib/libwayland-cursor.so.0
-lwayland-egl.1 => /usr/pkg/lib/libwayland-egl.so.1
-lXi.7 => /usr/X11R7/lib/libXi.so.7
-lXcursor.2 => /usr/X11R7/lib/libXcursor.so.2
-lXdamage.2 => /usr/X11R7/lib/libXdamage.so.2
-lXfixes.4 => /usr/X11R7/lib/libXfixes.so.4
-lXcomposite.2 => /usr/X11R7/lib/libXcomposite.so.2
-lXrandr.3 => /usr/X11R7/lib/libXrandr.so.3
-lXinerama.2 => /usr/X11R7/lib/libXinerama.so.2
-latk-1.0.0 => /usr/pkg/lib/libatk-1.0.so.0
-latk-bridge-2.0.0 => /usr/pkg/lib/libatk-bridge-2.0.so.0
-latspi.0 => /usr/pkg/lib/libatspi.so.0
-ldbus-1.3 => /usr/pkg/lib/libdbus-1.so.3
-lexecinfo.0 => /usr/lib/libexecinfo.so.0
-lelf.2 => /usr/lib/libelf.so.2
-lintl.8 => /usr/pkg/lib/libintl.so.8
Metadata
Metadata
Assignees
Labels
No labels