Mercurial > hgrepos > Python > libs > ConfigMix
annotate windows-dev/Configure.py @ 654:0d6673d06c2c
Add support for using "tomllib" (in Python's stdlib since 3.11) and "tomli" TOML packages.
They are preferred if they are found to be installed.
But note that the declared dependency for the "toml" extra nevertheless
is the "toml" package. Because it is available for all supported Python
versions.
So use Python 3.11+ or install "tomli" manually if you want to use the
alternate packages.
| author | Franz Glasner <fzglas.hg@dom66.de> |
|---|---|
| date | Thu, 19 May 2022 22:10:59 +0200 |
| parents | 8efdb6357428 |
| children |
| rev | line source |
|---|---|
|
570
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
1 # |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
2 # |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
3 # Important Triplets: |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
4 # |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
5 # clang-cl (clang-cl /clang:-dumpmachine) |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
6 # |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
7 # x86_64-pc-windows-msvc |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
8 # i386-pc-windows-msvc |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
9 # |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
10 # clang on FreeBSD (clang -dumpmachine): |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
11 # |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
12 # x86_64-unknown-freebsd12.2 |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
13 # i386-unknown-freebsd12.2 |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
14 # |
| 572 | 15 # NOTE: gcc also knows "-dumpmachine" |
|
570
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
16 # |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
17 # |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
18 |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
19 from __future__ import print_function, absolute_import |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
20 |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
21 import argparse |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
22 import collections |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
23 import datetime |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
24 import copy |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
25 import getopt |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
26 import os |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
27 import sys |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
28 |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
29 import ninja_syntax |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
30 |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
31 tool = build = host = None |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
32 |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
33 # |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
34 # Global build variables (ordered because they must be written ordered |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
35 # -- and with simple attribute access |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
36 # |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
37 class BuildVars(collections.OrderedDict): |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
38 |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
39 def __getattr__(self, n): |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
40 try: |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
41 return self[n] |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
42 except KeyError: |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
43 raise AttributeError(n) |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
44 |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
45 def __setattr__(self, n, v): |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
46 # private v |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
47 if n.startswith("_OrderedDict__"): |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
48 return super(BuildVars, self).__setattr__(n, v) |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
49 self[n] = v |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
50 |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
51 |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
52 def make_obj_name(name, newext): |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
53 bn = os.path.basename(name) |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
54 if not bn: |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
55 return bn |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
56 root, ext = os.path.splitext(bn) |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
57 return root + newext |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
58 |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
59 options = argparse.Namespace( |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
60 user_includes = [], |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
61 sys_includes = [], |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
62 sys_libpath = [], |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
63 user_libpath = [], |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
64 link_with_python = None, |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
65 python_limited_api = None, |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
66 ) |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
67 |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
68 gbv = BuildVars() |
|
574
0c9169de6e3a
Cross-building for Windows 64-bit
Franz Glasner <fzglas.hg@dom66.de>
parents:
573
diff
changeset
|
69 gbv.intdir = "build/_builddir-test/tmp" |
|
0c9169de6e3a
Cross-building for Windows 64-bit
Franz Glasner <fzglas.hg@dom66.de>
parents:
573
diff
changeset
|
70 gbv.srcdir = "." |
|
570
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
71 gbv.builddir = "$intdir" |
|
574
0c9169de6e3a
Cross-building for Windows 64-bit
Franz Glasner <fzglas.hg@dom66.de>
parents:
573
diff
changeset
|
72 gbv.outdir = "$intdir/out" |
|
570
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
73 |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
74 opts, args = getopt.getopt( |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
75 sys.argv[1:], |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
76 "B:H:t:I:L:", |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
77 ["build=", |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
78 "host=", |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
79 "tool=", |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
80 "include=", |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
81 "libpath=", |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
82 "sys-include=", |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
83 "sys-libpath=", |
|
574
0c9169de6e3a
Cross-building for Windows 64-bit
Franz Glasner <fzglas.hg@dom66.de>
parents:
573
diff
changeset
|
84 "CC=", |
|
570
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
85 "LINK=", |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
86 "intdir=", # intermediate files |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
87 "builddir=", # Ninja builddir |
|
574
0c9169de6e3a
Cross-building for Windows 64-bit
Franz Glasner <fzglas.hg@dom66.de>
parents:
573
diff
changeset
|
88 "outdir=", # The built objects |
|
570
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
89 "link-with-python=", # link with libpython |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
90 "python-limited-api=", # Use Py_LIMITED_API |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
91 ]) |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
92 for opt, val in opts: |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
93 if opt in ("-t", "--tool"): |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
94 if tool is None: |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
95 tool = argparse.Namespace(local=False, msvc=False, clang=False) |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
96 if val == "msvc": |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
97 tool.msvc = True |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
98 tool.compile_only = "/c" |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
99 tool.define_format = "/D {}" |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
100 tool.include_format = "/I {}" |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
101 tool.lib_format = "{}" |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
102 tool.libpath_format = "/libpath:{}" |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
103 tool.dependencies = "msvc" |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
104 elif val == "clang-cl": |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
105 tool.msvc = tool.clang = True |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
106 tool.compile_only = "/c" |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
107 tool.define_format = "/D {}" |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
108 tool.include_format = "/I {}" |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
109 tool.lib_format = "{}" |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
110 tool.libpath_format = "/libpath:{}" |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
111 tool.dependencies = "msvc" |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
112 elif val == "clang": |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
113 tool.clang = True |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
114 tool.compile_only = "-c" |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
115 tool.define_format = "-D{}" |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
116 tool.include_format = "-I{}" |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
117 tool.lib_format = "-l{}" |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
118 tool.libpath_format = "-L{}" |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
119 tool.dependencies = "gcc" |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
120 elif val in ("local", "posix"): |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
121 tool.local = True |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
122 tool.compile_only = "-c" |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
123 tool.define_format = "-D{}" |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
124 tool.include_format = "-I{}" |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
125 tool.lib_format = "-l{}" |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
126 tool.libpath_format = "-L{}" |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
127 tool.dependencies = "gcc" |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
128 else: |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
129 raise getopt.GetoptError("unknown tool value: {}".format(val), opt) |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
130 elif opt in ("-B", "--build"): |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
131 build = argparse.Namespace(type=None, |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
132 posix=False, windows=False, |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
133 pathmod=None) |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
134 if val == "windows": |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
135 # build on Windows with clang-cl |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
136 build.windows = True |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
137 build.type = "windows" |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
138 elif val == "posix": |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
139 build.posix = True |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
140 build.type = "posix" |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
141 else: |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
142 raise getopt.GetoptError("unknwon build value: {}".format(val), |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
143 opt) |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
144 elif opt in ("-H", "--host"): |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
145 if host is None: |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
146 host = argparse.Namespace(windows=False) |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
147 if val == "windows": |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
148 host.type = "windows" |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
149 host.windows = True |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
150 host.posix = False |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
151 host.objext = ".obj" |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
152 host.pydext = ".pyd" |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
153 elif val == "posix": |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
154 host.type = "posix" |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
155 host.windows = False |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
156 host.posix = True |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
157 host.objext = ".o" |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
158 host.pydext = ".so" |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
159 else: |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
160 raise getopt.GetoptError("unknown host value: {}".format(val), |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
161 opt) |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
162 elif opt in ("-I", "--include"): |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
163 options.user_includes.append(val) |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
164 elif opt in ("-L", "--libpath"): |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
165 options.user_libpath.append(val) |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
166 elif opt == "--sys-include": |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
167 options.sys_includes.append(val) |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
168 elif opt == "--sys-libpath": |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
169 options.sys_libpath.append(val) |
|
574
0c9169de6e3a
Cross-building for Windows 64-bit
Franz Glasner <fzglas.hg@dom66.de>
parents:
573
diff
changeset
|
170 elif opt == "--CC": |
|
0c9169de6e3a
Cross-building for Windows 64-bit
Franz Glasner <fzglas.hg@dom66.de>
parents:
573
diff
changeset
|
171 gbv.cc = val |
|
570
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
172 elif opt == "--LINK": |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
173 gbv.link = val |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
174 elif opt == "--intdir": |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
175 gbv.intdir = val |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
176 elif opt == "--builddir": |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
177 gbv.builddir = val |
|
574
0c9169de6e3a
Cross-building for Windows 64-bit
Franz Glasner <fzglas.hg@dom66.de>
parents:
573
diff
changeset
|
178 elif opt == "--outdir": |
|
0c9169de6e3a
Cross-building for Windows 64-bit
Franz Glasner <fzglas.hg@dom66.de>
parents:
573
diff
changeset
|
179 gbv.outdir = val |
|
570
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
180 elif opt == "--link-with-python": |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
181 options.link_with_python = val |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
182 elif opt == "--python-limited-api": |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
183 if val.lower().startswith("0x"): |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
184 options.python_limited_api = val |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
185 else: |
|
574
0c9169de6e3a
Cross-building for Windows 64-bit
Franz Glasner <fzglas.hg@dom66.de>
parents:
573
diff
changeset
|
186 # Here we are Python 3.7+ when using the limited API |
|
0c9169de6e3a
Cross-building for Windows 64-bit
Franz Glasner <fzglas.hg@dom66.de>
parents:
573
diff
changeset
|
187 options.python_limited_api = "0x03070000" |
|
570
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
188 else: |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
189 raise getopt.GetoptError("Unhandled option `{}'".format(opt), opt) |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
190 |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
191 if tool is None: |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
192 print("ERROR: no tool given", file=sys.stderr) |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
193 sys.exit(1) |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
194 |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
195 if build.windows and host.posix: |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
196 print("ERROR: cross-compiling on Windows not supported", file=sys.stderr) |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
197 sys.exit(1) |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
198 |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
199 if build.windows: |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
200 import ntpath as pathmod |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
201 else: |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
202 import posixpath as pathmod |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
203 build.pathmod = pathmod |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
204 |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
205 if tool.msvc: |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
206 if tool.clang: |
|
574
0c9169de6e3a
Cross-building for Windows 64-bit
Franz Glasner <fzglas.hg@dom66.de>
parents:
573
diff
changeset
|
207 if not getattr(gbv, "cc", None): |
|
0c9169de6e3a
Cross-building for Windows 64-bit
Franz Glasner <fzglas.hg@dom66.de>
parents:
573
diff
changeset
|
208 gbv.cc = "clang-cl" |
|
570
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
209 if not getattr(gbv, "link", None): |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
210 gbv.link = "lld-link" |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
211 else: |
|
574
0c9169de6e3a
Cross-building for Windows 64-bit
Franz Glasner <fzglas.hg@dom66.de>
parents:
573
diff
changeset
|
212 gbv.cc = "cl" |
|
570
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
213 gbv.link = "link" |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
214 elif tool.clang: |
|
574
0c9169de6e3a
Cross-building for Windows 64-bit
Franz Glasner <fzglas.hg@dom66.de>
parents:
573
diff
changeset
|
215 gbv.cc = "clang" |
|
0c9169de6e3a
Cross-building for Windows 64-bit
Franz Glasner <fzglas.hg@dom66.de>
parents:
573
diff
changeset
|
216 gbv.link = "clang" # link C through the compiler |
|
570
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
217 elif tool.local: |
|
574
0c9169de6e3a
Cross-building for Windows 64-bit
Franz Glasner <fzglas.hg@dom66.de>
parents:
573
diff
changeset
|
218 gbv.cc = "cc" |
|
0c9169de6e3a
Cross-building for Windows 64-bit
Franz Glasner <fzglas.hg@dom66.de>
parents:
573
diff
changeset
|
219 gbv.link = "cc" # link through the compiler |
|
570
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
220 else: |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
221 raise RuntimeError("tool condition is not handled") |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
222 |
|
574
0c9169de6e3a
Cross-building for Windows 64-bit
Franz Glasner <fzglas.hg@dom66.de>
parents:
573
diff
changeset
|
223 speedups_sources = [ |
|
0c9169de6e3a
Cross-building for Windows 64-bit
Franz Glasner <fzglas.hg@dom66.de>
parents:
573
diff
changeset
|
224 "$srcdir/configmix/_speedups.c", |
|
570
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
225 ] |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
226 |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
227 ccflags = [] |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
228 ccwarnings = [] |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
229 ldflags = [] |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
230 |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
231 defines = [ |
|
574
0c9169de6e3a
Cross-building for Windows 64-bit
Franz Glasner <fzglas.hg@dom66.de>
parents:
573
diff
changeset
|
232 # "PY_SSIZE_T_CLEAN", # in the source |
|
570
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
233 "HAVE_THREADS", |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
234 ] |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
235 if options.python_limited_api: |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
236 defines.append("Py_LIMITED_API={}".format(options.python_limited_api)) |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
237 |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
238 # XXX TBD: handle debug/release build _DEBUG/NDEBUG |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
239 |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
240 includes = [] |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
241 includes.extend(options.sys_includes) |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
242 includes.extend(options.user_includes) |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
243 |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
244 |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
245 libpath = [] |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
246 libpath.extend(options.sys_libpath) |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
247 libpath.extend(options.user_libpath) |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
248 |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
249 libs = [] |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
250 if host.windows: |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
251 if tool.msvc: |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
252 # automatically included via #pragma |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
253 # libs.append("python3.lib") |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
254 pass |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
255 else: |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
256 if options.link_with_python: |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
257 libs.append(options.link_with_python) |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
258 |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
259 if host.windows: |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
260 defines.append("WIN32") |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
261 # XXX TBD Handle arch -> WIN64 |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
262 defines.append("WIN64") |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
263 defines.append("_WINDOWS") |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
264 # for a user dll |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
265 defines.append("_USRDLL") |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
266 defines.append("_WINDLL") |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
267 |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
268 defines.append("WIN32_LEAN_AND_MEAN") |
|
574
0c9169de6e3a
Cross-building for Windows 64-bit
Franz Glasner <fzglas.hg@dom66.de>
parents:
573
diff
changeset
|
269 # WinXP: no extravagant Windows features |
|
0c9169de6e3a
Cross-building for Windows 64-bit
Franz Glasner <fzglas.hg@dom66.de>
parents:
573
diff
changeset
|
270 defines.append("_WIN32_WINNT=0x0501") |
|
570
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
271 |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
272 if tool.msvc: |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
273 # XXX TBD warnings |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
274 |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
275 defines.append("_CRT_SECURE_NO_WARNINGS") |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
276 |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
277 ccflags.append("/Zi") |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
278 ccflags.append("/MD") # link to dll runtime |
|
579
854593461592
Do not use "/EHsc" because no (C++) exceptions (or SEH) is used
Franz Glasner <fzglas.hg@dom66.de>
parents:
578
diff
changeset
|
279 #ccflags.append("/EHsc") # no C++ here |
|
570
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
280 ccflags.append("/Gy") # enable function level linking |
|
590
91e74fb1ea90
Enable the stack-protector (or /GS)
Franz Glasner <fzglas.hg@dom66.de>
parents:
580
diff
changeset
|
281 ccflags.append("/GS") # enable the stack protector -fstack-protector |
|
580
48e79cbd2481
Employ compiler optimizations for pure MSVC builds also.
Franz Glasner <fzglas.hg@dom66.de>
parents:
579
diff
changeset
|
282 ccflags.append("/O2") |
|
600
9107ff0c5a63
Enable warning level 3 for MSVC-compatible builds (/W3)
Franz Glasner <fzglas.hg@dom66.de>
parents:
590
diff
changeset
|
283 ccflags.append("/W3") |
|
570
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
284 |
|
574
0c9169de6e3a
Cross-building for Windows 64-bit
Franz Glasner <fzglas.hg@dom66.de>
parents:
573
diff
changeset
|
285 # XXX TBD machine |
|
0c9169de6e3a
Cross-building for Windows 64-bit
Franz Glasner <fzglas.hg@dom66.de>
parents:
573
diff
changeset
|
286 if tool.clang: |
|
0c9169de6e3a
Cross-building for Windows 64-bit
Franz Glasner <fzglas.hg@dom66.de>
parents:
573
diff
changeset
|
287 ccflags.append("--target=x86_64-pc-windows-msvc") |
|
0c9169de6e3a
Cross-building for Windows 64-bit
Franz Glasner <fzglas.hg@dom66.de>
parents:
573
diff
changeset
|
288 else: |
|
0c9169de6e3a
Cross-building for Windows 64-bit
Franz Glasner <fzglas.hg@dom66.de>
parents:
573
diff
changeset
|
289 ccflags.append("-m64") |
|
570
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
290 |
|
574
0c9169de6e3a
Cross-building for Windows 64-bit
Franz Glasner <fzglas.hg@dom66.de>
parents:
573
diff
changeset
|
291 if tool.clang: # or tool.gcc |
|
0c9169de6e3a
Cross-building for Windows 64-bit
Franz Glasner <fzglas.hg@dom66.de>
parents:
573
diff
changeset
|
292 ccflags.append("-fno-strict-aliasing") |
|
570
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
293 |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
294 ldflags.append("/dll") |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
295 ldflags.append("/debug") # PDB output |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
296 # 32-bit: -> 5.01 64-bit: 5.02 |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
297 ldflags.append("/subsystem:windows,5.02") |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
298 ldflags.append("/incremental:no") |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
299 # |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
300 ldflags.append("/manifest:NO") |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
301 |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
302 |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
303 if tool.clang: |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
304 ccflags.append("-fms-compatibility-version=16.00") |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
305 |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
306 ccwarnings.append("-Wno-nonportable-include-path") |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
307 ccwarnings.append("-Wno-microsoft-template") |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
308 ccwarnings.append("-Wno-pragma-pack") |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
309 elif host.posix: |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
310 defines.append("PIC") |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
311 |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
312 ccwarnings.extend(["-Wall", "-Wextra", "-pedantic"]) |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
313 |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
314 ccflags.append("-g") |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
315 ccflags.append("-fPIC") |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
316 ccflags.append("-fvisibility=hidden") |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
317 ccflags.append("-pthread") |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
318 |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
319 if tool.clang: # || tool.gcc |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
320 ccflags.append("-ffunction-sections") |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
321 ccflags.append("-fdata-sections") |
|
574
0c9169de6e3a
Cross-building for Windows 64-bit
Franz Glasner <fzglas.hg@dom66.de>
parents:
573
diff
changeset
|
322 ccflags.append("-fno-strict-aliasing") |
|
590
91e74fb1ea90
Enable the stack-protector (or /GS)
Franz Glasner <fzglas.hg@dom66.de>
parents:
580
diff
changeset
|
323 ccflags.append("-fstack-protector") |
|
570
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
324 ccflags.append("-faddrsig") # use with --icf=all/safe when linking |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
325 |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
326 ldflags.append("-shared") |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
327 ldflags.append("-Wl,-z,relro,-z,now") |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
328 ldflags.append("-Wl,--build-id=sha1") |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
329 # XXX TBD only when building in debug code |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
330 if options.link_with_python: |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
331 ldflags.append("-Wl,-z,defs") |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
332 |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
333 if tool.clang: # || tool.gcc |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
334 ldflags.append("-Wl,--gc-sections") |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
335 |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
336 if tool.clang: |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
337 ldflags.append("-Wl,--icf=safe") |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
338 |
|
574
0c9169de6e3a
Cross-building for Windows 64-bit
Franz Glasner <fzglas.hg@dom66.de>
parents:
573
diff
changeset
|
339 if options.python_limited_api: |
|
0c9169de6e3a
Cross-building for Windows 64-bit
Franz Glasner <fzglas.hg@dom66.de>
parents:
573
diff
changeset
|
340 host.pydext = ".abi3" + host.pydext |
|
0c9169de6e3a
Cross-building for Windows 64-bit
Franz Glasner <fzglas.hg@dom66.de>
parents:
573
diff
changeset
|
341 |
|
0c9169de6e3a
Cross-building for Windows 64-bit
Franz Glasner <fzglas.hg@dom66.de>
parents:
573
diff
changeset
|
342 defines.append("NDEBUG") |
|
0c9169de6e3a
Cross-building for Windows 64-bit
Franz Glasner <fzglas.hg@dom66.de>
parents:
573
diff
changeset
|
343 |
|
570
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
344 gbv.cppdefines = [tool.define_format.format(d) for d in defines] |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
345 gbv.includes = [tool.include_format.format(pathmod.normpath(i)) |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
346 for i in includes] |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
347 gbv.ccflags = ccflags |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
348 gbv.ccwarnings = ccwarnings |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
349 gbv.ldflags = ldflags |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
350 gbv.ldlibpath = [tool.libpath_format.format(pathmod.normpath(l)) |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
351 for l in libpath] |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
352 gbv.ldlibs = [tool.lib_format.format(l) for l in libs] |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
353 |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
354 n = ninja_syntax.Writer(sys.stdout) |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
355 |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
356 n.comment('This file is used to build test Python extensions.') |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
357 n.comment( |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
358 'It is generated by {} at {}Z.'.format( |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
359 os.path.basename(__file__), |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
360 datetime.datetime.utcnow().isoformat())) |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
361 n.newline() |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
362 n.comment('Created using command: {!r}'.format(sys.argv)) |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
363 n.newline() |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
364 for k, v in gbv.items(): |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
365 n.variable(k, v) |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
366 n.newline() |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
367 if tool.msvc: |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
368 # Note: this includes clang-cl |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
369 n.rule("compile-pyextension-unit", |
|
574
0c9169de6e3a
Cross-building for Windows 64-bit
Franz Glasner <fzglas.hg@dom66.de>
parents:
573
diff
changeset
|
370 "$cc /nologo /showIncludes /c $cppdefines $ccwarnings $includes $ccflags /Fd$intdir/$intsubdir/ /Fo$out $in", |
|
570
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
371 deps=tool.dependencies) |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
372 else: |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
373 n.rule("compile-pyextension-unit", |
|
574
0c9169de6e3a
Cross-building for Windows 64-bit
Franz Glasner <fzglas.hg@dom66.de>
parents:
573
diff
changeset
|
374 "$cc -MD -MF $intdir/_deps -MT $out $cppdefines $ccwarnings $includes $ccflags -c -o $out $in", |
|
570
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
375 deps=tool.dependencies, |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
376 depfile="$intdir/_deps") |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
377 n.newline() |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
378 if tool.msvc: |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
379 # XXX TBD: in "release" builds use /pdbaltpath:$out.pdb |
|
631
8efdb6357428
Implement /PDBALTPATH for Windows (cross-)builds
Franz Glasner <fzglas.hg@dom66.de>
parents:
600
diff
changeset
|
380 n.rule("link-pyextension", "$link /nologo $ldflags $ldlibpath /implib:$out.lib /pdb:$out.pdb /pdbaltpath:$pdbaltpath /out:$out $in $ldlibs") |
|
570
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
381 else: |
|
574
0c9169de6e3a
Cross-building for Windows 64-bit
Franz Glasner <fzglas.hg@dom66.de>
parents:
573
diff
changeset
|
382 n.rule("link-pyextension", "$link $cppdefines $ccwarnings $ccflags $ldflags -o $out $in $ldlibpath $ldlibs") |
|
570
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
383 n.newline() |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
384 |
|
574
0c9169de6e3a
Cross-building for Windows 64-bit
Franz Glasner <fzglas.hg@dom66.de>
parents:
573
diff
changeset
|
385 n.comment("_speedups") |
|
0c9169de6e3a
Cross-building for Windows 64-bit
Franz Glasner <fzglas.hg@dom66.de>
parents:
573
diff
changeset
|
386 for f in speedups_sources: |
|
570
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
387 n.build(pathmod.normpath("$intdir/$intsubdir/"+make_obj_name(f, host.objext)), |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
388 "compile-pyextension-unit", |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
389 inputs=pathmod.normpath(f), |
|
574
0c9169de6e3a
Cross-building for Windows 64-bit
Franz Glasner <fzglas.hg@dom66.de>
parents:
573
diff
changeset
|
390 variables={"intsubdir": "speedups"}) |
|
570
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
391 n.newline() |
|
574
0c9169de6e3a
Cross-building for Windows 64-bit
Franz Glasner <fzglas.hg@dom66.de>
parents:
573
diff
changeset
|
392 linkinputs = [pathmod.normpath("$intdir/$intsubdir/"+make_obj_name(f, host.objext)) |
|
0c9169de6e3a
Cross-building for Windows 64-bit
Franz Glasner <fzglas.hg@dom66.de>
parents:
573
diff
changeset
|
393 for f in speedups_sources] |
|
0c9169de6e3a
Cross-building for Windows 64-bit
Franz Glasner <fzglas.hg@dom66.de>
parents:
573
diff
changeset
|
394 linkoutput = "$outdir/_speedups" + host.pydext |
|
631
8efdb6357428
Implement /PDBALTPATH for Windows (cross-)builds
Franz Glasner <fzglas.hg@dom66.de>
parents:
600
diff
changeset
|
395 linkvariables = {"intsubdir": "speedups"} |
|
570
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
396 if tool.msvc: |
|
631
8efdb6357428
Implement /PDBALTPATH for Windows (cross-)builds
Franz Glasner <fzglas.hg@dom66.de>
parents:
600
diff
changeset
|
397 linkvariables["pdbaltpath"] = os.path.basename(linkoutput) + ".pdb" |
|
570
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
398 implicit_outputs = [ |
|
574
0c9169de6e3a
Cross-building for Windows 64-bit
Franz Glasner <fzglas.hg@dom66.de>
parents:
573
diff
changeset
|
399 pathmod.normpath(linkoutput + ".pdb"), |
|
0c9169de6e3a
Cross-building for Windows 64-bit
Franz Glasner <fzglas.hg@dom66.de>
parents:
573
diff
changeset
|
400 pathmod.normpath(linkoutput + ".lib")] |
|
570
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
401 if not tool.clang: |
|
574
0c9169de6e3a
Cross-building for Windows 64-bit
Franz Glasner <fzglas.hg@dom66.de>
parents:
573
diff
changeset
|
402 implicit_outputs.append(pathmod.normpath(linkoutput + ".exp")) |
|
570
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
403 else: |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
404 implicit_outputs = None |
|
574
0c9169de6e3a
Cross-building for Windows 64-bit
Franz Glasner <fzglas.hg@dom66.de>
parents:
573
diff
changeset
|
405 n.build(linkoutput, |
|
570
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
406 "link-pyextension", |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
407 inputs=linkinputs, |
|
574
0c9169de6e3a
Cross-building for Windows 64-bit
Franz Glasner <fzglas.hg@dom66.de>
parents:
573
diff
changeset
|
408 implicit_outputs=implicit_outputs, |
|
631
8efdb6357428
Implement /PDBALTPATH for Windows (cross-)builds
Franz Glasner <fzglas.hg@dom66.de>
parents:
600
diff
changeset
|
409 variables=linkvariables) |
|
570
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
410 n.newline() |
