[X2Go-Commits] [nx-libs] 01/02: nx-X11: build programs with a temporary RPATH/RUNPATH value and only use system location when installing.

git-admin at x2go.org git-admin at x2go.org
Fri Dec 29 21:46:49 CET 2017


This is an automated email from the git hooks/post-receive script.

x2go pushed a commit to branch 3.6.x-rpm-debug
in repository nx-libs.

commit d23fc941b2937b6fb23c82ed6579a7b242fefbd2
Author: Mihai Moldovan <ionic at ionic.de>
Date:   Fri Dec 29 21:44:56 2017 +0100

    nx-X11: build programs with a temporary RPATH/RUNPATH value and only use system location when installing.
---
 nx-X11/config/cf/Imake.rules      | 33 ++++++++++++++++++++++++++++++---
 nx-X11/config/cf/Imake.tmpl       |  1 +
 nx-X11/config/cf/README           |  1 +
 nx-X11/config/cf/cross.def        |  2 ++
 nx-X11/config/cf/gnuLib.rules     | 17 ++++++++++++++++-
 nx-X11/config/cf/lnxLib.rules     | 22 +++++++++++++++++++++-
 nx-X11/programs/Xserver/Imakefile |  4 ++--
 7 files changed, 73 insertions(+), 7 deletions(-)

diff --git a/nx-X11/config/cf/Imake.rules b/nx-X11/config/cf/Imake.rules
index f53a15b..b0d38fe 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)
@@ -76,6 +78,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 +319,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 +617,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)
  */
@@ -1118,6 +1133,7 @@ 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::									@@\
@@ -1586,17 +1602,28 @@ install:: file								@@\
 
 
 /*
+ * RelinkProgram - relinks an executable program in preparation of installation
+ */
+#ifndef RelinkProgram
+#define RelinkProgram(program,objects,libs,syslibs)				@@\
+ProgramRelinkName(server): 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 307d00d..285b534 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
diff --git a/nx-X11/config/cf/README b/nx-X11/config/cf/README
index aca6b39..59a08f4 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 ee3767c..d1b737f 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 fe0e82d..6d5818a 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,--enable-new-dtags -Wl,-rpath=$(USRLIBDIRPATH)
+#define RpathLoadFlags -Wl,--enable-new-dtags -Wl,-rpath=$(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
@@ -65,6 +72,14 @@ XCOMM XXX Maybe superfluous.
 #define ExtraLoadFlags RpathLoadFlags -Wl,--enable-new-dtags -Wl,-rpath-link=$(BUILDLIBDIR)
 #endif
 #endif
+#ifndef ExtraInstallLoadFlags
+#ifdef UseInstalled
+XCOMM XXX Maybe superfluous.
+#define ExtraInstallLoadFlags RpathInstallLoadFlags -Wl,--enable-new-dtags -Wl,-rpath-link=$(USRLIBDIRPATH)
+#else
+#define ExtraInstallLoadFlags RpathInstallLoadFlags -Wl,--enable-new-dtags -Wl,-rpath-link=$(BUILDLIBDIR)
+#endif
+#endif
 
 /*
  * InstallSharedLibrary - generate rules to install the shared library.
diff --git a/nx-X11/config/cf/lnxLib.rules b/nx-X11/config/cf/lnxLib.rules
index 76fcb39..4b035c5 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,--enable-new-dtags -Wl,-rpath,$(USRLIBDIRPATH)
+#define RpathLoadFlags -Wl,--enable-new-dtags -Wl,-rpath,$(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
@@ -81,6 +88,19 @@
 #   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,$(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 efab0de..f6dd115 100644
--- a/nx-X11/programs/Xserver/Imakefile
+++ b/nx-X11/programs/Xserver/Imakefile
@@ -400,7 +400,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.
@@ -411,7 +411,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

--
Alioth's /home/x2go-admin/maintenancescripts/git/hooks/post-receive-email on /srv/git/code.x2go.org/nx-libs.git


More information about the x2go-commits mailing list