diff options
author | svidyuk <svidyuk@yandex-team.ru> | 2022-05-23 14:58:54 +0300 |
---|---|---|
committer | svidyuk <svidyuk@yandex-team.ru> | 2022-05-23 14:58:54 +0300 |
commit | 51ca151a021d7bd703e5aa33cf3b05de0abb9c6f (patch) | |
tree | 9a678391a2b5167c35caa64b6b2ebb43f6dbb933 | |
parent | 57ac751e49fb70ea74e9c6def5d7653e0b460043 (diff) | |
download | ydb-51ca151a021d7bd703e5aa33cf3b05de0abb9c6f.tar.gz |
Infrastructure for DLL_JAVA cmake export
YMAKE-122
ref:1249249483788b4961e04d21057e13d80b1efb13
-rw-r--r-- | build/conf/java.ymake.conf | 20 | ||||
-rw-r--r-- | build/ymake.core.conf | 3 |
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= |