# SPDX-License-Identifier: LGPL-2.1-only
-JAVAROOT = .
+JAVAROOT = .build
jarfile = liblttng-ust-java.jar
jardir = $(datadir)/java
pkgpath = org/lttng/ust
dist_noinst_JAVA = $(pkgpath)/LTTngUst.java
jar_DATA = $(jarfile)
-BUILT_SOURCES = org_lttng_ust_LTTngUst.h
AM_CPPFLAGS += -I$(builddir) -I$(srcdir) $(JNI_CPPFLAGS)
+
lib_LTLIBRARIES = liblttng-ust-java.la
liblttng_ust_java_la_SOURCES = LTTngUst.c lttng_ust_java.h
+
+# Generated by javac / javah
nodist_liblttng_ust_java_la_SOURCES = org_lttng_ust_LTTngUst.h
+# Explicit dependency to ensure the header is generated before the
+# C file is built.
+LTTngUst.lo: org_lttng_ust_LTTngUst.h
+
liblttng_ust_java_la_LIBADD = -lc \
$(top_builddir)/src/lib/lttng-ust/liblttng-ust.la
$(jarfile): classnoinst.stamp
- $(JAR) cf $(JARFLAGS) $@ $(pkgpath)/*.class
+ $(JAR) cf $(JARFLAGS) $@ -C $(JAVAROOT) $(pkgpath)/LTTngUst.class
+
+# Ensure the javaroot directory is created before the Java class files are built.
+$(pkgpath)/LTTngUst.java: $(JAVAROOT)
+$(JAVAROOT):
+ -test -d $(JAVAROOT) || mkdir $(JAVAROOT)
if !HAVE_JAVAH
# If we don't have javah, assume we are running openjdk >= 10 and use javac
# to generate the jni header file.
AM_JAVACFLAGS = -h .
-org_lttng_ust_LTTngUst.h: $(jarfile)
+# The header file will be generated by javac when building the Java class
+# files, add a dependency on the stamp file to ensure proper ordering.
+org_lttng_ust_LTTngUst.h: classnoinst.stamp
else
-org_lttng_ust_LTTngUst.h: jni-header.stamp
-
-jni-header.stamp: $(dist_noinst_JAVA)
- $(JAVAH) -classpath $(srcdir) $(JAVAHFLAGS) org.lttng.ust.LTTngUst && \
- echo "JNI header generated" > jni-header.stamp
+org_lttng_ust_LTTngUst.h:
+ $(JAVAH) -classpath $(srcdir) $(JAVAHFLAGS) org.lttng.ust.LTTngUst
endif
-all-local: org_lttng_ust_LTTngUst.h
-
EXTRA_DIST = README
-CLEANFILES = $(jarfile) $(pkgpath)/*.class jni-header.stamp org_lttng_ust_LTTngUst.h
+CLEANFILES = $(jarfile) org_lttng_ust_LTTngUst.h
+
+clean-local:
+ -rm -rf $(JAVAROOT)