java.ymake.conf 7.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179
  1. YMAKE_JAVA_MODULES=yes
  2. JBUILD_JAVA_MODULES=no
  3. macro _INPUT_WITH_FLAG(Flag, IN[]) {
  4. .CMD=$_INPUT_WITH_FLAG_IMPL(${pre=$Flag :IN} IN $IN)
  5. }
  6. macro _INPUT_WITH_FLAG_IMPL(IN{input}[], Args...) {
  7. .CMD=$Args ${input;hide:IN}
  8. }
  9. macro ACCELEO(XSD{input}[], MTL{input}[], MTL_ROOT="${MODDIR}", LANG{input}[], OUT{output}[], OUT_NOAUTO{output}[], OUTPUT_INCLUDES[], DEBUG?"stdout2stderr":"stderr2stdout") {
  10. .PEERDIR=build/platform/java/jdk $JDK_RESOURCE_PEERDIR
  11. .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"}
  12. }
  13. ### @usage: JAVA_LIBRARY()
  14. ###
  15. ### The module describing java library build.
  16. ###
  17. ### Documentation: https://wiki.yandex-team.ru/yatool/java/
  18. module JAVA_LIBRARY: JAR_LIBRARY {
  19. .ALIASES=REQUIREMENTS=JAVA_REQUIREMENTS
  20. }
  21. ### @usage: JAVA_PROGRAM()
  22. ###
  23. ### The module describing java programs build.
  24. ### Output artifacts: .jar and directory with all the jar to the classpath of the formation.
  25. ###
  26. ### Documentation: https://wiki.yandex-team.ru/yatool/java/
  27. multimodule JAVA_PROGRAM {
  28. module JAR_RUNABLE: _JAR_RUNABLE {
  29. .ALLOWED=JAVA_RUNTIME_PEERDIR JAVA_RUNTIME_EXCLUDE
  30. # TODO(svidyuk) JAVA_DEPENDENCIES_CONFIGURATION must not be ignored here but there are diagnostics issues in case of ECLUDE in the middle:
  31. # * A -> B -> C -> lib-v1.4
  32. # | |-> DM(lib-v1.1)
  33. # | |-> EXCLUDE(lib-v1.4)
  34. # | |-> FORBID_CONFLICT_DM_RECENT = OK
  35. # |-> DM(lib-v1.1)
  36. # |-> 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)
  37. .IGNORED=RUN_JAVA_PROGRAM JAVA_DEPENDENCIES_CONFIGURATION
  38. .ALIASES=JAVA_RUNTIME_PEERDIR=PEERDIR JAVA_RUNTIME_EXCLUDE=EXCLUDE
  39. .PEERDIRSELF=JAR_COMPILATION
  40. SET(MODULE_TYPE JAVA_PROGRAM)
  41. }
  42. module JAR_COMPILATION: JAR_LIBRARY {
  43. .IGNORED=JAVA_RUNTIME_PEERDIR JAVA_RUNTIME_EXCLUDE
  44. .ALIASES=JAVA_RUNTIME_PEERDIR=_NOOP_MACRO JAVA_RUNTIME_EXCLUDE=_NOOP_MACRO REQUIREMENTS=JAVA_REQUIREMENTS
  45. .FINAL_TARGET=no
  46. SET(MODULE_TYPE JAVA_PROGRAM)
  47. }
  48. }
  49. multimodule JUNIT5 {
  50. module JAR_TESTABLE: _JAR_TEST {
  51. .ALLOWED=YT_SPEC
  52. # TODO(svidyuk) JAVA_DEPENDENCIES_CONFIGURATION must not be ignored here but there are diagnostics issues in case of ECLUDE in the middle:
  53. # * A -> B -> C -> lib-v1.4
  54. # | |-> DM(lib-v1.1)
  55. # | |-> EXCLUDE(lib-v1.4)
  56. # | |-> FORBID_CONFLICT_DM_RECENT = OK
  57. # |-> DM(lib-v1.1)
  58. # |-> 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)
  59. .IGNORED=JAVA_SRCS RUN_JAVA_PROGRAM JAVA_DEPENDENCIES_CONFIGURATION
  60. .ALIASES=JAVA_TEST_PEERDIR=PEERDIR JAVA_TEST_EXCLUDE=EXCLUDE
  61. .PEERDIRSELF=JAR_COMPILATION
  62. SET(MODULE_TYPE JUNIT5)
  63. }
  64. module JAR_COMPILATION: JAR_LIBRARY {
  65. .ALLOWED=YT_SPEC
  66. .ALIASES=JAVA_TEST_PEERDIR=_NOOP_MACRO JAVA_TEST_EXCLUDE=_NOOP_MACRO
  67. .FINAL_TARGET=no
  68. PEERDIR(devtools/junit5-runner build/platform/java/jacoco-agent)
  69. SET(MODULE_TYPE JUNIT5)
  70. }
  71. }
  72. multimodule JTEST {
  73. module JAR_TESTABLE: _JAR_TEST {
  74. .ALLOWED=YT_SPEC
  75. # TODO(svidyuk) JAVA_DEPENDENCIES_CONFIGURATION must not be ignored here but there are diagnostics issues in case of ECLUDE in the middle:
  76. # * A -> B -> C -> lib-v1.4
  77. # | |-> DM(lib-v1.1)
  78. # | |-> EXCLUDE(lib-v1.4)
  79. # | |-> FORBID_CONFLICT_DM_RECENT = OK
  80. # |-> DM(lib-v1.1)
  81. # |-> 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)
  82. .IGNORED=JAVA_SRCS RUN_JAVA_PROGRAM JAVA_DEPENDENCIES_CONFIGURATION
  83. .ALIASES=JAVA_TEST_PEERDIR=PEERDIR JAVA_TEST_EXCLUDE=EXCLUDE
  84. .PEERDIRSELF=JAR_COMPILATION
  85. SET(MODULE_TYPE JTEST)
  86. PEERDIR(devtools/junit-runner)
  87. 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)
  88. }
  89. module JAR_COMPILATION: JAR_LIBRARY {
  90. .ALLOWED=YT_SPEC
  91. .ALIASES=JAVA_TEST_PEERDIR=_NOOP_MACRO JAVA_TEST_EXCLUDE=_NOOP_MACRO
  92. .FINAL_TARGET=no
  93. SET(MODULE_TYPE JTEST)
  94. DEPENDS(contrib/java/org/sonarsource/scanner/cli/sonar-scanner-cli/2.8)
  95. PEERDIR(build/platform/java/jacoco-agent)
  96. }
  97. }
  98. multimodule JTEST_FOR {
  99. module JAR_TESTABLE: _JAR_TEST {
  100. .ALLOWED=YT_SPEC
  101. # TODO(svidyuk) JAVA_DEPENDENCIES_CONFIGURATION must not be ignored here but there are diagnostics issues in case of ECLUDE in the middle:
  102. # * A -> B -> C -> lib-v1.4
  103. # | |-> DM(lib-v1.1)
  104. # | |-> EXCLUDE(lib-v1.4)
  105. # | |-> FORBID_CONFLICT_DM_RECENT = OK
  106. # |-> DM(lib-v1.1)
  107. # |-> 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)
  108. .IGNORED=JAVA_SRCS RUN_JAVA_PROGRAM JAVA_DEPENDENCIES_CONFIGURATION
  109. .ALIASES=JAVA_TEST_PEERDIR=PEERDIR JAVA_TEST_EXCLUDE=EXCLUDE
  110. .PEERDIRSELF=JAR_COMPILATION
  111. SET(MODULE_TYPE JTEST_FOR)
  112. PEERDIR(${UNITTEST_DIR} devtools/junit-runner)
  113. 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)
  114. }
  115. module JAR_COMPILATION: JAR_LIBRARY {
  116. .ALLOWED=YT_SPEC
  117. .ALIASES=JAVA_TEST_PEERDIR=_NOOP_MACRO JAVA_TEST_EXCLUDE=_NOOP_MACRO
  118. .FINAL_TARGET=no
  119. SET(MODULE_TYPE JTEST_FOR)
  120. DEPENDS(contrib/java/org/sonarsource/scanner/cli/sonar-scanner-cli/2.8)
  121. PEERDIR(devtools/junit-runner build/platform/java/jacoco-agent ${UNITTEST_DIR})
  122. }
  123. }
  124. multimodule JAVA_CONTRIB_PROGRAM {
  125. module JAR_RUNABLE: _JAR_RUNABLE {
  126. .IGNORED=JAVA_SRCS RUN_JAR_PROGRAM RUN_JAVA_PROGRAM JAR_RESOURCE SRC_RESOURCE LOCAL_JAR
  127. .PEERDIRSELF=JAR_COMPILATION
  128. SET(MODULE_TYPE JAVA_PROGRAM)
  129. ENABLE(DISABLE_SCRIPTGEN)
  130. }
  131. module JAR_COMPILATION: JAVA_CONTRIB {
  132. .ALIASES=JAVA_RUNTIME_PEERDIR=_NOOP_MACRO JAVA_RUNTIME_EXCLUDE=_NOOP_MACRO
  133. .FINAL_TARGET=no
  134. }
  135. }
  136. module _DLL_COMPATIBLE_JAVA_LIBRARY: EXTERNAL_JAVA_LIBRARY {
  137. SET(DONT_RESOLVE_INCLUDES yes)
  138. }
  139. ### @usage: DLL_JAVA()
  140. ###
  141. ### DLL built using swig for Java. Produces dynamic library and a .jar.
  142. ### Dynamic library is treated the same as in the case of PEERDIR from Java to DLL.
  143. ### .jar goes on the classpath.
  144. ###
  145. ### Documentation: https://wiki.yandex-team.ru/yatool/java/#integracijascpp/pythonsborkojj
  146. multimodule DLL_JAVA {
  147. module JNI_DLL: DLL {
  148. .ALIASES=SRCS=_SWIG_LANG_FILTERED_SRCS
  149. SET(SWIG_LANG jni_cpp)
  150. .FINAL_TARGET=no
  151. }
  152. module JAR_COMPILATION: _DLL_COMPATIBLE_JAVA_LIBRARY {
  153. .ALIASES=SRCS=_SWIG_LANG_FILTERED_SRCS PEERDIR=_NOOP_MACRO
  154. .PEERDIRSELF=JNI_DLL
  155. SET(SWIG_LANG jni_java)
  156. PEERDIR+=build/platform/java/jdk
  157. PEERDIR+=$JDK_RESOURCE_PEERDIR
  158. .FINAL_TARGET=yes
  159. }
  160. }