annotate windows-dev/Configure.py @ 573:59ab0b151269

Remove unneeded duplicat initialization of variables to None
author Franz Glasner <fzglas.hg@dom66.de>
date Sat, 08 Jan 2022 18:35:58 +0100
parents 65a52a3f3575
children 0c9169de6e3a
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
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
Franz Glasner <fzglas.hg@dom66.de>
parents: 571
diff changeset
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()
e15e86c47a27 ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
69 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
70 gbv.srcdir = "src"
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"
e15e86c47a27 ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
72 gbv.pxx3dir = "pxx3"
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=",
e15e86c47a27 ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
84 "CXX=",
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
e15e86c47a27 ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
88 "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
89 "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
90 ])
e15e86c47a27 ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
91 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
92 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
93 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
94 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
95 if val == "msvc":
e15e86c47a27 ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
96 tool.msvc = True
e15e86c47a27 ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
97 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
98 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
99 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
100 tool.lib_format = "{}"
e15e86c47a27 ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
101 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
102 tool.dependencies = "msvc"
e15e86c47a27 ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
103 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
104 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
105 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
106 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
107 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
108 tool.lib_format = "{}"
e15e86c47a27 ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
109 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
110 tool.dependencies = "msvc"
e15e86c47a27 ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
111 elif val == "clang":
e15e86c47a27 ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
112 tool.clang = True
e15e86c47a27 ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
113 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
114 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
115 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
116 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
117 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
118 tool.dependencies = "gcc"
e15e86c47a27 ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
119 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
120 tool.local = True
e15e86c47a27 ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
121 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
122 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
123 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
124 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
125 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
126 tool.dependencies = "gcc"
e15e86c47a27 ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
127 else:
e15e86c47a27 ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
128 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
129 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
130 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
131 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
132 pathmod=None)
e15e86c47a27 ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
133 if val == "windows":
e15e86c47a27 ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
134 # 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
135 build.windows = True
e15e86c47a27 ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
136 build.type = "windows"
e15e86c47a27 ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
137 elif val == "posix":
e15e86c47a27 ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
138 build.posix = 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 = "posix"
e15e86c47a27 ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
140 else:
e15e86c47a27 ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
141 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
142 opt)
e15e86c47a27 ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
143 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
144 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
145 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
146 if val == "windows":
e15e86c47a27 ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
147 host.type = "windows"
e15e86c47a27 ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
148 host.windows = True
e15e86c47a27 ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
149 host.posix = False
e15e86c47a27 ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
150 host.objext = ".obj"
e15e86c47a27 ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
151 host.pydext = ".pyd"
e15e86c47a27 ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
152 elif val == "posix":
e15e86c47a27 ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
153 host.type = "posix"
e15e86c47a27 ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
154 host.windows = False
e15e86c47a27 ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
155 host.posix = True
e15e86c47a27 ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
156 host.objext = ".o"
e15e86c47a27 ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
157 host.pydext = ".so"
e15e86c47a27 ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
158 else:
e15e86c47a27 ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
159 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
160 opt)
e15e86c47a27 ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
161 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
162 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
163 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
164 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
165 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
166 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
167 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
168 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
169 elif opt == "--CXX":
e15e86c47a27 ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
170 gbv.cxx = val
e15e86c47a27 ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
171 elif opt == "--LINK":
e15e86c47a27 ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
172 gbv.link = val
e15e86c47a27 ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
173 elif opt == "--intdir":
e15e86c47a27 ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
174 gbv.intdir = val
e15e86c47a27 ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
175 elif opt == "--builddir":
e15e86c47a27 ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
176 gbv.builddir = val
e15e86c47a27 ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
177 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
178 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
179 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
180 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
181 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
182 else:
e15e86c47a27 ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
183 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
184 else:
e15e86c47a27 ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
185 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
186
e15e86c47a27 ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
187 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
188 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
189 sys.exit(1)
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 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
192 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
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:
e15e86c47a27 ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
196 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
197 else:
e15e86c47a27 ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
198 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
199 build.pathmod = pathmod
e15e86c47a27 ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
200
e15e86c47a27 ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
201 if tool.msvc:
e15e86c47a27 ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
202 if tool.clang:
e15e86c47a27 ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
203 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
204 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
205 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
206 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
207 else:
e15e86c47a27 ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
208 gbv.cxx = "cl"
e15e86c47a27 ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
209 gbv.link = "link"
e15e86c47a27 ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
210 elif tool.clang:
e15e86c47a27 ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
211 gbv.cxx = "clang++"
e15e86c47a27 ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
212 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
213 elif tool.local:
e15e86c47a27 ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
214 gbv.cxx = "c++"
e15e86c47a27 ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
215 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
216 else:
e15e86c47a27 ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
217 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
218
e15e86c47a27 ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
219 ext1_sources = [
e15e86c47a27 ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
220 "$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
221 "$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
222 ]
e15e86c47a27 ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
223
e15e86c47a27 ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
224 ext2_sources = [
e15e86c47a27 ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
225 "$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
226 "$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
227 "$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
228 "$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
229 "$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
230 "$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
231 "$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
232 "$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
233 "$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
234 ]
e15e86c47a27 ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
235
e15e86c47a27 ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
236 ccflags = []
e15e86c47a27 ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
237 cxxflags = []
e15e86c47a27 ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
238 ccwarnings = []
e15e86c47a27 ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
239 ldflags = []
e15e86c47a27 ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
240
e15e86c47a27 ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
241 defines = [
e15e86c47a27 ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
242 "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
243 "HAVE_THREADS",
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 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
246 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
247
e15e86c47a27 ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
248 # 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
249
e15e86c47a27 ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
250 includes = []
e15e86c47a27 ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
251 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
252 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
253
e15e86c47a27 ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
254 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
255
e15e86c47a27 ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
256 libpath = []
e15e86c47a27 ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
257 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
258 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
259
e15e86c47a27 ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
260 libs = []
e15e86c47a27 ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
261 if host.windows:
e15e86c47a27 ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
262 if tool.msvc:
e15e86c47a27 ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
263 # 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
264 # 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
265 pass
e15e86c47a27 ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
266 else:
e15e86c47a27 ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
267 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
268 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
269
e15e86c47a27 ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
270 if host.windows:
e15e86c47a27 ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
271 defines.append("WIN32")
e15e86c47a27 ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
272 # 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
273 defines.append("WIN64")
e15e86c47a27 ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
274 defines.append("_WINDOWS")
e15e86c47a27 ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
275 # 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
276 defines.append("_USRDLL")
e15e86c47a27 ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
277 defines.append("_WINDLL")
e15e86c47a27 ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
278
e15e86c47a27 ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
279 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
280 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
281
e15e86c47a27 ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
282 if tool.msvc:
e15e86c47a27 ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
283 # XXX TBD warnings
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 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
286
e15e86c47a27 ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
287 ccflags.append("/Zi")
e15e86c47a27 ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
288 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
289 ccflags.append("/EHsc")
e15e86c47a27 ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
290 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
291
e15e86c47a27 ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
292 cxxflags.append("/TP")
e15e86c47a27 ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
293 #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
294
e15e86c47a27 ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
295 # XXX TBD machine
e15e86c47a27 ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
296 ccflags.append("-m64")
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 ldflags.append("/dll")
e15e86c47a27 ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
299 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
300 # 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
301 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
302 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
303 #
e15e86c47a27 ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
304 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
305
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 if tool.clang:
e15e86c47a27 ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
308 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
309
e15e86c47a27 ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
310 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
311 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
312 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
313 elif host.posix:
e15e86c47a27 ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
314 defines.append("PIC")
e15e86c47a27 ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
315
e15e86c47a27 ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
316 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
317
e15e86c47a27 ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
318 ccflags.append("-g")
e15e86c47a27 ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
319 ccflags.append("-fPIC")
e15e86c47a27 ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
320 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
321 ccflags.append("-pthread")
e15e86c47a27 ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
322
e15e86c47a27 ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
323 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
324 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
325 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
326
e15e86c47a27 ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
327 if tool.clang:
e15e86c47a27 ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
328 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
329
e15e86c47a27 ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
330 ldflags.append("-shared")
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,relro,-z,now")
e15e86c47a27 ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
332 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
333 # 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
334 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
335 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
336
e15e86c47a27 ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
337 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
338 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
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:
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,--icf=safe")
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 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
344 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
345 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
346 gbv.ccflags = ccflags
e15e86c47a27 ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
347 gbv.cxxflags = cxxflags
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",
e15e86c47a27 ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
370 "$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
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",
e15e86c47a27 ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
374 "$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
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
e15e86c47a27 ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
380 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
381 else:
e15e86c47a27 ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
382 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
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
e15e86c47a27 ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
385 n.comment("testext1")
e15e86c47a27 ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
386 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
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),
e15e86c47a27 ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
390 variables={"intsubdir": "ext1"})
e15e86c47a27 ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
391 n.newline()
e15e86c47a27 ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
392 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
393 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
394 if tool.msvc:
e15e86c47a27 ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
395 implicit_outputs = [
e15e86c47a27 ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
396 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
397 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
398 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
399 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
400 else:
e15e86c47a27 ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
401 implicit_outputs = None
e15e86c47a27 ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
402 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
403 "link-pyextension",
e15e86c47a27 ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
404 inputs=linkinputs,
e15e86c47a27 ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
405 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
406 n.newline()
e15e86c47a27 ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
407
e15e86c47a27 ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
408 n.comment("testext2")
e15e86c47a27 ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
409 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
410 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
411 "compile-pyextension-unit",
e15e86c47a27 ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
412 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
413 variables={"intsubdir": "ext2"})
e15e86c47a27 ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
414 n.newline()
e15e86c47a27 ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
415 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
416 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
417 if tool.msvc:
e15e86c47a27 ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
418 implicit_outputs = [
e15e86c47a27 ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
419 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
420 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
421 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
422 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
423 else:
e15e86c47a27 ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
424 implicit_outputs = None
e15e86c47a27 ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
425 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
426 "link-pyextension",
e15e86c47a27 ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
427 inputs=linkinputs,
e15e86c47a27 ADD: Configure.py ind ninjy_syntax.py from py3-extension-tests
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
428 implicit_outputs=implicit_outputs)