summaryrefslogtreecommitdiff
path: root/solenv
diff options
context:
space:
mode:
authorPeter Foley <pefoley2@verizon.net>2011-12-24 09:44:24 -0500
committerPeter Foley <pefoley2@verizon.net>2011-12-24 09:44:24 -0500
commitfd6649175956c9d322fe02fd413fe6970aa6819e (patch)
treece2691616f82ef55d3b8f3e45812777477e8668f /solenv
parent79b252a56db8f1c2159d3269de415ffe2f2d9bb1 (diff)
parenta8feb5b1df99c12a5cb644097f935e9ccf512ed5 (diff)
Merge remote-tracking branch 'origin/master' into feature/gbuild_extensions
Conflicts: Module_tail_build.mk Repository.mk extensions/util/makefile.pmk postprocess/prj/build.lst svx/AllLangResTarget_svx.mk
Diffstat (limited to 'solenv')
-rw-r--r--solenv/bin/callcatchEnv.Set.sh1
-rw-r--r--solenv/bin/concat-deps.c56
-rwxr-xr-xsolenv/bin/ooinstall9
-rw-r--r--solenv/gbuild/AllLangResTarget.mk23
-rw-r--r--solenv/gbuild/ComponentTarget.mk3
-rw-r--r--solenv/gbuild/CppunitTest.mk4
-rw-r--r--solenv/gbuild/CustomTarget.mk9
-rw-r--r--solenv/gbuild/Deliver.mk4
-rw-r--r--solenv/gbuild/Jar.mk43
-rw-r--r--solenv/gbuild/JavaClassSet.mk44
-rw-r--r--solenv/gbuild/Library.mk36
-rw-r--r--solenv/gbuild/LinkTarget.mk9
-rw-r--r--solenv/gbuild/TargetLocations.mk2
-rw-r--r--solenv/gbuild/extensions/post_AuxTargets.mk29
-rw-r--r--solenv/gbuild/gbuild.mk4
-rw-r--r--solenv/gbuild/gbuild_simple.mk2
-rw-r--r--solenv/gbuild/platform/ANDROID_ARM_GCC.mk12
-rw-r--r--solenv/gbuild/platform/OPENBSD_INTEL_GCC.mk13
-rw-r--r--solenv/gbuild/platform/OPENBSD_X86_64_GCC.mk13
-rw-r--r--solenv/gbuild/platform/WNT_INTEL_GCC.mk14
-rw-r--r--solenv/gbuild/platform/WNT_INTEL_MSC.mk16
-rw-r--r--solenv/gbuild/platform/com_GCC_class.mk4
-rw-r--r--solenv/gbuild/platform/macosx.mk25
-rw-r--r--solenv/gbuild/platform/solaris.mk14
-rw-r--r--solenv/gbuild/platform/unxgcc.mk16
-rwxr-xr-xsolenv/gbuild/platform/unxgcc_gdbforjunit.sh2
-rw-r--r--solenv/inc/settings.mk1
-rw-r--r--solenv/inc/unxandr/lo-bootstrap.h9
28 files changed, 302 insertions, 115 deletions
diff --git a/solenv/bin/callcatchEnv.Set.sh b/solenv/bin/callcatchEnv.Set.sh
index 0dacfd79a57b..586a2ab632d7 100644
--- a/solenv/bin/callcatchEnv.Set.sh
+++ b/solenv/bin/callcatchEnv.Set.sh
@@ -5,3 +5,4 @@ AR="callarchive ${AR:-ar}"
LINK="callcatcher $CXX"
LIBMGR="callarchive ${LIBMGR:-ar}"
export CC CXX AR LINK LIBMGR
+export dbglevel=2
diff --git a/solenv/bin/concat-deps.c b/solenv/bin/concat-deps.c
index d699e8214063..a0eda4359206 100644
--- a/solenv/bin/concat-deps.c
+++ b/solenv/bin/concat-deps.c
@@ -3,8 +3,8 @@
* License: GPLv3
*/
-//* define to activate stats reporting on hash usage
-#define HASH_STAT
+/* define to activate stats reporting on hash usage*/
+/* #define HASH_STAT */
/* ===============================================
* Set-up: defines to identify the system and system related properties
@@ -36,7 +36,9 @@
#define USE_MEMORY_ALIGNMENT 64 /* big value -> no alignment */
#endif /* Def __CYGWIN__ */
-#ifdef __linux
+#if defined(__linux) || defined(__OpenBSD__) || \
+ defined(__FreeBSD__) || defined(__NetBSD__) || \
+ defined(__DragonFly__)
#if __BYTE_ORDER == __LITTLE_ENDIAN
#define CORE_BIG_ENDIAN 0
#define CORE_LITTLE_ENDIAN 1
@@ -48,7 +50,7 @@
#define USE_MEMORY_ALIGNMENT 4
#endif /* __BYTE_ORDER == __BIG_ENDIAN */
#endif /* !(__BYTE_ORDER == __LITTLE_ENDIAN) */
-#endif /* Def __linux */
+#endif /* Def __linux || Def *BSD */
#ifdef __sun
#ifdef __sparc
@@ -566,7 +568,6 @@ int cost = 0;
{
hash->collisions += 1;
hash->cost += cost;
-// fprintf(stderr, "key colision %s and %s\n", key, hash_elem->next->key);
}
#endif
hash->array[hashed] = hash_elem;
@@ -678,12 +679,28 @@ int fd;
return buffer;
}
+static void _cancel_relative(char* base, char** ref_cursor, char** ref_cursor_out, char* end)
+{
+ char* cursor = *ref_cursor;
+ char* cursor_out = *ref_cursor_out;
+
+ do
+ {
+ cursor += 3;
+ while(cursor_out > base && *--cursor_out != '/');
+ }
+ while(cursor + 3 < end && !memcmp(cursor, "/../", 4));
+ *ref_cursor = cursor;
+ *ref_cursor_out = cursor_out;
+}
+
static int _process(struct hash* dep_hash, char* fn)
{
int rc;
char* buffer;
char* end;
char* cursor;
+char* cursor_out;
char* base;
int continuation = 0;
char last_ns = 0;
@@ -697,20 +714,31 @@ off_t size;
*/
if(!rc)
{
- base = cursor = end = buffer;
+ base = cursor_out = cursor = end = buffer;
end += size;
while(cursor < end)
{
if(*cursor == '\\')
{
continuation = 1;
- cursor += 1;
+ *cursor_out++ = *cursor++;
+ }
+ else if(*cursor == '/')
+ {
+ if(cursor + 3 < end)
+ {
+ if(!memcmp(cursor, "/../", 4))
+ {
+ _cancel_relative(base, &cursor, &cursor_out, end);
+ }
+ }
+ *cursor_out++ = *cursor++;
}
else if(*cursor == '\n')
{
if(!continuation)
{
- *cursor = 0;
+ *cursor_out = 0;
if(base < cursor)
{
/* here we have a complete rule */
@@ -720,7 +748,7 @@ off_t size;
* these are the one for which we want to filter
* duplicate out
*/
- if(hash_store(dep_hash, base, (int)(cursor - base)))
+ if(hash_store(dep_hash, base, (int)(cursor_out - base)))
{
puts(base);
putc('\n', stdout);
@@ -734,14 +762,14 @@ off_t size;
}
}
cursor += 1;
- base = cursor;
+ base = cursor_out = cursor;
}
else
{
/* here we have a '\' followed by \n this is a continuation
* i.e not a complete rule yet
*/
- cursor += 1;
+ *cursor_out++ = *cursor++;
}
}
else
@@ -752,15 +780,15 @@ off_t size;
{
last_ns = *cursor;
}
- cursor += 1;
+ *cursor_out++ = *cursor++;
}
}
/* just in case the file did not end with a \n, there may be a pending rule */
- if(base < cursor)
+ if(base < cursor_out)
{
if(last_ns == ':')
{
- if(hash_store(dep_hash, base, (int)(cursor - base)))
+ if(hash_store(dep_hash, base, (int)(cursor_out - base)))
{
puts(base);
putc('\n', stdout);
diff --git a/solenv/bin/ooinstall b/solenv/bin/ooinstall
index cf9ad9e1fc35..794e81b930df 100755
--- a/solenv/bin/ooinstall
+++ b/solenv/bin/ooinstall
@@ -116,6 +116,15 @@ if ($is_windows) {
"-msilanguage $ENV{SRC_ROOT}/instsetoo_native/$ENV{INPATH}/misc/win_ulffiles";
}
+# FIXME: a better solution would be to fix installer to deal with broken symlinks
+# make distro-pack-install shufle with the SDK installation to make it LSB compliant
+# it creates symlinks from the orignal path to /usr/share; they are not valid with $DESTDIR
+# and potential second ooinstall call fails with strange error messages if the old tree is still there
+if ($destdir && "$ENV{DESTDIR}" ne "/" && -d "$ENV{DESTDIR}") {
+ print "Cleaning destdir...\n";
+ system ("rm -rf \"$ENV{DESTDIR}\"") && die "Failed to clean up destdir: $!";
+}
+
print "Running LibreOffice installer\n";
system ("cd $ENV{SRC_ROOT}/instsetoo_native/util ; " .
"perl -w $ENV{SOLARENV}/bin/make_installer.pl " .
diff --git a/solenv/gbuild/AllLangResTarget.mk b/solenv/gbuild/AllLangResTarget.mk
index 78bfbf846072..1329f2aa5f25 100644
--- a/solenv/gbuild/AllLangResTarget.mk
+++ b/solenv/gbuild/AllLangResTarget.mk
@@ -133,6 +133,19 @@ endif
endef
# SrsTemplateTarget class
+#
+# This class handles src templates.
+#
+# Templates are src files that contain only macros that are then used
+# from other src files, but these macros contain translatable strings.
+# Because the processing of src files is done in two phases: 1/
+# localization and 2/ merging, templates must be translated
+# independently from the src files that include them. Special care must
+# be taken to ensure that the right file (i.e., the localized one) is
+# included; in order to do that, the templates in the source tree are
+# called foo_tmpl.src, but the localization phase produces foo.src, and
+# these names (i.e., without the _tmpl suffix) must be placed in
+# #include statements in other src files.
define gb_SrsTemplateTarget__command
$(call gb_Helper_abbreviate_dirs,\
@@ -140,6 +153,15 @@ define gb_SrsTemplateTarget__command
touch $(1))
endef
+# This machinery ensures that templates are regenerated when switching
+# from localized to unlocalized configuration and back.
+#
+# How it works:
+# We let _get_target depend on _get_update_target, so after they are
+# done, _get_target is newer than _get_update_target. If
+# WITH_LANG changes (from nonempty to empty or the other way around),
+# _get_target and _get_update_target are switched, therefore _get_target
+# is now _older_ than _get_update_target and must be regenerated :-)
gb_SrsTemplateTarget__get_merged_target = $(call gb_SrsTemplateTarget_get_target,$(1))_merged_last
gb_SrsTemplateTarget__get_unmerged_target = $(call gb_SrsTemplateTarget_get_target,$(1))_unmerged_last
@@ -309,7 +331,6 @@ $(call gb_ResTarget_get_target,%) : $(gb_Helper_MISCDUMMY) | $(gb_ResTarget_RSCT
-lip=$(realpath $(gb_ResTarget_DEFIMAGESLOCATION)$(RESLOCATION)/imglst/$(LANGUAGE)) \
-lip=$(realpath $(gb_ResTarget_DEFIMAGESLOCATION)$(RESLOCATION)/imglst) \
-lip=$(realpath $(gb_ResTarget_DEFIMAGESLOCATION)$(RESLOCATION)/res/$(LANGUAGE)) \
- -lip=$(realpath $(gb_ResTarget_DEFIMAGESLOCATION)$(RESLOCATION)/res/imagelst) \
-lip=$(realpath $(gb_ResTarget_DEFIMAGESLOCATION)$(RESLOCATION)/res) \
-lip=$(realpath $(gb_ResTarget_DEFIMAGESLOCATION)$(RESLOCATION)) \
-lip=$(gb_ResTarget_DEFIMAGESLOCATION)res/$(LANGUAGE) \
diff --git a/solenv/gbuild/ComponentTarget.mk b/solenv/gbuild/ComponentTarget.mk
index 031d118310c5..efe481991a19 100644
--- a/solenv/gbuild/ComponentTarget.mk
+++ b/solenv/gbuild/ComponentTarget.mk
@@ -58,7 +58,8 @@ $(call gb_ComponentTarget_get_outdir_target,%) :
define gb_ComponentTarget_ComponentTarget
$(call gb_ComponentTarget_get_target,$(1)) : COMPONENTPREFIX := $(2)
$(call gb_ComponentTarget_get_target,$(1)) : LIBFILENAME := $(3)
-$(call gb_ComponentTarget_get_outdir_target,$(1)) : $(call gb_ComponentTarget_get_target,$(1))
+$(call gb_ComponentTarget_get_outdir_target,$(1)) : \
+ $(call gb_ComponentTarget_get_target,$(1))
$(call gb_Deliver_add_deliverable,$(call gb_ComponentTarget_get_outdir_target,$(1)),$(call gb_ComponentTarget_get_target,$(1)),$(1))
endef
diff --git a/solenv/gbuild/CppunitTest.mk b/solenv/gbuild/CppunitTest.mk
index aa87be6ede7c..0d8959e0c841 100644
--- a/solenv/gbuild/CppunitTest.mk
+++ b/solenv/gbuild/CppunitTest.mk
@@ -153,9 +153,9 @@ endef
define gb_CppunitTest_add_component
$(call gb_CppunitTest_get_target,$(1)) : \
- $(call gb_ComponentTarget_get_target,$(2))
+ $(call gb_ComponentTarget_get_outdir_target,$(2))
$(call gb_CppunitTest_get_target,$(1)) : \
- UNO_SERVICES += $(call gb_ComponentTarget_get_target,$(2))
+ UNO_SERVICES += $(call gb_ComponentTarget_get_outdir_target,$(2))
endef
diff --git a/solenv/gbuild/CustomTarget.mk b/solenv/gbuild/CustomTarget.mk
index 1e075af777d1..84c6f11cb206 100644
--- a/solenv/gbuild/CustomTarget.mk
+++ b/solenv/gbuild/CustomTarget.mk
@@ -56,20 +56,23 @@ endef
define gb_CustomTarget_CustomTarget
$(call gb_CustomTarget_get_target,$(1)) : \
$(call gb_CustomTarget__get_makefile,$(1))
+
endef
define gb_CustomTarget_add_dependency
-$(eval $(call gb_CustomTarget_get_target,$(1)) : \
- $(SRCDIR)/$(2))
+$(call gb_CustomTarget_get_target,$(1)) : $(SRCDIR)/$(2)
+
endef
define gb_CustomTarget_add_dependencies
$(foreach dependency,$(2),$(call gb_CustomTarget_add_dependency,$(1),$(dependency)))
+
endef
define gb_CustomTarget_add_outdir_dependency
-$(eval $(call gb_CustomTarget_get_target,$(1)) : $(2))
+$(call gb_CustomTarget_get_target,$(1)) : $(2)
+
endef
define gb_CustomTarget_add_outdir_dependencies
diff --git a/solenv/gbuild/Deliver.mk b/solenv/gbuild/Deliver.mk
index 165d3306c3e4..1387892312c2 100644
--- a/solenv/gbuild/Deliver.mk
+++ b/solenv/gbuild/Deliver.mk
@@ -56,11 +56,11 @@ endef
ifeq ($(strip $(gb_Deliver_GNUCOPY)),)
define gb_Deliver__deliver
-mkdir -p $(dir $(2)) && $(if $(gb_Deliver_CLEARONDELIVER),rm -f $(2) &&) $(if $(gb_Deliver_HARDLINK),ln,cp -f) $(1) $(2) && touch -r $(1) $(2)
+mkdir -p $(dir $(2)) && $(if $(gb_Deliver_CLEARONDELIVER),rm -f $(2) &&) $(if $(gb_Deliver_HARDLINK),ln,cp -P -f) $(1) $(2) && touch -r $(1) $(2)
endef
else
define gb_Deliver__deliver
-mkdir -p $(dir $(2)) && $(gb_Deliver_GNUCOPY) $(if $(gb_Deliver_CLEARONDELIVER),--remove-destination) $(if $(gb_Deliver_HARDLINK),--link) --force --preserve=timestamps $(1) $(2)
+mkdir -p $(dir $(2)) && $(gb_Deliver_GNUCOPY) $(if $(gb_Deliver_CLEARONDELIVER),--remove-destination) $(if $(gb_Deliver_HARDLINK),--link) --no-dereference --force --preserve=timestamps $(1) $(2)
endef
endif
diff --git a/solenv/gbuild/Jar.mk b/solenv/gbuild/Jar.mk
index 6a108ba7e1a3..f1fe1444c8f4 100644
--- a/solenv/gbuild/Jar.mk
+++ b/solenv/gbuild/Jar.mk
@@ -48,6 +48,12 @@ endef
# creates the target folder of the jar file if it doesn't exist
# creates the jar file
# jar program does not remove the target in case of error, so rm it manually
+# XXX: PACKAGEDIRS need special treatment, because sometimes we need to
+# add into the jar another class hierarchy created outside of our class
+# set (e.g., by javamaker). Because jar does not allow two same root dirs
+# when creating the archive, we work around this deficiency by creating
+# the archive with the main class hierarchy and then updating it from
+# the other one(s), which seems to work .-)
define gb_Jar__command
$(call gb_Output_announce,$*,$(true),JAR,3)
$(call gb_Helper_abbreviate_dirs_native,\
@@ -59,6 +65,7 @@ define gb_Jar__command
mkdir -p $(dir $(2)) && cd $(call gb_Jar_get_workdir,$(1)) && \
$(gb_Jar_JARCOMMAND) cfm $(2) $(call gb_Jar_get_manifest_target,$(1)) \
META-INF $(PACKAGEROOTS) $(PACKAGEFILES) \
+ $(foreach root,$(PACKAGEDIRS),&& $(gb_Jar_JARCOMMAND) uf $(2) -C $(dir $(root)) $(notdir $(root))) \
|| (rm $(2); false) )
endef
@@ -84,6 +91,7 @@ define gb_Jar_Jar
$(call gb_Jar_get_target,$(1)) : MANIFEST :=
$(call gb_Jar_get_target,$(1)) : JARCLASSPATH :=
$(call gb_Jar_get_target,$(1)) : PACKAGEROOTS :=
+$(call gb_Jar_get_target,$(1)) : PACKAGEDIRS :=
$(call gb_Jar_get_target,$(1)) : PACKAGEFILES :=
$(call gb_JavaClassSet_JavaClassSet,$(call gb_Jar_get_classsetname,$(1)))
$(call gb_JavaClassSet_set_classpath,$(call gb_Jar_get_classsetname,$(1)),$(value XCLASSPATH))
@@ -96,11 +104,24 @@ endef
# source files are forwarded to the ClassSet
define gb_Jar_add_sourcefile
$(call gb_JavaClassSet_add_sourcefile,$(call gb_Jar_get_classsetname,$(1)),$(2))
+
endef
-# PACKAGEROOTS is the list of all root folders to pack into the jar (without META-INF as this is added automatically)
+# PACKAGEROOTS is the list of all root folders created by the JavaClassSet to pack into the jar (without META-INF as this is added automatically)
define gb_Jar_set_packageroot
$(call gb_Jar_get_target,$(1)) : PACKAGEROOTS := $(2)
+
+endef
+#
+# PACKAGEDIRS is the list of additional root directories to pack into the jar
+define gb_Jar_add_packagedir
+$(call gb_Jar_get_target,$(1)) : PACKAGEDIRS += $(2)
+
+endef
+
+define gb_Jar_add_packagedirs
+$(foreach packagedir,$(2),$(call gb_Jar_add_packagedir,$(1),$(packagedir)))
+
endef
# PACKAGEFILES is the list of all root files to pack into the jar
@@ -115,16 +136,28 @@ endef
define gb_Jar_add_sourcefiles
$(foreach sourcefile,$(2),$(call gb_Jar_add_sourcefile,$(1),$(sourcefile)))
+
+endef
+
+define gb_Jar_add_generated_sourcefile
+$(call gb_JavaClassSet_add_generated_sourcefile,$(call gb_Jar_get_classsetname,$(1)),$(2))
+
+endef
+
+define gb_Jar_add_generated_sourcefiles
+$(foreach sourcefile,$(2),$(call gb_Jar_add_generated_sourcefile,$(1),$(sourcefile)))
+
endef
define gb_JarTest_set_classpath
$(call gb_JavaClassSet_set_classpath,$(call gb_Jar_get_classsetname,$(1)),$(2))
+
endef
# JARCLASSPATH is the class path that is written to the manifest of the jar
define gb_Jar_set_jarclasspath
-
$(call gb_Jar_get_target,$(1)) : JARCLASSPATH := $(2)
+
endef
# provide a manifest template containing jar specific information to be written into the manifest
@@ -139,27 +172,33 @@ endef
# remember: classpath is "inherited" to ClassSet
define gb_Jar_add_jar
$(call gb_JavaClassSet_add_jar,$(call gb_Jar_get_classsetname,$(1)),$(2))
+
endef
define gb_Jar_add_system_jar
$(call gb_JavaClassSet_add_system_jar,$(call gb_Jar_get_classsetname,$(1)),$(2))
+
endef
# specify jars with imported modules
define gb_Jar_add_jars
$(call gb_JavaClassSet_add_jars,$(call gb_Jar_get_classsetname,$(1)),$(2))
+
endef
define gb_Jar_add_system_jars
$(call gb_JavaClassSet_add_system_jars,$(call gb_Jar_get_classsetname,$(1)),$(2))
+
endef
define gb_Jar_use_external
$(call gb_JavaClassSet_use_external,$(call gb_Jar_get_classsetname,$(1)),$(2))
+
endef
define gb_Jar_use_externals
$(call gb_JavaClassSet_use_externals,$(call gb_Jar_get_classsetname,$(1)),$(2))
+
endef
# possible directories for jar files containing UNO services
diff --git a/solenv/gbuild/JavaClassSet.mk b/solenv/gbuild/JavaClassSet.mk
index 4c8d7cfc5603..6befda19aa2c 100644
--- a/solenv/gbuild/JavaClassSet.mk
+++ b/solenv/gbuild/JavaClassSet.mk
@@ -62,15 +62,20 @@ $(call gb_JavaClassSet_get_clean_target,%) :
define gb_JavaClassSet_JavaClassSet
$(call gb_JavaClassSet_get_target,$(1)) : JARDEPS :=
+
endef
define gb_JavaClassSet__get_sourcefile
$(SRCDIR)/$(1).java
endef
+define gb_JavaClassSet__get_generated_sourcefile
+$(WORKDIR)/$(1).java
+endef
+
define gb_JavaClassSet_add_sourcefile
-$(eval $(call gb_JavaClassSet_get_target,$(1)) : \
- $(call gb_JavaClassSet__get_sourcefile,$(2)))
+$(call gb_JavaClassSet_get_target,$(1)) : $(call gb_JavaClassSet__get_sourcefile,$(2))
+
endef
define gb_JavaClassSet_add_sourcefiles
@@ -78,43 +83,60 @@ $(foreach sourcefile,$(2),$(call gb_JavaClassSet_add_sourcefile,$(1),$(sourcefil
endef
+define gb_JavaClassSet_add_generated_sourcefile
+$(call gb_JavaClassSet_get_target,$(1)) : $(call gb_JavaClassSet__get_generated_sourcefile,$(2))
+$(call gb_JavaClassSet__get_generated_sourcefile,$(2)) : $(gb_Helper_PHONY)
+
+endef
+
+define gb_JavaClassSet_add_generated_sourcefiles
+$(foreach sourcefile,$(2),$(call gb_JavaClassSet_add_generated_sourcefile,$(1),$(sourcefile)))
+
+endef
+
define gb_JavaClassSet_set_classpath
-$(eval $(call gb_JavaClassSet_get_target,$(1)) : T_CP := $(2))
+$(call gb_JavaClassSet_get_target,$(1)) : T_CP := $(2)
endef
# problem: currently we can't get these dependencies to work
# build order dependency is a hack to get these prerequisites out of the way in the build command
define gb_JavaClassSet_add_jar
-$(eval $(call gb_JavaClassSet_get_target,$(1)) : $(2))
-$(eval $(call gb_JavaClassSet_get_target,$(1)) : T_CP := $$(T_CP)$(gb_CLASSPATHSEP)$(strip $(2)))
-$(eval $(call gb_JavaClassSet_get_target,$(1)) : JARDEPS += $(2))
+$(call gb_JavaClassSet_get_target,$(1)) : $(2)
+$(call gb_JavaClassSet_get_target,$(1)) : T_CP := $$(T_CP)$(gb_CLASSPATHSEP)$(strip $(2))
+$(call gb_JavaClassSet_get_target,$(1)) : JARDEPS += $(2)
+
endef
# this does not generate dependency on the jar
define gb_JavaClassSet_add_system_jar
-$(eval $(call gb_JavaClassSet_get_target,$(1)) : T_CP := $$(T_CP)$(gb_CLASSPATHSEP)$(strip $(2)))
-$(eval $(call gb_JavaClassSet_get_target,$(1)) : JARDEPS += $(2))
+$(call gb_JavaClassSet_get_target,$(1)) : T_CP := $$(T_CP)$(gb_CLASSPATHSEP)$(strip $(2))
+$(call gb_JavaClassSet_get_target,$(1)) : JARDEPS += $(2)
+
endef
define gb_JavaClassSet_add_jars
$(foreach jar,$(2),$(call gb_JavaClassSet_add_jar,$(1),$(jar)))
+
endef
define gb_JavaClassSet_add_system_jars
$(foreach jar,$(2),$(call gb_JavaClassSet_add_system_jar,$(1),$(jar)))
+
endef
# this forwards to functions that must be defined in RepositoryExternal.mk.
-# $(call gb_LinkTarget_use_external,library,external)
+# $(eval $(call gb_LinkTarget_use_external,library,external))
define gb_JavaClassSet_use_external
-$(eval $(if $(value gb_JavaClassSet__use_$(2)),\
+$(if $(value gb_JavaClassSet__use_$(2)),\
$(call gb_JavaClassSet__use_$(2),$(1)),\
- $(error gb_JavaClassSet_use_external: unknown external: $(2))))
+ $(error gb_JavaClassSet_use_external: unknown external: $(2)))
+
endef
define gb_JavaClassSet_use_externals
$(foreach external,$(2),$(call gb_JavaClassSet_use_external,$(1),$(external)))
+
endef
# vim: set noet sw=4:
diff --git a/solenv/gbuild/Library.mk b/solenv/gbuild/Library.mk
index 0de2876c89ec..b9173ea74645 100644
--- a/solenv/gbuild/Library.mk
+++ b/solenv/gbuild/Library.mk
@@ -39,6 +39,8 @@
# gb_Library_Library_platform
# gb_Library_TARGETS
+# 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)
@@ -69,21 +71,47 @@ $(call gb_LinkTarget_set_targettype,$(2),Library)
$(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))
$(call gb_Library_get_clean_target,$(1)) : $(call gb_LinkTarget_get_clean_target,$(2))
$(call gb_Library_Library_platform,$(1),$(2),$(gb_Library_DLLDIR)/$(call gb_Library_get_dllname,$(1)))
-$$(eval $$(call gb_Module_register_target,$(call gb_Library_get_target,$(1)),$(call gb_Library_get_clean_target,$(1))))
+$$(eval $$(call gb_Module_register_target,$(call gb_Library__get_final_target,$(1)),$(call gb_Library_get_clean_target,$(1))))
$(call gb_Deliver_add_deliverable,$(call gb_Library_get_target,$(1)),$(call gb_LinkTarget_get_target,$(2)),$(1))
endef
+define gb_Library__set_soversion_script
+$(call gb_LinkTarget_get_target,$(call gb_Library_get_linktargetname,$(1))) : \
+ $(3)
+$(call gb_Library_get_target,$(1)) : SOVERSION := $(2)
+$(call gb_Library_get_target,$(1)) : SOVERSIONSCRIPT := $(3)
+$(call gb_Library_get_target,$(1)) \
+$(call gb_Library_get_clean_target,$(1)) : \
+ AUXTARGETS += $(call gb_Library_get_target,$(1)).$(2)
+$(call gb_LinkTarget_add_auxtargets,$(call gb_Library_get_linktargetname,$(1)),\
+ $(call gb_LinkTarget_get_target,$(call gb_Library_get_linktargetname,$(1))).$(2))
+endef
+
+# for libraries that maintain stable ABI: set SOVERSION and version script
+# $(call gb_Library_set_soversion_script,soversion,versionscript)
+define gb_Library_set_soversion_script
+$(if $(2),,$(call gb_Output_error,gb_Library_set_soversion_script: no version))
+$(if $(3),,$(call gb_Output_error,gb_Library_set_soversion_script: no script))
+$(call gb_Library__set_soversion_script_platform,$(1),$(2),$(3))
+endef
+
+# The dependency from workdir component target to outdir library should ensure
+# that gb_CppunitTest_add_component can transitively depend on the library.
+# But the component target also must be delivered, so a new phony target
+# gb_Library__get_final_target has been invented for that purpose...
define gb_Library_set_componentfile
$(call gb_ComponentTarget_ComponentTarget,$(2),$(call gb_Library__get_componentprefix,$(1)),\
$(call gb_Library_get_runtime_filename,$(if $(MERGELIBS),$(if $(filter $(gb_MERGED_LIBS),$(1)),merged,$(1)),$(1))))
-$(call gb_LinkTarget_get_target,$(call gb_Library_get_linktargetname,$(1))) : \
+$(call gb_Library__get_final_target,$(1)) : \
$(call gb_ComponentTarget_get_outdir_target,$(2))
-$(call gb_Library_get_clean_target,$(1)) : $(call gb_ComponentTarget_get_clean_target,$(or $(strip $(3)),$(strip $(2))))
-
+$(call gb_ComponentTarget_get_target,$(2)) :| $(call gb_Library_get_target,$(1))
+$(call gb_Library_get_clean_target,$(1)) : \
+ $(call gb_ComponentTarget_get_clean_target,$(2))
endef
gb_Library__get_componentprefix = \
diff --git a/solenv/gbuild/LinkTarget.mk b/solenv/gbuild/LinkTarget.mk
index 94fcca6e13c2..e4dbd469a96d 100644
--- a/solenv/gbuild/LinkTarget.mk
+++ b/solenv/gbuild/LinkTarget.mk
@@ -338,7 +338,7 @@ $(call gb_Helper_abbreviate_dirs,\
$(foreach object,$(8),$(call gb_GenCObject_get_dep_target,$(object))) \
$(foreach object,$(9),$(call gb_GenCxxObject_get_dep_target,$(object))) \
) && \
- $(SOLARENV)/bin/concat-deps.pl $${RESPONSEFILE} > $(1)) && \
+ $(SOLARENV)/bin/concat-deps $${RESPONSEFILE} > $(1)) && \
rm -f $${RESPONSEFILE}
endef
@@ -910,7 +910,12 @@ $(call gb_LinkTarget_get_target,$(1)) : DLLTARGET := $(2)
endef
define gb_LinkTarget_set_auxtargets
-$(call gb_LinkTarget_get_clean_target,$(1)) : AUXTARGETS := $(2)
+$$(call gb_Output_error,\
+ gb_LinkTarget_set_auxtargets: use gb_LinkTarget_add_auxtargets instead.)
+endef
+
+define gb_LinkTarget_add_auxtargets
+$(call gb_LinkTarget_get_clean_target,$(1)) : AUXTARGETS += $(2)
endef
define gb_LinkTarget__add_internal_headers
diff --git a/solenv/gbuild/TargetLocations.mk b/solenv/gbuild/TargetLocations.mk
index b7a4fde912b5..cbe2ee747596 100644
--- a/solenv/gbuild/TargetLocations.mk
+++ b/solenv/gbuild/TargetLocations.mk
@@ -133,6 +133,8 @@ gb_XcuResTarget_get_target = $(WORKDIR)/XcuResTarget/$(1)
gb_Zip_get_target = $(WORKDIR)/Zip/$(1).zip
gb_Zip_get_final_target = $(WORKDIR)/Zip/$(1).done
+gb_Library__get_final_target = $(WORKDIR)/Dummy/$(1)
+
define gb_Library_get_external_headers_target
$(patsubst $(1):%,$(WORKDIR)/ExternalHeaders/Library/%,$(filter $(1):%,$(gb_Library_FILENAMES)))
endef
diff --git a/solenv/gbuild/extensions/post_AuxTargets.mk b/solenv/gbuild/extensions/post_AuxTargets.mk
index b98ef3df1348..72414b7d771b 100644
--- a/solenv/gbuild/extensions/post_AuxTargets.mk
+++ b/solenv/gbuild/extensions/post_AuxTargets.mk
@@ -27,6 +27,14 @@
.PHONY: id tags docs distro-pack-install install fetch clean-host clean-build bootstrap
+$(WORKDIR)/bootstrap:
+ @cd $(SRCDIR) && ./bootstrap
+ @mkdir -p $(dir $@) && touch $@
+
+bootstrap: $(WORKDIR)/bootstrap
+
+autogen.lastrun:
+
ifneq ($(gb_SourceEnvAndRecurse_STAGE),buildpl)
id:
@@ -56,14 +64,6 @@ fetch:
$(SRCDIR)/Env.Host.sh: autogen.lastrun configure.in ooo.lst.in set_soenv.in
$(if $(filter reconfigure,$(gb_SourceEnvAndRecurse_STAGE)),$(SRCDIR)/autogen.sh,@echo "cannot reconfigure from within solarenv" && rm -f $(SRCDIR)/Env.Host.sh && exit 2)
-autogen.lastrun:
-
-
-$(WORKDIR)/bootstrap:
- @cd $(SRCDIR) && ./bootstrap
- @mkdir -p $(dir $@) && touch $@
-
-bootstrap: $(WORKDIR)/bootstrap
ifeq ($(strip $(gb_PARTIALBUILD)),)
@@ -78,8 +78,8 @@ clean-build:
distclean: clean
if [ -f $(SRCDIR)/dmake/Makefile ] ; then $(GNUMAKE) -C $(SRCDIR)/dmake clean; fi
- cd $(SRCDIR) && rm -rf Env.Host.sh aclocal.m4 autogen.lastrun autom4te.cache \
- bin/repo-list build_env config.log config.status configure \
+ cd $(SRCDIR) && rm -rf Env.Host.sh autogen.lastrun autom4te.cache \
+ bin/repo-list build_env config.log config.status \
desktop/scripts/soffice.sh ooo.lst post_download post_download.log \
set_soenv set_soenv.last set_soenv.stamp src.downloaded warn
@@ -113,15 +113,6 @@ distro-pack-install:
$(SRCDIR)/Env.Host.sh:
@true
-autogen.lastrun:
- @true
-
-$(WORKDIR)/bootstrap:
- @true
-
-bootstrap:
- @true
-
clean-host:
@true
diff --git a/solenv/gbuild/gbuild.mk b/solenv/gbuild/gbuild.mk
index 521a9c929071..a75fda279bb7 100644
--- a/solenv/gbuild/gbuild.mk
+++ b/solenv/gbuild/gbuild.mk
@@ -194,9 +194,13 @@ gb_GLOBALDEFS += \
else
gb_GLOBALDEFS += \
-DDBG_UTIL \
+
+ifneq ($(COM),MSC)
+gb_GLOBALDEFS += \
-D_DEBUG \
endif
+endif
ifneq ($(strip $(SOLAR_JAVA)),)
gb_GLOBALDEFS += -DSOLAR_JAVA
diff --git a/solenv/gbuild/gbuild_simple.mk b/solenv/gbuild/gbuild_simple.mk
index aeac005e4bd4..a4cdb0d73847 100644
--- a/solenv/gbuild/gbuild_simple.mk
+++ b/solenv/gbuild/gbuild_simple.mk
@@ -46,8 +46,6 @@ include $(GBUILDDIR)/BuildDirs.mk
# I think any use of gbuild_simple.mk is in a sub-make under one that
# uses gbuild.mk anyway.
-# gb_PRODUCT is used by windows.mk to decide which C/C++ runtime to
-# link with.
ifneq ($(strip $(PRODUCT)$(product)),)
gb_PRODUCT := $(true)
else
diff --git a/solenv/gbuild/platform/ANDROID_ARM_GCC.mk b/solenv/gbuild/platform/ANDROID_ARM_GCC.mk
index 775f803040a3..309dc6ac5d1d 100644
--- a/solenv/gbuild/platform/ANDROID_ARM_GCC.mk
+++ b/solenv/gbuild/platform/ANDROID_ARM_GCC.mk
@@ -33,6 +33,15 @@ gb_CFLAGS += -fno-omit-frame-pointer
include $(GBUILDDIR)/platform/unxgcc.mk
+# Link almost everything with -lgnustl_shared
+gb_STDLIBS := \
+ gnustl_shared
+
+gb_Library_PLAINLIBS_NONE := \
+ android \
+ gnustl_shared \
+ log \
+
# No unit testing can be run
gb_CppunitTest_CPPTESTPRECOMMAND := :
@@ -58,7 +67,6 @@ $(call gb_Helper_abbreviate_dirs,\
-Wl$(COMMA)--start-group $(foreach lib,$(LINKED_STATIC_LIBS),$(call gb_StaticLibrary_get_target,$(lib))) -Wl$(COMMA)--end-group \
$(LIBS) \
$(patsubst lib%.a,-l%,$(patsubst lib%.so,-l%,$(foreach lib,$(LINKED_LIBS),$(call gb_Library_get_filename,$(lib))))) \
- -llog -landroid -lgnustl_shared \
-o $(1))
endef
@@ -86,4 +94,6 @@ endef
gb_LinkTarget_LDFLAGS := $(subst -Wl$(COMMA)-rpath-link$(COMMA)$(SYSBASE)/lib:$(SYSBASE)/usr/lib,,$(gb_LinkTarget_LDFLAGS))
+gb_Library__set_soversion_script_platform =
+
# vim: set noet sw=4:
diff --git a/solenv/gbuild/platform/OPENBSD_INTEL_GCC.mk b/solenv/gbuild/platform/OPENBSD_INTEL_GCC.mk
index 17b271526ade..acebb04da5e6 100644
--- a/solenv/gbuild/platform/OPENBSD_INTEL_GCC.mk
+++ b/solenv/gbuild/platform/OPENBSD_INTEL_GCC.mk
@@ -33,24 +33,29 @@ gb_STDLIBS := pthread
include $(GBUILDDIR)/platform/unxgcc.mk
-gb_LinkTarget_NOEXCEPTIONFLAGS += -DBOOST_NO_EXCEPTIONS
-
define gb_LinkTarget__command_dynamiclink
$(call gb_Helper_abbreviate_dirs,\
-mkdir -p $(dir $(1)) && \
+ mkdir -p $(dir $(1)) && \
$(gb_CXX) \
$(if $(filter Library CppunitTest,$(TARGETTYPE)),$(gb_Library_TARGETTYPEFLAGS)) \
+ $(if $(filter Library,$(TARGETTYPE)),$(gb_Library_LTOFLAGS)) \
+ $(if $(SOVERSION),-Wl$(COMMA)--soname=$(notdir $(1)).$(SOVERSION)) \
+ $(if $(SOVERSIONSCRIPT),-Wl$(COMMA)--version-script=$(SOVERSIONSCRIPT))\
$(subst \d,$$,$(RPATH)) \
$(T_LDFLAGS) \
$(foreach object,$(COBJECTS),$(call gb_CObject_get_target,$(object))) \
$(foreach object,$(CXXOBJECTS),$(call gb_CxxObject_get_target,$(object))) \
+ $(foreach object,$(ASMOBJECTS),$(call gb_AsmObject_get_target,$(object))) \
$(foreach object,$(GENCOBJECTS),$(call gb_GenCObject_get_target,$(object))) \
$(foreach object,$(GENCXXOBJECTS),$(call gb_GenCxxObject_get_target,$(object))) \
$(foreach extraobjectlist,$(EXTRAOBJECTLISTS),`cat $(extraobjectlist)`) \
-Wl$(COMMA)--start-group $(foreach lib,$(LINKED_STATIC_LIBS),$(call gb_StaticLibrary_get_target,$(lib))) -Wl$(COMMA)--end-group \
$(LIBS) \
$(subst -lpthread,$(PTHREAD_LIBS),$(patsubst lib%.a,-l%,$(patsubst lib%.so,-l%,$(foreach lib,$(LINKED_LIBS),$(call gb_Library_get_filename,$(lib)))))) \
- -o $(1))
+ -o $(if $(SOVERSION),$(1).$(SOVERSION),$(1)))
+ $(if $(SOVERSION),ln -sf $(notdir $(1)).$(SOVERSION) $(1))
endef
+gb_LinkTarget_NOEXCEPTIONFLAGS += -DBOOST_NO_EXCEPTIONS
+
# vim: set noet sw=4:
diff --git a/solenv/gbuild/platform/OPENBSD_X86_64_GCC.mk b/solenv/gbuild/platform/OPENBSD_X86_64_GCC.mk
index 89724a675afb..5eaa617bd6b3 100644
--- a/solenv/gbuild/platform/OPENBSD_X86_64_GCC.mk
+++ b/solenv/gbuild/platform/OPENBSD_X86_64_GCC.mk
@@ -32,24 +32,29 @@ gb_STDLIBS := pthread
include $(GBUILDDIR)/platform/unxgcc.mk
-gb_LinkTarget_NOEXCEPTIONFLAGS += -DBOOST_NO_EXCEPTIONS
-
define gb_LinkTarget__command_dynamiclink
$(call gb_Helper_abbreviate_dirs,\
-mkdir -p $(dir $(1)) && \
+ mkdir -p $(dir $(1)) && \
$(gb_CXX) \
$(if $(filter Library CppunitTest,$(TARGETTYPE)),$(gb_Library_TARGETTYPEFLAGS)) \
+ $(if $(filter Library,$(TARGETTYPE)),$(gb_Library_LTOFLAGS)) \
+ $(if $(SOVERSION),-Wl$(COMMA)--soname=$(notdir $(1)).$(SOVERSION)) \
+ $(if $(SOVERSIONSCRIPT),-Wl$(COMMA)--version-script=$(SOVERSIONSCRIPT))\
$(subst \d,$$,$(RPATH)) \
$(T_LDFLAGS) \
$(foreach object,$(COBJECTS),$(call gb_CObject_get_target,$(object))) \
$(foreach object,$(CXXOBJECTS),$(call gb_CxxObject_get_target,$(object))) \
+ $(foreach object,$(ASMOBJECTS),$(call gb_AsmObject_get_target,$(object))) \
$(foreach object,$(GENCOBJECTS),$(call gb_GenCObject_get_target,$(object))) \
$(foreach object,$(GENCXXOBJECTS),$(call gb_GenCxxObject_get_target,$(object))) \
$(foreach extraobjectlist,$(EXTRAOBJECTLISTS),`cat $(extraobjectlist)`) \
-Wl$(COMMA)--start-group $(foreach lib,$(LINKED_STATIC_LIBS),$(call gb_StaticLibrary_get_target,$(lib))) -Wl$(COMMA)--end-group \
$(LIBS) \
$(subst -lpthread,$(PTHREAD_LIBS),$(patsubst lib%.a,-l%,$(patsubst lib%.so,-l%,$(foreach lib,$(LINKED_LIBS),$(call gb_Library_get_filename,$(lib)))))) \
- -o $(1))
+ -o $(if $(SOVERSION),$(1).$(SOVERSION),$(1)))
+ $(if $(SOVERSION),ln -sf $(notdir $(1)).$(SOVERSION) $(1))
endef
+gb_LinkTarget_NOEXCEPTIONFLAGS += -DBOOST_NO_EXCEPTIONS
+
# vim: set noet sw=4:
diff --git a/solenv/gbuild/platform/WNT_INTEL_GCC.mk b/solenv/gbuild/platform/WNT_INTEL_GCC.mk
index ac7e4be29ec9..ce4a269c820d 100644
--- a/solenv/gbuild/platform/WNT_INTEL_GCC.mk
+++ b/solenv/gbuild/platform/WNT_INTEL_GCC.mk
@@ -97,10 +97,7 @@ ifeq ($(MINGW_GCCLIB_EH),YES)
gb_LinkTarget_LDFLAGS += -shared-libgcc
endif
-gb_DEBUG_CFLAGS := -ggdb3 -finline-limit=0 -fno-inline -fno-default-inline
-ifeq ($(HAVE_GCC_DWARF_4),TRUE)
-gb_DEBUG_CFLAGS += -gdwarf-4
-endif
+gb_DEBUG_CFLAGS := -ggdb2 -finline-limit=0 -fno-inline -fno-default-inline
gb_STDLIBS := \
mingwthrd \
@@ -154,10 +151,6 @@ gb_LinkTarget_CXXFLAGS := $(gb_CXXFLAGS) $(gb_CXXFLAGS_WERROR)
ifeq ($(gb_SYMBOL),$(true))
gb_LinkTarget_CXXFLAGS += -ggdb2
gb_LinkTarget_CFLAGS += -ggdb2
-ifeq ($(HAVE_GCC_DWARF_4),TRUE)
-gb_LinkTarget_CXXFLAGS += -gdwarf-4
-gb_LinkTarget_CFLAGS += -gdwarf-4
-endif
endif
gb_LinkTarget_INCLUDE +=\
@@ -281,7 +274,6 @@ gb_Library_PLAINLIBS_NONE += \
urlmon \
user32 \
uuid \
- uwinapi \
winmm \
version \
wininet \
@@ -330,7 +322,7 @@ gb_Library_ILIBEXT := .lib
define gb_Library_Library_platform
$(call gb_LinkTarget_set_dlltarget,$(2),$(OUTDIR)/bin/$(notdir $(3)))
-$(call gb_LinkTarget_set_auxtargets,$(2),\
+$(call gb_LinkTarget_add_auxtargets,$(2),\
$(patsubst %.dll,%.map,$(3)) \
)
@@ -414,7 +406,7 @@ gb_CppunitTest_get_libfilename = test_$(1).dll
define gb_CppunitTest_CppunitTest_platform
$(call gb_LinkTarget_set_dlltarget,$(2),$(3))
-$(call gb_LinkTarget_set_auxtargets,$(2),\
+$(call gb_LinkTarget_add_auxtargets,$(2),\
$(patsubst %.dll,%.map,$(3)) \
)
diff --git a/solenv/gbuild/platform/WNT_INTEL_MSC.mk b/solenv/gbuild/platform/WNT_INTEL_MSC.mk
index 638aade3e573..5f0fb2d633e3 100644
--- a/solenv/gbuild/platform/WNT_INTEL_MSC.mk
+++ b/solenv/gbuild/platform/WNT_INTEL_MSC.mk
@@ -278,7 +278,7 @@ endef
# CObject class
define gb_CObject__command
-$(call gb_Output_announce,$(2),$(true),C ,3)
+$(call gb_Output_announce,$(2).c,$(true),C ,3)
$(call gb_Helper_abbreviate_dirs_native,\
mkdir -p $(dir $(1)) $(dir $(4)) && \
$(gb_CC) \
@@ -296,7 +296,7 @@ endef
# CxxObject class
define gb_CxxObject__command
-$(call gb_Output_announce,$(2),$(true),CXX,3)
+$(call gb_Output_announce,$(2).cxx,$(true),CXX,3)
$(call gb_Helper_abbreviate_dirs_native,\
mkdir -p $(dir $(1)) $(dir $(4)) && \
$(if $(filter YES,$(CXXOBJECT_X64)), $(CXX_X64_BINARY), $(gb_CXX)) \
@@ -359,12 +359,11 @@ $(call gb_Helper_abbreviate_dirs_native,\
$(if $(filter YES,$(LIBRARY_X64)), -MACHINE:X64, -MACHINE:IX86) \
$(if $(filter YES,$(LIBRARY_X64)), -LIBPATH:$(COMPATH)/lib/amd64 -LIBPATH:$(WINDOWS_SDK_HOME)/lib/x64,) \
$(T_LDFLAGS) \
- $(if $(gb_PRODUCT),,-NODEFAULTLIB) \
@$${RESPONSEFILE} \
$(foreach lib,$(LINKED_LIBS),$(call gb_Library_get_filename,$(lib))) \
$(foreach lib,$(LINKED_STATIC_LIBS),$(call gb_StaticLibrary_get_filename,$(lib))) \
$(LIBS) \
- $(if $(filter-out StaticLibrary,$(TARGETTYPE)),$(if $(gb_PRODUCT),,oldnames.lib $(if $(filter libcmtd,$(LINKED_LIBS)),,msvcrtd.lib) msvcprtd.lib kernel32.lib) user32.lib) \
+ $(if $(filter-out StaticLibrary,$(TARGETTYPE)),user32.lib) \
$(if $(DLLTARGET),-out:$(DLLTARGET) -implib:$(1),-out:$(1)); RC=$$?; rm $${RESPONSEFILE} \
$(if $(DLLTARGET),; if [ ! -f $(DLLTARGET) ]; then rm -f $(1) && false; fi) \
$(if $(filter Executable,$(TARGETTYPE)),; if [ -f $@.manifest ]; then mt.exe $(MTFLAGS) -manifest $@.manifest -outputresource:$@\;1; fi) ; exit $$RC)
@@ -422,7 +421,6 @@ gb_Library_PLAINLIBS_NONE += \
shlwapi \
user32 \
uuid \
- uwinapi \
version \
wininet \
winmm \
@@ -465,7 +463,7 @@ gb_Library_DLLFILENAMES :=\
define gb_Library_Library_platform
$(call gb_LinkTarget_set_dlltarget,$(2),$(3))
-$(call gb_LinkTarget_set_auxtargets,$(2),\
+$(call gb_LinkTarget_add_auxtargets,$(2),\
$(patsubst %.lib,%.exp,$(call gb_LinkTarget_get_target,$(2))) \
$(3).manifest \
$(call gb_LinkTarget_get_pdbfile,$(2)) \
@@ -536,7 +534,7 @@ define gb_StaticLibrary_StaticLibrary_platform
$(call gb_LinkTarget_get_target,$(2)) \
$(call gb_LinkTarget_get_headers_target,$(2)) : PDBFILE = $(call gb_LinkTarget_get_pdbfile,$(2))
-$(call gb_LinkTarget_set_auxtargets,$(2),\
+$(call gb_LinkTarget_add_auxtargets,$(2),\
$(call gb_LinkTarget_get_pdbfile,$(2)) \
)
@@ -550,7 +548,7 @@ gb_Executable_TARGETTYPEFLAGS := $(gb_Windows_PE_TARGETTYPEFLAGS)
gb_Executable_get_rpath :=
define gb_Executable_Executable_platform
-$(call gb_LinkTarget_set_auxtargets,$(2),\
+$(call gb_LinkTarget_add_auxtargets,$(2),\
$(patsubst %.exe,%.pdb,$(call gb_LinkTarget_get_target,$(2))) \
$(call gb_LinkTarget_get_pdbfile,$(2)) \
$(call gb_LinkTarget_get_target,$(2)).manifest \
@@ -584,7 +582,7 @@ gb_CppunitTest_get_libfilename = test_$(1).dll
define gb_CppunitTest_CppunitTest_platform
$(call gb_LinkTarget_set_dlltarget,$(2),$(3))
-$(call gb_LinkTarget_set_auxtargets,$(2),\
+$(call gb_LinkTarget_add_auxtargets,$(2),\
$(patsubst %.lib,%.exp,$(call gb_LinkTarget_get_target,$(2))) \
$(3).manifest \
$(patsubst %.dll,%.pdb,$(3)) \
diff --git a/solenv/gbuild/platform/com_GCC_class.mk b/solenv/gbuild/platform/com_GCC_class.mk
index 61afbc18e8e8..da909489baaf 100644
--- a/solenv/gbuild/platform/com_GCC_class.mk
+++ b/solenv/gbuild/platform/com_GCC_class.mk
@@ -25,7 +25,7 @@
# $(call gb_CObject__command,object,relative-source,source,dep-file)
define gb_CObject__command
-$(call gb_Output_announce,$(2),$(true),C ,3)
+$(call gb_Output_announce,$(2).c,$(true),C ,3)
$(call gb_Helper_abbreviate_dirs,\
mkdir -p $(dir $(1)) $(dir $(4)) && \
$(gb_CC) \
@@ -44,7 +44,7 @@ endef
# $(call gb_CxxObject__command,object,relative-source,source,dep-file)
define gb_CxxObject__command
-$(call gb_Output_announce,$(2),$(true),CXX,3)
+$(call gb_Output_announce,$(2).cxx,$(true),CXX,3)
$(call gb_Helper_abbreviate_dirs,\
mkdir -p $(dir $(1)) $(dir $(4)) && \
$(gb_CXX) \
diff --git a/solenv/gbuild/platform/macosx.mk b/solenv/gbuild/platform/macosx.mk
index 5be5001f22fd..ef82a823a8a8 100644
--- a/solenv/gbuild/platform/macosx.mk
+++ b/solenv/gbuild/platform/macosx.mk
@@ -55,9 +55,9 @@ gb_COMPILERDEFS += \
gb_CFLAGS := \
-isysroot $(gb_SDKDIR) \
$(gb_CFLAGS_COMMON) \
- -Wshadow \
-fPIC \
-fno-strict-aliasing \
+ #-Wshadow \ break in compiler headers already
gb_CXXFLAGS := \
-isysroot $(gb_SDKDIR) \
@@ -149,9 +149,10 @@ gb_LinkTarget__RPATHS := \
SDKBIN: \
NONE:@__VIA_LIBRARY_PATH__@ \
+# $(call gb_LinkTarget__get_installname,libfilename,soversion,layerprefix)
define gb_LinkTarget__get_installname
-$(if $(2),-install_name '$(2)$(1)',$(error
- cannot determine -install_name for $(2)))
+$(if $(3),-install_name '$(3)$(1)$(if $(2),.$(2))',
+ $(call gb_Output_error,cannot determine -install_name for $(3)))
endef
gb_LinkTarget_CFLAGS := $(gb_CFLAGS) $(gb_CFLAGS_WERROR)
@@ -207,13 +208,14 @@ $(call gb_Helper_abbreviate_dirs,\
$(foreach extraobjectlist,$(EXTRAOBJECTLISTS),`cat $(extraobjectlist)`) \
$(foreach lib,$(LINKED_STATIC_LIBS),$(call gb_StaticLibrary_get_target,$(lib))) \
$(LIBS) \
- -o $(1) \
+ -o $(if $(SOVERSION),$(1).$(SOVERSION),$(1)) \
`cat $${DYLIB_FILE}` && \
+ $(if $(SOVERSION),ln -sf $(notdir $(1)).$(SOVERSION) $(1),:) && \
$(if $(filter Executable,$(TARGETTYPE)), \
$(PERL) $(SOLARENV)/bin/macosx-change-install-names.pl Executable \
$(LAYER) $(1) &&) \
$(if $(filter Library CppunitTest,$(TARGETTYPE)),\
- $(PERL) $(SOLARENV)/bin/macosx-change-install-names.pl Library $(LAYER) $(1) && \
+ $(PERL) $(SOLARENV)/bin/macosx-change-install-names.pl Library $(LAYER) $(if $(SOVERSION),$(1).$(SOVERSION),$(1)) && \
ln -sf $(1) $(patsubst %.dylib,%.jnilib,$(1)) &&) \
rm -f $${DYLIB_FILE})
endef
@@ -289,15 +291,19 @@ gb_Library_LAYER := \
$(foreach lib,$(gb_Library_UNOVERLIBS),$(lib):URELIB) \
define gb_Library_get_rpath
-$(call gb_LinkTarget__get_installname,$(call gb_Library_get_filename,$(1)),$(call gb_LinkTarget__get_rpath_for_layer,$(call gb_Library_get_layer,$(1))))
+$(call gb_LinkTarget__get_installname,$(call gb_Library_get_filename,$(1)),$(2),$(call gb_LinkTarget__get_rpath_for_layer,$(call gb_Library_get_layer,$(1))))
endef
+# RPATH def is delayed until the link command to get current value of SOVERSION
define gb_Library_Library_platform
-$(call gb_LinkTarget_get_target,$(2)) : RPATH := $(call gb_Library_get_rpath,$(1))
+$(call gb_LinkTarget_get_target,$(2)) : \
+ RPATH = $$(call gb_Library_get_rpath,$(1),$$(SOVERSION))
$(call gb_LinkTarget_get_target,$(2)) : LAYER := $(call gb_Library_get_layer,$(1))
endef
+gb_Library__set_soversion_script_platform = $(gb_Library__set_soversion_script)
+
# StaticLibrary class
@@ -336,7 +342,12 @@ endef
# CppunitTest class
+ifeq ($(CROSS_COMPILING),YES)
+gb_CppunitTest_CPPTESTPRECOMMAND := :
+else
gb_CppunitTest_CPPTESTPRECOMMAND := $(gb_Helper_set_ld_path)
+endif
+
gb_CppunitTest_SYSPRE := libtest_
gb_CppunitTest_EXT := .dylib
gb_CppunitTest_LIBDIR := $(gb_Helper_OUTDIRLIBDIR)
diff --git a/solenv/gbuild/platform/solaris.mk b/solenv/gbuild/platform/solaris.mk
index a51edbfb63ed..afb96297a615 100644
--- a/solenv/gbuild/platform/solaris.mk
+++ b/solenv/gbuild/platform/solaris.mk
@@ -26,6 +26,12 @@
#
#*************************************************************************
+# FIXME: this is currently hardcoded to SunStudio.
+# We really don't want to support building with that because of all its
+# bugs that need painful work-arounds; if somebody revives the Solaris
+# port then please make it use GCC instead (there used to be a Solaris/GCC
+# port at some point in the past, see solenv/inc/unxsog{i,s}.mk).
+
GUI := UNX
COM := C52
@@ -154,7 +160,7 @@ gb_Helper_OUTDIRLIBDIR := $(OUTDIR)/lib
# CObject class
define gb_CObject__command
-$(call gb_Output_announce,$(2),$(true),C ,3)
+$(call gb_Output_announce,$(2).c,$(true),C ,3)
$(call gb_Helper_abbreviate_dirs,\
rm -f $(4) && \
mkdir -p $(dir $(1)) $(dir $(4)) && \
@@ -173,7 +179,7 @@ endef
# CxxObject class
define gb_CxxObject__command
-$(call gb_Output_announce,$(2),$(true),CXX,3)
+$(call gb_Output_announce,$(2).cxx,$(true),CXX,3)
$(call gb_Helper_abbreviate_dirs,\
mkdir -p $(dir $(1)) $(dir $(4)) && \
$(gb_CXX) \
@@ -213,6 +219,7 @@ $(call gb_Helper_abbreviate_dirs,\
mkdir -p $(dir $(1)) && \
$(gb_CXX) \
$(if $(filter Library CppunitTest,$(TARGETTYPE)),$(gb_Library_TARGETTYPEFLAGS)) \
+ $(if $(SOVERSIONSCRIPT),-M $(SOVERSIONSCRIPT)) \
$(subst \d,$$,$(RPATH)) \
$(T_LDFLAGS) \
$(patsubst lib%.so,-l%,$(foreach lib,$(LINKED_LIBS),$(call gb_Library_get_filename,$(lib)))) \
@@ -223,7 +230,8 @@ $(call gb_Helper_abbreviate_dirs,\
$(foreach extraobjectlist,$(EXTRAOBJECTLISTS),@$(extraobjectlist)) \
$(foreach lib,$(LINKED_STATIC_LIBS),$(call gb_StaticLibrary_get_target,$(lib))) \
$(LIBS) \
- -o $(1))
+ -o $(if $(SOVERSION),$(1).$(SOVERSION),$(1)))
+ $(if $(SOVERSION),ln -sf $(notdir $(1)).$(SOVERSION) $(1))
endef
define gb_LinkTarget__command_staticlink
diff --git a/solenv/gbuild/platform/unxgcc.mk b/solenv/gbuild/platform/unxgcc.mk
index 37c203f32c81..a22d23410496 100644
--- a/solenv/gbuild/platform/unxgcc.mk
+++ b/solenv/gbuild/platform/unxgcc.mk
@@ -161,10 +161,7 @@ gb_COMPILEROPTFLAGS := $(gb_COMPILERDEFAULTOPTFLAGS)
gb_LINKEROPTFLAGS := -Wl,-O1
endif
-gb_DEBUG_CFLAGS := -ggdb3 -finline-limit=0 -fno-inline -fno-default-inline
-ifeq ($(HAVE_GCC_DWARF_4),TRUE)
-gb_DEBUG_CFLAGS += -gdwarf-4
-endif
+gb_DEBUG_CFLAGS := -ggdb2 -finline-limit=0 -fno-inline -fno-default-inline
gb_COMPILERNOOPTFLAGS := -O0
@@ -209,10 +206,6 @@ gb_LinkTarget_CXXFLAGS := $(gb_CXXFLAGS) $(gb_CXXFLAGS_WERROR)
ifeq ($(gb_SYMBOL),$(true))
gb_LinkTarget_CXXFLAGS += -ggdb2
gb_LinkTarget_CFLAGS += -ggdb2
-ifeq ($(HAVE_GCC_DWARF_4),TRUE)
-gb_LinkTarget_CXXFLAGS += -gdwarf-4
-gb_LinkTarget_CFLAGS += -gdwarf-4
-endif
endif
# note that `cat $(extraobjectlist)` is needed to build with older gcc versions, e.g. 4.1.2 on SLED10
@@ -223,6 +216,8 @@ $(call gb_Helper_abbreviate_dirs,\
$(gb_CXX) \
$(if $(filter Library CppunitTest,$(TARGETTYPE)),$(gb_Library_TARGETTYPEFLAGS)) \
$(if $(filter Library,$(TARGETTYPE)),$(gb_Library_LTOFLAGS)) \
+ $(if $(SOVERSION),-Wl$(COMMA)--soname=$(notdir $(1)).$(SOVERSION)) \
+ $(if $(SOVERSIONSCRIPT),-Wl$(COMMA)--version-script=$(SOVERSIONSCRIPT))\
$(subst \d,$$,$(RPATH)) \
$(T_LDFLAGS) \
$(foreach object,$(COBJECTS),$(call gb_CObject_get_target,$(object))) \
@@ -234,7 +229,8 @@ $(call gb_Helper_abbreviate_dirs,\
-Wl$(COMMA)--start-group $(foreach lib,$(LINKED_STATIC_LIBS),$(call gb_StaticLibrary_get_target,$(lib))) -Wl$(COMMA)--end-group \
$(LIBS) \
$(patsubst lib%.a,-l%,$(patsubst lib%.so,-l%,$(foreach lib,$(LINKED_LIBS),$(call gb_Library_get_filename,$(lib))))) \
- -o $(1))
+ -o $(if $(SOVERSION),$(1).$(SOVERSION),$(1)))
+ $(if $(SOVERSION),ln -sf $(notdir $(1)).$(SOVERSION) $(1))
endef
define gb_LinkTarget__command_staticlink
@@ -317,6 +313,8 @@ $(call gb_LinkTarget_get_target,$(2)) : RPATH := $(call gb_Library_get_rpath,$(1
endef
+gb_Library__set_soversion_script_platform = $(gb_Library__set_soversion_script)
+
# StaticLibrary class
diff --git a/solenv/gbuild/platform/unxgcc_gdbforjunit.sh b/solenv/gbuild/platform/unxgcc_gdbforjunit.sh
index 730d2e9484f7..0341e7b7a592 100755
--- a/solenv/gbuild/platform/unxgcc_gdbforjunit.sh
+++ b/solenv/gbuild/platform/unxgcc_gdbforjunit.sh
@@ -44,7 +44,7 @@ then
echo "Found a core dump at ${COREFILE}"
echo "Stacktrace:"
GDBCOMMANDFILE=`mktemp`
- echo "bt" > ${GDBCOMMANDFILE}
+ echo "thread apply all bt" > ${GDBCOMMANDFILE}
gdb -x $GDBCOMMANDFILE --batch ${OFFICEFILE}.bin ${COREFILE}
rm ${GDBCOMMANDFILE}
echo
diff --git a/solenv/inc/settings.mk b/solenv/inc/settings.mk
index 3b9b260dbcc0..6dddac6799b8 100644
--- a/solenv/inc/settings.mk
+++ b/solenv/inc/settings.mk
@@ -452,7 +452,6 @@ DBG_LEVEL*=0
optimize!=true
dbgutil!=true
DBG_LEVEL*=1
-USE_DEBUG_RUNTIME*=TRUE
.ENDIF
.IF "$(debug)"!=""
diff --git a/solenv/inc/unxandr/lo-bootstrap.h b/solenv/inc/unxandr/lo-bootstrap.h
index 258d9d28850c..71a8d13a6e10 100644
--- a/solenv/inc/unxandr/lo-bootstrap.h
+++ b/solenv/inc/unxandr/lo-bootstrap.h
@@ -31,11 +31,14 @@
#include <jni.h>
#include <dlfcn.h>
+#include <dirent.h>
#ifdef __cplusplus
extern "C" {
#endif
+typedef struct lo_apk_dir lo_apk_dir;
+
char **lo_dlneeds(const char *library);
void *lo_dlopen(const char *library);
@@ -49,6 +52,12 @@ int lo_dladdr(void *addr,
void *lo_apkentry(const char *filename,
size_t *size);
+lo_apk_dir *lo_apk_opendir(const char *dirname);
+
+struct dirent *lo_apk_readdir(lo_apk_dir *dirp);
+
+int lo_apk_closedir(lo_apk_dir *dirp);
+
int lo_dlcall_argc_argv(void *function,
int argc,
const char **argv);