mapkit.conf 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351
  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. BEFORE_PEERS=
  46. AFTER_PEERS=
  47. when ($MAPKIT_WHOLE_ARCHIVE == "yes") {
  48. when($OS_LINUX) {
  49. BEFORE_PEERS += $START_WHOLE_ARCHIVE_VALUE
  50. AFTER_PEERS += $END_WHOLE_ARCHIVE_VALUE
  51. }
  52. elsewhen($OS_DARWIN) {
  53. LDFLAGS+=-Wl,-all_load
  54. }
  55. }
  56. ### @usage: MAPKIT_ENABLE_WHOLE_ARCHIVE() # internal deprecated
  57. ###
  58. ### This macro is strictly prohibited to use outside of mapsmobi project
  59. macro MAPKIT_ENABLE_WHOLE_ARCHIVE() {
  60. ENABLE(MAPKIT_WHOLE_ARCHIVE)
  61. }
  62. ### @usage: USE_IDL_CPP()
  63. ###
  64. ### This macro forces to use H_CPP_IDL (implementation library) variant of
  65. ### MAPS_IDL_LIBRARY multimodule instead of H_IDL (header only library) variant
  66. ### which is used by default
  67. macro USE_IDL_CPP() {
  68. SET(PEERDIR_TAGS __EMPTY__ CPP_PROTO H_CPP_IDL)
  69. }
  70. _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"}
  71. _LINK_JSRC_MF=$_LINK_JSRC && $GENERATE_MF
  72. ### @usage: MAPS_IDL_JSRC_LIBRARY
  73. ###
  74. ### Create .jsrc output - archive of megred .jsrc inputs
  75. module MAPS_IDL_JSRC_LIBRARY: JSRC_LIBRARY {
  76. .CMD=_LINK_JSRC_MF
  77. .EXTS=.jsrc
  78. }
  79. ### _MAPS_IDL_LIBRARY_EPILOGUE() #internal
  80. ###
  81. ### This macro executes macros which should be invoked after all user specified macros in the ya.make file
  82. macro _MAPS_IDL_LIBRARY_EPILOGUE() {
  83. _GLOB(MAPKIT_IDL_FRAMEWORK_FILES ${ARCADIA_ROOT}/${MAPKIT_IDL_FRAMEWORK}/*.framework)
  84. SET_APPEND(_MAKEFILE_INCLUDE_LIKE_DEPS $MAPKIT_IDL_FRAMEWORK_FILES)
  85. }
  86. ### @usage: MAPS_IDL_LIBRARY()
  87. ###
  88. ### Definition of multimodule that builds various variants of libraries.
  89. ### The particular variant is selected based on where PEERDIR to IDL_LIBRARY comes from.
  90. ### Now supported 2 variants: C++, Java
  91. ### Java version is not really a library but an archive of generated Java sources
  92. multimodule MAPS_IDL_LIBRARY {
  93. module H_IDL: LIBRARY {
  94. .ALIASES=SRCS=MAPS_IDL_SRCS GLOBAL_SRCS=MAPS_IDL_GLOBAL_SRCS ADDINCL=MAPKIT_ADDINCL MAPSMOBI_SRCS=MAPS_IDL_SRCS
  95. .EPILOGUE=_MAPS_IDL_LIBRARY_EPILOGUE
  96. ENABLE(H_IDL)
  97. ENABLE(CPP_IDL)
  98. SET(PEERDIR_TAGS H_IDL CPP_PROTO __EMPTY__)
  99. SET(MAPS_IDL_FILTER FILTER .h)
  100. NO_UTIL()
  101. PROTO_ADDINCL(${MAPKIT_PROTO_ROOT})
  102. }
  103. module H_CPP_IDL: LIBRARY {
  104. .ALIASES=SRCS=MAPS_IDL_SRCS GLOBAL_SRCS=MAPS_IDL_GLOBAL_SRCS ADDINCL=MAPKIT_ADDINCL MAPSMOBI_SRCS=MAPS_IDL_SRCS
  105. .DEFAULT_NAME_GENERATOR=DirName
  106. .PEERDIRSELF=H_IDL
  107. .EPILOGUE=_MAPS_IDL_LIBRARY_EPILOGUE
  108. ENABLE(H_CPP_IDL)
  109. ENABLE(CPP_IDL)
  110. SET(PEERDIR_TAGS H_IDL CPP_PROTO __EMPTY__)
  111. SET(MAPS_IDL_FILTER FILTER .cpp .m .mm .dart)
  112. DISABLE(START_TARGET)
  113. NO_UTIL()
  114. }
  115. module JAVA_IDL: MAPS_IDL_JSRC_LIBRARY {
  116. .ALIASES=SRCS=MAPS_IDL_SRCS GLOBAL_SRCS=MAPS_IDL_SRCS ADDINCL=MAPKIT_ADDINCL MAPSMOBI_SRCS=MAPS_IDL_SRCS
  117. .IGNORED=CPP_ADDINCL
  118. .EPILOGUE=_MAPS_IDL_LIBRARY_EPILOGUE
  119. SET(PEERDIR_TAGS JAVA_IDL JAVA_PROTO)
  120. SET(MAPS_IDL_FILTER FILTER .java)
  121. ENABLE(JAVA_IDL)
  122. PROTO_ADDINCL(${MAPKIT_PROTO_ROOT})
  123. }
  124. }
  125. _IDL_TOOL_EXTRA_ARGS=
  126. when ($MAPS_MOBILE_USE_STD_VARIANT == "yes") {
  127. _IDL_TOOL_EXTRA_ARGS+=--use-std-variant
  128. }
  129. when ($MAPS_MOBILE_PUBLIC_API == "yes") {
  130. _IDL_TOOL_EXTRA_ARGS+=--public
  131. }
  132. when ($MAPS_MOBILE_ENABLE_NAVI_SERIALIZATION == "yes") {
  133. _IDL_TOOL_EXTRA_ARGS+=--enable-navi-serialization
  134. }
  135. _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"}
  136. ### @usage: _RUN_IDL_TOOL(...) # internal
  137. ###
  138. ### Run idl tool within non-JAVA_IDL submodule. This macro is called from _PROCESS_MAPS_MOBILE_IDL macro.
  139. 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[]) {
  140. .CMD=$_IDL_TOOL_CMDLINE
  141. }
  142. ### @usage: _RUN_IDL_TOOL(...) # internal
  143. ###
  144. ### Run idl tool within JAVA_IDL submodule. This macro is called from _PROCESS_MAPS_MOBILE_IDL macro.
  145. 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[]) {
  146. .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
  147. }
  148. ### @usage: MAPSMOBI_COLLECT_ASSETS_FILES(varname [dir]) # internal
  149. ###
  150. ### This macro is strictly prohibited to use outside of mapsmobi project
  151. macro MAPSMOBI_COLLECT_ASSETS_FILES(VAR, DIR="") {
  152. _GLOB($VAR ${suf=/:DIR}**/*)
  153. RESTRICT_PATH(maps/mobile maps/automotive MSG This macro is for use in mapsmobi projects)
  154. }
  155. ### @usage: MAPSMOBI_COLLECT_AIDL_FILES(varname [dir]) # internal
  156. ###
  157. ### This macro is strictly prohibited to use outside of mapsmobi project
  158. macro MAPSMOBI_COLLECT_AIDL_FILES(VAR, DIR="") {
  159. _GLOB($VAR ${suf=/:DIR}**/*.aidl)
  160. RESTRICT_PATH(maps/mobile maps/automotive MSG This macro is for use in mapsmobi projects)
  161. }
  162. ### @usage: MAPSMOBI_COLLECT_JAVA_FILES(varname [dir]) # internal
  163. ###
  164. ### This macro is strictly prohibited to use outside of mapsmobi project
  165. macro MAPSMOBI_COLLECT_JAVA_FILES(VAR, DIR="") {
  166. _GLOB($VAR ${suf=/:DIR}**/*.java)
  167. RESTRICT_PATH(maps/mobile maps/automotive MSG This macro is for use in mapsmobi projects)
  168. }
  169. ### @usage: MAPSMOBI_COLLECT_JNI_LIBS_FILES(varname [dir]) # internal
  170. ###
  171. ### This macro is strictly prohibited to use outside of mapsmobi project
  172. macro MAPSMOBI_COLLECT_JNI_LIBS_FILES(VAR, DIR="") {
  173. _GLOB($VAR ${suf=/:DIR}**/*.so)
  174. RESTRICT_PATH(maps/mobile maps/automotive MSG This macro is for use in mapsmobi projects)
  175. }
  176. ### @usage: MAPSMOBI_COLLECT_RES_FILES(varname [dir]) # internal
  177. ###
  178. ### This macro is strictly prohibited to use outside of mapsmobi project
  179. macro MAPSMOBI_COLLECT_RES_FILES(VAR, DIR="") {
  180. _GLOB($VAR ${suf=/:DIR}**/*.(xml|png))
  181. RESTRICT_PATH(maps/mobile maps/automotive MSG This macro is for use in mapsmobi projects)
  182. }
  183. ### @usage: MAPSMOBI_COLLECT_TPL_FILES(varname [dir]) # internal
  184. ###
  185. ### This macro is strictly prohibited to use outside of mapsmobi project
  186. macro MAPSMOBI_COLLECT_TPL_FILES(VAR, DIR="") {
  187. _GLOB($VAR ${suf=/:DIR}**/*.tpl)
  188. RESTRICT_PATH(tools/idl MSG This macro is for use in mapsmobi projects)
  189. }
  190. ### @usage: MAPS_GARDEN_COLLECT_MODULE_TRAITS(varnamei dir) # internal
  191. ###
  192. ### This macro is strictly prohibited to use outside of maps/garden project
  193. macro MAPS_GARDEN_COLLECT_MODULE_TRAITS(VAR, DIR) {
  194. _GLOB($VAR $DIR/*/module_traits.json)
  195. RESTRICT_PATH(maps/garden/sdk/module_traits/tests/module_traits_bundle MSG This macro is for use in maps/garden project)
  196. }
  197. # mapsmobi build configuration
  198. MAPSMOBI_FAKEID=${FAKEID}_r9927169
  199. MAPSMOBI_BUILD=
  200. YANDEX_EXPORT=
  201. MAPSMOBI_CPP_PROTO_PLUGINS=
  202. STATIC_STL=
  203. EXPORT_ALL_SYMBOLS=
  204. when ($MAPSMOBI_BUILD_HOST || $MAPSMOBI_BUILD_TARGET) {
  205. MAPSMOBI_BUILD=yes
  206. }
  207. when ($MAPSMOBI_BUILD) {
  208. CFLAGS+=-DMOBILE_BUILD ${hide:MAPSMOBI_FAKEID}
  209. MAPKIT_BASE_PROTO_PACKAGE=yandex.maps.proto
  210. MAPKIT_PROTO_ROOT=maps/doc/proto
  211. MAPKIT_IDL_FRAMEWORK=maps/mobile/libs/idl_frameworks
  212. }
  213. when ($MAPSMOBI_BUILD_TARGET) {
  214. ALLOCATOR=FAKE
  215. USE_VANILLA_PROTOC=yes
  216. PROTOBUF_LITE=yes
  217. CPP_PROTO_PLUGINS=lite${pre=,:MAPSMOBI_CPP_PROTO_PLUGINS}:
  218. when ($OPENSOURCE != "yes") {
  219. SYSINCL+=build/yandex_specific/sysincl/qt.yml
  220. SYSINCL+=build/yandex_specific/sysincl/yx-account-manager.yml
  221. }
  222. CFLAGS+=-U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1 -DBOOST_CB_DISABLE_DEBUG -DBOOST_COROUTINES_NO_DEPRECATION_WARNING -DYANDEX_EXPORT=${YANDEX_EXPORT}
  223. }
  224. when ($MAPSMOBI_BUILD_TARGET && $OS_ANDROID) {
  225. JDK_REAL_VERSION=11
  226. MAPSMOBI_CPP_PROTO_PLUGINS="dllexport_decl=YANDEX_EXPORT"
  227. YANDEX_EXPORT=__attribute__((visibility(\"default\")))
  228. CFLAGS+=-fvisibility=hidden
  229. when ($MAPS_MOBILE_EXPORT_CPP_API) {
  230. LDFLAGS+=-lc++_shared
  231. CFLAGS+=-DZLIB_DLL
  232. CFLAGS+=-DPROTOBUF_USE_DLLS -DLIBPROTOBUF_EXPORTS
  233. CFLAGS+=-DPNG_IMPEXP=${YANDEX_EXPORT}
  234. CFLAGS+=-DBOOST_ALL_DYN_LINK
  235. CFLAGS+=-DBOOST_SYMBOL_EXPORT=${YANDEX_EXPORT}
  236. DYNAMIC_BOOST=yes
  237. }
  238. otherwise {
  239. STATIC_STL=yes
  240. YANDEX_EXPORT=
  241. CFLAGS+=-DBOOST_SYMBOL_EXPORT=
  242. CFLAGS+=-DBOOST_SYMBOL_VISIBLE=
  243. LDFLAGS+=-lc++_static -Wl,--exclude-libs,ALL -static-libstdc++
  244. USE_GLOBAL_CMD=no
  245. }
  246. when ($EXPORT_ALL_SYMBOLS) {
  247. CFLAGS+=-fvisibility=default
  248. }
  249. when ($NO_DEBUGINFO != "yes" && $REDUCED_DEBUGINFO) {
  250. CFLAGS+=-g1
  251. }
  252. CFLAGS+=-DANDROID -fpic -ffunction-sections -funwind-tables -fstack-protector -no-canonical-prefixes -Wa,--noexecstack
  253. 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
  254. LDFLAGS+=-lc -lm -llog -Bsymbolic -Wl,-z,noexecstack -Qunused-arguments -Wl,-z,relro -Wl,-z,now -Wl,--no-undefined
  255. when ($BT_RELEASE || $BT_RELWITHDEBINFO) {
  256. CFLAGS+=-fomit-frame-pointer -fvisibility-inlines-hidden -ffunction-sections -fdata-sections
  257. LDFLAGS+=-Wl,--gc-sections -Wl,--build-id
  258. }
  259. when ($ARCH_ARM7) {
  260. CFLAGS+=-mfloat-abi=softfp
  261. #Android clang overaligns some float types which causes NEON programs to fail on old Android versions. So we disable NEON.
  262. #See https://github.com/android/ndk/issues/640 for more information
  263. CFLAGS+=-mfpu=vfpv3-d16
  264. }
  265. elsewhen ($ARCH_ARM64) {
  266. }
  267. elsewhen ($ARCH_I386) {
  268. CFLAGS+=-fstrict-aliasing -mstackrealign -DBOOST_CONTEXT_TLS_STACK_PROTECTOR
  269. }
  270. elsewhen ($ARCH_X86_64) {
  271. CFLAGS+=-fstrict-aliasing -mstackrealign -march=x86-64 -msse4.2 -mpopcnt -m64 -DBOOST_CONTEXT_TLS_STACK_PROTECTOR
  272. }
  273. otherwise {
  274. PEERDIR+=__unsupported_architecture_for_android__
  275. }
  276. }
  277. when ($MAPSMOBI_BUILD_TARGET && $OS_DARWIN) {
  278. QT_REQUIRED=yes
  279. LDFLAGS+=-lc++
  280. CFLAGS+=-DBOOST_SYMBOL_EXPORT=
  281. CFLAGS+=-DBOOST_SYMBOL_VISIBLE=
  282. }
  283. when ($MAPSMOBI_BUILD_TARGET && $OS_IOS) {
  284. CFLAGS+=-DIOS -stdlib=libc++ -fvisibility=hidden
  285. CFLAGS+=-DBOOST_SYMBOL_EXPORT=
  286. CFLAGS+=-DBOOST_SYMBOL_VISIBLE=
  287. when(!$MAPS_MOBILE_PUBLIC_API || $OS_IOSSIM) {
  288. CFLAGS+=-DBUILDING_WITH_VULKAN_IOS
  289. BUILDING_WITH_VULKAN_IOS=yes
  290. }
  291. }
  292. when ($MAPSMOBI_BUILD_TARGET && $OS_LINUX) {
  293. when ($NO_GRAPHICS != "yes") {
  294. QT_REQUIRED=yes
  295. OPENGL_REQUIRED=yes
  296. }
  297. OS_SDK=ubuntu-16
  298. PIC=yes
  299. LDFLAGS+=-lstdc++ -lgcc_s
  300. CFLAGS+=-DBOOST_SYMBOL_EXPORT=
  301. CFLAGS+=-DBOOST_SYMBOL_VISIBLE=
  302. }
  303. when ($MAPSMOBI_BUILD_TARGET && $OS_YOCTO) {
  304. QT_REQUIRED=yes
  305. PIC=yes
  306. CFLAGS+=-DBOOST_SYMBOL_EXPORT=
  307. CFLAGS+=-DBOOST_SYMBOL_VISIBLE=
  308. }