diff options
author | alexv-smirnov <alex@ydb.tech> | 2023-06-13 11:05:01 +0300 |
---|---|---|
committer | alexv-smirnov <alex@ydb.tech> | 2023-06-13 11:05:01 +0300 |
commit | bf0f13dd39ee3e65092ba3572bb5b1fcd125dcd0 (patch) | |
tree | 1d1df72c0541a59a81439842f46d95396d3e7189 /build/conf/java.conf | |
parent | 8bfdfa9a9bd19bddbc58d888e180fbd1218681be (diff) | |
download | ydb-bf0f13dd39ee3e65092ba3572bb5b1fcd125dcd0.tar.gz |
add ymake export to ydb
Diffstat (limited to 'build/conf/java.conf')
-rw-r--r-- | build/conf/java.conf | 241 |
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} + } +} |