java.conf 10 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241
  1. macro _INPUT_WITH_FLAG(Flag, IN[]) {
  2. .CMD=$_INPUT_WITH_FLAG_IMPL(${pre=$Flag :IN} IN $IN)
  3. }
  4. macro _INPUT_WITH_FLAG_IMPL(IN{input}[], Args...) {
  5. .CMD=$Args ${input;hide:IN}
  6. }
  7. macro ACCELEO(XSD{input}[], MTL{input}[], MTL_ROOT="${MODDIR}", LANG{input}[], OUT{output}[], OUT_NOAUTO{output}[], OUTPUT_INCLUDES[], DEBUG?"stdout2stderr":"stderr2stdout") {
  8. .PEERDIR=build/platform/java/jdk $JDK_RESOURCE_PEERDIR
  9. .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"}
  10. }
  11. ### @usage: JAVA_LIBRARY()
  12. ###
  13. ### The module describing java library build.
  14. ###
  15. ### Documentation: https://wiki.yandex-team.ru/yatool/java/
  16. module JAVA_LIBRARY: JAR_LIBRARY {
  17. .SEM=BUILD_JAR_SEM
  18. }
  19. PROGRAM_AND_TESTS_CP_COLLECTING_NODES_SEM=IGNORED
  20. ### @usage: JAVA_PROGRAM()
  21. ###
  22. ### The module describing java programs build.
  23. ### Output artifacts: .jar and directory with all the jar to the classpath of the formation.
  24. ###
  25. ### Documentation: https://wiki.yandex-team.ru/yatool/java/
  26. multimodule JAVA_PROGRAM {
  27. module JAR_RUNNABLE: _JAR_RUNNABLE {
  28. .ALLOWED=JAVA_RUNTIME_PEERDIR JAVA_RUNTIME_EXCLUDE
  29. .SEM=PROGRAM_AND_TESTS_CP_COLLECTING_NODES_SEM
  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 PROVIDES
  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
  45. .SEM=BUILD_JAR_SEM
  46. .FINAL_TARGET=no
  47. SET(MODULE_TYPE JAVA_PROGRAM)
  48. }
  49. }
  50. BUILD_JUNIT5_JAR_SEM=$BUILD_JAR_SEM && junit5_test
  51. multimodule JUNIT5 {
  52. # ATTENTION ya ide idea relies on this submodule name to find scope of `ya make` build before project generation
  53. module JAR_TESTABLE: _JAR_TEST {
  54. .ALLOWED=YT_SPEC
  55. # TODO(svidyuk) JAVA_DEPENDENCIES_CONFIGURATION must not be ignored here but there are diagnostics issues in case of ECLUDE in the middle:
  56. # * A -> B -> C -> lib-v1.4
  57. # | |-> DM(lib-v1.1)
  58. # | |-> EXCLUDE(lib-v1.4)
  59. # | |-> FORBID_CONFLICT_DM_RECENT = OK
  60. # |-> DM(lib-v1.1)
  61. # |-> 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)
  62. .IGNORED=JAVA_SRCS RUN_JAVA_PROGRAM JAVA_DEPENDENCIES_CONFIGURATION
  63. .ALIASES=JAVA_TEST_PEERDIR=PEERDIR JAVA_TEST_EXCLUDE=EXCLUDE
  64. .PEERDIRSELF=JAR_COMPILATION
  65. .SEM=PROGRAM_AND_TESTS_CP_COLLECTING_NODES_SEM
  66. PEERDIR(devtools/jtest-annotations/junit5)
  67. SET(MODULE_TYPE JUNIT5)
  68. }
  69. module JAR_COMPILATION: JAR_LIBRARY {
  70. .ALLOWED=YT_SPEC
  71. .ALIASES=JAVA_TEST_PEERDIR=_NOOP_MACRO JAVA_TEST_EXCLUDE=_NOOP_MACRO
  72. .FINAL_TARGET=no
  73. .DEFAULT_NAME_GENERATOR=FullPath
  74. .SEM=BUILD_JUNIT5_JAR_SEM
  75. PEERDIR+=devtools/junit5-runner
  76. PEERDIR+=build/platform/java/jacoco-agent
  77. when ($OPENSOURCE != "yes") {
  78. PEERDIR+=devtools/jtest-annotations/junit5
  79. }
  80. SET(MODULE_TYPE JUNIT5)
  81. }
  82. }
  83. BUILD_JUNIT4_JAR_SEM=$BUILD_JAR_SEM && junit4_test
  84. multimodule JTEST {
  85. # ATTENTION ya ide idea relies on this submodule name to find scope of `ya make` build before project generation
  86. module JAR_TESTABLE: _JAR_TEST {
  87. .ALLOWED=YT_SPEC
  88. # TODO(svidyuk) JAVA_DEPENDENCIES_CONFIGURATION must not be ignored here but there are diagnostics issues in case of ECLUDE in the middle:
  89. # * A -> B -> C -> lib-v1.4
  90. # | |-> DM(lib-v1.1)
  91. # | |-> EXCLUDE(lib-v1.4)
  92. # | |-> FORBID_CONFLICT_DM_RECENT = OK
  93. # |-> DM(lib-v1.1)
  94. # |-> 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)
  95. .IGNORED=JAVA_SRCS RUN_JAVA_PROGRAM JAVA_DEPENDENCIES_CONFIGURATION
  96. .ALIASES=JAVA_TEST_PEERDIR=PEERDIR JAVA_TEST_EXCLUDE=EXCLUDE
  97. .PEERDIRSELF=JAR_COMPILATION
  98. .SEM=PROGRAM_AND_TESTS_CP_COLLECTING_NODES_SEM
  99. SET(MODULE_TYPE JTEST)
  100. PEERDIR(devtools/junit-runner devtools/jtest-annotations/junit4)
  101. 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)
  102. }
  103. module JAR_COMPILATION: JAR_LIBRARY {
  104. .ALLOWED=YT_SPEC
  105. .ALIASES=JAVA_TEST_PEERDIR=_NOOP_MACRO JAVA_TEST_EXCLUDE=_NOOP_MACRO
  106. .FINAL_TARGET=no
  107. .DEFAULT_NAME_GENERATOR=FullPath
  108. .SEM=BUILD_JUNIT4_JAR_SEM
  109. SET(MODULE_TYPE JTEST)
  110. DEPENDS(contrib/java/org/sonarsource/scanner/cli/sonar-scanner-cli/2.8)
  111. PEERDIR+=build/platform/java/jacoco-agent
  112. when ($OPENSOURCE != "yes") {
  113. PEERDIR+=devtools/jtest-annotations/junit4
  114. }
  115. }
  116. }
  117. multimodule JTEST_FOR {
  118. # ATTENTION ya ide idea relies on this submodule name to find scope of `ya make` build before project generation
  119. module JAR_TESTABLE: _JAR_TEST {
  120. .ALLOWED=YT_SPEC
  121. # TODO(svidyuk) JAVA_DEPENDENCIES_CONFIGURATION must not be ignored here but there are diagnostics issues in case of ECLUDE in the middle:
  122. # * A -> B -> C -> lib-v1.4
  123. # | |-> DM(lib-v1.1)
  124. # | |-> EXCLUDE(lib-v1.4)
  125. # | |-> FORBID_CONFLICT_DM_RECENT = OK
  126. # |-> DM(lib-v1.1)
  127. # |-> 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)
  128. .IGNORED=JAVA_SRCS RUN_JAVA_PROGRAM JAVA_DEPENDENCIES_CONFIGURATION
  129. .ALIASES=JAVA_TEST_PEERDIR=PEERDIR JAVA_TEST_EXCLUDE=EXCLUDE
  130. .PEERDIRSELF=JAR_COMPILATION
  131. .SEM=PROGRAM_AND_TESTS_CP_COLLECTING_NODES_SEM
  132. SET(MODULE_TYPE JTEST_FOR)
  133. PEERDIR(${UNITTEST_DIR} devtools/junit-runner)
  134. 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)
  135. }
  136. module JAR_COMPILATION: JAR_LIBRARY {
  137. .ALLOWED=YT_SPEC
  138. .ALIASES=JAVA_TEST_PEERDIR=_NOOP_MACRO JAVA_TEST_EXCLUDE=_NOOP_MACRO
  139. .FINAL_TARGET=no
  140. .DEFAULT_NAME_GENERATOR=FullPath
  141. .SEM=BUILD_JUNIT4_JAR_SEM
  142. SET(MODULE_TYPE JTEST_FOR)
  143. DEPENDS(contrib/java/org/sonarsource/scanner/cli/sonar-scanner-cli/2.8)
  144. PEERDIR(devtools/junit-runner build/platform/java/jacoco-agent ${UNITTEST_DIR})
  145. }
  146. }
  147. multimodule JAVA_CONTRIB_PROGRAM {
  148. module JAR_RUNNABLE: _JAR_RUNNABLE {
  149. .IGNORED=JAVA_SRCS RUN_JAR_PROGRAM RUN_JAVA_PROGRAM JAR_RESOURCE SRC_RESOURCE LOCAL_JAR
  150. .PEERDIRSELF=JAR_COMPILATION
  151. SET(MODULE_TYPE JAVA_PROGRAM)
  152. ENABLE(DISABLE_SCRIPTGEN)
  153. }
  154. module JAR_COMPILATION: JAVA_CONTRIB {
  155. .ALIASES=JAVA_RUNTIME_PEERDIR=_NOOP_MACRO JAVA_RUNTIME_EXCLUDE=_NOOP_MACRO
  156. .FINAL_TARGET=no
  157. .SEM=BUILD_JAR_SEM
  158. }
  159. }
  160. _EXPLICIT_SWIG_JAVA_SOURCES=
  161. _EXPLICIT_SWIG_IFACE_SOURCES=
  162. macro _EXPORT_JAVA_BINDINGS(JavaSrcs...) {
  163. SET_APPEND(_EXPLICIT_SWIG_JAVA_SOURCES ${input:JavaSrcs})
  164. .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"}
  165. }
  166. macro _EXPORT_SWIG_SOURCES(SwigSrcs...) {
  167. SET_APPEND(_EXPLICIT_SWIG_IFACE_SOURCES ${input:SwigSrcs})
  168. }
  169. macro _JNI_CPP_SWIG_SRCS(Srcs...) {
  170. SRCS(${ext=.cpp:Srcs} ${ext=.swg:Srcs})
  171. _EXPORT_JAVA_BINDINGS(${ext=.java:Srcs})
  172. _EXPORT_SWIG_SOURCES(${ext=.swg:Srcs})
  173. }
  174. macro _JNI_JAVA_SWIG_SRCS(Srcs...) {
  175. SRCS(${ext=.java:Srcs} ${ext=.swg:Srcs})
  176. }
  177. SWIG_JNI_BINDINGS_SEM= \
  178. add_swig_jni_library ${MODDIR} ${REALPRJNAME}-cpp GEN_JAVA_FILES_LIST ${"$"}{CMAKE_CURRENT_BINARY_DIR}/swig_gen_java.lst SOURCES ${_EXPLICIT_SWIG_IFACE_SOURCES} && \
  179. set_target_property OUTPUT_NAME $REALPRJNAME && \
  180. ${VCS_INFO_SEM} && \
  181. target_include_directories PUBLIC $_C__INCLUDE_GLOBAL && \
  182. target_include_directories PRIVATE $_C__INCLUDE_OWNED && \
  183. target_compile_options PRIVATE $USER_CFLAGS $USER_CXXFLAGS $_SEM_EXTRA_CXX_FLAGS && target_compile_options PUBLIC $USER_CFLAGS_GLOBAL_RAW $USER_CXXFLAGS_GLOBAL_RAW && \
  184. target_link_options PRIVATE $LDFLAGS_GLOBAL_RAW $LDFLAGS $OBJADDE_LIB $OBJADDE && \
  185. add_jar ${REALPRJNAME} SOURCES $_EXPLICIT_SWIG_JAVA_SOURCES @${"$"}{CMAKE_CURRENT_BINARY_DIR}/swig_gen_java.lst ${hide:TARGET}
  186. ### @usage: DLL_JAVA()
  187. ###
  188. ### DLL built using swig for Java. Produces dynamic library and a .jar.
  189. ### Dynamic library is treated the same as in the case of PEERDIR from Java to DLL.
  190. ### .jar goes on the classpath.
  191. ###
  192. ### Documentation: https://wiki.yandex-team.ru/yatool/java/#integracijascpp/pythonsborkojj
  193. multimodule DLL_JAVA {
  194. module JNI_DLL: DLL {
  195. .ALIASES=SRCS=_JNI_CPP_SWIG_SRCS
  196. .FINAL_TARGET=no
  197. .SEM=SWIG_JNI_BINDINGS_SEM
  198. SWIG_LANG=jni_cpp
  199. }
  200. module JAR_COMPILATION: EXTERNAL_JAVA_LIBRARY {
  201. .ARGS_PARSER=DLL
  202. .ALIASES=SRCS=_JNI_JAVA_SWIG_SRCS PEERDIR=_NOOP_MACRO
  203. .PEERDIRSELF=JNI_DLL
  204. PEERDIR+=build/platform/java/jdk
  205. PEERDIR+=$JDK_RESOURCE_PEERDIR
  206. SET(DONT_RESOLVE_INCLUDES yes)
  207. .FINAL_TARGET=yes
  208. SWIG_LANG=jni_java
  209. _SWIG_CMD=$_SWIG_JNI_JAVA_CMD
  210. _SWIG_ADDINCLS=$_SWIG_JNI_ADDINCLS
  211. _SWIG_PEERDIR=$_SWIG_JNI_PEERDIR
  212. _SWIG_SEM_TO_MODULE_LINK=${output;hide;suf=.jsrc:SRC}
  213. }
  214. }