• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1// Copyright 2017 Google Inc. All rights reserved.
2//
3// Licensed under the Apache License, Version 2.0 (the "License");
4// you may not use this file except in compliance with the License.
5// You may obtain a copy of the License at
6//
7//     http://www.apache.org/licenses/LICENSE-2.0
8//
9// Unless required by applicable law or agreed to in writing, software
10// distributed under the License is distributed on an "AS IS" BASIS,
11// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12// See the License for the specific language governing permissions and
13// limitations under the License.
14
15subdirs = [
16    "Lib",
17]
18
19cc_defaults {
20    name: "py2-interp-defaults",
21    cflags: [
22        "-fwrapv",
23        "-O3",
24        "-Wall",
25        "-Wstrict-prototypes",
26        "-DPy_BUILD_CORE",
27        "-Werror",
28        "-Wno-invalid-source-encoding",
29        "-Wno-int-conversion",
30        "-Wno-missing-field-initializers",
31        "-Wno-null-pointer-arithmetic",
32        "-Wno-register",
33        "-Wno-shift-count-overflow",
34        "-Wno-sign-compare",
35        "-Wno-tautological-compare",
36        "-Wno-tautological-constant-out-of-range-compare",
37        "-Wno-unused-parameter",
38        "-Wno-unused-result",
39    ],
40    local_include_dirs: ["Include"],
41    target: {
42        android_arm: {
43            local_include_dirs: ["android_arm/pyconfig"],
44        },
45        android_arm64: {
46            local_include_dirs: ["android_arm64/pyconfig"],
47        },
48        android_x86: {
49            local_include_dirs: ["android_x86/pyconfig"],
50        },
51        linux_bionic: {
52            // NB linux_bionic is a 'host' architecture but it uses the bionic libc like 'android'
53            // targets so use the android pyconfig.
54            local_include_dirs: ["android_x86_64/pyconfig"],
55        },
56        android_x86_64: {
57            local_include_dirs: ["android_x86_64/pyconfig"],
58        },
59        // Regenerate include dirs with android_regen.sh
60        darwin_x86_64: {
61            local_include_dirs: ["darwin_x86_64/pyconfig"],
62            cflags: [
63                "-Wno-deprecated-declarations",
64                "-Wno-pointer-arith",
65            ],
66        },
67        linux_glibc_x86: {
68            enabled: false,
69        },
70        linux_glibc_x86_64: {
71            local_include_dirs: ["linux_x86_64/pyconfig"],
72            cflags: ["-Werror"],
73        },
74        windows: {
75            enabled: false,
76        },
77    },
78    host_supported: true,
79    compile_multilib: "both",
80    multilib: {
81        lib32: {
82            suffix: "32",
83        },
84        lib64: {
85            suffix: "64",
86        },
87    },
88}
89
90cc_library_static {
91    name: "py2-interp-parser",
92    defaults: ["py2-interp-defaults"],
93    srcs: [
94        "Parser/acceler.c",
95        "Parser/bitset.c",
96        "Parser/firstsets.c",
97        "Parser/grammar.c",
98        "Parser/grammar1.c",
99        "Parser/listnode.c",
100        "Parser/metagrammar.c",
101        "Parser/myreadline.c",
102        "Parser/node.c",
103        "Parser/parser.c",
104        "Parser/parsetok.c",
105        "Parser/pgen.c",
106        "Parser/tokenizer.c",
107    ],
108}
109
110cc_library_static {
111    name: "py2-interp-object",
112    defaults: ["py2-interp-defaults"],
113    srcs: [
114        "Objects/abstract.c",
115        "Objects/boolobject.c",
116        "Objects/bufferobject.c",
117        "Objects/bytes_methods.c",
118        "Objects/bytearrayobject.c",
119        "Objects/capsule.c",
120        "Objects/cellobject.c",
121        "Objects/classobject.c",
122        "Objects/cobject.c",
123        "Objects/codeobject.c",
124        "Objects/complexobject.c",
125        "Objects/descrobject.c",
126        "Objects/enumobject.c",
127        "Objects/exceptions.c",
128        "Objects/genobject.c",
129        "Objects/fileobject.c",
130        "Objects/floatobject.c",
131        "Objects/frameobject.c",
132        "Objects/funcobject.c",
133        "Objects/intobject.c",
134        "Objects/iterobject.c",
135        "Objects/listobject.c",
136        "Objects/longobject.c",
137        "Objects/dictobject.c",
138        "Objects/memoryobject.c",
139        "Objects/methodobject.c",
140        "Objects/moduleobject.c",
141        "Objects/object.c",
142        "Objects/obmalloc.c",
143        "Objects/rangeobject.c",
144        "Objects/setobject.c",
145        "Objects/sliceobject.c",
146        "Objects/stringobject.c",
147        "Objects/structseq.c",
148        "Objects/tupleobject.c",
149        "Objects/typeobject.c",
150        "Objects/weakrefobject.c",
151        "Objects/unicodeobject.c",
152        "Objects/unicodectype.c",
153    ],
154}
155
156cc_library_static {
157    name: "py2-interp-python",
158    defaults: ["py2-interp-defaults"],
159    target: {
160        linux: {
161            cflags: [
162                "-DPLATFORM=\"linux2\"",
163            ],
164        },
165        darwin_x86_64: {
166            cflags: [
167                "-DPLATFORM=\"darwin\"",
168            ],
169        },
170    },
171    srcs: [
172        "Python/_warnings.c",
173        "Python/Python-ast.c",
174        "Python/asdl.c",
175        "Python/ast.c",
176        "Python/bltinmodule.c",
177        "Python/ceval.c",
178        "Python/compile.c",
179        "Python/codecs.c",
180        "Python/errors.c",
181        "Python/frozen.c",
182        "Python/frozenmain.c",
183        "Python/future.c",
184        "Python/getargs.c",
185        "Python/getcompiler.c",
186        "Python/getcopyright.c",
187        "Python/getplatform.c",
188        "Python/getversion.c",
189        "Python/graminit.c",
190        "Python/import.c",
191        "Python/importdl.c",
192        "Python/marshal.c",
193        "Python/modsupport.c",
194        "Python/mystrtoul.c",
195        "Python/mysnprintf.c",
196        "Python/peephole.c",
197        "Python/pyarena.c",
198        "Python/pyctype.c",
199        "Python/pyfpe.c",
200        "Python/pymath.c",
201        "Python/pystate.c",
202        "Python/pythonrun.c",
203        "Python/random.c",
204        "Python/structmember.c",
205        "Python/symtable.c",
206        "Python/sysmodule.c",
207        "Python/traceback.c",
208        "Python/getopt.c",
209        "Python/pystrcmp.c",
210        "Python/pystrtod.c",
211        "Python/dtoa.c",
212        "Python/formatter_unicode.c",
213        "Python/formatter_string.c",
214        "Python/dynload_shlib.c",
215        "Python/thread.c",
216    ],
217}
218
219cc_defaults {
220    name: "py2-launcher-defaults",
221    defaults: ["py2-interp-defaults"],
222    cflags: [
223        "-DVERSION=\"2.7\"",
224        "-DVPATH=\"\"",
225        "-DPREFIX=\"\"",
226        "-DEXEC_PREFIX=\"\"",
227        "-DPYTHONPATH=\"..:\"",
228        "-DANDROID_SKIP_ZIP_PATH",
229        "-DANDROID_SKIP_EXEC_PREFIX_PATH",
230        "-DANDROID_LIB_PYTHON_PATH=\"internal/stdlib\"",
231        "-DDATE=\"Dec 31 1969\"",
232        "-DTIME=\"23:59:59\"",
233    ],
234    static_libs: [
235        "libbase",
236        "libcrypto_static",
237        "libexpat",
238        "liblog",
239        "libssl",
240        "libz",
241    ],
242    target: {
243        linux_glibc_x86_64: {
244            host_ldlibs: ["-lutil"],
245        },
246        darwin: {
247            host_ldlibs: [
248                "-framework SystemConfiguration",
249                "-framework CoreFoundation",
250            ],
251        },
252        host: {
253            static_libs: ["libsqlite"],
254        },
255        // Use shared libsqlite for device side, otherwise
256        // the executable size will be really huge.
257        android: {
258            shared_libs: ["libsqlite"],
259        },
260    },
261}
262
263cc_library_static {
264    name: "py2-launcher-lib",
265    defaults: ["py2-launcher-defaults"],
266    srcs: [
267        "Modules/gcmodule.c",
268        "Modules/getpath.c",
269        "Modules/config.c",
270        "Modules/getbuildinfo.c",
271        // Default built-in extension py2-c-modules.
272        "Modules/threadmodule.c",
273        "Modules/signalmodule.c",
274        "Modules/posixmodule.c",
275        "Modules/errnomodule.c",
276        "Modules/pwdmodule.c",
277        "Modules/_sre.c",
278        "Modules/_codecsmodule.c",
279        "Modules/_weakref.c",
280        "Modules/zipimport.c",
281        "Modules/symtablemodule.c",
282        "Modules/main.c",
283    ],
284    // NOTE: Please update Modules/config.c if new lib get added in the static_libs.
285    whole_static_libs: [
286        // Be careful the order of these three static libraries below due to
287        // missing symbols issues.
288        "py2-interp-object",
289        "py2-interp-python",
290        "py2-interp-parser",
291        "py2-c-module-array",
292        "py2-c-module-cmath",
293        "py2-c-module-math",
294        "py2-c-module-_struct",
295        "py2-c-module-time",
296        "py2-c-module-operator",
297        "py2-c-module-_testcapi",
298        "py2-c-module-_random",
299        "py2-c-module-_collections",
300        "py2-c-module-_heapq",
301        "py2-c-module-itertools",
302        "py2-c-module-strop",
303        "py2-c-module-_functools",
304        "py2-c-module-datetime",
305        "py2-c-module-_bisect",
306        "py2-c-module-unicodedata",
307        "py2-c-module-_io",
308        "py2-c-module-fcntl",
309        "py2-c-module-select",
310        "py2-c-module-mmap",
311        "py2-c-module-_csv",
312        "py2-c-module-_socket",
313        "py2-c-module-termios",
314        "py2-c-module-_ssl",
315        "py2-c-module-_md5",
316        "py2-c-module-_sha",
317        "py2-c-module-_sha256",
318        "py2-c-module-_sha512",
319        "py2-c-module-binascii",
320        "py2-c-module-parser",
321        "py2-c-module-cStringIO",
322        "py2-c-module-cPickle",
323        "py2-c-module-xxsubtype",
324        "py2-c-module-future_builtins",
325        "py2-c-module-_json",
326        "py2-c-module-_hotshot",
327        "py2-c-module-_lsprof",
328        "py2-c-module-grp",
329        "py2-c-module-syslog",
330        "py2-c-module-audioop",
331        "py2-c-module-resource",
332        "py2-c-module-_multibytecodec",
333        "py2-c-module-_codecs_kr",
334        "py2-c-module-_codecs_jp",
335        "py2-c-module-_codecs_cn",
336        "py2-c-module-_codecs_tw",
337        "py2-c-module-_codecs_hk",
338        "py2-c-module-_codecs_iso2022",
339        "py2-c-module-_multiprocessing",
340        "py2-c-module-zlib",
341        "py2-c-module-pyexpat",
342        "py2-c-module-_sqlite3",
343        "py2-c-module-_ctypes_test",
344        "py2-c-module-_ctypes",
345    ],
346    target: {
347        darwin: {
348            whole_static_libs: ["py2-c-module-_scproxy"],
349        },
350    },
351}
352
353cc_binary {
354    name: "py2-launcher",
355    defaults: ["py2-launcher-defaults"],
356    srcs: ["Launcher/launcher_main.cpp"],
357    static_libs: ["py2-launcher-lib"],
358}
359
360cc_binary {
361    name: "py2-launcher-autorun",
362    defaults: ["py2-launcher-defaults"],
363    srcs: ["Launcher/launcher_main.cpp"],
364    static_libs: ["py2-launcher-lib"],
365    cflags: ["-DANDROID_AUTORUN"],
366}
367
368python_binary_host {
369    name: "py2-cmd",
370    autorun: false,
371    version: {
372        py2: {
373            enabled: true,
374            embedded_launcher: true,
375        },
376        py3: {
377            enabled: false,
378        },
379    },
380}
381
382// Enabled extension py2-c-modules.
383
384cc_library_static {
385    name: "py2-c-module-array",
386    defaults: ["py2-interp-defaults"],
387    srcs: [
388        "Modules/arraymodule.c",
389    ],
390}
391
392cc_library_static {
393    name: "py2-c-module-cmath",
394    defaults: ["py2-interp-defaults"],
395    srcs: [
396        "Modules/cmathmodule.c",
397        "Modules/_math.c",
398    ],
399}
400
401cc_library_static {
402    name: "py2-c-module-math",
403    defaults: ["py2-interp-defaults"],
404    srcs: [
405        "Modules/mathmodule.c",
406        "Modules/_math.c",
407    ],
408}
409
410cc_library_static {
411    name: "py2-c-module-_struct",
412    defaults: ["py2-interp-defaults"],
413    srcs: [
414        "Modules/_struct.c",
415    ],
416}
417
418cc_library_static {
419    name: "py2-c-module-time",
420    defaults: ["py2-interp-defaults"],
421    srcs: [
422        "Modules/timemodule.c",
423    ],
424}
425
426cc_library_static {
427    name: "py2-c-module-operator",
428    defaults: ["py2-interp-defaults"],
429    srcs: [
430        "Modules/operator.c",
431    ],
432}
433
434cc_library_static {
435    name: "py2-c-module-_testcapi",
436    defaults: ["py2-interp-defaults"],
437    srcs: [
438        "Modules/_testcapimodule.c",
439    ],
440}
441
442cc_library_static {
443    name: "py2-c-module-_random",
444    defaults: ["py2-interp-defaults"],
445    srcs: [
446        "Modules/_randommodule.c",
447    ],
448}
449
450cc_library_static {
451    name: "py2-c-module-_collections",
452    defaults: ["py2-interp-defaults"],
453    srcs: [
454        "Modules/_collectionsmodule.c",
455    ],
456}
457
458cc_library_static {
459    name: "py2-c-module-_heapq",
460    defaults: ["py2-interp-defaults"],
461    srcs: [
462        "Modules/_heapqmodule.c",
463    ],
464}
465
466cc_library_static {
467    name: "py2-c-module-itertools",
468    defaults: ["py2-interp-defaults"],
469    srcs: [
470        "Modules/itertoolsmodule.c",
471    ],
472}
473
474cc_library_static {
475    name: "py2-c-module-strop",
476    defaults: ["py2-interp-defaults"],
477    srcs: [
478        "Modules/stropmodule.c",
479    ],
480}
481
482cc_library_static {
483    name: "py2-c-module-_functools",
484    defaults: ["py2-interp-defaults"],
485    srcs: [
486        "Modules/_functoolsmodule.c",
487    ],
488}
489
490cc_library_static {
491    name: "py2-c-module-datetime",
492    defaults: ["py2-interp-defaults"],
493    srcs: [
494        "Modules/datetimemodule.c",
495    ],
496}
497
498cc_library_static {
499    name: "py2-c-module-_bisect",
500    defaults: ["py2-interp-defaults"],
501    srcs: [
502        "Modules/_bisectmodule.c",
503    ],
504}
505
506cc_library_static {
507    name: "py2-c-module-unicodedata",
508    defaults: ["py2-interp-defaults"],
509    srcs: [
510        "Modules/unicodedata.c",
511    ],
512}
513
514cc_library_static {
515    name: "py2-c-module-_io",
516    defaults: ["py2-interp-defaults"],
517    srcs: [
518        "Modules/_io/bufferedio.c",
519        "Modules/_io/bytesio.c",
520        "Modules/_io/fileio.c",
521        "Modules/_io/iobase.c",
522        "Modules/_io/_iomodule.c",
523        "Modules/_io/stringio.c",
524        "Modules/_io/textio.c",
525    ],
526    local_include_dirs: [
527        "Modules/_io",
528    ],
529}
530
531cc_library_static {
532    name: "py2-c-module-fcntl",
533    defaults: ["py2-interp-defaults"],
534    srcs: [
535        "Modules/fcntlmodule.c",
536    ],
537}
538
539cc_library_static {
540    name: "py2-c-module-select",
541    defaults: ["py2-interp-defaults"],
542    srcs: [
543        "Modules/selectmodule.c",
544    ],
545}
546
547cc_library_static {
548    name: "py2-c-module-mmap",
549    defaults: ["py2-interp-defaults"],
550    srcs: [
551        "Modules/mmapmodule.c",
552    ],
553}
554
555cc_library_static {
556    name: "py2-c-module-_csv",
557    defaults: ["py2-interp-defaults"],
558    srcs: [
559        "Modules/_csv.c",
560    ],
561}
562
563cc_library_static {
564    name: "py2-c-module-_socket",
565    defaults: ["py2-interp-defaults"],
566    srcs: [
567        "Modules/socketmodule.c",
568        "Modules/timemodule.c",
569    ],
570}
571
572cc_library_static {
573    name: "py2-c-module-termios",
574    defaults: ["py2-interp-defaults"],
575    srcs: [
576        "Modules/termios.c",
577    ],
578}
579
580cc_library_static {
581    name: "py2-c-module-_ssl",
582    defaults: ["py2-interp-defaults"],
583    srcs: ["Modules/_ssl.c"],
584    cflags: ["-Wno-incompatible-pointer-types-discards-qualifiers"],
585    static_libs: [
586        "libssl",
587        "libcrypto_static",
588    ],
589}
590
591cc_library_static {
592    name: "py2-c-module-_md5",
593    defaults: ["py2-interp-defaults"],
594    srcs: [
595        "Modules/md5module.c",
596        "Modules/md5.c",
597    ],
598}
599
600cc_library_static {
601    name: "py2-c-module-_sha",
602    defaults: ["py2-interp-defaults"],
603    srcs: [
604        "Modules/shamodule.c",
605    ],
606}
607
608cc_library_static {
609    name: "py2-c-module-_sha256",
610    defaults: ["py2-interp-defaults"],
611    srcs: [
612        "Modules/sha256module.c",
613    ],
614}
615
616cc_library_static {
617    name: "py2-c-module-_sha512",
618    defaults: ["py2-interp-defaults"],
619    srcs: [
620        "Modules/sha512module.c",
621    ],
622}
623
624cc_library_static {
625    name: "py2-c-module-binascii",
626    defaults: ["py2-interp-defaults"],
627    srcs: [
628        "Modules/binascii.c",
629    ],
630}
631
632cc_library_static {
633    name: "py2-c-module-parser",
634    defaults: ["py2-interp-defaults"],
635    srcs: [
636        "Modules/parsermodule.c",
637    ],
638}
639
640cc_library_static {
641    name: "py2-c-module-cStringIO",
642    defaults: ["py2-interp-defaults"],
643    srcs: [
644        "Modules/cStringIO.c",
645    ],
646}
647
648cc_library_static {
649    name: "py2-c-module-cPickle",
650    defaults: ["py2-interp-defaults"],
651    srcs: [
652        "Modules/cPickle.c",
653    ],
654}
655
656cc_library_static {
657    name: "py2-c-module-xxsubtype",
658    defaults: ["py2-interp-defaults"],
659    srcs: [
660        "Modules/xxsubtype.c",
661    ],
662}
663
664cc_library_static {
665    name: "py2-c-module-future_builtins",
666    defaults: ["py2-interp-defaults"],
667    srcs: [
668        "Modules/future_builtins.c",
669    ],
670}
671
672cc_library_static {
673    name: "py2-c-module-_json",
674    defaults: ["py2-interp-defaults"],
675    srcs: [
676        "Modules/_json.c",
677    ],
678}
679
680cc_library_static {
681    name: "py2-c-module-_hotshot",
682    defaults: ["py2-interp-defaults"],
683    srcs: [
684        "Modules/_hotshot.c",
685    ],
686}
687
688cc_library_static {
689    name: "py2-c-module-_lsprof",
690    defaults: ["py2-interp-defaults"],
691    srcs: [
692        "Modules/_lsprof.c",
693        "Modules/rotatingtree.c",
694    ],
695}
696
697cc_library_static {
698    name: "py2-c-module-grp",
699    defaults: ["py2-interp-defaults"],
700    srcs: [
701        "Modules/grpmodule.c",
702        "Modules/rotatingtree.c",
703    ],
704}
705
706cc_library_static {
707    name: "py2-c-module-syslog",
708    defaults: ["py2-interp-defaults"],
709    srcs: [
710        "Modules/syslogmodule.c",
711    ],
712}
713
714cc_library_static {
715    name: "py2-c-module-audioop",
716    defaults: ["py2-interp-defaults"],
717    srcs: [
718        "Modules/audioop.c",
719    ],
720}
721
722cc_library_static {
723    name: "py2-c-module-resource",
724    defaults: ["py2-interp-defaults"],
725    srcs: [
726        "Modules/resource.c",
727    ],
728}
729
730cc_library_static {
731    name: "py2-c-module-_multibytecodec",
732    defaults: ["py2-interp-defaults"],
733    srcs: [
734        "Modules/cjkcodecs/multibytecodec.c",
735    ],
736}
737
738cc_library_static {
739    name: "py2-c-module-_codecs_kr",
740    defaults: ["py2-interp-defaults"],
741    srcs: ["Modules/cjkcodecs/_codecs_kr.c"],
742}
743
744cc_library_static {
745    name: "py2-c-module-_codecs_jp",
746    defaults: ["py2-interp-defaults"],
747    srcs: ["Modules/cjkcodecs/_codecs_jp.c"],
748}
749
750cc_library_static {
751    name: "py2-c-module-_codecs_cn",
752    defaults: ["py2-interp-defaults"],
753    srcs: ["Modules/cjkcodecs/_codecs_cn.c"],
754}
755
756cc_library_static {
757    name: "py2-c-module-_codecs_tw",
758    defaults: ["py2-interp-defaults"],
759    srcs: ["Modules/cjkcodecs/_codecs_tw.c"],
760}
761
762cc_library_static {
763    name: "py2-c-module-_codecs_hk",
764    defaults: ["py2-interp-defaults"],
765    srcs: ["Modules/cjkcodecs/_codecs_hk.c"],
766}
767
768cc_library_static {
769    name: "py2-c-module-_codecs_iso2022",
770    defaults: ["py2-interp-defaults"],
771    srcs: ["Modules/cjkcodecs/_codecs_iso2022.c"],
772}
773
774cc_library_static {
775    name: "py2-c-module-_multiprocessing",
776    defaults: ["py2-interp-defaults"],
777    srcs: [
778        "Modules/_multiprocessing/multiprocessing.c",
779        "Modules/_multiprocessing/semaphore.c",
780        "Modules/_multiprocessing/socket_connection.c",
781    ],
782}
783
784cc_library_static {
785    name: "py2-c-module-zlib",
786    defaults: [
787        "py2-interp-defaults",
788    ],
789    cflags: [
790        "-DUSE_ZLIB_CRC32",
791    ],
792    srcs: [
793        "Modules/zlibmodule.c",
794    ],
795    static_libs: [
796        "libz",
797    ],
798}
799
800cc_library_static {
801    name: "py2-c-module-pyexpat",
802    defaults: [
803        "py2-interp-defaults",
804    ],
805    cflags: [
806        "-DUSE_PYEXPAT_CAPI",
807    ],
808    srcs: [
809        "Modules/pyexpat.c",
810    ],
811    static_libs: [
812        "libexpat",
813    ],
814}
815
816cc_library_static {
817    name: "py2-c-module-_sqlite3",
818    defaults: [
819        "py2-interp-defaults",
820    ],
821    cflags: [
822        "-DMODULE_NAME=\"sqlite3\"",
823        "-DSQLITE_OMIT_LOAD_EXTENSION",
824        "-Wno-format-security",
825        "-Wno-type-limits",
826        "-Wno-char-subscripts",
827    ],
828    local_include_dirs: [
829        "Modules/_sqlite",
830    ],
831    srcs: [
832        "Modules/_sqlite/cache.c",
833        "Modules/_sqlite/connection.c",
834        "Modules/_sqlite/cursor.c",
835        "Modules/_sqlite/microprotocols.c",
836        "Modules/_sqlite/module.c",
837        "Modules/_sqlite/prepare_protocol.c",
838        "Modules/_sqlite/row.c",
839        "Modules/_sqlite/statement.c",
840        "Modules/_sqlite/util.c",
841    ],
842    target: {
843        host: {
844            static_libs: [
845                "libsqlite",
846            ],
847        },
848        android: {
849            shared_libs: [
850                "libsqlite",
851            ],
852        },
853    },
854}
855
856cc_library_static {
857    name: "py2-c-module-_ctypes_test",
858    defaults: ["py2-interp-defaults"],
859    srcs: ["Modules/_ctypes/_ctypes_test.c"],
860}
861
862cc_library_static {
863    name: "py2-c-module-_ctypes",
864    defaults: [
865        "py2-interp-defaults",
866    ],
867    local_include_dirs: [
868        "Modules/_ctypes/libffi/include",
869    ],
870    srcs: [
871        "Modules/_ctypes/_ctypes.c",
872        "Modules/_ctypes/callbacks.c",
873        "Modules/_ctypes/callproc.c",
874        "Modules/_ctypes/stgdict.c",
875        "Modules/_ctypes/cfield.c",
876        "Modules/_ctypes/libffi/src/prep_cif.c",
877        "Modules/_ctypes/libffi/src/closures.c",
878    ],
879    arch: {
880        x86_64: {
881            local_include_dirs: [
882                "Modules/_ctypes/libffi/src/x86",
883            ],
884            srcs: [
885                "Modules/_ctypes/libffi/src/x86/ffi64.c",
886                "Modules/_ctypes/libffi/src/x86/ffi.c",
887                "Modules/_ctypes/libffi/src/x86/sysv.S",
888            ],
889        },
890        x86: {
891            local_include_dirs: [
892                "Modules/_ctypes/libffi/src/x86",
893            ],
894            srcs: [
895                "Modules/_ctypes/libffi/src/x86/ffi.c",
896                "Modules/_ctypes/libffi/src/x86/sysv.S",
897            ],
898        },
899        arm: {
900            local_include_dirs: [
901                "android_arm/libffi",
902                "Modules/_ctypes/libffi/src/arm",
903            ],
904            srcs: [
905                "Modules/_ctypes/libffi/src/arm/ffi.c",
906                "Modules/_ctypes/libffi/src/arm/sysv.S",
907                "Modules/_ctypes/libffi/src/arm/trampoline.S",
908            ],
909        },
910        arm64: {
911            // arithmetic on a pointer in _ctypes/libffi/src/aarch64/ffi.c
912            cflags: ["-Wno-pointer-arith"],
913            local_include_dirs: [
914                "android_arm64/libffi",
915                "Modules/_ctypes/libffi/src/aarch64",
916            ],
917            srcs: [
918                "Modules/_ctypes/libffi/src/aarch64/ffi.c",
919                "Modules/_ctypes/libffi/src/aarch64/sysv.S",
920            ],
921        },
922    },
923    target: {
924        // Regenerate include dirs with android_regen.sh
925        darwin_x86_64: {
926            local_include_dirs: ["darwin_x86_64/libffi"],
927            srcs: [
928                "Modules/_ctypes/libffi/src/x86/darwin.S",
929                "Modules/_ctypes/libffi/src/x86/darwin64.S",
930            ],
931        },
932        linux_bionic: {
933            local_include_dirs: ["linux_x86_64/libffi"],
934            srcs: [
935                "Modules/_ctypes/libffi/src/x86/unix64.S",
936            ],
937        },
938        linux_glibc_x86_64: {
939            local_include_dirs: ["linux_x86_64/libffi"],
940            srcs: [
941                "Modules/_ctypes/libffi/src/x86/unix64.S",
942            ],
943        },
944        android_x86: {
945            local_include_dirs: ["android_x86/libffi"],
946            srcs: [
947                "Modules/_ctypes/libffi/src/x86/win32.S",
948            ],
949        },
950        android_x86_64: {
951            local_include_dirs: ["android_x86_64/libffi"],
952            srcs: [
953                "Modules/_ctypes/libffi/src/x86/unix64.S",
954            ],
955        },
956    },
957}
958
959cc_library_host_static {
960    name: "py2-c-module-_scproxy",
961    defaults: ["py2-interp-defaults"],
962    srcs: ["Mac/Modules/_scproxy.c"],
963    target: {
964        linux: {
965            enabled: false,
966        },
967    },
968}
969