# $Id: Makefile.kmk 108257 2025-02-17 12:57:55Z vboxsync $ ## @file # Sub-Makefile for Java bindings # # # Copyright (C) 2010-2024 Oracle and/or its affiliates. # # This file is part of VirtualBox base platform packages, as # available from https://www.virtualbox.org. # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation, in version 3 of the # License. # # This program is distributed in the hope that it will be useful, but # WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, see . # # SPDX-License-Identifier: GPL-3.0-only # SUB_DEPTH = ../../../.. include $(KBUILD_PATH)/subheader.kmk # # Globals # VBOX_JXPCOM_SRC := $(PATH_SUB_CURRENT) VBOX_JXPCOM_TARGET := $(PATH_TARGET)/vboxjxpcom-gen VBOX_JXPCOM_JDEST := $(VBOX_JXPCOM_TARGET)/jdest VBOX_GLUE_XSLT_DIR := $(PATH_ROOT)/src/VBox/Main/glue ifndef VBOX_ONLY_SDK # # VBoxJXpcom - Java<->XPCOM native library # DLLS += VBoxJXpcom VBoxJXpcom_TEMPLATE = XPComDll VBoxJXpcom_CXXFLAGS = -Wno-write-strings VBoxJXpcom_DEFS = \ EXPORT_XPTI_API \ EXPORT_XPT_API \ VBOX_WITH_XPCOM VBoxJXpcom_NAME = libvboxjxpcom VBoxJXpcom_DLLSUFF.darwin = .jnilib VBoxJXpcom_INCS = \ src \ $(VBOX_JAVA_INC) \ $(VBOX_PATH_XPCOM_SRC)/xpcom/glue \ $(VBOX_PATH_XPCOM_SRC)/xpcom/build \ $(VBOX_JXPCOM_JDEST) VBoxJXpcom_INCS.darwin += \ $(VBOX_JAVA_INC)/darwin VBoxJXpcom_SOURCES = \ src/nsAppFileLocProviderProxy.cpp \ src/nsJavaWrapper.cpp \ src/nsJavaXPCOMBindingUtils.cpp \ src/nsJavaXPTCStub.cpp \ src/nsJavaXPTCStubWeakRef.cpp \ src/nsJavaXPCOMGlue.cpp \ src/nsJavaInterfaces.cpp VBoxJXpcom_LIBS = \ $(PATH_STAGE_LIB)/VBoxCOM$(VBOX_SUFF_LIB) \ $(PATH_STAGE_BIN)/VBoxXPCOM$(VBOX_SUFF_DLL) #VBoxJXpcom_ORDERDEPS = $(VBOX_JXPCOM_GENH) #VBoxJXpcom_CLEAN = $(VBOX_JXPCOM_GENH) VBOX_JXPCOM_GENH = \ $(VBOX_JXPCOM_JDEST)/org_mozilla_xpcom_internal_XPCOMImpl.h \ $(VBOX_JXPCOM_JDEST)/org_mozilla_xpcom_internal_GREImpl.h \ $(VBOX_JXPCOM_JDEST)/org_mozilla_xpcom_internal_MozillaImpl.h \ $(VBOX_JXPCOM_JDEST)/org_mozilla_xpcom_internal_XPCOMJavaProxy.h \ $(VBOX_JXPCOM_JDEST)/org_mozilla_xpcom_internal_JavaXPCOMMethods.h \ $(VBOX_JXPCOM_JDEST)/org_mozilla_xpcom_ProfileLock.h endif # !VBOX_ONLY_SDK # # Install JAR files # INSTALLS += VBoxJXpcom-inst-jar VBOX_JXPCOM_JAR = $(VBoxJXpcom-inst-jar_0_OUTDIR)/vboxjxpcom.jar VBOX_JXPCOM_NSERROR = $(VBOX_JXPCOM_GEN)/java/XPCOMError.java VBOX_JXPCOM_GEN = $(VBOX_JXPCOM_TARGET)/jxpcomgen VBoxJXpcom-inst-jar_INST = $(INST_SDK)bindings/xpcom/java/ VBoxJXpcom-inst-jar_MODE = a+r,u+w VBoxJXpcom-inst-jar_SOURCES = \ $(VBOX_JXPCOM_JAR) VBoxJXpcom-inst-jar_CLEAN = \ $(VBOX_JXPCOM_JAR) \ $(VBOX_JXPCOM_NSERROR) \ $(VBOX_JXPCOM_GEN)/jxpcomgen.list \ $(VBOX_JXPCOM_GEN)/jxpcomglue.list \ $(wildcard \ $(VBOX_JXPCOM_GEN)/java/*.java \ $(VBOX_JXPCOM_GEN)/java/glue/*.java \ $(VBOX_JXPCOM_JDEST)/*.class \ $(VBOX_JXPCOM_JDEST)/*/*.class \ $(VBOX_JXPCOM_JDEST)/*/*/*.class \ $(VBOX_JXPCOM_JDEST)/*/*/*/*.class \ $(VBOX_JXPCOM_JDEST)/*/*/*/*/*.class \ $(VBOX_JXPCOM_JDEST)/*/*/*/*/*/*.class \ ) VBoxJXpcom-inst-jar_BLDDIRS += $(VBOX_JXPCOM_GEN)/java $(VBOX_JXPCOM_GEN)/java/glue $(VBOX_JXPCOM_GEN)/java/interfaces # # For VBoxJXpcom, not currently used. # $(VBOX_JXPCOM_GENH): $$(VBOX_JXPCOM_JAR) $(call MSG_L1,Generating $@ from $<) $(QUIET)$(VBOX_JAVAH) -classpath $(VBOX_JXPCOM_JDEST) -d $(VBOX_JXPCOM_JDEST) \ org.mozilla.xpcom.internal.XPCOMImpl \ org.mozilla.xpcom.internal.GREImpl \ org.mozilla.xpcom.internal.MozillaImpl \ org.mozilla.xpcom.internal.XPCOMJavaProxy \ org.mozilla.xpcom.ProfileLock \ org.mozilla.xpcom.internal.JavaXPCOMMethods # # Generate error constants. # $(VBOX_JXPCOM_NSERROR): $(VBOX_PATH_XPCOM_SRC)/xpcom/base/nsError.h $(VBOX_JXPCOM_SRC)/tools/gen-nsError.pl | $(VBOX_JXPCOM_GEN)/java/ $(call MSG_L1,Generating $@) $(QUIET)perl $(VBOX_JXPCOM_SRC)/tools/gen-nsError.pl < $< > $@ # # Generate .java interface files from .xidl # $(VBOX_JXPCOM_GEN)/jxpcomgen.list: \ $(VBOX_XIDL_FILE) \ $(VBOX_FILESPLIT) \ $(VBOX_JXPCOM_SRC)/tools/genjifaces.xsl \ | $(VBOX_JXPCOM_GEN)/java/interfaces/ $(call MSG_L1,Generating Java interface files) $(QUIET)$(RM) -f $(wildcard $(VBOX_JXPCOM_GEN)/java/interfaces/*.java) $(QUIET)$(VBOX_XSLTPROC) \ -o $(VBOX_JXPCOM_GEN)/java/interfaces/merged.file $(VBOX_JXPCOM_SRC)/tools/genjifaces.xsl $< $(QUIET)$(VBOX_FILESPLIT) $(VBOX_JXPCOM_GEN)/java/interfaces/merged.file $(VBOX_JXPCOM_GEN)/java/interfaces $(QUIET)echo $(VBOX_JXPCOM_GEN)/java/interfaces/*.java > $@ $(VBOX_JXPCOM_GEN)/jxpcomglue.list: \ $(VBOX_XIDL_FILE) \ $(VBOX_GLUE_XSLT_DIR)/glue-java.xsl \ $(VBOX_FILESPLIT) \ | $(VBOX_JXPCOM_GEN)/java/glue/ $(call MSG_L1,Generating Java glue files from XIDL) $(QUIET)$(RM) -f $(wildcard $(VBOX_JXPCOM_GEN)/java/glue/*.java) $(QUIET)$(VBOX_XSLTPROC) \ --stringparam filelistonly "" \ --stringparam G_vboxApiSuffix $(VBOX_API_SUFFIX) \ --stringparam G_vboxGlueStyle xpcom \ --stringparam G_vboxDirPrefix "" \ -o $(VBOX_JXPCOM_GEN)/java/glue/merged.file $(VBOX_GLUE_XSLT_DIR)/glue-java.xsl $< $(QUIET)$(VBOX_FILESPLIT) $(VBOX_JXPCOM_GEN)/java/glue/merged.file $(VBOX_JXPCOM_GEN)/java/glue/ $(QUIET)echo $(VBOX_JXPCOM_GEN)/java/glue/*.java > $@ # # Compile the all java code into a JAR file. # VBOX_JXPCOM_JSRC = $(VBOX_JXPCOM_SRC)/src/org/mozilla/xpcom VBOX_JXPCOM_JAR_SRC = \ $(VBOX_JXPCOM_JSRC)/IXPCOM.java \ $(VBOX_JXPCOM_JSRC)/Mozilla.java \ $(VBOX_JXPCOM_JSRC)/VersionComparator.java \ $(VBOX_JXPCOM_JSRC)/GREVersionRange.java \ $(VBOX_JXPCOM_JSRC)/IAppFileLocProvider.java \ $(VBOX_JXPCOM_JSRC)/ProfileLock.java \ $(VBOX_JXPCOM_JSRC)/IGRE.java \ $(VBOX_JXPCOM_JSRC)/IJavaXPCOMUtils.java \ $(VBOX_JXPCOM_JSRC)/XPCOMException.java \ $(VBOX_JXPCOM_JSRC)/IMozilla.java \ $(VBOX_JXPCOM_JSRC)/XPCOMInitializationException.java \ $(VBOX_JXPCOM_JSRC)/INIParser.java \ $(VBOX_JXPCOM_JSRC)/internal/GREImpl.java \ $(VBOX_JXPCOM_JSRC)/internal/JavaXPCOMMethods.java \ $(VBOX_JXPCOM_JSRC)/internal/MozillaImpl.java \ $(VBOX_JXPCOM_JSRC)/internal/XPCOMImpl.java \ $(VBOX_JXPCOM_JSRC)/internal/XPCOMJavaProxyBase.java \ $(VBOX_JXPCOM_JSRC)/internal/XPCOMJavaProxy.java $$(VBOX_JXPCOM_JAR): $(VBOX_JXPCOM_JAR_SRC) $(VBOX_JXPCOM_GEN)/jxpcomgen.list $(VBOX_JXPCOM_GEN)/jxpcomglue.list $(VBOX_JXPCOM_NSERROR) $(VBOX_JXPCOM_MGR) | $$(dir $$@) $(call MSG_TOOL,javac,$(notdir $@),jxpcomgen.list,) $(QUIET)$(RM) -Rf $(VBOX_JXPCOM_JDEST) $(QUIET)$(MKDIR) -p $(VBOX_JXPCOM_JDEST) $(QUIET)$(VBOX_JAVAC) $(VBOX_JAVAC_OPTS) @$(VBOX_JXPCOM_GEN)/jxpcomgen.list \ -d $(VBOX_JXPCOM_JDEST) -classpath $(VBOX_JXPCOM_JDEST) $(call MSG_TOOL,javac,$(notdir $@),...,) $(QUIET)$(VBOX_JAVAC) $(VBOX_JAVAC_OPTS) \ $(VBOX_JXPCOM_JAR_SRC) \ $(VBOX_JXPCOM_NSERROR) \ @$(VBOX_JXPCOM_GEN)/jxpcomglue.list \ -d $(VBOX_JXPCOM_JDEST) -classpath $(VBOX_JXPCOM_JDEST) $(call MSG_LINK,$(notdir $@),$@) $(QUIET)$(VBOX_JAR) cf $@ -C $(VBOX_JXPCOM_JDEST) . include $(FILE_KBUILD_SUB_FOOTER)