moz.build 8.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249
  1. # -*- Mode: python; indent-tabs-mode: nil; tab-width: 40 -*-
  2. # This Source Code Form is subject to the terms of the Mozilla Public
  3. # License, v. 2.0. If a copy of the MPL was not distributed with this
  4. # file, You can obtain one at http://mozilla.org/MPL/2.0/.
  5. if CONFIG['MOZ_FOLD_LIBS']:
  6. Library('nspr4')
  7. else:
  8. SharedLibrary('nspr4')
  9. # We allow warnings for third-party code that can be updated from upstream.
  10. # TODO: fix NSPR warnings and remove this
  11. ALLOW_COMPILER_WARNINGS = True
  12. DEFINES['_NSPR_BUILD_'] = True
  13. if CONFIG['OS_ARCH'] == 'Linux':
  14. OS_LIBS += CONFIG['REALTIME_LIBS']
  15. DEFINES.update(
  16. LINUX=True,
  17. HAVE_FCNTL_FILE_LOCKING=True,
  18. _GNU_SOURCE=True,
  19. )
  20. SOURCES += ['/nsprpub/pr/src/md/unix/linux.c']
  21. if CONFIG['CPU_ARCH'] == 'x86_64':
  22. SOURCES += ['/nsprpub/pr/src/md/unix/os_Linux_x86_64.s']
  23. elif CONFIG['CPU_ARCH'] == 'x86':
  24. DEFINES['i386'] = True
  25. SOURCES += ['/nsprpub/pr/src/md/unix/os_Linux_x86.s']
  26. elif CONFIG['CPU_ARCH'] == 'ppc':
  27. SOURCES += ['/nsprpub/pr/src/md/unix/os_Linux_ppc.s']
  28. elif CONFIG['OS_TARGET'] in ('FreeBSD', 'OpenBSD', 'NetBSD'):
  29. DEFINES.update(
  30. HAVE_BSD_FLOCK=True,
  31. HAVE_SOCKLEN_T=True,
  32. )
  33. DEFINES[CONFIG['OS_TARGET'].upper()] = True
  34. SOURCES += ['/nsprpub/pr/src/md/unix/%s.c' % CONFIG['OS_TARGET'].lower()]
  35. elif CONFIG['OS_TARGET'] == 'Darwin':
  36. OS_LIBS += ['-framework CoreServices']
  37. DEFINES['FD_SETSIZE'] = 10240
  38. DEFINES['_DARWIN_UNLIMITED_SELECT'] = True
  39. DEFINES.update(
  40. DARWIN=True,
  41. HAVE_BSD_FLOCK=True,
  42. HAVE_SOCKLEN_T=True,
  43. )
  44. SOURCES += [
  45. '/nsprpub/pr/src/md/unix/darwin.c',
  46. '/nsprpub/pr/src/md/unix/os_Darwin.s',
  47. ]
  48. if not CONFIG['MOZ_IOS']:
  49. DEFINES['HAVE_CRT_EXTERNS_H'] = True
  50. elif CONFIG['OS_TARGET'] == 'SunOS':
  51. DEFINES.update(
  52. HAVE_FCNTL_FILE_LOCKING=True,
  53. HAVE_SOCKLEN_T=True,
  54. _PR_HAVE_OFF64_T=True,
  55. _PR_INET6=True,
  56. )
  57. DEFINES['SOLARIS'] = True
  58. SOURCES += ['/nsprpub/pr/src/md/unix/solaris.c']
  59. if CONFIG['CPU_ARCH'] == 'x86_64':
  60. SOURCES += ['/nsprpub/pr/src/md/unix/os_SunOS_x86_64.s']
  61. DEFINES['USE_64'] = True
  62. elif CONFIG['CPU_ARCH'] == 'x86':
  63. SOURCES += ['/nsprpub/pr/src/md/unix/os_SunOS_x86.s']
  64. elif CONFIG['OS_TARGET'] == 'WINNT':
  65. OS_LIBS += [
  66. 'advapi32',
  67. 'ws2_32',
  68. 'mswsock',
  69. 'winmm',
  70. ]
  71. DEFINES.update(
  72. XP_PC=True,
  73. WIN32=True,
  74. # For historical reasons we use the WIN95 NSPR target instead of
  75. # WINNT.
  76. WIN95=True,
  77. WINNT=False,
  78. _PR_GLOBAL_THREADS_ONLY=True,
  79. )
  80. if CONFIG['CPU_ARCH'] == 'x86_64':
  81. DEFINES['_AMD64_'] = True
  82. else:
  83. DEFINES['_X86_'] = True
  84. else:
  85. error('Not a supported OS_TARGET for NSPR in moz.build: "%s". Use --with-system-nspr' % CONFIG['OS_TARGET'])
  86. LOCAL_INCLUDES += [
  87. '/config/external/nspr',
  88. '/nsprpub/pr/include',
  89. '/nsprpub/pr/include/private',
  90. ]
  91. SOURCES += [
  92. '/nsprpub/pr/src/io/prfdcach.c',
  93. '/nsprpub/pr/src/io/priometh.c',
  94. '/nsprpub/pr/src/io/pripv6.c',
  95. '/nsprpub/pr/src/io/prlayer.c',
  96. '/nsprpub/pr/src/io/prlog.c',
  97. '/nsprpub/pr/src/io/prmapopt.c',
  98. '/nsprpub/pr/src/io/prmmap.c',
  99. '/nsprpub/pr/src/io/prmwait.c',
  100. '/nsprpub/pr/src/io/prpolevt.c',
  101. '/nsprpub/pr/src/io/prprf.c',
  102. '/nsprpub/pr/src/io/prscanf.c',
  103. '/nsprpub/pr/src/io/prstdio.c',
  104. '/nsprpub/pr/src/linking/prlink.c',
  105. '/nsprpub/pr/src/malloc/prmalloc.c',
  106. '/nsprpub/pr/src/malloc/prmem.c',
  107. '/nsprpub/pr/src/md/prosdep.c',
  108. '/nsprpub/pr/src/memory/prseg.c',
  109. '/nsprpub/pr/src/memory/prshm.c',
  110. '/nsprpub/pr/src/memory/prshma.c',
  111. '/nsprpub/pr/src/misc/pralarm.c',
  112. '/nsprpub/pr/src/misc/pratom.c',
  113. '/nsprpub/pr/src/misc/praton.c',
  114. '/nsprpub/pr/src/misc/prcountr.c',
  115. '/nsprpub/pr/src/misc/prdtoa.c',
  116. '/nsprpub/pr/src/misc/prenv.c',
  117. '/nsprpub/pr/src/misc/prerr.c',
  118. '/nsprpub/pr/src/misc/prerror.c',
  119. '/nsprpub/pr/src/misc/prerrortable.c',
  120. '/nsprpub/pr/src/misc/prinit.c',
  121. '/nsprpub/pr/src/misc/prinrval.c',
  122. '/nsprpub/pr/src/misc/pripc.c',
  123. '/nsprpub/pr/src/misc/prlog2.c',
  124. '/nsprpub/pr/src/misc/prlong.c',
  125. '/nsprpub/pr/src/misc/prnetdb.c',
  126. '/nsprpub/pr/src/misc/prolock.c',
  127. '/nsprpub/pr/src/misc/prrng.c',
  128. '/nsprpub/pr/src/misc/prsystem.c',
  129. '/nsprpub/pr/src/misc/prthinfo.c',
  130. '/nsprpub/pr/src/misc/prtime.c',
  131. '/nsprpub/pr/src/misc/prtpool.c',
  132. '/nsprpub/pr/src/misc/prtrace.c',
  133. '/nsprpub/pr/src/threads/prcmon.c',
  134. '/nsprpub/pr/src/threads/prrwlock.c',
  135. '/nsprpub/pr/src/threads/prtpd.c',
  136. ]
  137. if CONFIG['OS_TARGET'] != 'WINNT':
  138. DEFINES['_PR_PTHREADS'] = True
  139. SOURCES += [
  140. '/nsprpub/pr/src/md/unix/unix.c',
  141. '/nsprpub/pr/src/md/unix/unix_errors.c',
  142. '/nsprpub/pr/src/md/unix/uxproces.c',
  143. '/nsprpub/pr/src/md/unix/uxrng.c',
  144. '/nsprpub/pr/src/md/unix/uxshm.c',
  145. '/nsprpub/pr/src/md/unix/uxwrap.c',
  146. '/nsprpub/pr/src/pthreads/ptio.c',
  147. '/nsprpub/pr/src/pthreads/ptmisc.c',
  148. '/nsprpub/pr/src/pthreads/ptsynch.c',
  149. '/nsprpub/pr/src/pthreads/ptthread.c',
  150. ]
  151. else:
  152. SOURCES += [
  153. '/nsprpub/pr/src/io/prdir.c',
  154. '/nsprpub/pr/src/io/prfile.c',
  155. '/nsprpub/pr/src/io/prio.c',
  156. '/nsprpub/pr/src/io/prsocket.c',
  157. '/nsprpub/pr/src/md/windows/ntgc.c',
  158. '/nsprpub/pr/src/md/windows/ntinrval.c',
  159. '/nsprpub/pr/src/md/windows/ntmisc.c',
  160. '/nsprpub/pr/src/md/windows/ntsec.c',
  161. '/nsprpub/pr/src/md/windows/ntsem.c',
  162. '/nsprpub/pr/src/md/windows/w32ipcsem.c',
  163. '/nsprpub/pr/src/md/windows/w32poll.c',
  164. '/nsprpub/pr/src/md/windows/w32rng.c',
  165. '/nsprpub/pr/src/md/windows/w32shm.c',
  166. '/nsprpub/pr/src/md/windows/w95cv.c',
  167. '/nsprpub/pr/src/md/windows/w95dllmain.c',
  168. '/nsprpub/pr/src/md/windows/w95io.c',
  169. '/nsprpub/pr/src/md/windows/w95sock.c',
  170. '/nsprpub/pr/src/md/windows/w95thred.c',
  171. '/nsprpub/pr/src/md/windows/win32_errors.c',
  172. '/nsprpub/pr/src/misc/pripcsem.c',
  173. '/nsprpub/pr/src/threads/combined/prucpu.c',
  174. '/nsprpub/pr/src/threads/combined/prucv.c',
  175. '/nsprpub/pr/src/threads/combined/prulock.c',
  176. '/nsprpub/pr/src/threads/combined/prustack.c',
  177. '/nsprpub/pr/src/threads/combined/pruthr.c',
  178. '/nsprpub/pr/src/threads/prcthr.c',
  179. '/nsprpub/pr/src/threads/prdump.c',
  180. '/nsprpub/pr/src/threads/prmon.c',
  181. '/nsprpub/pr/src/threads/prsem.c',
  182. ]
  183. EXPORTS.nspr += [
  184. '/nsprpub/pr/include/nspr.h',
  185. '/nsprpub/pr/include/pratom.h',
  186. '/nsprpub/pr/include/prbit.h',
  187. '/nsprpub/pr/include/prclist.h',
  188. '/nsprpub/pr/include/prcmon.h',
  189. '/nsprpub/pr/include/prcountr.h',
  190. '/nsprpub/pr/include/prcvar.h',
  191. '/nsprpub/pr/include/prdtoa.h',
  192. '/nsprpub/pr/include/prenv.h',
  193. '/nsprpub/pr/include/prerr.h',
  194. '/nsprpub/pr/include/prerror.h',
  195. '/nsprpub/pr/include/prinet.h',
  196. '/nsprpub/pr/include/prinit.h',
  197. '/nsprpub/pr/include/prinrval.h',
  198. '/nsprpub/pr/include/prio.h',
  199. '/nsprpub/pr/include/pripcsem.h',
  200. '/nsprpub/pr/include/prlink.h',
  201. '/nsprpub/pr/include/prlock.h',
  202. '/nsprpub/pr/include/prlog.h',
  203. '/nsprpub/pr/include/prlong.h',
  204. '/nsprpub/pr/include/prmem.h',
  205. '/nsprpub/pr/include/prmon.h',
  206. '/nsprpub/pr/include/prmwait.h',
  207. '/nsprpub/pr/include/prnetdb.h',
  208. '/nsprpub/pr/include/prolock.h',
  209. '/nsprpub/pr/include/prpdce.h',
  210. '/nsprpub/pr/include/prprf.h',
  211. '/nsprpub/pr/include/prproces.h',
  212. '/nsprpub/pr/include/prrng.h',
  213. '/nsprpub/pr/include/prrwlock.h',
  214. '/nsprpub/pr/include/prshm.h',
  215. '/nsprpub/pr/include/prshma.h',
  216. '/nsprpub/pr/include/prsystem.h',
  217. '/nsprpub/pr/include/prthread.h',
  218. '/nsprpub/pr/include/prtime.h',
  219. '/nsprpub/pr/include/prtpool.h',
  220. '/nsprpub/pr/include/prtrace.h',
  221. '/nsprpub/pr/include/prtypes.h',
  222. '/nsprpub/pr/include/prvrsion.h',
  223. '/nsprpub/pr/include/prwin16.h',
  224. ]
  225. EXPORTS.nspr.md += [
  226. '/nsprpub/pr/include/md/_darwin.cfg',
  227. '/nsprpub/pr/include/md/_freebsd.cfg',
  228. '/nsprpub/pr/include/md/_linux.cfg',
  229. '/nsprpub/pr/include/md/_netbsd.cfg',
  230. '/nsprpub/pr/include/md/_openbsd.cfg',
  231. '/nsprpub/pr/include/md/_solaris.cfg',
  232. '/nsprpub/pr/include/md/_win95.cfg',
  233. ]
  234. EXPORTS.nspr.private += [
  235. '/nsprpub/pr/include/private/pprio.h',
  236. '/nsprpub/pr/include/private/pprthred.h',
  237. '/nsprpub/pr/include/private/prpriv.h',
  238. ]