about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--jars.mk2
-rw-r--r--lib.mk11
2 files changed, 12 insertions, 1 deletions
diff --git a/jars.mk b/jars.mk
index 186a81df1a94..abe3f9fe5bb7 100644
--- a/jars.mk
+++ b/jars.mk
@@ -16,7 +16,7 @@ define build-jar
 	$$(trace-javac) javac $(GLOBAL_JAVACFLAGS) $$($(1)_JAVACFLAGS) -d $$($(1)_TMPDIR) \
 	  $$(foreach fn, $$($(1)_SOURCES), '$$(fn)') \
 	  -cp "$$(subst $$(space),,$$(foreach jar,$$($(1)_JARS),$$($$(jar)_PATH):))$$$$CLASSPATH"
-	$$(trace-jar) jar cf $$($(1)_PATH) -C $$($(1)_TMPDIR) .
+	$$(trace-jar) jar cfm $$($(1)_PATH) <(echo -e '$$(subst $$(newline),\n,$$($(1)_MANIFEST))') -C $$($(1)_TMPDIR) .
 	@rm -rf $$($(1)_TMPDIR)
 
   $(1)_INSTALL_DIR ?= $$(libdir)/java
diff --git a/lib.mk b/lib.mk
index 16a43f45e26e..31308deaa886 100644
--- a/lib.mk
+++ b/lib.mk
@@ -14,11 +14,22 @@ dist-files :=
 OS = $(shell uname -s)
 
 
+# Use bash (required for process substitution in the JAR function).
+SHELL = bash
+
+
 # Hack to define a literal space.
 space :=
 space +=
 
 
+# Hack to define a literal newline.
+define newline
+
+
+endef
+
+
 # Default installation paths.
 prefix ?= /usr/local
 libdir ?= $(prefix)/lib