Kaydet (Commit) 70c35265 authored tarafından Michael Stahl's avatar Michael Stahl

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
üst c0c7df91
......@@ -7,7 +7,7 @@
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
#
$(eval $(call gb_Package_Package,extensions_OOoSpotlightImporter,$(OUTDIR)/lib))
$(eval $(call gb_Package_Package,extensions_OOoSpotlightImporter,$(gb_Library_DLLDIR)))
$(eval $(call gb_Package_set_outdir,extensions_OOoSpotlightImporter,$(gb_INSTROOT)))
......
......@@ -22,7 +22,7 @@ $(call gb_CustomTarget_get_workdir,i18npool/localedata)/localedata_$(1).cxx : \
$$(call gb_Output_announce,$$(subst $(WORKDIR)/,,$$@),$(true),SAX,1)
$$(call gb_Helper_abbreviate_dirs, \
$$(call gb_Helper_execute,saxparser) $(1) $$< $$@.tmp \
-env:LO_LIB_DIR=$(call gb_Helper_make_url,$(gb_Helper_OUTDIR_FOR_BUILDLIBDIR)) \
-env:LO_LIB_DIR=$(call gb_Helper_make_url,$(gb_INSTROOT)/$(gb_PROGRAMDIRNAME)) \
-env:URE_MORE_SERVICES=$(call gb_Helper_make_url,$(call gb_Rdb_get_target_for_build,saxparser)) \
$(if $(findstring s,$(MAKEFLAGS)),> /dev/null 2>&1) && \
sed 's/\(^.*get[^;]*$$$$\)/SAL_DLLPUBLIC_EXPORT \1/' $$@.tmp > $$@ && \
......
......@@ -12,27 +12,7 @@ $(eval $(call gb_Package_Package,odk_lib,$(OUTDIR)/lib))
$(eval $(call gb_Package_set_outdir,odk_lib,$(INSTDIR)))
$(eval $(call gb_Package_add_files,odk_lib,$(gb_Package_SDKDIRNAME)/lib,\
$(if $(filter MSC,$(COM)),\
$(foreach lib,\
cppu \
cppuhelper \
purpenvhelper \
sal \
salhelper \
,$(call gb_Library_get_ilibfilename,$(lib)) \
) \
) \
$(if $(filter LINUX,$(OS)),$(notdir $(call gb_StaticLibrary_get_target,salcpprt))) \
))
ifneq (,$(filter-out MACOSX WNT,$(OS)))
define odk_add_sybolic_link
$(call gb_Package_add_symbolic_link,odk_lib,$(gb_Package_SDKDIRNAME)/lib/$(basename $(1)),../../ure-link/lib/$(1))
endef
$(foreach lib,cppu cppuhelper purpenvhelper sal salhelper,\
$(eval $(call odk_add_sybolic_link,$(call gb_Library_get_runtime_filename,$(lib)))))
endif
# vim: set noet sw=4 ts=4:
......@@ -346,15 +346,13 @@ static PyObject* initPoniesMode(
xContext->getServiceManager(),
com::sun::star::uno::UNO_QUERY_THROW);
if (!xMSF.is()) { abort(); }
char *const outdir = getenv("OUTDIR");
if (!outdir) { abort(); }
OString const libname = (OString(OString(outdir, strlen(outdir)) +
char *const testlib = getenv("TEST_LIB");
if (!testlib) { abort(); }
OString const libname = OString(testlib, strlen(testlib))
#ifdef _WIN32
"/bin/")).replaceAll(OString('/'), OString('\\'))
#else
"/lib/"))
.replaceAll(OString('/'), OString('\\'))
#endif
+ SAL_MODULENAME("test");
;
oslModule const mod( osl_loadModuleAscii(libname.getStr(),
SAL_LOADMODULE_LAZY | SAL_LOADMODULE_GLOBAL) );
if (!mod) { abort(); }
......
......@@ -33,6 +33,10 @@ $(eval $(call gb_Library_add_defs,sal,\
-DSRCDIR="\"$(SRCDIR)\"" \
))
# need the "ure-link" symlink to exist in INSTDIR so it's possible to link sal
# FIXME: this creates cyclic dependency between ure and sal modules
$(eval $(call gb_Library_use_package,sal,ure_install))
$(eval $(call gb_Library_use_libraries,sal,\
$(if $(filter $(OS),ANDROID), \
lo-bootstrap \
......
......@@ -59,10 +59,10 @@ $(if $(URE),\
"-env:UNO_TYPES=$(foreach item,$(UNO_TYPES),$(call gb_Helper_make_url,$(item)))") \
$(if $(strip $(UNO_SERVICES)),\
"-env:UNO_SERVICES=$(foreach item,$(UNO_SERVICES),$(call gb_Helper_make_url,$(item)))") \
$(foreach dir,URE_INTERNAL_LIB_DIR LO_LIB_DIR,\
-env:$(dir)=$(call gb_Helper_make_url,$(gb_CppunitTest_LIBDIR))) \
--protector unoexceptionprotector$(gb_Library_DLLEXT) unoexceptionprotector \
--protector unobootstrapprotector$(gb_Library_DLLEXT) unobootstrapprotector \
-env:URE_INTERNAL_LIB_DIR=$(call gb_Helper_make_url,$(gb_INSTROOT)/$(LIBO_URE_LIB_FOLDER)) \
-env:LO_LIB_DIR=$(call gb_Helper_make_url,$(gb_INSTROOT)/$(gb_PROGRAMDIRNAME)) \
--protector $(call gb_Library_get_target,unoexceptionprotector) unoexceptionprotector \
--protector $(call gb_Library_get_target,unobootstrapprotector) unobootstrapprotector \
) $(ARGS)
endef
......@@ -102,7 +102,7 @@ endef
# call gb_CppunitTest__CppunitTest_impl,cppunittest,linktarget
define gb_CppunitTest__CppunitTest_impl
$(call gb_LinkTarget_LinkTarget,$(2),CppunitTest_$(1))
$(call gb_LinkTarget_LinkTarget,$(2),CppunitTest_$(1),NONE)
$(call gb_LinkTarget_set_targettype,$(2),CppunitTest)
$(call gb_LinkTarget_add_libs,$(2),$(gb_STDLIBS))
$(call gb_LinkTarget_add_defs,$(2),\
......
......@@ -59,7 +59,7 @@ endef
# call gb_Executable__Executable_impl,exe,linktarget
define gb_Executable__Executable_impl
$(call gb_LinkTarget_LinkTarget,$(2),Executable_$(1))
$(call gb_LinkTarget_LinkTarget,$(2),Executable_$(1),$(call gb_Executable_get_layer,$(1)))
$(call gb_LinkTarget_set_targettype,$(2),Executable)
$(call gb_LinkTarget_add_libs,$(2),$(gb_STDLIBS))
$(call gb_Executable_get_target,$(1)) : $(call gb_LinkTarget_get_target,$(2)) \
......
......@@ -161,7 +161,7 @@ endef
# add a library from the solver; DO NOT use gb_Library_get_target
define gb_Extension_add_library
$(call gb_Extension_add_file,$(1),$(call gb_Library_get_runtime_filename,$(2)),\
$(gb_Helper_OUTDIRLIBDIR)/$(call gb_Library_get_runtime_filename,$(2)))
$(call gb_LinkTarget_get_target,$(call gb_Library_get_linktarget,$(2))))
endef
......
......@@ -199,7 +199,7 @@ define gb_ExternalPackage__add_file_for_install
$(call gb_ExternalPackage_add_file,$(1),$(2),$(4))
$(call gb_Helper_install,$(call gb_ExternalPackage_get_target,$(1)), \
$(gb_INSTROOT)/$(3), \
$(3), \
$(call gb_UnpackedTarball_get_dir,$(gb_ExternalPackage_UNPACKED_$(1)))/$(4))
$(call gb_UnpackedTarball_get_dir,$(gb_ExternalPackage_UNPACKED_$(1)))/$(4) :| \
......@@ -218,7 +218,7 @@ endef
#
# gb_ExternalPackage_add_library_for_install package dest src library?
define gb_ExternalPackage_add_library_for_install
$(call gb_ExternalPackage__add_file_for_install,$(1),$(2),$(if $(4),$(call gb_Library_get_instdir,$(4)),$(gb_Package_PROGRAMDIRNAME))/$(notdir $(2)),$(3))
$(call gb_ExternalPackage__add_file_for_install,$(1),$(2),$(if $(4),$(call gb_Library_get_instdir,$(4)),$(gb_INSTROOT)/$(gb_Package_PROGRAMDIRNAME))/$(notdir $(2)),$(3))
endef
......@@ -238,7 +238,7 @@ endef
#
# gb_ExternalPackage_add_jar_for_install package dest src
define gb_ExternalPackage_add_jar_for_install
$(call gb_ExternalPackage__add_file_for_install,$(1),$(2),$(gb_Package_PROGRAMDIRNAME)/classes/$(notdir $(2)),$(3))
$(call gb_ExternalPackage__add_file_for_install,$(1),$(2),$(gb_INSTROOT)/$(gb_Package_PROGRAMDIRNAME)/classes/$(notdir $(2)),$(3))
endef
......
......@@ -53,8 +53,8 @@ define gb_Gallery__make_env_args
$(call gb_Helper_make_url,$(call gb_ComponentTarget_get_target_for_build,$(item))))" \
"-env:UNO_TYPES=$(foreach item,$(gb_Gallery__UNO_TYPES),\
$(call gb_Helper_make_url,$(call gb_UnoApi_get_target,$(item))))" \
$(foreach dir,URE_INTERNAL_LIB_DIR LO_LIB_DIR,\
-env:$(dir)=$(call gb_Helper_make_url,$(gb_Helper_OUTDIR_FOR_BUILDLIBDIR)))
-env:URE_INTERNAL_LIB_DIR=$(call gb_Helper_make_url,$(gb_INSTROOT)/$(LIBO_URE_LIB_FOLDER)) \
-env:LO_LIB_DIR=$(call gb_Helper_make_url,$(gb_INSTROOT)/$(gb_PROGRAMDIRNAME))
endef
define gb_Gallery__command
......
......@@ -215,17 +215,6 @@ $(1) : $(2) | $(dir $(1)).dir
$(call gb_Deliver_add_deliverable,$(1),$(2),$(1))
endef
# 4th parameter overrides 3rd for the dependency, necessary for Library
# which needs to copy DLL but that must not be a real target...
define gb_Library__install
$(1) :| $(2)
$(2) : $(4) | $(dir $(2)).dir
cp $(3) $$@
$(call gb_Deliver_add_deliverable,$(2),$(3),$(2))
endef
# gb_Helper_OUTDIRLIBDIR is set by the platform to the path the dynamic linker need to use
# for libraries from the OUTDIR
......
......@@ -57,7 +57,7 @@ $(call gb_JunitTest_get_target,%) :
$(CLEAN_CMD)
define gb_JunitTest_JunitTest
$(call gb_JunitTest_get_target,$(1)) : T_CP := $(call gb_JavaClassSet_get_classdir,$(call gb_JunitTest_get_classsetname,$(1)))$$(gb_CLASSPATHSEP)$(OOO_JUNIT_JAR)$$(gb_CLASSPATHSEP)$(OUTDIR)/lib
$(call gb_JunitTest_get_target,$(1)) : T_CP := $(call gb_JavaClassSet_get_classdir,$(call gb_JunitTest_get_classsetname,$(1)))$$(gb_CLASSPATHSEP)$(OOO_JUNIT_JAR)$$(gb_CLASSPATHSEP)$(gb_INSTROOT)/$(LIBO_URE_LIB_FOLDER)
$(call gb_JunitTest_get_target,$(1)) : CLASSES :=
$(eval $(call gb_JunitTest_JunitTest_platform,$(1)))
......
......@@ -30,22 +30,26 @@
# gb_Library_Library_platform
gb_Library_LAYER_DIRS := \
OOO:$(gb_PROGRAMDIRNAME) \
URELIB:$(LIBO_URE_LIB_FOLDER)
URELIB:$(gb_INSTROOT)/$(LIBO_URE_LIB_FOLDER) \
OOO:$(gb_INSTROOT)/$(gb_PROGRAMDIRNAME) \
OXT:$(WORKDIR)/LinkTarget/ExtensionLibrary \
NONE:$(gb_Library_DLLDIR) \
# doesn't do anything, just used for hooking up component target
.PHONY: $(call gb_Library__get_final_target,%)
# EVIL: gb_StaticLibrary and gb_Library need the same deliver rule because they are indistinguishable on windows
.PHONY : $(WORKDIR)/Clean/OutDir/lib/%$(gb_Library_PLAINEXT)
$(WORKDIR)/Clean/OutDir/lib/%$(gb_Library_PLAINEXT) :
.PHONY : $(WORKDIR)/Clean/Library/%
$(WORKDIR)/Clean/Library/% :
$(call gb_Helper_abbreviate_dirs,\
rm -f $(OUTDIR)/lib/$*$(gb_Library_PLAINEXT) \
rm -f $(call gb_Library_get_exports_target,$*) \
$(AUXTARGETS))
gb_Library__get_dir_for_layer = $(patsubst $(1):%,%,$(filter $(1):%,$(gb_Library_LAYER_DIRS)))
gb_Library_get_instdir = $(call gb_Library__get_dir_for_layer,$(call gb_Library_get_layer,$(1)))
gb_Library_get_install_target = $(gb_INSTROOT)/$(call gb_Library_get_instdir,$(1))/$(call gb_Library_get_runtime_filename,$(1))
gb_Library_get_install_target = $(call gb_Library_get_instdir,$(1))/$(call gb_Library_get_runtime_filename,$(1))
gb_Library_get_ilib_target = $(if $(filter $(1),$(gb_Library_RTVERLIBS) $(gb_Library_UNOVERLIBS)),$(INSTDIR)/$(gb_Package_SDKDIRNAME)/lib/$(call gb_Library_get_ilibfilename,$(1)),$(gb_Library_DLLDIR)/$(call gb_Library_get_ilibfilename,$(1)))
define gb_Library_Library
$(call gb_Postprocess_register_target,AllLibraries,Library,$(1))
......@@ -73,63 +77,47 @@ endef
# call gb_Library__Library_impl,library,linktarget
define gb_Library__Library_impl
$(call gb_LinkTarget_LinkTarget,$(2),Library_$(1))
$(call gb_LinkTarget_LinkTarget,$(2),Library_$(1),$(call gb_Library_get_layer,$(1)))
$(call gb_LinkTarget_set_targettype,$(2),Library)
$(call gb_LinkTarget_add_libs,$(2),$(gb_STDLIBS))
$(call gb_LinkTarget_add_defs,$(2),\
$(gb_Library_DEFS) \
)
$(call gb_Library__get_final_target,$(1)) : $(call gb_Library_get_target,$(1))
$(call gb_Library_get_target,$(1)) : $(call gb_LinkTarget_get_target,$(2)) \
| $(dir $(call gb_Library_get_target,$(1))).dir
$(call gb_Library_get_exports_target,$(1)) : $(call gb_Library_get_target,$(1))
$(call gb_Library_get_target,$(1)) : \
| $(dir $(call gb_Library_get_target,$(1))).dir \
$(dir $(call gb_Library_get_ilib_target,$(1))).dir \
$(gb_Library_DLLDIR)/.dir
$(call gb_Library_get_clean_target,$(1)) : $(call gb_LinkTarget_get_clean_target,$(2))
$(call gb_Library_get_clean_target,$(1)) : AUXTARGETS :=
$(call gb_Library_Library_platform,$(1),$(2),$(gb_Library_DLLDIR)/$(call gb_Library_get_ilibfilename,$(1)))
$(if $(and $(call gb_Library_get_instdir,$(1)),$(filter-out $(gb_MERGEDLIBS),$(1))),\
$(call gb_Library__install,$(call gb_Library__get_final_target,$(1)), \
$(call gb_Library_get_install_target,$(1)), \
$(gb_Library_DLLDIR)/$(call gb_Library_get_runtime_filename,$(1)), \
$(call gb_LinkTarget_get_target,$(2))) \
)
$(call gb_Library_Library_platform,$(1),$(2),$(call gb_Library_get_ilib_target,$(1)))
$$(eval $$(call gb_Module_register_target,$(call gb_Library__get_final_target,$(1)),$(call gb_Library_get_clean_target,$(1))))
$(call gb_Helper_make_userfriendly_targets,$(1),Library,$(call gb_Library__get_final_target,$(1)))
$(call gb_Deliver_add_deliverable,$(call gb_Library_get_target,$(1)),$(call gb_LinkTarget_get_target,$(2)),$(1))
endef
# Custom definition that does not simply forward to LinkTarget,
# because there are cases where the auxtargets are not delivered to solver...
# The auxtarget is delivered via the rule in Package.mk.
# gb_Library_add_auxtarget library outdirauxtarget
define gb_Library_add_auxtarget
$(call gb_LinkTarget_add_auxtarget,$(call gb_Library_get_linktarget,$(1)),$(dir $(call gb_LinkTarget_get_target,$(call gb_Library_get_linktarget,$(1))))/$(notdir $(2)))
$(call gb_Library_get_target,$(1)) : $(2)
$(2) : $(dir $(call gb_LinkTarget_get_target,$(call gb_Library_get_linktarget,$(1))))/$(notdir $(2))
$(2) :| $(dir $(2)).dir
$(call gb_Library_get_clean_target,$(1)) : AUXTARGETS += $(2)
$(call gb_Output_error,gb_Library_add_auxtarget should no longer be necessary)
endef
define gb_Library_add_auxtargets
$(foreach aux,$(2),$(call gb_Library_add_auxtarget,$(1),$(aux)))
$(call gb_Output_error,gb_Library_add_auxtargets should no longer be necessary)
endef
# we actually (ab)use ILIBTARGET here to store the unversioned symlink -
# it serves a similar purpose to an MSVC import library, as input for linker
# call gb_Library__add_soversion_link,library,linkname
define gb_Library__add_soversion_link
$(call gb_Library_add_auxtarget,$(1),$(OUTDIR)/lib/$(notdir $(2)))
$(call gb_LinkTarget_set_ilibtarget,$(call gb_Library_get_linktarget,$(1)),$(2))
endef
define gb_Library__set_soversion_script
$(call gb_LinkTarget_set_soversion_script,$(call gb_Library_get_linktarget,$(1)),$(2))
$(call gb_Library__add_soversion_link,$(1),$(call gb_Library_get_workdir_target_versionlink,$(1)))
$(call gb_Library__add_soversion_link,$(1),$(call gb_Library_get_versionlink_target,$(1)))
endef
......
......@@ -54,6 +54,15 @@ gb_LinkTarget__get_objcxxflags=$(if $(OBJCXXFLAGS),$(OBJCXXFLAGS),$(call gb_Link
# call gb_LinkTarget__get_ldflags,linktargetmakefilename
gb_LinkTarget__get_ldflags=$(if $(LDFLAGS),$(LDFLAGS),$(call gb_LinkTarget__get_debugldflags,$(1)))
gb_LinkTarget_LAYER_LINKPATHS := \
URELIB:URELIB. \
UREBIN:URELIB. \
SDKBIN:URELIB. \
OOO:URELIB+OOO. \
OXT:OXT. \
NONE:URELIB+OOO+NONE. \
# Overview of dependencies and tasks of LinkTarget
#
# target task depends on
......@@ -378,11 +387,10 @@ $(WORKDIR)/Clean/LinkTarget/% :
$(foreach object,$(GENCOBJECTS),$(call gb_GenCObject_get_dep_target,$(object))) \
$(foreach object,$(GENCXXOBJECTS),$(call gb_GenCxxObject_get_target,$(object))) \
$(foreach object,$(GENCXXOBJECTS),$(call gb_GenCxxObject_get_dep_target,$(object))) \
$(call gb_LinkTarget_get_target,$*) \
$(call gb_LinkTarget_get_dep_target,$*) \
$(call gb_LinkTarget_get_headers_target,$*) \
$(call gb_LinkTarget_get_objects_list,$*) \
$(call gb_LinkTarget_get_target,$*).exports \
$(call gb_LinkTarget_get_target,$(LINKTARGET)) \
$(call gb_LinkTarget_get_dep_target,$(LINKTARGET)) \
$(call gb_LinkTarget_get_headers_target,$(LINKTARGET)) \
$(call gb_LinkTarget_get_objects_list,$(LINKTARGET)) \
$(ILIBTARGET) \
$(AUXTARGETS)) && \
cat $${RESPONSEFILE} /dev/null | xargs -n 200 rm -fr && \
......@@ -425,12 +433,15 @@ mv $${TEMPFILE} $(1)
endef
$(WORKDIR)/LinkTarget/%/.dir :
$(if $(wildcard $(dir $@)),,mkdir -p $(dir $@))
# Target for the .exports of the shared library, to speed up incremental build.
# This deliberately does nothing if the file exists; the file is actually
# written in gb_LinkTarget__command_dynamiclink.
# Put this pattern rule here so it overrides the one below.
# (this is rather ugly: because of % the functions cannot be used)
$(WORKDIR)/LinkTarget/Library/%.exports : $(gb_Library_OUTDIRLOCATION)/%
$(WORKDIR)/LinkTarget/Library/%.exports :
$(if $(wildcard $@),,mkdir -p $(dir $@) && touch $@)
# This recipe actually also builds the dep-target as a side-effect, which
......@@ -439,6 +450,16 @@ $(WORKDIR)/LinkTarget/Library/%.exports : $(gb_Library_OUTDIRLOCATION)/%
$(WORKDIR)/LinkTarget/% : $(call gb_LinkTarget_get_headers_target,%) $(gb_Helper_MISCDUMMY)
$(call gb_LinkTarget__command_impl,$@,$*)
# call gb_LinkTarget__make_installed_rule,linktarget
define gb_LinkTarget__make_installed_rule
$(call gb_LinkTarget_get_target,$(1)) : $(call gb_LinkTarget_get_headers_target,$(1))
$$(call gb_LinkTarget__command_impl,$(call gb_LinkTarget_get_target,$(1)),$(call gb_LinkTarget__get_workdir_linktargetname,$(1)))
endef
# it's not possible to use a pattern rule for files in INSTDIR because
# it would inevitably conflict with the pattern rule for Package
# (especially since external libraries are delivered via Package)
# call gb_LinkTarget__command_impl,linktargettarget,linktargetname
define gb_LinkTarget__command_impl
$(if $(gb_FULLDEPS),\
......@@ -448,7 +469,7 @@ define gb_LinkTarget__command_impl
$(if $(filter $(true),$(call gb_LinkTarget__is_build_lib,$(2))),\
$(call gb_LinkTarget__command,$(1),$(2)),\
mkdir -p $(dir $(1)) && echo invalid > $(1) \
$(if $(SOVERSIONSCRIPT),&& echo invalid > $(basename $(1)))),\
$(if $(SOVERSIONSCRIPT),&& echo invalid > $(WORKDIR)/LinkTarget/$(2))),\
$(call gb_LinkTarget__command,$(1),$(2)))
$(call gb_LinkTarget__command_objectlist,$(WORKDIR)/LinkTarget/$(2).objectlist)
endef
......@@ -515,8 +536,9 @@ $(call gb_LinkTarget_get_headers_target,%) :
# local variable of the same name is considered obscure, the target local
# variables have a T_ prefix.
#
# call gb_LinkTarget_LinkTarget,linktarget,linktargetmakefilename
# call gb_LinkTarget_LinkTarget,linktarget,linktargetmakefilename,layer
define gb_LinkTarget_LinkTarget
$(call gb_LinkTarget_get_clean_target,$(1)) : LINKTARGET := $(1)
$(call gb_LinkTarget_get_clean_target,$(1)) : AUXTARGETS :=
$(call gb_LinkTarget_get_headers_target,$(1)) : SELF := $(call gb_LinkTarget__get_workdir_linktargetname,$(1))
$(call gb_LinkTarget_get_target,$(1)) : ILIBTARGET :=
......@@ -563,7 +585,7 @@ $(call gb_LinkTarget_get_target,$(1)) : PCH_DEFS := $$(gb_LinkTarget_DEFAULTDEFS
$(call gb_LinkTarget_get_headers_target,$(1)) \
$(call gb_LinkTarget_get_target,$(1)) : INCLUDE := $$(gb_LinkTarget_INCLUDE)
$(call gb_LinkTarget_get_headers_target,$(1)) \
$(call gb_LinkTarget_get_target,$(1)) : T_LDFLAGS := $$(gb_LinkTarget_LDFLAGS) $(call gb_LinkTarget__get_ldflags,$(2))
$(call gb_LinkTarget_get_target,$(1)) : T_LDFLAGS := $$(gb_LinkTarget_LDFLAGS) $(call gb_LinkTarget_get_linksearchpath_for_layer,$(3)) $(call gb_LinkTarget__get_ldflags,$(2))
$(call gb_LinkTarget_get_target,$(1)) : LINKED_LIBS :=
$(call gb_LinkTarget_get_target,$(1)) : LINKED_STATIC_LIBS :=
$(call gb_LinkTarget_get_target,$(1)) : LIBS :=
......@@ -611,6 +633,9 @@ endif
gb_LinkTarget_CXX_SUFFIX_$(call gb_LinkTarget__get_workdir_linktargetname,$(1)) := cxx
# installed linktargets need a rule to build!
$(if $(findstring $(INSTDIR),$(1)),$(call gb_LinkTarget__make_installed_rule,$(1)))
endef
# call gb_LinkTarget_set_soversion_script,linktarget,soversionscript
......
......@@ -41,6 +41,7 @@ $(call gb_PythonTest_get_target,%) :
$(if $(G_SLICE),G_SLICE=$(G_SLICE)) \
$(if $(GLIBCXX_FORCE_NEW),GLIBCXX_FORCE_NEW=$(GLIBCXX_FORCE_NEW)) \
$(DEFS) \
TEST_LIB=$(call gb_Library_get_target,test) \
URE_BOOTSTRAP=vnd.sun.star.pathname:$(call gb_Helper_get_rcfile,$(gb_DEVINSTALLROOT)/$(LIBO_ETC_FOLDER)/fundamental) \
PYTHONPATH="$(PYPATH)" \
UserInstallation=$(call gb_Helper_make_url,$(dir $(call gb_PythonTest_get_target,$*))user) \
......
......@@ -42,7 +42,7 @@ endef
# call gb_StaticLibrary__StaticLibrary_impl,staticlib,linktarget
define gb_StaticLibrary__StaticLibrary_impl
$(call gb_LinkTarget_LinkTarget,$(2),StaticLibrary_$(1))
$(call gb_LinkTarget_LinkTarget,$(2),StaticLibrary_$(1),NONE)
$(call gb_LinkTarget_set_targettype,$(2),StaticLibrary)
$(call gb_StaticLibrary_get_target,$(1)) : $(call gb_LinkTarget_get_target,$(2)) \
| $(dir $(call gb_StaticLibrary_get_target,$(1))).dir
......
......@@ -53,9 +53,8 @@ define gb_Executable_get_target_for_build
$(patsubst $(1):%,$(OUTDIR_FOR_BUILD)/bin/%,$(filter $(1):%,$(gb_Executable_FILENAMES_FOR_BUILD)))
endef
define gb_Library_get_target
$(patsubst $(1):%,$(gb_Library_OUTDIRLOCATION)/%,$(filter $(1):%,$(gb_Library_FILENAMES)))
endef
# FIXME: cleanup?
gb_Library_get_target = $(gb_Library__get_linktarget_target)
define gb_StaticLibrary_get_target
$(gb_StaticLibrary_OUTDIRLOCATION)/$(call gb_StaticLibrary_get_filename,$(1))
......@@ -232,8 +231,8 @@ define gb_Library_get_exports_target
$(WORKDIR)/LinkTarget/$(call gb_Library__get_workdir_linktargetname,$(1)).exports
endef
define gb_Library_get_workdir_target_versionlink
$(WORKDIR)/LinkTarget/$(basename $(call gb_Library__get_workdir_linktargetname,$(1)))
define gb_Library_get_versionlink_target
$(INSTDIR)/$(gb_Package_SDKDIRNAME)/lib/$(basename $(call gb_Library_get_filename,$(1)))
endef
gb_Library__get_final_target = $(WORKDIR)/Dummy/$(1)
......@@ -280,6 +279,7 @@ $(eval $(call gb_Helper_make_clean_targets,\
JavaClassSet \
Jar \
JunitTest \
Library \
Module \
PackagePart \
Package \
......@@ -330,7 +330,6 @@ $(eval $(call gb_Helper_make_outdir_clean_targets,\
CliNativeLibrary \
CliUnoApi \
InstallScript \
Library \
StaticLibrary \
UnoApi \
))
......@@ -399,7 +398,7 @@ define gb_Library__get_workdir_linktargetname
Library/$(call gb_Library_get_filename,$(1))
endef
define gb_Library__get_linktarget_target
$(WORKDIR)/LinkTarget/$(call gb_Library__get_workdir_linktargetname,$(1))
$(if $(filter-out $(gb_MERGEDLIBS),$(1)),$(call gb_Library_get_install_target,$(1)),$(WORKDIR)/LinkTarget/$(call gb_Library__get_workdir_linktargetname,$(1)))
endef
# this returns a tuple of both the linktargetname, and the target file
define gb_Library_get_linktarget
......@@ -430,6 +429,7 @@ endef
# static members declared here because they are used globally
gb_Library_WORKDIR_FOR_BUILD = $(WORKDIR_FOR_BUILD)/LinkTarget/Library
gb_Executable_BINDIR = $(WORKDIR)/LinkTarget/Executable
# FIXME move platform
gb_Library_OUTDIRLOCATION = $(if $(filter WNT,$(OS)),$(OUTDIR)/bin,$(OUTDIR)/lib)
......
......@@ -219,4 +219,12 @@ gb_StaticLibrary_get_filename = lib$(1).a
gb_StaticLibrary_PLAINEXT := .a
gb_StaticLibrary_StaticLibrary_platform :=
gb_LinkTarget_get_linksearchpath_for_layer = \
-L$(INSTDIR)/$(gb_Package_SDKDIRNAME)/lib \
$(foreach layer,\
$(subst +, ,$(patsubst $(1):%.,%,\
$(filter $(1):%.,$(gb_LinkTarget_LAYER_LINKPATHS)))),\
$(patsubst $(layer):%,-L%,\
$(filter $(layer):%,$(gb_Library_LAYER_DIRS))))
# vim: set noet sw=4 ts=4:
......@@ -181,7 +181,7 @@ else
gb_Helper_LIBRARY_PATH_VAR := LD_LIBRARY_PATH
endif
gb_Helper_set_ld_path := $(gb_Helper_LIBRARY_PATH_VAR)=$${$(gb_Helper_LIBRARY_PATH_VAR):+$$$(gb_Helper_LIBRARY_PATH_VAR):}"$(OUTDIR_FOR_BUILD)/lib:$(INSTDIR)/ure/lib:$(INSTDIR)/program"
gb_Helper_set_ld_path := $(gb_Helper_LIBRARY_PATH_VAR)=$${$(gb_Helper_LIBRARY_PATH_VAR):+$$$(gb_Helper_LIBRARY_PATH_VAR):}"$(OUTDIR_FOR_BUILD)/lib:$(gb_INSTROOT)/$(LIBO_URE_LIB_FOLDER):$(gb_INSTROOT)/$(gb_PROGRAMDIRNAME)"
# $(1): list of directory pathnames to append at the end of the ld path
define gb_Helper_extend_ld_path
......@@ -194,6 +194,5 @@ file://$(strip $(1))
endef
gb_Helper_OUTDIRLIBDIR := $(OUTDIR)/lib
gb_Helper_OUTDIR_FOR_BUILDLIBDIR := $(OUTDIR_FOR_BUILD)/lib
gb_Helper_get_rcfile = $(1)rc
......@@ -138,6 +138,7 @@ gb_LinkTarget_INCLUDE :=\
gb_LinkTarget_get_pdbfile = \
$(WORKDIR)/LinkTarget/pdb/$(call gb_LinkTarget__get_workdir_linktargetname,$(1)).pdb
# substitute .pyd here because pyuno has to follow python's crazy conventions
gb_LinkTarget_get_pdbfile2 = \
$(WORKDIR)/LinkTarget/$(patsubst %.dll,%.pdb,$(patsubst %.pyd,%.dll,$(call gb_LinkTarget__get_workdir_linktargetname,$(1))))
gb_LinkTarget_get_ilkfile = \
......@@ -145,6 +146,12 @@ gb_LinkTarget_get_ilkfile = \
gb_LinkTarget_get_manifestfile = \
$(WORKDIR)/LinkTarget/$(call gb_LinkTarget__get_workdir_linktargetname,$(1)).manifest
gb_LinkTarget_get_linksearchpath_for_layer = \
-LIBPATH:$(INSTDIR)/$(gb_Package_SDKDIRNAME)/lib \
$(if $(filter OXT,$(1)),\
-LIBPATH:$(WORKDIR)/LinkTarget/ExtensionLibrary, \
-LIBPATH:$(WORKDIR)/LinkTarget/Library)
# avoid fatal error LNK1170 for Library_merged
define gb_LinkTarget_MergedResponseFile
cut -f -1000 -d ' ' $${RESPONSEFILE} > $${RESPONSEFILE}.1 && \
......@@ -190,18 +197,22 @@ $(call gb_Helper_abbreviate_dirs,\
$(foreach lib,$(LINKED_STATIC_LIBS),$(call gb_StaticLibrary_get_filename,$(lib))) \
$(LIBS) \
$(if $(filter-out StaticLibrary,$(TARGETTYPE)),user32.lib) \
$(if $(filter-out StaticLibrary,$(TARGETTYPE)),-manifestfile:$(WORKDIR)/LinkTarget/$(2).manifest) \
-pdb:$(WORKDIR)/LinkTarget/$(2).pdb \
$(if $(ILIBTARGET),-out:$(1) -implib:$(ILIBTARGET),-out:$(1)); RC=$$?; rm $${RESPONSEFILE} \
$(if $(ILIBTARGET),; if [ ! -f $(ILIBTARGET) ]; then rm -f $(1) && false; fi) \
$(if $(filter Library,$(TARGETTYPE)),&& if [ -f $(1).manifest ]; then mt.exe $(MTFLAGS) -nologo -manifest $(1).manifest -outputresource:$(1)\;2 && touch -r $(1) $(1).manifest $(ILIBTARGET); fi) \
$(if $(filter Executable,$(TARGETTYPE)),&& if [ -f $(1).manifest ]; then mt.exe $(MTFLAGS) -nologo -manifest $(1).manifest -outputresource:$(1)\;1 && touch -r $(1) $(1).manifest; fi) \
$(if $(filter Library,$(TARGETTYPE)),; if [ ! -f $(ILIBTARGET) ]; then rm -f $(1); exit 42; fi) \
$(if $(filter Library,$(TARGETTYPE)),&& if [ -f $(WORKDIR)/LinkTarget/$(2).manifest ]; then mt.exe $(MTFLAGS) -nologo -manifest $(WORKDIR)/LinkTarget/$(2).manifest -outputresource:$(1)\;2 && touch -r $(1) $(WORKDIR)/LinkTarget/$(2).manifest $(ILIBTARGET); fi) \
$(if $(filter Executable,$(TARGETTYPE)),&& if [ -f $(WORKDIR)/LinkTarget/$(2).manifest ]; then mt.exe $(MTFLAGS) -nologo -manifest $(WORKDIR)/LinkTarget/$(2).manifest -outputresource:$(1)\;1 && touch -r $(1) $(WORKDIR)/LinkTarget/$(2).manifest; fi) \
$(if $(filter YES,$(TARGETGUI)),&& if [ -f $(SRCDIR)/solenv/inc/DeclareDPIAware.manifest ]; then mt.exe $(MTFLAGS) -nologo -manifest $(SRCDIR)/solenv/inc/DeclareDPIAware.manifest -updateresource:$(1)\;1 ; fi) \
$(if $(filter Library,$(TARGETTYPE)),&& \
echo $(notdir $(1)) > $(1).exports.tmp && \
echo $(notdir $(1)) > $(WORKDIR)/LinkTarget/$(2).exports.tmp && \
$(if $(filter YES,$(LIBRARY_X64)),$(LINK_X64_BINARY),$(gb_LINK)) \
-dump -exports $(ILIBTARGET) >> $(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; \
-dump -exports $(ILIBTARGET) \
>> $(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) \
; exit $$RC)
endef
......@@ -287,22 +298,9 @@ $(call gb_LinkTarget_add_auxtargets,$(2),\
$(patsubst %.lib,%.exp,$(3)) \
$(call gb_LinkTarget_get_manifestfile,$(2)) \
$(call gb_LinkTarget_get_pdbfile,$(2)) \
)
$(call gb_Library_add_auxtarget,$(1),$(OUTDIR)/lib/$(notdir $(3)))
# substitute .pyd here because pyuno has to follow python's crazy conventions
ifneq ($(ENABLE_CRASHDUMP),)
$(call gb_Library_add_auxtargets,$(1),\
$(OUTDIR)/bin/$(patsubst %.dll,%.pdb,$(patsubst %.pyd,%.dll,$(call gb_Library_get_filename,$(1)))) \
$(OUTDIR)/bin/$(patsubst %.dll,%.ilk,$(patsubst %.pyd,%.dll,$(call gb_Library_get_filename,$(1)))) \
)
else
$(call gb_LinkTarget_add_auxtargets,$(2),\
$(call gb_LinkTarget_get_pdbfile2,$(2)) \
$(call gb_LinkTarget_get_ilkfile,$(2)) \
)
endif
$(call gb_Library_add_default_nativeres,$(1),$(1)/default)
......@@ -390,7 +388,7 @@ endef
gb_CppunitTest_DEFS := -D_DLL
# cppunittester.exe is in the cppunit subdirectory of ${OUTDIR}/bin,
# thus it won't find its DLLs unless ${OUTDIR}/bin is added to PATH.
gb_CppunitTest_CPPTESTPRECOMMAND := $(gb_Helper_set_ld_path)
gb_CppunitTest_CPPTESTPRECOMMAND := $(gb_Helper_set_ld_path):"$(shell cygpath -w $(gb_Library_DLLDIR))"
gb_CppunitTest_LIBDIR := $(gb_Helper_OUTDIRLIBDIR)
gb_CppunitTest_get_filename = test_$(1).dll
......@@ -542,7 +540,7 @@ gb_InstallScript_EXT := .inf
# CliAssemblyTarget class
gb_CliAssemblyTarget_POLICYEXT := $(gb_Library_DLLEXT)
gb_CliAssemblyTarget_get_dll = $(OUTDIR)/bin/$(1)$(gb_CliAssemblyTarget_POLICYEXT)
gb_CliAssemblyTarget_get_dll = $(call gb_Library__get_dir_for_layer,URELIB)/$(1)$(gb_CliAssemblyTarget_POLICYEXT)
# Extension class
......
......@@ -303,9 +303,8 @@ gb_LTOFLAGS := $(if $(filter TRUE,$(ENABLE_LTO)),-GL)
# Helper class
gb_Helper_OUTDIRLIBDIR := $(OUTDIR)/bin
gb_Helper_OUTDIR_FOR_BUILDLIBDIR := $(OUTDIR_FOR_BUILD)/bin
# need windows path with backslashes here
gb_Helper_set_ld_path := PATH="$(shell cygpath -w $(OUTDIR)/bin)"
gb_Helper_set_ld_path := PATH="$(shell cygpath -w $(OUTDIR)/bin);$(shell cygpath -w $(INSTDIR)/$(LIBO_URE_LIB_FOLDER));$(shell cygpath -w $(INSTDIR)/$(gb_PROGRAMDIRNAME))"
# vim: set noet sw=4:
......@@ -153,7 +153,7 @@ $(call gb_Helper_abbreviate_dirs,\
$(LIBS) \
$(foreach lib,$(LINKED_STATIC_LIBS),$(call gb_StaticLibrary_get_target,$(lib))) \
-o $(1) && \
$(if $(SOVERSIONSCRIPT),ln -sf $(notdir $(1)) $(ILIBTARGET),:) && \
$(if $(SOVERSIONSCRIPT),ln -sf $(1) $(ILIBTARGET),:) && \
$(if $(filter Executable,$(TARGETTYPE)), \
$(PERL) $(SOLARENV)/bin/macosx-change-install-names.pl app $(LAYER) $(1) &&) \
$(if $(filter Library Bundle CppunitTest,$(TARGETTYPE)),\
......@@ -162,12 +162,14 @@ $(call gb_Helper_abbreviate_dirs,\
$(if $(filter Executable,$(TARGETTYPE)), \
(codesign --identifier=$(MACOSX_BUNDLE_IDENTIFIER).$(notdir $(1)) --sign $(MACOSX_CODESIGNING_IDENTITY) --force $(1) || true) &&)) \
$(if $(filter Library,$(TARGETTYPE)),\
otool -l $(1) | grep -A 5 LC_ID_DYLIB > $(1).exports.tmp && \
otool -l $(1) | grep -A 5 LC_ID_DYLIB \
> $(WORKDIR)/LinkTarget/$(2).exports.tmp && \
$(NM) -g -P $(1) | cut -d' ' -f1-2 | grep -v U$$ \
>> $(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
......@@ -281,7 +283,7 @@ endef
# CppunitTest class
gb_CppunitTest_CPPTESTPRECOMMAND := $(gb_Helper_set_ld_path)
gb_CppunitTest_CPPTESTPRECOMMAND := $(gb_Helper_set_ld_path):"$(gb_Library_DLLDIR)"
gb_CppunitTest_LIBDIR := $(gb_Helper_OUTDIRLIBDIR)
gb_CppunitTest_get_filename = libtest_$(1).dylib
gb_CppunitTest_get_ilibfilename = $(gb_CppunitTest_get_filename)
......
......@@ -111,7 +111,7 @@ $(call gb_Helper_abbreviate_dirs,\
$(if $(LINKED_STATIC_LIBS),-Wl$(COMMA)--start-group $(foreach lib,$(LINKED_STATIC_LIBS),$(call gb_StaticLibrary_get_target,$(lib))) -Wl$(COMMA)--end-group) \
$(patsubst lib%.a,-l%,$(patsubst lib%.dll.a,-l%,$(foreach lib,$(LINKED_LIBS),$(call gb_Library_get_ilibfilename,$(lib))))) \
$(LIBS) \
-Wl$(COMMA)-Map$(COMMA)$(basename $(1)).map \
-Wl$(COMMA)-Map$(COMMA)$(WORKDIR)/LinkTarget/$(2).map \
-o $(1)))
endef
......@@ -131,7 +131,7 @@ $(call gb_Helper_abbreviate_dirs,\
$(if $(LINKED_STATIC_LIBS),-Wl$(COMMA)--start-group $(foreach lib,$(LINKED_STATIC_LIBS),$(call gb_StaticLibrary_get_target,$(lib))) -Wl$(COMMA)--end-group) \
$(patsubst lib%.a,-l%,$(patsubst lib%.dll.a,-l%,$(foreach lib,$(LINKED_LIBS),$(call gb_Library_get_ilibfilename,$(lib))))) \
$(LIBS) \
-Wl$(COMMA)-Map$(COMMA)$(dir $(1))$(notdir $(basename $(1)).map) \
-Wl$(COMMA)-Map$(COMMA)$(WORKDIR)/LinkTarget/$(2).map \
-Wl$(COMMA)--out-implib$(COMMA)$(ILIBTARGET) \
-o $(1) \
$(if $(findstring s,$(MAKEFLAGS)),> /dev/null))
......@@ -161,6 +161,8 @@ define gb_LinkTarget_use_system_win32_libs
$(call gb_LinkTarget_add_libs,$(1),$(foreach lib,$(2),-l$(patsubst oldnames,moldname,$(lib))))
endef
gb_LinkTarget_get_mapfile = \
$(WORKDIR)/LinkTarget/$(patsubst %.dll,%.map,$(call gb_LinkTarget__get_workdir_linktargetname,$(1)))
# Library class
......@@ -228,9 +230,9 @@ $(call gb_LinkTarget_set_ilibtarget,$(2),$(3))
$(call gb_Library_get_target,$(1)) :| $(OUTDIR)/bin/.dir
$(call gb_Library_add_auxtargets,$(1), \
$(OUTDIR)/bin/$(notdir $(3)) \
$(OUTDIR)/bin/$(patsubst %.dll,%.map,$(call gb_Library_get_filename,$(1))) \
$(call gb_LinkTarget_add_auxtargets,$(2), \
$(3) \
$(call gb_LinkTarget_get_mapfile,$(2)) \
)
$(call gb_Library_add_default_nativeres,$(1),$(1)/default)
......@@ -289,7 +291,7 @@ $(call gb_LinkTarget_set_ilibtarget,$(2),$(3))
$(call gb_LinkTarget_add_auxtargets,$(2),\
$(3) \
$(patsubst %.dll,%.map,$(call gb_LinkTarget_get_target,$(2))) \
$(call gb_LinkTarget_get_mapfile,$(2)) \
)
endef
......
......@@ -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
......
......@@ -155,7 +155,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_LinkTarget_CXXFLAGS := $(gb_CXXFLAGS)
......@@ -189,15 +189,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
......@@ -307,7 +308,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
......
......@@ -32,7 +32,7 @@ $(testtools_BRIDGEDIR)/bridgetest_server$(testtools_BATCHSUFFIX) :| $(testtools_
"-s com.sun.star.test.bridge.CppTestObject" \
"-u 'uno:socket$(COMMA)host=127.0.0.1$(COMMA)port=2002;urp;test'" \
"--singleaccept" \
"-env:LO_BUILD_LIB_DIR=$(call gb_Helper_make_url,$(gb_Helper_OUTDIR_FOR_BUILDLIBDIR))" \
"-env:LO_BUILD_LIB_DIR=$(call gb_Helper_make_url,$(gb_Library_WORKDIR_FOR_BUILD))" \
"-env:URE_MORE_SERVICES=$(call gb_Helper_make_url,$(call gb_Rdb_get_target,uno_services))" \
"-env:URE_MORE_TYPES=$(call gb_Helper_make_url,$(WORKDIR)/UnoApiTarget/bridgetest.rdb)" \
> $@)
......@@ -62,7 +62,7 @@ $(testtools_BRIDGEDIR)/bridgetest_inprocess_java$(testtools_BATCHSUFFIX) :| $(te
"$(gb_Helper_LIBRARY_PATH_VAR)=\$${$(gb_Helper_LIBRARY_PATH_VAR):+\$$$(gb_Helper_LIBRARY_PATH_VAR):}$(OUTDIR)/lib" \
"$(call gb_Executable_get_target_for_build,uno)" \
"-s com.sun.star.test.bridge.BridgeTest" \
"-env:LO_BUILD_LIB_DIR=$(call gb_Helper_make_url,$(gb_Helper_OUTDIR_FOR_BUILDLIBDIR))" \
"-env:LO_BUILD_LIB_DIR=$(call gb_Helper_make_url,$(gb_Library_WORKDIR_FOR_BUILD))" \
"-env:URE_INTERNAL_JAVA_DIR=file://$(OUTDIR)/bin" \
"-env:URE_MORE_SERVICES=$(call gb_Helper_make_url,$(call gb_Rdb_get_target,uno_services))" \
"-env:URE_MORE_TYPES=$(call gb_Helper_make_url,$(WORKDIR)/UnoApiTarget/bridgetest.rdb)" \
......@@ -77,7 +77,7 @@ $(testtools_BRIDGEDIR)/bridgetest_client$(testtools_BATCHSUFFIX) :| $(testtools_
"$(call gb_Executable_get_target_for_build,uno)" \
"-s com.sun.star.test.bridge.BridgeTest --" \
"-u 'uno:socket$(COMMA)host=127.0.0.1$(COMMA)port=2002;urp;test'" \
"-env:LO_BUILD_LIB_DIR=$(call gb_Helper_make_url,$(gb_Helper_OUTDIR_FOR_BUILDLIBDIR))" \
"-env:LO_BUILD_LIB_DIR=$(call gb_Helper_make_url,$(gb_Library_WORKDIR_FOR_BUILD))" \
"-env:URE_MORE_SERVICES=$(call gb_Helper_make_url,$(call gb_Rdb_get_target,uno_services))" \
"-env:URE_MORE_TYPES=$(call gb_Helper_make_url,$(WORKDIR)/UnoApiTarget/bridgetest.rdb)" \
> $@)
......
......@@ -22,7 +22,7 @@ $(call gb_CustomTarget_get_target,testtools/uno_test) : \
$(call gb_Executable_get_command,uno) \
-s com.sun.star.test.bridge.BridgeTest \
-- com.sun.star.test.bridge.CppTestObject \
-env:LO_BUILD_LIB_DIR=$(call gb_Helper_make_url,$(gb_Helper_OUTDIR_FOR_BUILDLIBDIR)) \
-env:LO_BUILD_LIB_DIR=$(call gb_Helper_make_url,$(gb_Library_WORKDIR_FOR_BUILD)) \
-env:URE_MORE_SERVICES=$(call gb_Helper_make_url,$(call gb_Rdb_get_target,uno_services)) \
-env:URE_MORE_TYPES=$(call gb_Helper_make_url,$(WORKDIR)/UnoApiTarget/bridgetest.rdb))
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment