aboutsummaryrefslogtreecommitdiffstats
path: root/build/conf/java.conf
diff options
context:
space:
mode:
authoralexv-smirnov <alex@ydb.tech>2023-06-13 11:05:01 +0300
committeralexv-smirnov <alex@ydb.tech>2023-06-13 11:05:01 +0300
commitbf0f13dd39ee3e65092ba3572bb5b1fcd125dcd0 (patch)
tree1d1df72c0541a59a81439842f46d95396d3e7189 /build/conf/java.conf
parent8bfdfa9a9bd19bddbc58d888e180fbd1218681be (diff)
downloadydb-bf0f13dd39ee3e65092ba3572bb5b1fcd125dcd0.tar.gz
add ymake export to ydb
Diffstat (limited to 'build/conf/java.conf')
-rw-r--r--build/conf/java.conf241
1 files changed, 241 insertions, 0 deletions
diff --git a/build/conf/java.conf b/build/conf/java.conf
new file mode 100644
index 0000000000..78ce874c7c
--- /dev/null
+++ b/build/conf/java.conf
@@ -0,0 +1,241 @@
+macro _INPUT_WITH_FLAG(Flag, IN[]) {
+ .CMD=$_INPUT_WITH_FLAG_IMPL(${pre=$Flag :IN} IN $IN)
+}
+
+macro _INPUT_WITH_FLAG_IMPL(IN{input}[], Args...) {
+ .CMD=$Args ${input;hide:IN}
+}
+
+macro ACCELEO(XSD{input}[], MTL{input}[], MTL_ROOT="${MODDIR}", LANG{input}[], OUT{output}[], OUT_NOAUTO{output}[], OUTPUT_INCLUDES[], DEBUG?"stdout2stderr":"stderr2stdout") {
+ .PEERDIR=build/platform/java/jdk $JDK_RESOURCE_PEERDIR
+ .CMD=${cwd:ARCADIA_BUILD_ROOT} $YMAKE_PYTHON ${input;pre=build/scripts/:DEBUG.py} $JDK_RESOURCE/bin/java -Dfile.encoding=utf8 -classpath ${RUN_JAR_PROG_CP_PRE}${tool:"tools/acceleo"}${RUN_JAR_PROG_CP_SUF} ru.yandex.se.logsng.tool.Cli $_INPUT_WITH_FLAG(--xsd IN $XSD) $_INPUT_WITH_FLAG(--mtl IN $MTL) $_INPUT_WITH_FLAG(--lang IN $LANG) --output-dir $BINDIR --build-root ${ARCADIA_BUILD_ROOT} --source-root ${ARCADIA_ROOT} --mtl-root $MTL_ROOT ${output_include;hide:OUTPUT_INCLUDES} ${output;hide:OUT} ${output;noauto;hide:OUT_NOAUTO} ${kv;hide:"p JV"} ${kv;hide:"pc light-blue"} ${kv;hide:"show_out"}
+}
+
+### @usage: JAVA_LIBRARY()
+###
+### The module describing java library build.
+###
+### Documentation: https://wiki.yandex-team.ru/yatool/java/
+module JAVA_LIBRARY: JAR_LIBRARY {
+ .SEM=BUILD_JAR_SEM
+}
+
+PROGRAM_AND_TESTS_CP_COLLECTING_NODES_SEM=IGNORED
+
+### @usage: JAVA_PROGRAM()
+###
+### The module describing java programs build.
+### Output artifacts: .jar and directory with all the jar to the classpath of the formation.
+###
+### Documentation: https://wiki.yandex-team.ru/yatool/java/
+multimodule JAVA_PROGRAM {
+ module JAR_RUNNABLE: _JAR_RUNNABLE {
+ .ALLOWED=JAVA_RUNTIME_PEERDIR JAVA_RUNTIME_EXCLUDE
+ .SEM=PROGRAM_AND_TESTS_CP_COLLECTING_NODES_SEM
+ # TODO(svidyuk) JAVA_DEPENDENCIES_CONFIGURATION must not be ignored here but there are diagnostics issues in case of ECLUDE in the middle:
+ # * A -> B -> C -> lib-v1.4
+ # | |-> DM(lib-v1.1)
+ # | |-> EXCLUDE(lib-v1.4)
+ # | |-> FORBID_CONFLICT_DM_RECENT = OK
+ # |-> DM(lib-v1.1)
+ # |-> FORBID_CONFLICT_DM_RECENT = FAIL (because downgrade from v1.4 to v1.1 is detected before understanding that v1.4 was excuded on the examined path)
+ .IGNORED=RUN_JAVA_PROGRAM JAVA_DEPENDENCIES_CONFIGURATION PROVIDES
+ .ALIASES=JAVA_RUNTIME_PEERDIR=PEERDIR JAVA_RUNTIME_EXCLUDE=EXCLUDE
+ .PEERDIRSELF=JAR_COMPILATION
+
+ SET(MODULE_TYPE JAVA_PROGRAM)
+ }
+ module JAR_COMPILATION: JAR_LIBRARY {
+ .IGNORED=JAVA_RUNTIME_PEERDIR JAVA_RUNTIME_EXCLUDE
+ .ALIASES=JAVA_RUNTIME_PEERDIR=_NOOP_MACRO JAVA_RUNTIME_EXCLUDE=_NOOP_MACRO
+ .SEM=BUILD_JAR_SEM
+ .FINAL_TARGET=no
+ SET(MODULE_TYPE JAVA_PROGRAM)
+ }
+}
+
+BUILD_JUNIT5_JAR_SEM=$BUILD_JAR_SEM && junit5_test
+
+multimodule JUNIT5 {
+ # ATTENTION ya ide idea relies on this submodule name to find scope of `ya make` build before project generation
+ module JAR_TESTABLE: _JAR_TEST {
+ .ALLOWED=YT_SPEC
+ # TODO(svidyuk) JAVA_DEPENDENCIES_CONFIGURATION must not be ignored here but there are diagnostics issues in case of ECLUDE in the middle:
+ # * A -> B -> C -> lib-v1.4
+ # | |-> DM(lib-v1.1)
+ # | |-> EXCLUDE(lib-v1.4)
+ # | |-> FORBID_CONFLICT_DM_RECENT = OK
+ # |-> DM(lib-v1.1)
+ # |-> FORBID_CONFLICT_DM_RECENT = FAIL (because downgrade from v1.4 to v1.1 is detected before understanding that v1.4 was excuded on the examined path)
+ .IGNORED=JAVA_SRCS RUN_JAVA_PROGRAM JAVA_DEPENDENCIES_CONFIGURATION
+ .ALIASES=JAVA_TEST_PEERDIR=PEERDIR JAVA_TEST_EXCLUDE=EXCLUDE
+ .PEERDIRSELF=JAR_COMPILATION
+ .SEM=PROGRAM_AND_TESTS_CP_COLLECTING_NODES_SEM
+
+ PEERDIR(devtools/jtest-annotations/junit5)
+
+ SET(MODULE_TYPE JUNIT5)
+ }
+ module JAR_COMPILATION: JAR_LIBRARY {
+ .ALLOWED=YT_SPEC
+ .ALIASES=JAVA_TEST_PEERDIR=_NOOP_MACRO JAVA_TEST_EXCLUDE=_NOOP_MACRO
+ .FINAL_TARGET=no
+ .DEFAULT_NAME_GENERATOR=FullPath
+ .SEM=BUILD_JUNIT5_JAR_SEM
+
+ PEERDIR+=devtools/junit5-runner
+ PEERDIR+=build/platform/java/jacoco-agent
+
+ when ($OPENSOURCE != "yes") {
+ PEERDIR+=devtools/jtest-annotations/junit5
+ }
+ SET(MODULE_TYPE JUNIT5)
+ }
+}
+
+BUILD_JUNIT4_JAR_SEM=$BUILD_JAR_SEM && junit4_test
+
+multimodule JTEST {
+ # ATTENTION ya ide idea relies on this submodule name to find scope of `ya make` build before project generation
+ module JAR_TESTABLE: _JAR_TEST {
+ .ALLOWED=YT_SPEC
+ # TODO(svidyuk) JAVA_DEPENDENCIES_CONFIGURATION must not be ignored here but there are diagnostics issues in case of ECLUDE in the middle:
+ # * A -> B -> C -> lib-v1.4
+ # | |-> DM(lib-v1.1)
+ # | |-> EXCLUDE(lib-v1.4)
+ # | |-> FORBID_CONFLICT_DM_RECENT = OK
+ # |-> DM(lib-v1.1)
+ # |-> FORBID_CONFLICT_DM_RECENT = FAIL (because downgrade from v1.4 to v1.1 is detected before understanding that v1.4 was excuded on the examined path)
+ .IGNORED=JAVA_SRCS RUN_JAVA_PROGRAM JAVA_DEPENDENCIES_CONFIGURATION
+ .ALIASES=JAVA_TEST_PEERDIR=PEERDIR JAVA_TEST_EXCLUDE=EXCLUDE
+ .PEERDIRSELF=JAR_COMPILATION
+ .SEM=PROGRAM_AND_TESTS_CP_COLLECTING_NODES_SEM
+
+ SET(MODULE_TYPE JTEST)
+ PEERDIR(devtools/junit-runner devtools/jtest-annotations/junit4)
+ DEPENDENCY_MANAGEMENT(contrib/java/com/google/code/gson/gson/2.8.6 contrib/java/com/beust/jcommander/1.72 contrib/java/junit/junit/4.12)
+ }
+ module JAR_COMPILATION: JAR_LIBRARY {
+ .ALLOWED=YT_SPEC
+ .ALIASES=JAVA_TEST_PEERDIR=_NOOP_MACRO JAVA_TEST_EXCLUDE=_NOOP_MACRO
+ .FINAL_TARGET=no
+ .DEFAULT_NAME_GENERATOR=FullPath
+ .SEM=BUILD_JUNIT4_JAR_SEM
+
+ SET(MODULE_TYPE JTEST)
+ DEPENDS(contrib/java/org/sonarsource/scanner/cli/sonar-scanner-cli/2.8)
+
+ PEERDIR+=build/platform/java/jacoco-agent
+ when ($OPENSOURCE != "yes") {
+ PEERDIR+=devtools/jtest-annotations/junit4
+ }
+ }
+}
+
+multimodule JTEST_FOR {
+ # ATTENTION ya ide idea relies on this submodule name to find scope of `ya make` build before project generation
+ module JAR_TESTABLE: _JAR_TEST {
+ .ALLOWED=YT_SPEC
+ # TODO(svidyuk) JAVA_DEPENDENCIES_CONFIGURATION must not be ignored here but there are diagnostics issues in case of ECLUDE in the middle:
+ # * A -> B -> C -> lib-v1.4
+ # | |-> DM(lib-v1.1)
+ # | |-> EXCLUDE(lib-v1.4)
+ # | |-> FORBID_CONFLICT_DM_RECENT = OK
+ # |-> DM(lib-v1.1)
+ # |-> FORBID_CONFLICT_DM_RECENT = FAIL (because downgrade from v1.4 to v1.1 is detected before understanding that v1.4 was excuded on the examined path)
+ .IGNORED=JAVA_SRCS RUN_JAVA_PROGRAM JAVA_DEPENDENCIES_CONFIGURATION
+ .ALIASES=JAVA_TEST_PEERDIR=PEERDIR JAVA_TEST_EXCLUDE=EXCLUDE
+ .PEERDIRSELF=JAR_COMPILATION
+ .SEM=PROGRAM_AND_TESTS_CP_COLLECTING_NODES_SEM
+
+ SET(MODULE_TYPE JTEST_FOR)
+ PEERDIR(${UNITTEST_DIR} devtools/junit-runner)
+ DEPENDENCY_MANAGEMENT(contrib/java/com/google/code/gson/gson/2.8.6 contrib/java/com/beust/jcommander/1.72 contrib/java/junit/junit/4.12)
+ }
+ module JAR_COMPILATION: JAR_LIBRARY {
+ .ALLOWED=YT_SPEC
+ .ALIASES=JAVA_TEST_PEERDIR=_NOOP_MACRO JAVA_TEST_EXCLUDE=_NOOP_MACRO
+ .FINAL_TARGET=no
+ .DEFAULT_NAME_GENERATOR=FullPath
+ .SEM=BUILD_JUNIT4_JAR_SEM
+
+ SET(MODULE_TYPE JTEST_FOR)
+ DEPENDS(contrib/java/org/sonarsource/scanner/cli/sonar-scanner-cli/2.8)
+ PEERDIR(devtools/junit-runner build/platform/java/jacoco-agent ${UNITTEST_DIR})
+ }
+}
+
+multimodule JAVA_CONTRIB_PROGRAM {
+ module JAR_RUNNABLE: _JAR_RUNNABLE {
+ .IGNORED=JAVA_SRCS RUN_JAR_PROGRAM RUN_JAVA_PROGRAM JAR_RESOURCE SRC_RESOURCE LOCAL_JAR
+ .PEERDIRSELF=JAR_COMPILATION
+
+ SET(MODULE_TYPE JAVA_PROGRAM)
+ ENABLE(DISABLE_SCRIPTGEN)
+ }
+ module JAR_COMPILATION: JAVA_CONTRIB {
+ .ALIASES=JAVA_RUNTIME_PEERDIR=_NOOP_MACRO JAVA_RUNTIME_EXCLUDE=_NOOP_MACRO
+ .FINAL_TARGET=no
+ .SEM=BUILD_JAR_SEM
+ }
+}
+
+_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_SEM} && \
+ target_include_directories PUBLIC $_C__INCLUDE_GLOBAL && \
+ target_include_directories PRIVATE $_C__INCLUDE_OWNED && \
+ target_compile_options PRIVATE $USER_CFLAGS $USER_CXXFLAGS $_SEM_EXTRA_CXX_FLAGS && target_compile_options PUBLIC $USER_CFLAGS_GLOBAL_RAW $USER_CXXFLAGS_GLOBAL_RAW && \
+ target_link_options PRIVATE $LDFLAGS_GLOBAL_RAW $LDFLAGS $OBJADDE_LIB $OBJADDE && \
+ 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.
+### Dynamic library is treated the same as in the case of PEERDIR from Java to DLL.
+### .jar goes on the classpath.
+###
+### Documentation: https://wiki.yandex-team.ru/yatool/java/#integracijascpp/pythonsborkojj
+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 {
+ .ARGS_PARSER=DLL
+ .ALIASES=SRCS=_JNI_JAVA_SWIG_SRCS PEERDIR=_NOOP_MACRO
+ .PEERDIRSELF=JNI_DLL
+ PEERDIR+=build/platform/java/jdk
+ PEERDIR+=$JDK_RESOURCE_PEERDIR
+ SET(DONT_RESOLVE_INCLUDES yes)
+ .FINAL_TARGET=yes
+
+ SWIG_LANG=jni_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}
+ }
+}