diff options
author | Michael Stahl <mstahl@redhat.com> | 2013-09-18 15:03:50 +0200 |
---|---|---|
committer | Michael Stahl <mstahl@redhat.com> | 2013-09-22 11:08:31 +0200 |
commit | 70c35265f517ef372cb739d4cc64499abf57a838 (patch) | |
tree | 0bab65cbe9bde238d965a151dd14b3e9d7d031ca /solenv/gbuild/platform/solaris.mk | |
parent | c0c7df91469d3306baa6708b0a8ab4eadc0e9097 (diff) |
gbuild: remove libraries from OUTDIR and WORKDIR
Refactor everything to find and link libraries directly in INSTDIR.
- add gb_LinkTarget_get_linksearchpath_for_layer, and use it to set up
-L paths for T_LDFLAGS in such a way that only allowed libraries
can be linked against; i.e. it's not possible to link URE
linktargets against OOO or not-installed libraries
- gb_Library_get_target is now same as the gb_LinkTarget_get_target
(TODO: this needs cleanup)
- since a pattern rule won't work for linking libraries in INSTDIR,
add a separate per-file rule for every INSTDIR lib
- pattern rule can't find link target in the clean target any more
so add a LINKTARGET variable
- disable gb_Library_add_auxtarget, no auxtargets need to be copied
- tweak the call to gb_Library_Library_platform to pass in a path
in sdk/lib for the versioned URE libs
- fix the Library clean target
- add LAYER parameter to gb_LinkTarget_LinkTarget
- adjust platform link commands
- MSVC link command now uses explicit -manifestfile and -pdb
parameters to keep misc. files out of INSTDIR
- remove gb_Helper_OUTDIR_FOR_BUILDLIBDIR
- adjust Extension, CppunitTest, JunitTest, PythonTest, Gallery,
various CustomTargets to search INSTDIR
- remove SDK library symlinks and import libs from odk/Package_lib
- on Mac OS X, put .dylib symlinks into sdk/lib even though those
are not packaged and would be created by the SDK configury;
we need these to be somewhere for linking anyway
- add a (unfortunately cyclic) dependency on Package ure_install to sal
Change-Id: I70d88742f8c8232ad7b9521416275c67b64fe6cf
Diffstat (limited to 'solenv/gbuild/platform/solaris.mk')
-rw-r--r-- | solenv/gbuild/platform/solaris.mk | 19 |
1 files changed, 10 insertions, 9 deletions
diff --git a/solenv/gbuild/platform/solaris.mk b/solenv/gbuild/platform/solaris.mk index 185f92ea5f5b..5ff75ae7c7eb 100644 --- a/solenv/gbuild/platform/solaris.mk +++ b/solenv/gbuild/platform/solaris.mk @@ -154,7 +154,7 @@ gb_LinkTarget__RPATHS := \ OOO:\dORIGIN:\dORIGIN/../ure-link/lib \ SDKBIN:\dORIGIN/../../ure-link/lib \ OXT: \ - NONE:\dORIGIN/../lib:\dORIGIN \ + NONE:\dORIGIN/../Library \ gb_LinkTarget_CFLAGS := $(gb_CFLAGS) $(gb_CFLAGS_WERROR) gb_LinkTarget_CXXFLAGS := $(gb_CXXFLAGS) $(gb_CXXFLAGS_WERROR) @@ -187,15 +187,16 @@ $(call gb_Helper_abbreviate_dirs,\ $(LIBS) \ $(patsubst lib%.a,-l%,$(patsubst lib%.so,-l%,$(patsubst %.$(gb_Library_UDK_MAJORVER),%,$(foreach lib,$(LINKED_LIBS),$(call gb_Library_get_filename,$(lib)))))) \ -o $(1) \ - $(if $(SOVERSIONSCRIPT),&& ln -sf $(notdir $(1)) $(ILIBTARGET)) \ - $(if $(filter Library,$(TARGETTYPE)),&& \ - readelf -d $(1) | grep SONAME > $(1).exports.tmp ; \ + $(if $(SOVERSIONSCRIPT),&& ln -sf ../../ure-link/lib/$(notdir $(1)) $(ILIBTARGET))) + $(if $(filter Library,$(TARGETTYPE)), $(call gb_Helper_abbreviate_dirs,\ + readelf -d $(1) | grep SONAME > $(WORKDIR)/LinkTarget/$(2).exports.tmp; \ $(NM) --dynamic --extern-only --defined-only --format=posix $(1) \ | cut -d' ' -f1-2 \ - >> $(1).exports.tmp && \ - if cmp -s $(1).exports.tmp $(1).exports; \ - then rm $(1).exports.tmp; \ - else mv $(1).exports.tmp $(1).exports; touch -r $(1) $(1).exports; \ + >> $(WORKDIR)/LinkTarget/$(2).exports.tmp && \ + if cmp -s $(WORKDIR)/LinkTarget/$(2).exports.tmp $(WORKDIR)/LinkTarget/$(2).exports; \ + then rm $(WORKDIR)/LinkTarget/$(2).exports.tmp; \ + else mv $(WORKDIR)/LinkTarget/$(2).exports.tmp $(WORKDIR)/LinkTarget/$(2).exports && \ + touch -r $(1) $(WORKDIR)/LinkTarget/$(2).exports; \ fi)) endef @@ -311,7 +312,7 @@ gb_CppunitTest_get_filename = libtest_$(1).so gb_CppunitTest_get_ilibfilename = $(gb_CppunitTest_get_filename) define gb_CppunitTest_CppunitTest_platform -$(call gb_LinkTarget_get_target,$(2)) : RPATH := +$(call gb_LinkTarget_get_target,$(2)) : RPATH := $(call gb_Library__get_rpath,$(call gb_LinkTarget__get_rpath_for_layer,NONE)) endef |