Mercurial > hgrepos > Python > libs > ConfigMix
annotate Configure.py @ 570:e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
| author | Franz Glasner <fzglas.hg@dom66.de> |
|---|---|
| date | Sat, 08 Jan 2022 17:57:36 +0100 |
| parents | |
| 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 # |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
15 # NOTE: gcc also known "-dumpmachine" |
|
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 host = None |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
34 |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
35 |
|
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 # 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
|
38 # -- 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
|
39 # |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
40 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
|
41 |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
42 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
|
43 try: |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
44 return self[n] |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
45 except KeyError: |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
46 raise AttributeError(n) |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
47 |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
48 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
|
49 # private v |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
50 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
|
51 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
|
52 self[n] = v |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
53 |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
54 |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
55 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
|
56 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
|
57 if not bn: |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
58 return bn |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
59 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
|
60 return root + newext |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
61 |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
62 options = argparse.Namespace( |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
63 user_includes = [], |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
64 sys_includes = [], |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
65 sys_libpath = [], |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
66 user_libpath = [], |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
67 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
|
68 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
|
69 ) |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
70 |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
71 gbv = BuildVars() |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
72 gbv.intdir = "_builddir-test" |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
73 gbv.srcdir = "src" |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
74 gbv.builddir = "$intdir" |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
75 gbv.pxx3dir = "pxx3" |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
76 |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
77 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
|
78 sys.argv[1:], |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
79 "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
|
80 ["build=", |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
81 "host=", |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
82 "tool=", |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
83 "include=", |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
84 "libpath=", |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
85 "sys-include=", |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
86 "sys-libpath=", |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
87 "CXX=", |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
88 "LINK=", |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
89 "intdir=", # intermediate files |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
90 "builddir=", # Ninja builddir |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
91 "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
|
92 "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
|
93 ]) |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
94 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
|
95 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
|
96 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
|
97 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
|
98 if val == "msvc": |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
99 tool.msvc = True |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
100 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
|
101 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
|
102 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
|
103 tool.lib_format = "{}" |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
104 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
|
105 tool.dependencies = "msvc" |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
106 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
|
107 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
|
108 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
|
109 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
|
110 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
|
111 tool.lib_format = "{}" |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
112 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
|
113 tool.dependencies = "msvc" |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
114 elif val == "clang": |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
115 tool.clang = True |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
116 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
|
117 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
|
118 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
|
119 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
|
120 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
|
121 tool.dependencies = "gcc" |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
122 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
|
123 tool.local = True |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
124 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
|
125 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
|
126 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
|
127 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
|
128 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
|
129 tool.dependencies = "gcc" |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
130 else: |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
131 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
|
132 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
|
133 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
|
134 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
|
135 pathmod=None) |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
136 if val == "windows": |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
137 # 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
|
138 build.windows = True |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
139 build.type = "windows" |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
140 elif val == "posix": |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
141 build.posix = True |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
142 build.type = "posix" |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
143 else: |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
144 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
|
145 opt) |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
146 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
|
147 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
|
148 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
|
149 if val == "windows": |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
150 host.type = "windows" |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
151 host.windows = True |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
152 host.posix = False |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
153 host.objext = ".obj" |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
154 host.pydext = ".pyd" |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
155 elif val == "posix": |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
156 host.type = "posix" |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
157 host.windows = False |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
158 host.posix = True |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
159 host.objext = ".o" |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
160 host.pydext = ".so" |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
161 else: |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
162 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
|
163 opt) |
|
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 ("-I", "--include"): |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
165 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
|
166 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
|
167 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
|
168 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
|
169 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
|
170 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
|
171 options.sys_libpath.append(val) |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
172 elif opt == "--CXX": |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
173 gbv.cxx = 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 == "--LINK": |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
175 gbv.link = 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 == "--intdir": |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
177 gbv.intdir = val |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
178 elif opt == "--builddir": |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
179 gbv.builddir = val |
|
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: |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
186 options.python_limited_api = "0x03040000" |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
187 else: |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
188 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
|
189 |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
190 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
|
191 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
|
192 sys.exit(1) |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
193 |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
194 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
|
195 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
|
196 sys.exit(1) |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
197 |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
198 if build.windows: |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
199 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
|
200 else: |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
201 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
|
202 build.pathmod = pathmod |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
203 |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
204 if tool.msvc: |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
205 if tool.clang: |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
206 if not getattr(gbv, "cxx", None): |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
207 gbv.cxx = "clang-cl" |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
208 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
|
209 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
|
210 else: |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
211 gbv.cxx = "cl" |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
212 gbv.link = "link" |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
213 elif tool.clang: |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
214 gbv.cxx = "clang++" |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
215 gbv.link = "clang++" # link C++ through the compiler |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
216 elif tool.local: |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
217 gbv.cxx = "c++" |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
218 gbv.link = "c++" # link through the compiler |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
219 else: |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
220 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
|
221 |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
222 ext1_sources = [ |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
223 "$srcdir/ext1/testext1.cpp", |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
224 "$pxx3dir/shared/thread.cpp", |
|
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 ext2_sources = [ |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
228 "$srcdir/ext2/testext2.cpp", |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
229 "$srcdir/ext2/hashes.cpp", |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
230 "$pxx3dir/shared/thread.cpp", |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
231 "$pxx3dir/shared/module.cpp", |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
232 "$pxx3dir/shared/xcept.cpp", |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
233 "$pxx3dir/shared/cfunctions.cpp", |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
234 "$pxx3dir/shared/misc.cpp", |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
235 "$pxx3dir/shared/exttype.cpp", |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
236 "$pxx3dir/shared/allocator.cpp", |
|
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 |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
239 ccflags = [] |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
240 cxxflags = [] |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
241 ccwarnings = [] |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
242 ldflags = [] |
|
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 defines = [ |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
245 "PY_SSIZE_T_CLEAN", |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
246 "HAVE_THREADS", |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
247 ] |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
248 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
|
249 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
|
250 |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
251 # 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
|
252 |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
253 includes = [] |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
254 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
|
255 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
|
256 |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
257 includes.append("$pxx3dir/include") |
|
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 libpath = [] |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
260 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
|
261 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
|
262 |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
263 libs = [] |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
264 if host.windows: |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
265 if tool.msvc: |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
266 # 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
|
267 # 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
|
268 pass |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
269 else: |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
270 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
|
271 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
|
272 |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
273 if host.windows: |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
274 defines.append("WIN32") |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
275 # 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
|
276 defines.append("WIN64") |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
277 defines.append("_WINDOWS") |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
278 # 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
|
279 defines.append("_USRDLL") |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
280 defines.append("_WINDLL") |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
281 |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
282 defines.append("WIN32_LEAN_AND_MEAN") |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
283 defines.append("_WIN32_WINNT=0x0501") # WinXP |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
284 |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
285 if tool.msvc: |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
286 # XXX TBD warnings |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
287 |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
288 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
|
289 |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
290 ccflags.append("/Zi") |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
291 ccflags.append("/MD") # link to dll runtime |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
292 ccflags.append("/EHsc") |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
293 ccflags.append("/Gy") # enable function level linking |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
294 |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
295 cxxflags.append("/TP") |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
296 #cxxflags.append("/std:c++latest") |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
297 |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
298 # XXX TBD machine |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
299 ccflags.append("-m64") |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
300 |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
301 ldflags.append("/dll") |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
302 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
|
303 # 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
|
304 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
|
305 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
|
306 # |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
307 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
|
308 |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
309 |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
310 if tool.clang: |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
311 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
|
312 |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
313 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
|
314 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
|
315 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
|
316 elif host.posix: |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
317 defines.append("PIC") |
|
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 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
|
320 |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
321 ccflags.append("-g") |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
322 ccflags.append("-fPIC") |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
323 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
|
324 ccflags.append("-pthread") |
|
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 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
|
327 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
|
328 ccflags.append("-fdata-sections") |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
329 |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
330 if tool.clang: |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
331 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
|
332 |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
333 ldflags.append("-shared") |
|
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,-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
|
335 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
|
336 # 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
|
337 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
|
338 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
|
339 |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
340 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
|
341 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
|
342 |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
343 if tool.clang: |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
344 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
|
345 |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
346 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
|
347 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
|
348 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
|
349 gbv.ccflags = ccflags |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
350 gbv.cxxflags = cxxflags |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
351 gbv.ccwarnings = ccwarnings |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
352 gbv.ldflags = ldflags |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
353 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
|
354 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
|
355 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
|
356 |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
357 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
|
358 |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
359 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
|
360 n.comment( |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
361 '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
|
362 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
|
363 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
|
364 n.newline() |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
365 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
|
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 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
|
368 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
|
369 n.newline() |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
370 if tool.msvc: |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
371 # 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
|
372 n.rule("compile-pyextension-unit", |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
373 "$cxx /nologo /showIncludes /c $cppdefines $ccwarnings $includes $ccflags $cxxflags /Fd$intdir/$intsubdir/ /Fo$out $in", |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
374 deps=tool.dependencies) |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
375 else: |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
376 n.rule("compile-pyextension-unit", |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
377 "$cxx -MD -MF $intdir/_deps -MT $out $cppdefines $ccwarnings $includes $ccflags $cxxflags -c -o $out $in", |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
378 deps=tool.dependencies, |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
379 depfile="$intdir/_deps") |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
380 n.newline() |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
381 if tool.msvc: |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
382 # XXX TBD: in "release" builds use /pdbaltpath:$out.pdb |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
383 n.rule("link-pyextension", "$link /nologo $ldflags $ldlibpath /implib:$intdir/$out.lib /pdb:$intdir/$out.pdb /out:$out $in $ldlibs") |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
384 else: |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
385 n.rule("link-pyextension", "$link $cppdefines $ccwarnings $ccflags $cxxflags $ldflags -o $out $in $ldlibpath $ldlibs") |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
386 n.newline() |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
387 |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
388 n.comment("testext1") |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
389 for f in ext1_sources: |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
390 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
|
391 "compile-pyextension-unit", |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
392 inputs=pathmod.normpath(f), |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
393 variables={"intsubdir": "ext1"}) |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
394 n.newline() |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
395 linkinputs = [pathmod.normpath("$intdir/ext1/"+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
|
396 for f in ext1_sources] |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
397 if tool.msvc: |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
398 implicit_outputs = [ |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
399 pathmod.normpath("$intdir/testext1"+host.pydext+".lib"), |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
400 pathmod.normpath("$intdir/testext1"+host.pydext+".pdb")] |
|
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: |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
402 implicit_outputs.append(pathmod.normpath("$intdir/testext1"+host.pydext+".exp")) |
|
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 |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
405 n.build("testext1"+host.pydext, |
|
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, |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
408 implicit_outputs=implicit_outputs) |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
409 n.newline() |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
410 |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
411 n.comment("testext2") |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
412 for f in ext2_sources: |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
413 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
|
414 "compile-pyextension-unit", |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
415 inputs=pathmod.normpath(f), |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
416 variables={"intsubdir": "ext2"}) |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
417 n.newline() |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
418 linkinputs = [pathmod.normpath("$intdir/ext2/"+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
|
419 for f in ext2_sources] |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
420 if tool.msvc: |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
421 implicit_outputs = [ |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
422 pathmod.normpath("$intdir/testext2"+host.pydext+".lib"), |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
423 pathmod.normpath("$intdir/testext2"+host.pydext+".pdb")] |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
424 if not tool.clang: |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
425 implicit_outputs.append(pathmod.normpath("$intdir/testext2"+host.pydext+".exp")) |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
426 else: |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
427 implicit_outputs = None |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
428 n.build("testext2"+host.pydext, |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
429 "link-pyextension", |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
430 inputs=linkinputs, |
|
e15e86c47a27
ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
431 implicit_outputs=implicit_outputs) |
