Mercurial > hgrepos > Python > libs > ConfigMix
annotate windows-dev/Configure.py @ 751:8238e3c22f89 v0.23.1
+++++ v0.23.1
| author | Franz Glasner <fzglas.hg@dom66.de> |
|---|---|
| date | Tue, 31 Oct 2023 08:35:37 +0100 |
| 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() |
