brightray.gyp 20 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459
  1. {
  2. 'variables': {
  3. # The libraries brightray will be compiled to.
  4. 'linux_system_libraries': 'gtk+-3.0 atk-bridge-2.0 dbus-1 x11 x11-xcb xcb xi xcursor xdamage xrandr xcomposite xext xfixes xrender xtst xscrnsaver gconf-2.0 gmodule-2.0 nss',
  5. 'conditions': [
  6. ['target_arch=="mips64el"', {
  7. 'linux_system_libraries': '<(linux_system_libraries) libpulse',
  8. }],
  9. ],
  10. },
  11. 'includes': [
  12. 'filenames.gypi',
  13. ],
  14. 'targets': [
  15. {
  16. 'target_name': 'brightray',
  17. 'type': 'static_library',
  18. 'include_dirs': [
  19. '..',
  20. '<(libchromiumcontent_src_dir)',
  21. '<(libchromiumcontent_src_dir)/skia/config',
  22. '<(libchromiumcontent_src_dir)/third_party/boringssl/src/include',
  23. '<(libchromiumcontent_src_dir)/third_party/skia/include/core',
  24. '<(libchromiumcontent_src_dir)/third_party/skia/include/gpu',
  25. '<(libchromiumcontent_src_dir)/third_party/mojo/src',
  26. '<(libchromiumcontent_src_dir)/third_party/WebKit',
  27. '<(libchromiumcontent_src_dir)/third_party/khronos',
  28. '<(libchromiumcontent_src_dir)/third_party/protobuf/src',
  29. '<(libchromiumcontent_dir)/gen',
  30. ],
  31. 'direct_dependent_settings': {
  32. 'include_dirs': [
  33. '../vendor',
  34. '<(libchromiumcontent_src_dir)',
  35. '<(libchromiumcontent_src_dir)/gpu',
  36. '<(libchromiumcontent_src_dir)/skia/config',
  37. '<(libchromiumcontent_src_dir)/third_party/boringssl/src/include',
  38. '<(libchromiumcontent_src_dir)/third_party/skia/include/core',
  39. '<(libchromiumcontent_src_dir)/third_party/skia/include/gpu',
  40. '<(libchromiumcontent_src_dir)/third_party/skia/include/config',
  41. '<(libchromiumcontent_src_dir)/third_party/icu/source/common',
  42. '<(libchromiumcontent_src_dir)/third_party/mojo/src',
  43. '<(libchromiumcontent_src_dir)/third_party/khronos',
  44. '<(libchromiumcontent_src_dir)/third_party/WebKit',
  45. '<(libchromiumcontent_dir)/gen',
  46. '<(libchromiumcontent_dir)/gen/third_party/WebKit',
  47. ],
  48. },
  49. 'defines': [
  50. # See Chromium's "src/third_party/protobuf/BUILD.gn".
  51. 'GOOGLE_PROTOBUF_NO_RTTI',
  52. 'GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER',
  53. ],
  54. 'sources': [ '<@(brightray_sources)' ],
  55. 'conditions': [
  56. # Link with libraries of libchromiumcontent.
  57. ['OS=="linux" and libchromiumcontent_component==0', {
  58. # On Linux we have to use "--whole-archive" to force executable
  59. # to include all symbols, otherwise we will have plenty of
  60. # unresolved symbols errors.
  61. 'direct_dependent_settings': {
  62. 'ldflags': [
  63. '-Wl,--whole-archive',
  64. '<@(libchromiumcontent_libraries)',
  65. '-Wl,--no-whole-archive',
  66. ],
  67. }
  68. }, { # (Release build on Linux)
  69. 'link_settings': {
  70. 'libraries': [ '<@(libchromiumcontent_libraries)' ]
  71. },
  72. }], # (Normal builds)
  73. # Linux specific link settings.
  74. ['OS=="linux"', {
  75. 'link_settings': {
  76. 'ldflags': [
  77. '<!@(<(pkg-config) --libs-only-L --libs-only-other <(linux_system_libraries))',
  78. ],
  79. 'libraries': [
  80. '-lpthread',
  81. '-latomic',
  82. '<!@(<(pkg-config) --libs-only-l <(linux_system_libraries))',
  83. ],
  84. },
  85. 'cflags': [
  86. '<!@(<(pkg-config) --cflags <(linux_system_libraries))',
  87. ],
  88. 'direct_dependent_settings': {
  89. 'cflags': [
  90. '<!@(<(pkg-config) --cflags <(linux_system_libraries))',
  91. ],
  92. },
  93. 'conditions': [
  94. ['clang==1', {
  95. 'cflags_cc': [
  96. '-Wno-reserved-user-defined-literal',
  97. ],
  98. 'cflags': [
  99. # Needed by using libgtkui:
  100. '-Wno-deprecated-register',
  101. '-Wno-sentinel',
  102. ],
  103. 'direct_dependent_settings': {
  104. 'cflags': [
  105. '-Wno-deprecated-register',
  106. '-Wno-sentinel',
  107. ],
  108. },
  109. }],
  110. ['libchromiumcontent_component', {
  111. 'link_settings': {
  112. 'libraries': [
  113. # Following libraries are always linked statically.
  114. '<(libchromiumcontent_dir)/libbase_static.a',
  115. '<(libchromiumcontent_dir)/libextras.a',
  116. '<(libchromiumcontent_dir)/libgtkui.a',
  117. '<(libchromiumcontent_dir)/libhttp_server.a',
  118. '<(libchromiumcontent_dir)/libdevice_service.a',
  119. '<(libchromiumcontent_dir)/libdom_keycode_converter.a',
  120. '<(libchromiumcontent_dir)/libsystem_wrappers.a',
  121. '<(libchromiumcontent_dir)/librtc_base.a',
  122. '<(libchromiumcontent_dir)/librtc_base_generic.a',
  123. '<(libchromiumcontent_dir)/libwebrtc_common.a',
  124. '<(libchromiumcontent_dir)/libinit_webrtc.a',
  125. '<(libchromiumcontent_dir)/libyuv.a',
  126. '<(libchromiumcontent_dir)/librenderer.a',
  127. '<(libchromiumcontent_dir)/libsecurity_state.a',
  128. '<(libchromiumcontent_dir)/libviz_service.a',
  129. # services/device/wake_lock/power_save_blocker/
  130. '<(libchromiumcontent_dir)/libpower_save_blocker.a',
  131. # Friends of libpdf.a:
  132. # On Linux we have to use "--whole-archive" to include
  133. # all symbols, otherwise there will be plenty of
  134. # unresolved symbols errors.
  135. '-Wl,--whole-archive',
  136. '<(libchromiumcontent_dir)/libpdf.a',
  137. '<(libchromiumcontent_dir)/libppapi_cpp_objects.a',
  138. '<(libchromiumcontent_dir)/libppapi_internal_module.a',
  139. '<(libchromiumcontent_dir)/libpdfium.a',
  140. '<(libchromiumcontent_dir)/libpdfium_skia_shared.a',
  141. '<(libchromiumcontent_dir)/libfdrm.a',
  142. '<(libchromiumcontent_dir)/libformfiller.a',
  143. '<(libchromiumcontent_dir)/libfpdfapi.a',
  144. '<(libchromiumcontent_dir)/libfpdfdoc.a',
  145. '<(libchromiumcontent_dir)/libfpdftext.a',
  146. '<(libchromiumcontent_dir)/libfxcodec.a',
  147. '<(libchromiumcontent_dir)/libfxge.a',
  148. '<(libchromiumcontent_dir)/libfxjs.a',
  149. '<(libchromiumcontent_dir)/libpwl.a',
  150. '<(libchromiumcontent_dir)/libfx_agg.a',
  151. '<(libchromiumcontent_dir)/libfx_lcms2.a',
  152. '<(libchromiumcontent_dir)/libfx_libopenjpeg.a',
  153. '-Wl,--no-whole-archive',
  154. '<(libchromiumcontent_dir)/libchrome.a',
  155. ],
  156. },
  157. }, {
  158. 'link_settings': {
  159. 'libraries': [
  160. # Link with ffmpeg.
  161. '<(libchromiumcontent_dir)/libffmpeg.so',
  162. # Following libraries are required by libchromiumcontent:
  163. '-lasound',
  164. '-lcap',
  165. '-lcups',
  166. '-lrt',
  167. '-ldl',
  168. '-lresolv',
  169. '-lfontconfig',
  170. '-lexpat',
  171. ],
  172. },
  173. }],
  174. # This lib does not exist on arm.
  175. ['target_arch=="arm"', {
  176. 'link_settings': {
  177. 'libraries!': [
  178. '<(libchromiumcontent_dir)/libdesktop_capture_differ_sse2.a',
  179. ],
  180. },
  181. }],
  182. # Due to strange linker behavior, component build of arm needs to
  183. # be linked with libjpeg.a explicitly.
  184. ['target_arch=="arm" and libchromiumcontent_component==1', {
  185. 'link_settings': {
  186. 'libraries': [
  187. '<(libchromiumcontent_dir)/libjpeg.a',
  188. ],
  189. },
  190. }],
  191. ],
  192. }], # OS=="linux"
  193. ['OS=="mac"', {
  194. 'link_settings': {
  195. 'libraries': [
  196. '$(SDKROOT)/System/Library/Frameworks/AppKit.framework',
  197. # Required by webrtc:
  198. '$(SDKROOT)/System/Library/Frameworks/OpenGL.framework',
  199. '$(SDKROOT)/System/Library/Frameworks/IOKit.framework',
  200. # Required by media:
  201. '$(SDKROOT)/System/Library/Frameworks/VideoToolbox.framework',
  202. ],
  203. },
  204. 'conditions': [
  205. ['libchromiumcontent_component', {
  206. 'link_settings': {
  207. 'libraries': [
  208. # Following libraries are always linked statically.
  209. '<(libchromiumcontent_dir)/libbase_static.a',
  210. '<(libchromiumcontent_dir)/libextras.a',
  211. '<(libchromiumcontent_dir)/libhttp_server.a',
  212. '<(libchromiumcontent_dir)/libdevice_service.a',
  213. '<(libchromiumcontent_dir)/libdom_keycode_converter.a',
  214. '<(libchromiumcontent_dir)/librtc_base.a',
  215. '<(libchromiumcontent_dir)/librtc_base_generic.a',
  216. '<(libchromiumcontent_dir)/libsystem_wrappers.a',
  217. '<(libchromiumcontent_dir)/libwebrtc_common.a',
  218. '<(libchromiumcontent_dir)/libinit_webrtc.a',
  219. '<(libchromiumcontent_dir)/libyuv.a',
  220. '<(libchromiumcontent_dir)/libpdfium_skia_shared.a',
  221. '<(libchromiumcontent_dir)/librenderer.a',
  222. '<(libchromiumcontent_dir)/libsecurity_state.a',
  223. '<(libchromiumcontent_dir)/libviz_service.a',
  224. '<(libchromiumcontent_dir)/libchrome.a',
  225. # services/device/wake_lock/power_save_blocker/
  226. '<(libchromiumcontent_dir)/libpower_save_blocker.a',
  227. # Friends of libpdf.a:
  228. '<(libchromiumcontent_dir)/libpdf.a',
  229. '<(libchromiumcontent_dir)/libppapi_cpp_objects.a',
  230. '<(libchromiumcontent_dir)/libppapi_internal_module.a',
  231. '<(libchromiumcontent_dir)/libjpeg.a',
  232. '<(libchromiumcontent_dir)/libpdfium.a',
  233. '<(libchromiumcontent_dir)/libfdrm.a',
  234. '<(libchromiumcontent_dir)/libformfiller.a',
  235. '<(libchromiumcontent_dir)/libfpdfapi.a',
  236. '<(libchromiumcontent_dir)/libfpdfdoc.a',
  237. '<(libchromiumcontent_dir)/libfpdftext.a',
  238. '<(libchromiumcontent_dir)/libfxcodec.a',
  239. '<(libchromiumcontent_dir)/libfxcrt.a',
  240. '<(libchromiumcontent_dir)/libfxge.a',
  241. '<(libchromiumcontent_dir)/libfxjs.a',
  242. '<(libchromiumcontent_dir)/libpwl.a',
  243. '<(libchromiumcontent_dir)/libfx_agg.a',
  244. '<(libchromiumcontent_dir)/libfx_lcms2.a',
  245. '<(libchromiumcontent_dir)/libfx_libopenjpeg.a',
  246. '<(libchromiumcontent_dir)/libfx_zlib.a',
  247. ],
  248. },
  249. }, {
  250. 'link_settings': {
  251. 'libraries': [
  252. # Link with ffmpeg.
  253. '<(libchromiumcontent_dir)/libffmpeg.dylib',
  254. # Link with system frameworks.
  255. # ui_base.gypi:
  256. '$(SDKROOT)/System/Library/Frameworks/Accelerate.framework',
  257. # net.gypi:
  258. '$(SDKROOT)/System/Library/Frameworks/Foundation.framework',
  259. '$(SDKROOT)/System/Library/Frameworks/Security.framework',
  260. '$(SDKROOT)/System/Library/Frameworks/SystemConfiguration.framework',
  261. '-lresolv',
  262. # media.gyp:
  263. '$(SDKROOT)/System/Library/Frameworks/AudioToolbox.framework',
  264. '$(SDKROOT)/System/Library/Frameworks/AudioUnit.framework',
  265. '$(SDKROOT)/System/Library/Frameworks/AVFoundation.framework',
  266. '$(SDKROOT)/System/Library/Frameworks/CoreAudio.framework',
  267. '$(SDKROOT)/System/Library/Frameworks/CoreMedia.framework',
  268. '$(SDKROOT)/System/Library/Frameworks/CoreMIDI.framework',
  269. '$(SDKROOT)/System/Library/Frameworks/CoreVideo.framework',
  270. # surface.gyp:
  271. '$(SDKROOT)/System/Library/Frameworks/IOSurface.framework',
  272. # content_common.gypi:
  273. '$(SDKROOT)/System/Library/Frameworks/QuartzCore.framework',
  274. # base.gyp:
  275. '$(SDKROOT)/System/Library/Frameworks/ApplicationServices.framework',
  276. '$(SDKROOT)/System/Library/Frameworks/Carbon.framework',
  277. '$(SDKROOT)/System/Library/Frameworks/CoreFoundation.framework',
  278. # device/gamepad/BUILD.gn:
  279. '$(SDKROOT)/System/Library/Frameworks/ForceFeedback.framework',
  280. '$(SDKROOT)/System/Library/Frameworks/GameController.framework',
  281. # content_browser.gypi:
  282. '-lbsm',
  283. # content_common.gypi:
  284. '-lsandbox',
  285. # bluetooth.gyp:
  286. '$(SDKROOT)/System/Library/Frameworks/IOBluetooth.framework',
  287. # components/wifi/BUILD.gn:
  288. '$(SDKROOT)/System/Library/Frameworks/CoreWLAN.framework',
  289. # printing/BUILD.gn:
  290. '-lcups',
  291. ],
  292. },
  293. }],
  294. ]
  295. }], # OS=="mac"
  296. ['OS=="win"', {
  297. 'link_settings': {
  298. 'msvs_settings': {
  299. 'VCLinkerTool': {
  300. 'AdditionalOptions': [
  301. # warning /DELAYLOAD:dll ignored; no imports found from dll
  302. '/ignore:4199',
  303. ],
  304. 'AdditionalDependencies': [
  305. 'delayimp.lib',
  306. ],
  307. 'DelayLoadDLLs': [
  308. 'wtsapi32.dll',
  309. # content_common.gypi:
  310. 'd3d9.dll',
  311. 'd3d11.dll',
  312. 'dxva2.dll',
  313. # media.gyp:
  314. 'mf.dll',
  315. 'mfplat.dll',
  316. 'mfreadwrite.dll',
  317. # bluetooth.gyp:
  318. 'BluetoothApis.dll',
  319. 'Bthprops.cpl',
  320. 'setupapi.dll',
  321. # base.gyp:
  322. 'cfgmgr32.dll',
  323. 'powrprof.dll',
  324. 'setupapi.dll',
  325. # net_common.gypi:
  326. 'crypt32.dll',
  327. 'dhcpcsvc.dll',
  328. 'rpcrt4.dll',
  329. 'secur32.dll',
  330. 'urlmon.dll',
  331. 'winhttp.dll',
  332. # windows runtime
  333. 'API-MS-WIN-CORE-WINRT-L1-1-0.DLL',
  334. 'API-MS-WIN-CORE-WINRT-STRING-L1-1-0.DLL',
  335. ],
  336. },
  337. },
  338. },
  339. 'conditions': [
  340. ['libchromiumcontent_component', {
  341. 'link_settings': {
  342. 'libraries': [
  343. # Needed by desktop_capture.lib:
  344. '-ld3d11.lib',
  345. '-ldxgi.lib',
  346. # Following libs are always linked statically.
  347. '<(libchromiumcontent_dir)/base_static.lib',
  348. '<(libchromiumcontent_dir)/extras.lib',
  349. '<(libchromiumcontent_dir)/sandbox.lib',
  350. '<(libchromiumcontent_dir)/sandbox_helper_win.lib',
  351. '<(libchromiumcontent_dir)/http_server.lib',
  352. '<(libchromiumcontent_dir)/device_service.lib',
  353. '<(libchromiumcontent_dir)/dom_keycode_converter.lib',
  354. '<(libchromiumcontent_dir)/rtc_base.lib',
  355. '<(libchromiumcontent_dir)/rtc_base_generic.lib',
  356. '<(libchromiumcontent_dir)/system_wrappers.lib',
  357. '<(libchromiumcontent_dir)/webrtc_common.lib',
  358. '<(libchromiumcontent_dir)/init_webrtc.lib',
  359. '<(libchromiumcontent_dir)/libyuv.lib',
  360. '<(libchromiumcontent_dir)/pdfium_skia_shared.lib',
  361. '<(libchromiumcontent_dir)/renderer.lib',
  362. '<(libchromiumcontent_dir)/security_state.lib',
  363. '<(libchromiumcontent_dir)/viz_service.lib',
  364. '<(libchromiumcontent_dir)/chrome.lib',
  365. # services/device/wake_lock/power_save_blocker/
  366. '<(libchromiumcontent_dir)/power_save_blocker.lib',
  367. # Friends of pdf.lib:
  368. '<(libchromiumcontent_dir)/pdf.lib',
  369. '<(libchromiumcontent_dir)/ppapi_cpp_objects.lib',
  370. '<(libchromiumcontent_dir)/ppapi_internal_module.lib',
  371. '<(libchromiumcontent_dir)/libjpeg.lib',
  372. '<(libchromiumcontent_dir)/pdfium.lib',
  373. '<(libchromiumcontent_dir)/fdrm.lib',
  374. '<(libchromiumcontent_dir)/formfiller.lib',
  375. '<(libchromiumcontent_dir)/fpdfapi.lib',
  376. '<(libchromiumcontent_dir)/fpdfdoc.lib',
  377. '<(libchromiumcontent_dir)/fpdftext.lib',
  378. '<(libchromiumcontent_dir)/fpdftext.lib',
  379. '<(libchromiumcontent_dir)/fxcodec.lib',
  380. '<(libchromiumcontent_dir)/fxcrt.lib',
  381. '<(libchromiumcontent_dir)/fxge.lib',
  382. '<(libchromiumcontent_dir)/fxjs.lib',
  383. '<(libchromiumcontent_dir)/pwl.lib',
  384. '<(libchromiumcontent_dir)/fx_agg.lib',
  385. '<(libchromiumcontent_dir)/fx_lcms2.lib',
  386. '<(libchromiumcontent_dir)/fx_libopenjpeg.lib',
  387. '<(libchromiumcontent_dir)/fx_zlib.lib',
  388. '<(libchromiumcontent_dir)/desktop_capture_generic.lib',
  389. '<(libchromiumcontent_dir)/desktop_capture.lib',
  390. ],
  391. },
  392. }, {
  393. # Link with system libraries.
  394. 'link_settings': {
  395. 'libraries': [
  396. # Link with ffmpeg.
  397. '<(libchromiumcontent_dir)/ffmpeg.dll',
  398. # content_browser.gypi:
  399. '-lsensorsapi.lib',
  400. '-lportabledeviceguids.lib',
  401. # content_common.gypi:
  402. '-ld3d9.lib',
  403. '-ld3d11.lib',
  404. '-ldxgi.lib',
  405. '-ldxva2.lib',
  406. '-lstrmiids.lib',
  407. '-lmf.lib',
  408. '-lmfplat.lib',
  409. '-lmfuuid.lib',
  410. # media.gyp:
  411. '-ldxguid.lib',
  412. '-lmfreadwrite.lib',
  413. '-lmfuuid.lib',
  414. ],
  415. 'msvs_settings': {
  416. 'VCLinkerTool': {
  417. 'AdditionalDependencies': [
  418. 'advapi32.lib',
  419. 'dbghelp.lib',
  420. 'dwmapi.lib',
  421. 'gdi32.lib',
  422. 'hid.lib',
  423. 'netapi32.lib',
  424. 'oleacc.lib',
  425. 'user32.lib',
  426. 'usp10.lib',
  427. 'version.lib',
  428. 'winspool.lib',
  429. 'wtsapi32.lib',
  430. # bluetooth.gyp:
  431. 'Bthprops.lib',
  432. 'BluetoothApis.lib',
  433. # base.gyp:
  434. 'cfgmgr32.lib',
  435. 'powrprof.lib',
  436. 'setupapi.lib',
  437. # net_common.gypi:
  438. 'crypt32.lib',
  439. 'dhcpcsvc.lib',
  440. 'ncrypt.lib',
  441. 'rpcrt4.lib',
  442. 'secur32.lib',
  443. 'urlmon.lib',
  444. 'winhttp.lib',
  445. # ui/gfx/BUILD.gn:
  446. 'dwrite.lib',
  447. # skia/BUILD.gn:
  448. 'fontsub.lib',
  449. ],
  450. },
  451. },
  452. },
  453. }], # libchromiumcontent_component
  454. ],
  455. }], # OS=="win"
  456. ],
  457. },
  458. ],
  459. }