aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorsvidyuk <svidyuk@yandex-team.ru>2022-05-23 14:58:54 +0300
committersvidyuk <svidyuk@yandex-team.ru>2022-05-23 14:58:54 +0300
commit51ca151a021d7bd703e5aa33cf3b05de0abb9c6f (patch)
tree9a678391a2b5167c35caa64b6b2ebb43f6dbb933
parent57ac751e49fb70ea74e9c6def5d7653e0b460043 (diff)
downloadydb-51ca151a021d7bd703e5aa33cf3b05de0abb9c6f.tar.gz
Infrastructure for DLL_JAVA cmake export
YMAKE-122 ref:1249249483788b4961e04d21057e13d80b1efb13
-rw-r--r--build/conf/java.ymake.conf20
-rw-r--r--build/ymake.core.conf3
2 files changed, 23 insertions, 0 deletions
diff --git a/build/conf/java.ymake.conf b/build/conf/java.ymake.conf
index 2f3029592b7..ae6c31d8d24 100644
--- a/build/conf/java.ymake.conf
+++ b/build/conf/java.ymake.conf
@@ -155,13 +155,31 @@ multimodule JAVA_CONTRIB_PROGRAM {
}
}
+_EXPLICIT_SWIG_JAVA_SOURCES=
+_EXPLICIT_SWIG_IFACE_SOURCES=
+macro _EXPORT_JAVA_BINDINGS(JavaSrcs...) {
+ SET_APPEND(_EXPLICIT_SWIG_JAVA_SOURCES ${input:JavaSrcs})
+ .SEM=find_package SWIG COMPONENTS java && find_package Java && find_package JNI && include UseSWIG && include UseJava ${input;hide:JavaSrcs} ${output;hide;pre=$_HASH_HELPER($Args):".o"}
+}
+macro _EXPORT_SWIG_SOURCES(SwigSrcs...) {
+ SET_APPEND(_EXPLICIT_SWIG_IFACE_SOURCES ${input:SwigSrcs})
+}
+
macro _JNI_CPP_SWIG_SRCS(Srcs...) {
SRCS(${ext=.cpp:Srcs} ${ext=.swg:Srcs})
+ _EXPORT_JAVA_BINDINGS(${ext=.java:Srcs})
+ _EXPORT_SWIG_SOURCES(${ext=.swg:Srcs})
}
macro _JNI_JAVA_SWIG_SRCS(Srcs...) {
SRCS(${ext=.java:Srcs} ${ext=.swg:Srcs})
}
+SWIG_JNI_BINDINGS_SEM= \
+ add_swig_jni_library ${MODDIR} ${REALPRJNAME}-cpp GEN_JAVA_FILES_LIST ${"$"}{CMAKE_CURRENT_BINARY_DIR}/swig_gen_java.lst SOURCES ${_EXPLICIT_SWIG_IFACE_SOURCES} && \
+ set_target_property OUTPUT_NAME $REALPRJNAME && \
+ vcs_info && \
+ add_jar ${REALPRJNAME} SOURCES $_EXPLICIT_SWIG_JAVA_SOURCES @${"$"}{CMAKE_CURRENT_BINARY_DIR}/swig_gen_java.lst ${hide:TARGET}
+
### @usage: DLL_JAVA()
###
### DLL built using swig for Java. Produces dynamic library and a .jar.
@@ -173,6 +191,7 @@ multimodule DLL_JAVA {
module JNI_DLL: DLL {
.ALIASES=SRCS=_JNI_CPP_SWIG_SRCS
.FINAL_TARGET=no
+ .SEM=SWIG_JNI_BINDINGS_SEM
SWIG_LANG=jni_cpp
}
module JAR_COMPILATION: EXTERNAL_JAVA_LIBRARY {
@@ -188,5 +207,6 @@ multimodule DLL_JAVA {
_SWIG_CMD=$_SWIG_JNI_JAVA_CMD
_SWIG_ADDINCLS=$_SWIG_JNI_ADDINCLS
_SWIG_PEERDIR=$_SWIG_JNI_PEERDIR
+ _SWIG_SEM_TO_MODULE_LINK=${output;hide;suf=.jsrc:SRC}
}
}
diff --git a/build/ymake.core.conf b/build/ymake.core.conf
index 114603efc88..cec5734afef 100644
--- a/build/ymake.core.conf
+++ b/build/ymake.core.conf
@@ -3375,6 +3375,7 @@ macro IDEA_JAR_SRCS(Args...) {
macro _HASH_HELPER(Args...) {
.CMD=${hash:Args}
+ .SEM=${hash:Args}
}
macro _GENTAR_HELPER(OUT_DIR[], Args...) {
@@ -5687,6 +5688,7 @@ macro _SRC(EXT, SRC, SRCFLAGS...) {
_SWIG_CMD=$_SWIG_PYTHON_CMD
_SWIG_ADDINCLS=$_SWIG_PYTHON_ADDINCLS
_SWIG_PEERDIR=$_SWIG_PYTHON_PEERDIR
+_SWIG_SEM_TO_MODULE_LINK=${output;hide;suf=.o:SRC}
_SWIG_PYTHON_CMD=${_SWIG_TOOL} -module ${REALPRJNAME} -cpperraswarn -c++ -python -interface ${MODULE_PREFIX}${REALPRJNAME} -o ${output;noext;main;suf=_wrap.swg.cpp:SRC} ${output;noauto;add_to_outs;hide;tobindir;suf=.py:REALPRJNAME} -outdir ${BINDIR} ${pre=-I:_SWIG__INCLUDE} ${input:SRC} ${kv;hide:"p SW"} ${kv;hide:"pc yellow"}
_SWIG_PYTHON_ADDINCLS=FOR swig ${_SWIG_LIBRARY}/python FOR swig ${_SWIG_LIBRARY}
@@ -5714,6 +5716,7 @@ macro _SRC("swg", SRC, SRCFLAGS...) {
.CMD=${_SWIG_CMD}
.ADDINCL=${_SWIG_ADDINCLS}
.PEERDIR=${_SWIG_PEERDIR}
+ .SEM=conan_require swig/4.0.2 && conan_import '"bin, *swig* -> ./bin"' ${input;hide:SRC} ${_SWIG_SEM_TO_MODULE_LINK}
}
RODATA_SYMBOL_PREFIX=