diff options
-rw-r--r-- | Makefile | 4 | ||||
-rwxr-xr-x | debian/rules | 8 | ||||
-rw-r--r-- | nx-X11/config/cf/Imake.rules | 64 | ||||
-rw-r--r-- | nx-X11/config/cf/Imake.tmpl | 2 | ||||
-rw-r--r-- | nx-X11/config/cf/README | 1 | ||||
-rw-r--r-- | nx-X11/config/cf/cross.def | 2 | ||||
-rw-r--r-- | nx-X11/config/cf/gnuLib.rules | 21 | ||||
-rw-r--r-- | nx-X11/config/cf/lnxLib.rules | 26 | ||||
-rw-r--r-- | nx-X11/programs/Xserver/Imakefile | 10 | ||||
-rw-r--r-- | nxcompshad/src/Makefile.am | 7 | ||||
-rw-r--r-- | nxproxy/configure.ac | 9 | ||||
-rw-r--r-- | nxproxy/src/Makefile.am | 1 |
12 files changed, 132 insertions, 23 deletions
@@ -176,7 +176,7 @@ install-full: $(MAKE) -C nxcompshad install $(INSTALL_DIR) $(DESTDIR)$(BINDIR)/bin - $(INSTALL_PROGRAM) nx-X11/programs/Xserver/nxagent $(DESTDIR)$(BINDIR) + $(INSTALL_PROGRAM) nx-X11/programs/Xserver/nxagent-relink $(DESTDIR)$(BINDIR)/nxagent $(INSTALL_DIR) $(DESTDIR)$(PREFIX)/share/pixmaps $(INSTALL_FILE) nx-X11/programs/Xserver/hw/nxagent/nxagent.xpm $(DESTDIR)$(PREFIX)/share/pixmaps @@ -201,7 +201,7 @@ install-full: cp -aL nx-X11/exports/include/* nx-X11/.build-exports/include # copy libs (for libnx-x11), we want the targets of the links - . replace.sh; set -x; find nx-X11/exports/lib/ | grep -F ".so" | while read libpath; do \ + . replace.sh; set -x; find nx-X11/exports/lib/ -name "libNX*.so" | while read libpath; do \ libfile=$$(basename $$libpath); \ libdir=$$(dirname $$libpath); \ link=$$(readlink $$libpath); \ diff --git a/debian/rules b/debian/rules index 90234c516..b2258cd58 100755 --- a/debian/rules +++ b/debian/rules @@ -124,5 +124,13 @@ override_dh_strip: override_dh_makeshlibs: dh_makeshlibs -n +# Needed for the libX11 RUNPATH/RPATH link-time hack. +# dh_shlibdeps will follow dependencies within binaries and choke +# on the libX11 dependency, since the SONAME (libX11.*) used while linking +# does not match the later detected SONAME (libNX_X11.*) obtained through +# the libX11 -> libNX_X11 compat symlink. +override_dh_shlibdeps: + dh_shlibdeps --dpkg-shlibdeps-params=--ignore-missing-info + get-orig-source: uscan --noconf --force-download --rename --download-current-version --destdir=.. diff --git a/nx-X11/config/cf/Imake.rules b/nx-X11/config/cf/Imake.rules index 06b78993b..8fc344ac5 100644 --- a/nx-X11/config/cf/Imake.rules +++ b/nx-X11/config/cf/Imake.rules @@ -21,6 +21,7 @@ XCOMM --------------------------------------------------------------------- * _MUseCat (a,b,c) * ProgramTargetName (target) * HostProgramTargetName (target) + * ProgramRelinkName (target) * RunProgram (progvar,options) * RunProgramWithSetup (setup,progvar,options) * RemoveFile (file) @@ -44,6 +45,7 @@ XCOMM --------------------------------------------------------------------- * BuildIncludes (srclist,dstsubdir,dstupdir) * LinkRule (program,options,objects,libraries) * HostLinkRule (program,options,objects,libraries) + * LinkInstallRule (program,options,objects,libraries) * NoCmpScript (target) * NoConfigRec (target) * NormalProgramTarget (program,objects,deplibs,locallibs,syslibs) @@ -56,6 +58,7 @@ XCOMM --------------------------------------------------------------------- * ComplexProgramTarget_3 (program,locallib,syslib) * ServerTargetWithFlags (server,subdirs,objects,libs,syslibs,flags) * ServerTarget (server,subdirs,objects,libs,syslibs) + * LibX11Links () * MoveToBakFile (file) * RMoveToBakFile (file) * RanLibrary (args) @@ -76,6 +79,7 @@ XCOMM --------------------------------------------------------------------- * InstallNonExecFileNoClobber (file,dest) * InstallNonExec (file,dest) * InstallProgramWithFlags (program,dest,flags) + * RelinkProgram (program,objects,libs,syslibs) * InstallProgram (program,dest) * InstallScript (program,dest) * InstallNamedProg (srcname,dstname,dest) @@ -316,6 +320,10 @@ XCOMM special target for clearmake @@\ #define HostProgramTargetName(target)target #endif +#ifndef ProgramRelinkName +#define ProgramRelinkName(target)Concat(target,-relink) +#endif + #ifndef RunProgram #define RunProgram(progvar,options) $(progvar) options #endif @@ -610,6 +618,14 @@ $(CCLINK) -o program options objects libraries $(EXTRA_LOAD_FLAGS) #endif /* LinkRule */ /* + * LinkRule - link a program, suitable for later installation + */ +#ifndef LinkInstallRule +#define LinkInstallRule(program,options,objects,libraries) \ +$(CCLINK) -o program options objects libraries $(EXTRA_INSTALL_LOAD_FLAGS) +#endif /* LinkInstallRule */ + +/* * HostLinkRule - link a utility to be used on the build host * (differs from LinkRule if cross compiling) */ @@ -1101,13 +1117,14 @@ CplusplusProgramTargetHelper(program,SRCS10,OBJS10,DEPLIBS10,locallib,syslib) #ifndef ServerTargetWithFlags #define ServerTargetWithFlags(server,subdirs,objects,libs,syslibs,flags) @@\ AllTarget(ProgramTargetName(server)) @@\ +AllTarget(ProgramRelinkName(server)) @@\ ProgramTargetName(server): subdirs objects libs @@\ MoveToBakFile($@) @@\ - LinkRule($@,$(LDOPTIONS),objects,libs $(LDLIBS) syslibs) @@\ + LinkRule($@,$(SERVERLDOPTIONS),objects,libs $(LDLIBS) syslibs) @@\ @@\ Concat(load,server): @@\ MoveToBakFile(ProgramTargetName(server)) @@\ - LinkRule(ProgramTargetName(server),$(LDOPTIONS),objects,libs $(LDLIBS) syslibs) @@\ + LinkRule(ProgramTargetName(server),$(SERVERLDOPTIONS),objects,libs $(LDLIBS) syslibs) @@\ @@\ loadX:: Concat(load,server) @@\ @@\ @@ -1118,10 +1135,12 @@ PurifyLinkTarget(Concat(load,server),server,objects libs $(LDLIBS) syslibs) @@\ ProofProgramTarget(server,subdirs objects libs,objects libs $(LDLIBS) syslibs) @@\ ProofLinkTarget(Concat(load,server),server,objects libs $(LDLIBS) syslibs) @@\ @@\ +RelinkProgram(ProgramTargetName(server),objects,libs,syslibs) @@\ InstallProgramWithFlags(server,$(BINDIR),flags) @@\ @@\ clean:: @@\ - RemoveFile(ProgramTargetName(server)) + RemoveFile(ProgramTargetName(server)) @@\ + RemoveFile(ProgramRelinkName(server)) #endif /* ServerTargetWithFlags */ /* @@ -1132,6 +1151,28 @@ clean:: @@\ ServerTargetWithFlags(server,subdirs,objects,libs,syslibs,$(_NOOP_)) #endif /* ServerTarget */ + +/* + * Creates libX11 compat symlinks to enable execution of rpath-dependent + * programs. + */ +#ifndef LibX11Links +#define LibX11Links() @@\ +AllTarget(libX11links) @@\ +libX11links: @@\ + $(LN) libNX_X11.so $(BUILDLIBDIR)/libX11.so @@\ + $(LN) libNX_X11.so.6 $(BUILDLIBDIR)/libX11.so.6 @@\ + $(LN) libNX_X11.so.6.3.0 $(BUILDLIBDIR)/libX11.so.6.3.0 @@\ + touch libX11links @@\ + @@\ +clean:: @@\ + RemoveFile($(BUILDLIBDIR)/libX11.so) @@\ + RemoveFile($(BUILDLIBDIR)/libX11.so.6) @@\ + RemoveFile($(BUILDLIBDIR)/libX11.so.6.3.0) @@\ + RemoveFile(libX11links) +#endif /* LibX11Links */ + + #if DoRanlibCmd #define RanLibrary(args) $(RANLIB) args #else @@ -1586,17 +1627,28 @@ install:: file @@\ /* + * RelinkProgram - relinks an executable program in preparation of installation + */ +#ifndef RelinkProgram +#define RelinkProgram(program,objects,libs,syslibs) @@\ +ProgramRelinkName(program): program @@\ + MoveToBakFile($@) @@\ + LinkInstallRule($@,$(SERVERLDOPTIONS),objects,libs $(LDLIBS) syslibs) +#endif /* RelinkProgram */ + + +/* * InstallProgramWithFlags - generate rules to install an executable program * using given install flags. */ #ifndef InstallProgramWithFlags #if StripInstalledPrograms && CrossCompiling -#define InstallProgramWithFlags(program,dest,flags) @@\ -InstallTarget(install,ProgramTargetName(program),$(INSTPGMFLAGS) flags,dest) @@\ +#define InstallProgramWithFlags(program,dest,flags) @@\ +InstallTarget(install,ProgramRelinkName(program),$(INSTPGMFLAGS) flags,dest) @@\ CrossStripCmd $(DESTDIR)dest/ProgramTargetName(program) #else #define InstallProgramWithFlags(program,dest,flags) @@\ -InstallTarget(install,ProgramTargetName(program),$(INSTPGMFLAGS) flags,dest) +InstallTarget(install,ProgramRelinkName(program),$(INSTPGMFLAGS) flags,dest) #endif /* StripInstalledPrograms && CrossCompiling */ #endif /* InstallProgramWithFlags */ diff --git a/nx-X11/config/cf/Imake.tmpl b/nx-X11/config/cf/Imake.tmpl index 5d989d1e0..285b53480 100644 --- a/nx-X11/config/cf/Imake.tmpl +++ b/nx-X11/config/cf/Imake.tmpl @@ -1846,6 +1846,7 @@ MODLDCOMBINEFLAGS = ModuleLdCombineFlags STD_DEFINES = StandardDefines $(PROJECT_DEFINES) SETITIMER_DEFINES = HasSetitimerDefines EXTRA_LOAD_FLAGS = ExtraLoadFlags +EXTRA_INSTALL_LOAD_FLAGS = ExtraInstallLoadFlags EXTRA_LDOPTIONS = ExtraLoadOptions EXTRA_LIBRARIES = MallocLibraries ExtraLibraries TAGS = TagsCmd @@ -1995,6 +1996,7 @@ XEXT_EXTRA_DEFINES = LDPRELIB = LdPreLib $(INSTALLED_LIBS) LDPOSTLIB = LdPostLib LDOPTIONS = $(CDEBUGFLAGS) $(CCOPTIONS) $(EXTRA_LDOPTIONS) $(THREADS_LDFLAGS) $(LOCAL_LDFLAGS) $(LDPRELIBS) + SERVERLDOPTIONS = $(CDEBUGFLAGS) $(CCOPTIONS) $(EXTRA_LDOPTIONS) $(THREADS_LDFLAGS) $(LOCAL_LDFLAGS) CXXLDOPTIONS = $(CXXDEBUGFLAGS) $(CXXOPTIONS) $(EXTRA_LDOPTIONS) $(THREADS_CXXLDFLAGS) $(LOCAL_LDFLAGS) $(LDPRELIBS) LDLIBS = $(LDPOSTLIBS) $(THREADS_LIBS) $(SYS_LIBRARIES) $(EXTRA_LIBRARIES) diff --git a/nx-X11/config/cf/README b/nx-X11/config/cf/README index aca6b3933..59a08f45c 100644 --- a/nx-X11/config/cf/README +++ b/nx-X11/config/cf/README @@ -37,6 +37,7 @@ Imake.tmpl provides defaults for the following variables: ExtraFilesToClean extra files to remove on make clean ExtraLibraries system-specific libraries need to link ExtraLoadFlags system-specific loader flags + ExtraInstallLoadFlags system-specific loader flags for later installation FileManSuffix man suffix for file format pages FilesToClean files to delete in make clean FortranCmd command to run Fortran compiler diff --git a/nx-X11/config/cf/cross.def b/nx-X11/config/cf/cross.def index ee3767c4f..d1b737fcc 100644 --- a/nx-X11/config/cf/cross.def +++ b/nx-X11/config/cf/cross.def @@ -27,6 +27,8 @@ #define RanlibCmd /opt/Embedix/tools/bin/arm-linux-ranlib #undef ExtraLoadFlags #define ExtraLoadFlags +#undef ExtraInstallLoadFlags +#define ExtraInstallLoadFlags #define FbNoPixelAddrCode #undef TermcapLibrary #define TermcapLibrary -ltermcap diff --git a/nx-X11/config/cf/gnuLib.rules b/nx-X11/config/cf/gnuLib.rules index 7b057c1d0..5dee4280b 100644 --- a/nx-X11/config/cf/gnuLib.rules +++ b/nx-X11/config/cf/gnuLib.rules @@ -40,11 +40,18 @@ XCOMM XXX To rpath or not to rpath... #endif #ifndef RpathLoadFlags #if UseRpath -#define RpathLoadFlags -Wl,-rpath=$(USRLIBDIRPATH) +#define RpathLoadFlags -Wl,--enable-new-dtags -Wl,-rpath=\$$ORIGIN/$(BUILDLIBDIR) #else #define RpathLoadFlags /**/ #endif #endif +#ifndef RpathInstallLoadFlags +#if UseRpath +#define RpathInstallLoadFlags -Wl,--enable-new-dtags -Wl,-rpath=$(USRLIBDIRPATH) +#else +#define RpathInstallLoadFlags /**/ +#endif +#endif #ifndef LibraryRpathLoadFlags #define LibraryRpathLoadFlags RpathLoadFlags #endif @@ -60,9 +67,17 @@ XCOMM XXX To rpath or not to rpath... #ifndef ExtraLoadFlags #ifdef UseInstalled XCOMM XXX Maybe superfluous. -#define ExtraLoadFlags RpathLoadFlags -Wl,-rpath-link=$(USRLIBDIRPATH) +#define ExtraLoadFlags RpathLoadFlags -Wl,--enable-new-dtags -Wl,-rpath-link=$(USRLIBDIRPATH) +#else +#define ExtraLoadFlags RpathLoadFlags -Wl,--enable-new-dtags -Wl,-rpath-link=\$$ORIGIN/$(BUILDLIBDIR) +#endif +#endif +#ifndef ExtraInstallLoadFlags +#ifdef UseInstalled +XCOMM XXX Maybe superfluous. +#define ExtraInstallLoadFlags RpathInstallLoadFlags -Wl,--enable-new-dtags -Wl,-rpath-link=$(USRLIBDIRPATH) #else -#define ExtraLoadFlags RpathLoadFlags -Wl,-rpath-link=$(BUILDLIBDIR) +#define ExtraInstallLoadFlags RpathInstallLoadFlags -Wl,--enable-new-dtags -Wl,-rpath-link=\$$ORIGIN/$(BUILDLIBDIR) #endif #endif diff --git a/nx-X11/config/cf/lnxLib.rules b/nx-X11/config/cf/lnxLib.rules index e415db8f1..5b89cdd96 100644 --- a/nx-X11/config/cf/lnxLib.rules +++ b/nx-X11/config/cf/lnxLib.rules @@ -51,11 +51,18 @@ # endif #ifndef RpathLoadFlags #if UseRpath -#define RpathLoadFlags -Wl,-rpath,$(USRLIBDIRPATH) +#define RpathLoadFlags -Wl,--enable-new-dtags -Wl,-rpath,\$$ORIGIN/$(BUILDLIBDIR) #else #define RpathLoadFlags /**/ #endif #endif +#ifndef RpathInstallLoadFlags +#if UseRpath +#define RpathInstallLoadFlags -Wl,--enable-new-dtags -Wl,-rpath,$(USRLIBDIRPATH) +#else +#define RpathInstallLoadFlags /**/ +#endif +#endif #ifndef LibraryRpathLoadFlags #define LibraryRpathLoadFlags RpathLoadFlags #endif @@ -72,15 +79,28 @@ # if LinuxBinUtilsMajorVersion >= 26 # ifdef UseInstalled # if LinuxBinUtilsMajorVersion < 27 -# define ExtraLoadFlags RpathLoadFlags -Wl,-rpath-link,$(USRLIBDIRPATH) +# define ExtraLoadFlags RpathLoadFlags -Wl,--enable-new-dtags -Wl,-rpath-link,$(USRLIBDIRPATH) # endif # else -# define ExtraLoadFlags RpathLoadFlags -Wl,-rpath-link,$(BUILDLIBDIR) +# define ExtraLoadFlags RpathLoadFlags -Wl,--enable-new-dtags -Wl,-rpath-link,\$$ORIGIN/$(BUILDLIBDIR) # endif # else # define ExtraLoadFlags RpathLoadFlags # endif # endif +# ifndef ExtraInstallLoadFlags +# if LinuxBinUtilsMajorVersion >= 26 +# ifdef UseInstalled +# if LinuxBinUtilsMajorVersion < 27 +# define ExtraInstallLoadFlags RpathInstallLoadFlags -Wl,--enable-new-dtags -Wl,-rpath-link,$(USRLIBDIRPATH) +# endif +# else +# define ExtraInstallLoadFlags RpathInstallLoadFlags -Wl,--enable-new-dtags -Wl,-rpath-link,\$$ORIGIN/$(BUILDLIBDIR) +# endif +# else +# define ExtraInstallLoadFlags RpathInstallLoadFlags +# endif +# endif # ifndef HardCodeLibdirFlag # define HardCodeLibdirFlag RpathLoadFlags # endif diff --git a/nx-X11/programs/Xserver/Imakefile b/nx-X11/programs/Xserver/Imakefile index 25ebd73b9..5d86a534d 100644 --- a/nx-X11/programs/Xserver/Imakefile +++ b/nx-X11/programs/Xserver/Imakefile @@ -319,6 +319,7 @@ NXAGENTNXLIBS = -L/usr/sfw/lib \ -L../../../nxcompshad/src/.libs \ -L../../lib/src/.libs \ -lrt \ + -lX11 \ -lXcomp \ -lXcompshad \ -lXrender \ @@ -334,6 +335,7 @@ NXAGENTNXLIBS = -L/usr/sfw/lib \ NXAGENTNXLIBS = -L../../../nxcomp/src/.libs \ -L../../../nxcompshad/src/.libs \ -L../../lib/src/.libs \ + -lX11 \ -lXcomp \ -lXcompshad \ -lXrender \ @@ -349,6 +351,7 @@ NXAGENTNXLIBS = -L../../../nxcomp/src/.libs \ -L../../../nxcompshad/src/.libs \ -L../../lib/src/.libs \ -lkvm \ + -lX11 \ -lXcomp \ -lXcompshad \ -lXrender \ @@ -364,6 +367,7 @@ NXAGENTNXLIBS = -L../../../nxcomp/src/.libs \ NXAGENTNXLIBS = -L../../../nxcomp/src/.libs \ -L../../../nxcompshad/src/.libs \ -L../../lib/src/.libs \ + -lX11 \ -lXcomp \ -lXcompshad \ -lXrender \ @@ -387,6 +391,8 @@ NX_XSHADOWLIBNAME = libXcompshad.so ServerTarget(nxagent,$(NXAGENTDIRS),$(NXAGENTOBJS), \ $(LIBCWRAPPER) $(NXCOMPEXT) $(NXAGENTLIBS) $(LOADABLEEXTS),$(NXAGENTNXLIBS) $(NXAGENTSYSLIBS) $(NXCOMPEXTSYSLIBS)) +LibX11Links() + /* * Hard coded target to build a static nxagent server. */ @@ -396,7 +402,7 @@ nxagent_static: nxagent else exit 0; fi $(CCLINK) -o nxagent_static -static $(LDOPTIONS) $(NXAGENTOBJS) \ $(LIBCWRAPPER) $(NXCOMPEXT) $(NXAGENTLIBS) $(LOADABLEEXTS) $(LDLIBS) \ - $(NXCOMPEXTSYSLIBS) $(NXAGENTSYSLIBS) $(EXTRA_LOAD_FLAGS) + $(NXCOMPEXTSYSLIBS) $(NXAGENTSYSLIBS) $(EXTRA_INSTALL_LOAD_FLAGS) /* * Hard coded target to build a static nxagent server except for libX11 and libXext. @@ -407,7 +413,7 @@ nxagent_static_nolibs: nxagent else exit 0; fi $(CCLINK) -o nxagent_static_nolibs -Wl,-Bstatic $(LDOPTIONS) $(NXAGENTOBJS) \ $(NXAGENTLIBS) $(LOADABLEEXTS) $(LIBCWRAPPER) $(LDLIBS) \ - $(LDPRELIBS) $(SYSLIBS) -Wl,-Bdynamic -lNX_X11 -lXext $(EXTRA_LOAD_FLAGS) + $(LDPRELIBS) $(SYSLIBS) -Wl,-Bdynamic -lNX_X11 -lXext $(EXTRA_INSTALL_LOAD_FLAGS) #endif /* NXAgentServer */ #if defined(NXWinServer) && NXWinServer diff --git a/nxcompshad/src/Makefile.am b/nxcompshad/src/Makefile.am index 33f3abdb9..f7beac86e 100644 --- a/nxcompshad/src/Makefile.am +++ b/nxcompshad/src/Makefile.am @@ -13,6 +13,7 @@ libXcompshad_la_SOURCES = \ $(NULL) libXcompshad_la_LIBADD = \ + -lX11 \ @Xext_LIBS@ \ @Xdamage_LIBS@ \ @Xrandr_LIBS@ \ @@ -36,7 +37,11 @@ AM_CPPFLAGS = \ -I$(top_srcdir)/../nx-X11/exports/include \ $(NULL) -libXcompshad_la_LDFLAGS = -version-number @LT_COMPSHAD_VERSION@ -no-undefined +libXcompshad_la_LDFLAGS = \ + -version-number @LT_COMPSHAD_VERSION@ -no-undefined \ + -Wl,--enable-new-dtags \ + -R '$(libdir)/nx/X11' \ + $(NULL) libXcompshadincludedir = $(includedir)/nx libXcompshadinclude_HEADERS = \ diff --git a/nxproxy/configure.ac b/nxproxy/configure.ac index 811862efd..a1dcab442 100644 --- a/nxproxy/configure.ac +++ b/nxproxy/configure.ac @@ -16,6 +16,9 @@ AC_CONFIG_MACRO_DIR([m4]) AM_INIT_AUTOMAKE([foreign no-dist-gzip dist-bzip2]) +# Initialize libtool +AC_PROG_LIBTOOL + PROXY_VERSION=nxproxy_version AC_SUBST([PROXY_VERSION]) @@ -34,12 +37,6 @@ dnl We will work around this bug by using AX_PTHREAD and linking with pthread su dnl libXcomp for now. AX_PTHREAD([], AC_MSG_ERROR([no POSIX threads support detected])) -AC_ARG_ENABLE([cxx11], - [AS_HELP_STRING([--enable-cxx11], - [enable optional features requiring C++11 support (disabled by default)])], - [AS_IF([test x$enableval = xyes], - [AX_CXX_COMPILE_STDCXX_11([], [mandatory])])]) - AC_CONFIG_FILES([ Makefile man/Makefile diff --git a/nxproxy/src/Makefile.am b/nxproxy/src/Makefile.am index 4fd2eefd6..ecf2a0486 100644 --- a/nxproxy/src/Makefile.am +++ b/nxproxy/src/Makefile.am @@ -15,6 +15,7 @@ nxproxy_LDADD = \ nxproxy_LDFLAGS = \ $(PTHREAD_LDFLAGS) \ + -Wl,--enable-new-dtags \ $(NULL) nxproxy_CFLAGS = \ |