[X2Go-Commits] [nx-libs] 01/04: nx-X11: build programs with a temporary RPATH/RUNPATH value and a relinked version with the system location.

git-admin at x2go.org git-admin at x2go.org
Sat Dec 30 00:22:59 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 f2cfad0c6b7594bc97dd2a1507d2d429b7d8ef98
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 a relinked version with the system location.
    
    While the install target explicitly installs the relinked
    system-location version of a program, we do not actually use this.
    
    Currently, we copy nxagent directly out of the build root.
---
 nx-X11/config/cf/Imake.rules      | 37 +++++++++++++++++++++++++++++++++----
 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     | 19 +++++++++++++++++--
 nx-X11/config/cf/lnxLib.rules     | 24 ++++++++++++++++++++++--
 nx-X11/programs/Xserver/Imakefile |  4 ++--
 7 files changed, 78 insertions(+), 10 deletions(-)

diff --git a/nx-X11/config/cf/Imake.rules b/nx-X11/config/cf/Imake.rules
index f53a15b..46538a6 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)
  */
@@ -1101,6 +1116,7 @@ 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($@,$(SERVERLDOPTIONS),objects,libs $(LDLIBS) syslibs)	@@\
@@ -1118,10 +1134,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 */
 
 /*
@@ -1586,17 +1604,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 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..5dee428 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=\$$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
@@ -62,7 +69,15 @@ XCOMM XXX To rpath or not to rpath...
 XCOMM XXX Maybe superfluous.
 #define ExtraLoadFlags RpathLoadFlags -Wl,--enable-new-dtags -Wl,-rpath-link=$(USRLIBDIRPATH)
 #else
-#define ExtraLoadFlags RpathLoadFlags -Wl,--enable-new-dtags -Wl,-rpath-link=$(BUILDLIBDIR)
+#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 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 76fcb39..5b89cdd 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,\$$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
@@ -75,12 +82,25 @@
 #     define ExtraLoadFlags RpathLoadFlags -Wl,--enable-new-dtags -Wl,-rpath-link,$(USRLIBDIRPATH)
 #    endif
 #   else
-#    define ExtraLoadFlags RpathLoadFlags -Wl,--enable-new-dtags -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 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