mapkit.conf 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369
  1. MAPKIT_IDL_INCLUDES=
  2. macro MAPKIT_ADDINCL(Dirs...) {
  3. ADDINCL(${pre=FOR idl :Dirs})
  4. SET_APPEND(MAPKIT_IDL_INCLUDES $Dirs)
  5. }
  6. ### @usage: MAPS_IDL_ADDINCL(dirnames...) # internal
  7. ###
  8. ### Warpper for MAPKIT_ADDINCL macro which is used for mobile mapkit build
  9. macro MAPS_IDL_ADDINCL(Dirs...) {
  10. MAPKIT_ADDINCL($Dirs)
  11. }
  12. ### @usage: _MAPKITIDL_PROXY(args...) # internal
  13. ###
  14. ### Proxy macro for maps_mobile_idl plugin
  15. macro _MAPKITIDL_PROXY(Args...) {
  16. _PROCESS_MAPS_MOBILE_IDL($Args)
  17. SET_APPEND(_MAKEFILE_INCLUDE_LIKE_TEXT_DEPS ${ext=idl:Args})
  18. }
  19. MAPS_IDL_FILTER=
  20. ### @usage: MAPS_IDL_SRCS(filenames...) # internal
  21. ###
  22. ### Warpper for MAPKITIDL macro which is used for mobile mapkit build
  23. macro MAPS_IDL_SRCS(Srcs...) {
  24. _MAPKITIDL_PROXY($Srcs ${MAPS_IDL_FILTER})
  25. }
  26. ### @usage: MAPS_IDL_GLOBAL_SRCS(filenames...) # internal
  27. ###
  28. ### Warpper for MAPKITIDL macro which is used for mobile mapkit build
  29. macro MAPS_IDL_GLOBAL_SRCS(Srcs...) {
  30. _MAPKITIDL_PROXY(GLOBAL_OUTPUTS $Srcs ${MAPS_IDL_FILTER})
  31. }
  32. ### @usage: MAPSMOBI_SRCS(filenames...) # internal
  33. ###
  34. ### Make all source files listed as GLOBAL or not (depending on the value of
  35. ### MAPSMOBI_USE_SRCS_GLOBAL). Be careful since the value of
  36. ### MAPSMOBI_USE_SRCS_GLOBAL matters! If the value of this variable is equal to
  37. ### GLOBAL then call to MAPSMOBI_SRCS() macro behaves like call to
  38. ### GLOBAL_SRCS() macro otherwise the value of MAPSMOBI_USE_SRCS_GLOBAL is
  39. ### treated as a file name and a call to MAPSMOBI_SRCS() macro behaves like a
  40. ### call to SRCS() macro with additional argument which is the value of
  41. ### MAPSMOBI_USE_SRCS_GLOBAL variable
  42. macro MAPSMOBI_SRCS(FILES...) {
  43. ALL_SRCS(${MAPSMOBI_USE_SRCS_GLOBAL} $FILES)
  44. }
  45. when ($MAPKIT_WHOLE_ARCHIVE == "yes") {
  46. when($OS_LINUX) {
  47. BEFORE_PEERS += $START_WHOLE_ARCHIVE_VALUE
  48. AFTER_PEERS += $END_WHOLE_ARCHIVE_VALUE
  49. }
  50. elsewhen($OS_DARWIN) {
  51. LDFLAGS+=-Wl,-all_load
  52. }
  53. }
  54. ### @usage: MAPKIT_ENABLE_WHOLE_ARCHIVE() # internal deprecated
  55. ###
  56. ### This macro is strictly prohibited to use outside of mapsmobi project
  57. macro MAPKIT_ENABLE_WHOLE_ARCHIVE() {
  58. ENABLE(MAPKIT_WHOLE_ARCHIVE)
  59. }
  60. ### @usage: USE_IDL_CPP()
  61. ###
  62. ### This macro forces to use H_CPP_IDL (implementation library) variant of
  63. ### MAPS_IDL_LIBRARY multimodule instead of H_IDL (header only library) variant
  64. ### which is used by default
  65. macro USE_IDL_CPP() {
  66. SET(PEERDIR_TAGS __EMPTY__ CPP_PROTO H_CPP_IDL)
  67. }
  68. _LINK_JSRC=${cwd:ARCADIA_BUILD_ROOT} $YMAKE_PYTHON3 ${input:"build/scripts/link_jsrc.py"} --input $AUTO_INPUT --output $TARGET ${kv;hide:"p JL"} ${kv;hide:"pc light-blue"} ${kv;hide:"show_out"}
  69. _LINK_JSRC_MF=$_LINK_JSRC && $GENERATE_MF
  70. ### @usage: MAPS_IDL_JSRC_LIBRARY
  71. ###
  72. ### Create .jsrc output - archive of megred .jsrc inputs
  73. module MAPS_IDL_JSRC_LIBRARY: JSRC_LIBRARY {
  74. .CMD=_LINK_JSRC_MF
  75. .EXTS=.jsrc
  76. }
  77. ### _MAPS_IDL_LIBRARY_EPILOGUE() #internal
  78. ###
  79. ### This macro executes macros which should be invoked after all user specified macros in the ya.make file
  80. macro _MAPS_IDL_LIBRARY_EPILOGUE() {
  81. _GLOB(MAPKIT_IDL_FRAMEWORK_FILES ${ARCADIA_ROOT}/${MAPKIT_IDL_FRAMEWORK}/*.framework)
  82. SET_APPEND(_MAKEFILE_INCLUDE_LIKE_DEPS $MAPKIT_IDL_FRAMEWORK_FILES)
  83. }
  84. ### @usage: MAPS_IDL_LIBRARY()
  85. ###
  86. ### Definition of multimodule that builds various variants of libraries.
  87. ### The particular variant is selected based on where PEERDIR to IDL_LIBRARY comes from.
  88. ### Now supported 2 variants: C++, Java
  89. ### Java version is not really a library but an archive of generated Java sources
  90. multimodule MAPS_IDL_LIBRARY {
  91. module H_IDL: LIBRARY {
  92. .ALIASES=SRCS=MAPS_IDL_SRCS GLOBAL_SRCS=MAPS_IDL_GLOBAL_SRCS ADDINCL=MAPKIT_ADDINCL MAPSMOBI_SRCS=MAPS_IDL_SRCS
  93. .EPILOGUE=_MAPS_IDL_LIBRARY_EPILOGUE
  94. ENABLE(H_IDL)
  95. ENABLE(CPP_IDL)
  96. SET(PEERDIR_TAGS H_IDL CPP_PROTO __EMPTY__)
  97. SET(MAPS_IDL_FILTER FILTER .h)
  98. NO_UTIL()
  99. PROTO_ADDINCL(${MAPKIT_PROTO_ROOT})
  100. }
  101. module H_CPP_IDL: LIBRARY {
  102. .ALIASES=SRCS=MAPS_IDL_SRCS GLOBAL_SRCS=MAPS_IDL_GLOBAL_SRCS ADDINCL=MAPKIT_ADDINCL MAPSMOBI_SRCS=MAPS_IDL_SRCS
  103. .DEFAULT_NAME_GENERATOR=DirName
  104. .PEERDIRSELF=H_IDL
  105. .EPILOGUE=_MAPS_IDL_LIBRARY_EPILOGUE
  106. ENABLE(H_CPP_IDL)
  107. ENABLE(CPP_IDL)
  108. SET(PEERDIR_TAGS H_IDL CPP_PROTO __EMPTY__)
  109. SET(MAPS_IDL_FILTER FILTER .cpp .m .mm .dart)
  110. DISABLE(START_TARGET)
  111. NO_UTIL()
  112. }
  113. module JAVA_IDL: MAPS_IDL_JSRC_LIBRARY {
  114. .ALIASES=SRCS=MAPS_IDL_SRCS GLOBAL_SRCS=MAPS_IDL_SRCS ADDINCL=MAPKIT_ADDINCL MAPSMOBI_SRCS=MAPS_IDL_SRCS
  115. .IGNORED=CPP_ADDINCL
  116. .EPILOGUE=_MAPS_IDL_LIBRARY_EPILOGUE
  117. SET(PEERDIR_TAGS JAVA_IDL JAVA_PROTO)
  118. SET(MAPS_IDL_FILTER FILTER .java)
  119. ENABLE(JAVA_IDL)
  120. PROTO_ADDINCL(${MAPKIT_PROTO_ROOT})
  121. }
  122. }
  123. _IDL_TOOL_EXTRA_ARGS=
  124. when ($MAPS_MOBILE_USE_STD_VARIANT == "yes") {
  125. _IDL_TOOL_EXTRA_ARGS+=--use-std-variant
  126. }
  127. when ($MAPS_MOBILE_PUBLIC_API == "yes") {
  128. _IDL_TOOL_EXTRA_ARGS+=--public
  129. }
  130. when ($MAPS_MOBILE_ENABLE_NAVI_SERIALIZATION == "yes") {
  131. _IDL_TOOL_EXTRA_ARGS+=--enable-navi-serialization
  132. }
  133. _IDL_TOOL_CMDLINE=$GENERATE_MF && ${cwd:ARCADIA_ROOT} ${tool:"tools/idl/bin"} --in-proto-root maps/doc/proto --base-proto-package yandex.maps.proto ${pre=--out-base-root :OUT_BASE_ROOT} ${pre=--out-android-root :OUT_ANDROID_ROOT} ${pre=--out-ios-root :OUT_IOS_ROOT} ${pre=--out-dart-root :OUT_BASE_ROOT} ${pre=--out-dart-cpp-root :OUT_BASE_ROOT} ${pre=-F :FRAMEWORK_DIRS} ${pre=-I :INCLUDES} ${_IDL_TOOL_EXTRA_ARGS} ${hide;input:IN} ${hide;output:OUT} ${hide;output;noauto:OUT_NOAUTO} ${hide;output_include:OUTPUT_INCLUDES} ${IDLS} ${kv;hide:"p ID"} ${kv;hide:"pc white"} ${hide:MAPSMOBI_FAKEID} ${hide;suf=filter_in;join=|:FILTER_IN} ${hide;suf=filter_out;join=|:FILTER_OUT} ${kv;hide:"show_out"}
  134. ### @usage: _RUN_IDL_TOOL(...) # internal
  135. ###
  136. ### Run idl tool within non-JAVA_IDL submodule. This macro is called from _PROCESS_MAPS_MOBILE_IDL macro.
  137. macro _RUN_IDL_TOOL(OUT_BASE_ROOT="", OUT_ANDROID_ROOT="", OUT_IOS_ROOT="", IN[], OUT[], OUT_NOAUTO[], OUTPUT_INCLUDES[], INCLUDES[], FRAMEWORK_DIRS[], IDLS[], FILTER_IN[], FILTER_OUT[]) {
  138. .CMD=$_IDL_TOOL_CMDLINE
  139. }
  140. ### @usage: _RUN_IDL_TOOL(...) # internal
  141. ###
  142. ### Run idl tool within JAVA_IDL submodule. This macro is called from _PROCESS_MAPS_MOBILE_IDL macro.
  143. macro _RUN_IDL_TOOL_JAVA(OUT_BASE_ROOT="", OUT_ANDROID_ROOT="", OUT_IOS_ROOT="", IN[], OUT[], OUT_NOAUTO[], OUTPUT_INCLUDES[], INCLUDES[], FRAMEWORK_DIRS[], IDLS[], FILTER_IN[], FILTER_OUT[]) {
  144. .CMD=$_IDL_TOOL_CMDLINE && $YMAKE_PYTHON3 ${input:"build/scripts/tar_sources.py"} --output ${output;suf=$_HASH_HELPER($IDLS).jsrc:"_"} --input $OUT_ANDROID_ROOT --exts .java
  145. }
  146. ### @usage: MAPSMOBI_COLLECT_ASSETS_FILES(varname [dir]) # internal
  147. ###
  148. ### This macro is strictly prohibited to use outside of mapsmobi project
  149. macro MAPSMOBI_COLLECT_ASSETS_FILES(VAR, DIR="") {
  150. _GLOB($VAR ${suf=/:DIR}**/*)
  151. RESTRICT_PATH(maps/mobile maps/automotive MSG This macro is for use in mapsmobi projects)
  152. }
  153. ### @usage: MAPSMOBI_COLLECT_AIDL_FILES(varname [dir]) # internal
  154. ###
  155. ### This macro is strictly prohibited to use outside of mapsmobi project
  156. macro MAPSMOBI_COLLECT_AIDL_FILES(VAR, DIR="") {
  157. _GLOB($VAR ${suf=/:DIR}**/*.aidl)
  158. RESTRICT_PATH(maps/mobile maps/automotive MSG This macro is for use in mapsmobi projects)
  159. }
  160. ### @usage: MAPSMOBI_COLLECT_JAVA_FILES(varname [dir]) # internal
  161. ###
  162. ### This macro is strictly prohibited to use outside of mapsmobi project
  163. macro MAPSMOBI_COLLECT_JAVA_FILES(VAR, DIR="") {
  164. _GLOB($VAR ${suf=/:DIR}**/*.java)
  165. RESTRICT_PATH(maps/mobile maps/automotive MSG This macro is for use in mapsmobi projects)
  166. }
  167. ### @usage: MAPSMOBI_COLLECT_JNI_LIBS_FILES(varname [dir]) # internal
  168. ###
  169. ### This macro is strictly prohibited to use outside of mapsmobi project
  170. macro MAPSMOBI_COLLECT_JNI_LIBS_FILES(VAR, DIR="") {
  171. _GLOB($VAR ${suf=/:DIR}**/*.so)
  172. RESTRICT_PATH(maps/mobile maps/automotive MSG This macro is for use in mapsmobi projects)
  173. }
  174. ### @usage: MAPSMOBI_COLLECT_RES_FILES(varname [dir]) # internal
  175. ###
  176. ### This macro is strictly prohibited to use outside of mapsmobi project
  177. macro MAPSMOBI_COLLECT_RES_FILES(VAR, DIR="") {
  178. _GLOB($VAR ${suf=/:DIR}**/*.(xml|png))
  179. RESTRICT_PATH(maps/mobile maps/automotive MSG This macro is for use in mapsmobi projects)
  180. }
  181. ### @usage: MAPSMOBI_COLLECT_TPL_FILES(varname [dir]) # internal
  182. ###
  183. ### This macro is strictly prohibited to use outside of mapsmobi project
  184. macro MAPSMOBI_COLLECT_TPL_FILES(VAR, DIR="") {
  185. _GLOB($VAR ${suf=/:DIR}**/*.tpl)
  186. RESTRICT_PATH(tools/idl MSG This macro is for use in mapsmobi projects)
  187. }
  188. ### @usage: MAPS_GARDEN_COLLECT_MODULE_TRAITS(varnamei dir) # internal
  189. ###
  190. ### This macro is strictly prohibited to use outside of maps/garden project
  191. macro MAPS_GARDEN_COLLECT_MODULE_TRAITS(VAR, DIR) {
  192. _GLOB($VAR $DIR/*/module_traits.json)
  193. RESTRICT_PATH(maps/garden/sdk/module_traits/tests/module_traits_bundle MSG This macro is for use in maps/garden project)
  194. }
  195. # mapsmobi build configuration
  196. MAPSMOBI_FAKEID=${FAKEID}_r9927169
  197. MAPSMOBI_BUILD=
  198. YANDEX_EXPORT=
  199. MAPSMOBI_CPP_PROTO_PLUGINS=
  200. STATIC_STL=
  201. EXPORT_ALL_SYMBOLS=
  202. when ($MAPSMOBI_BUILD_HOST || $MAPSMOBI_BUILD_TARGET) {
  203. MAPSMOBI_BUILD=yes
  204. }
  205. when ($MAPSMOBI_BUILD) {
  206. CFLAGS+=-DMOBILE_BUILD ${hide:MAPSMOBI_FAKEID}
  207. MAPKIT_BASE_PROTO_PACKAGE=yandex.maps.proto
  208. MAPKIT_PROTO_ROOT=maps/doc/proto
  209. MAPKIT_IDL_FRAMEWORK=maps/mobile/libs/idl_frameworks
  210. }
  211. when ($MAPSMOBI_BUILD_TARGET) {
  212. ALLOCATOR=FAKE
  213. USE_VANILLA_PROTOC=yes
  214. PROTOBUF_LITE=yes
  215. CPP_PROTO_PLUGINS=lite${pre=,:MAPSMOBI_CPP_PROTO_PLUGINS}:
  216. when ($OPENSOURCE != "yes") {
  217. SYSINCL+=build/yandex_specific/sysincl/qt.yml
  218. SYSINCL+=build/yandex_specific/sysincl/yx-account-manager.yml
  219. }
  220. CFLAGS+=-U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1 -DBOOST_CB_DISABLE_DEBUG -DBOOST_COROUTINES_NO_DEPRECATION_WARNING -DYANDEX_EXPORT=${YANDEX_EXPORT}
  221. CFLAGS+=-Wnon-virtual-dtor
  222. }
  223. when ($MAPSMOBI_BUILD_TARGET && $OS_ANDROID) {
  224. JDK_REAL_VERSION=11
  225. MAPSMOBI_CPP_PROTO_PLUGINS="dllexport_decl=YANDEX_EXPORT"
  226. YANDEX_EXPORT=__attribute__((visibility(\"default\")))
  227. CFLAGS+=-fvisibility=hidden
  228. when ($MAPS_MOBILE_EXPORT_CPP_API) {
  229. LDFLAGS+=-lc++_shared
  230. CFLAGS+=-DZLIB_DLL
  231. CFLAGS+=-DPROTOBUF_USE_DLLS -DLIBPROTOBUF_EXPORTS
  232. CFLAGS+=-DPNG_IMPEXP=${YANDEX_EXPORT}
  233. CFLAGS+=-DBOOST_ALL_DYN_LINK
  234. CFLAGS+=-DBOOST_SYMBOL_EXPORT=${YANDEX_EXPORT}
  235. DYNAMIC_BOOST=yes
  236. }
  237. otherwise {
  238. STATIC_STL=yes
  239. YANDEX_EXPORT=
  240. CFLAGS+=-DBOOST_SYMBOL_EXPORT=
  241. CFLAGS+=-DBOOST_SYMBOL_VISIBLE=
  242. LDFLAGS+=-lc++_static -Wl,--exclude-libs,ALL -static-libstdc++
  243. USE_GLOBAL_CMD=no
  244. }
  245. when ($EXPORT_ALL_SYMBOLS) {
  246. CFLAGS+=-fvisibility=default
  247. }
  248. when ($NO_DEBUGINFO != "yes" && $REDUCED_DEBUGINFO) {
  249. CFLAGS+=-g1
  250. }
  251. CFLAGS+=-DANDROID -fpic -ffunction-sections -funwind-tables -fstack-protector -no-canonical-prefixes -Wa,--noexecstack
  252. CFLAGS+=-Qunused-arguments -Wno-unused-function -Wno-pessimizing-move -Wno-missing-field-initializers -Wno-missing-braces -Wno-unused-parameter -Wno-vexing-parse -Wno-sign-compare -Wno-deprecated-declarations
  253. LDFLAGS+=-lc -lm -llog -Bsymbolic -Wl,-z,noexecstack -Qunused-arguments -Wl,-z,relro -Wl,-z,now -Wl,--no-undefined
  254. when ($BT_RELEASE || $BT_RELWITHDEBINFO) {
  255. CFLAGS+=-fomit-frame-pointer -fvisibility-inlines-hidden -ffunction-sections -fdata-sections
  256. LDFLAGS+=-Wl,--gc-sections -Wl,--build-id
  257. }
  258. when ($ARCH_ARM7) {
  259. CFLAGS+=-mfloat-abi=softfp
  260. #Android clang overaligns some float types which causes NEON programs to fail on old Android versions. So we disable NEON.
  261. #See https://github.com/android/ndk/issues/640 for more information
  262. CFLAGS+=-mfpu=vfpv3-d16
  263. }
  264. elsewhen ($ARCH_ARM64) {
  265. }
  266. elsewhen ($ARCH_I386) {
  267. CFLAGS+=-fstrict-aliasing -mstackrealign -DBOOST_CONTEXT_TLS_STACK_PROTECTOR
  268. }
  269. elsewhen ($ARCH_X86_64) {
  270. CFLAGS+=-fstrict-aliasing -mstackrealign -march=x86-64 -msse4.2 -mpopcnt -m64 -DBOOST_CONTEXT_TLS_STACK_PROTECTOR
  271. }
  272. otherwise {
  273. PEERDIR+=__unsupported_architecture_for_android__
  274. }
  275. }
  276. when ($MAPSMOBI_BUILD_TARGET && $OS_DARWIN) {
  277. QT_REQUIRED=yes
  278. LDFLAGS+=-lc++
  279. CFLAGS+=-DBOOST_SYMBOL_EXPORT=
  280. CFLAGS+=-DBOOST_SYMBOL_VISIBLE=
  281. }
  282. when ($MAPSMOBI_BUILD_TARGET && $OS_IOS) {
  283. CFLAGS+=-DIOS -stdlib=libc++ -fvisibility=hidden
  284. CFLAGS+=-DBOOST_SYMBOL_EXPORT=
  285. CFLAGS+=-DBOOST_SYMBOL_VISIBLE=
  286. when(!$MAPS_MOBILE_PUBLIC_API || $OS_IOSSIM) {
  287. CFLAGS+=-DBUILDING_WITH_VULKAN_IOS
  288. BUILDING_WITH_VULKAN_IOS=yes
  289. }
  290. BUILD_IOS_APP=yes
  291. when ($ARCH_ARM7 || $ARCH_ARM64) {
  292. BOOSTTEST_IS_FAT_OBJECT=yes
  293. }
  294. }
  295. when ($MAPSMOBI_BUILD_TARGET && $OS_LINUX) {
  296. when ($NO_GRAPHICS != "yes") {
  297. QT_REQUIRED=yes
  298. OPENGL_REQUIRED=yes
  299. }
  300. OS_SDK=ubuntu-16
  301. PIC=yes
  302. LDFLAGS+=-lstdc++ -lgcc_s
  303. CFLAGS+=-DBOOST_SYMBOL_EXPORT=
  304. CFLAGS+=-DBOOST_SYMBOL_VISIBLE=
  305. }
  306. when ($MAPSMOBI_BUILD_TARGET && $OS_YOCTO) {
  307. QT_REQUIRED=yes
  308. PIC=yes
  309. CFLAGS+=-DBOOST_SYMBOL_EXPORT=
  310. CFLAGS+=-DBOOST_SYMBOL_VISIBLE=
  311. }
  312. when ($MAPSMOBI_BUILD_TARGET == "yes" && $OS_LINUX != "yes") {
  313. ARCADIA_CURL_DNS_RESOLVER=MULTITHREADED
  314. }
  315. when ($QT_REQUIRED) {
  316. QT_BIN=${HOST_QT_RESOURCE_GLOBAL}/bin
  317. }
  318. when ($OPENGL_REQUIRED) {
  319. OPENGL_VERSION=18.0.5
  320. }
  321. when ($MAPSMOBI_BUILD_TARGET == "yes") {
  322. USE_DYNAMIC_SDBUS_CPP=yes
  323. }