Skip to content

Commit 06a8cf6

Browse files
authored
Merge pull request github#9198 from github/redsun82/swift-self-contained-cpp-code-gen
Swift: make C++ code generation more self-contained
2 parents 1e9fcfb + f52a849 commit 06a8cf6

File tree

18 files changed

+50
-65
lines changed

18 files changed

+50
-65
lines changed

.github/workflows/swift-codegen.yml

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,8 +25,7 @@ jobs:
2525
git diff --exit-code --stat HEAD
2626
- name: Generate C++ files
2727
run: |
28-
bazel run //swift/codegen:trapgen -- --cpp-output=$PWD/swift-generated-headers
29-
bazel run //swift/codegen:cppgen -- --cpp-output=$PWD/swift-generated-headers
28+
bazel run //swift/codegen:cppcodegen -- --cpp-output=$PWD/swift-generated-headers
3029
- uses: actions/upload-artifact@v3
3130
with:
3231
name: swift-generated-headers

swift/codegen/BUILD.bazel

Lines changed: 6 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -14,41 +14,22 @@ filegroup(
1414

1515
py_binary(
1616
name = "codegen",
17-
srcs = glob(
18-
["*.py"],
19-
exclude = ["trapgen.py"],
20-
),
17+
srcs = ["codegen.py"],
2118
visibility = ["//swift/codegen/test:__pkg__"],
22-
deps = ["//swift/codegen/lib"],
19+
deps = ["//swift/codegen/generators"],
2320
)
2421

2522
# as opposed to the above, that is meant to only be run with bazel run,
2623
# we need to be precise with data dependencies of this which is meant be run during build
2724
py_binary(
28-
name = "trapgen",
29-
srcs = ["trapgen.py"],
30-
data = [
31-
"//swift:dbscheme",
32-
"//swift/codegen/templates:trap",
33-
],
34-
visibility = ["//swift:__subpackages__"],
35-
deps = [
36-
"//swift/codegen/lib",
37-
requirement("toposort"),
38-
],
39-
)
40-
41-
py_binary(
42-
name = "cppgen",
43-
srcs = ["cppgen.py"],
25+
name = "cppcodegen",
26+
srcs = ["cppcodegen.py"],
4427
data = [
4528
":schema",
4629
":schema_includes",
4730
"//swift/codegen/templates:cpp",
31+
"//swift/codegen/templates:trap",
4832
],
4933
visibility = ["//swift:__subpackages__"],
50-
deps = [
51-
"//swift/codegen/lib",
52-
requirement("toposort"),
53-
],
34+
deps = ["//swift/codegen/generators"],
5435
)

swift/codegen/codegen.py

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,7 @@
11
#!/usr/bin/env python3
22
""" Driver script to run all checked in code generation """
33

4-
from lib import generator
5-
import dbschemegen
6-
import qlgen
4+
from swift.codegen.generators import generator, dbschemegen, qlgen
75

86
if __name__ == "__main__":
97
generator.run(dbschemegen, qlgen)

swift/codegen/cppcodegen.py

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
#!/usr/bin/env python3
2+
""" Driver script to run all cpp code generation """
3+
4+
from swift.codegen.generators import generator, dbschemegen, trapgen, cppgen
5+
6+
if __name__ == "__main__":
7+
generator.run(dbschemegen, trapgen, cppgen)

swift/codegen/generators/BUILD.bazel

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
load("@swift_codegen_deps//:requirements.bzl", "requirement")
2+
3+
py_library(
4+
name = "generators",
5+
srcs = glob(["*.py"]),
6+
visibility = ["//swift/codegen:__subpackages__"],
7+
deps = [
8+
"//swift/codegen/lib",
9+
requirement("toposort"),
10+
],
11+
)

swift/codegen/cppgen.py renamed to swift/codegen/generators/cppgen.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,8 @@
44
import inflection
55
from toposort import toposort_flatten
66

7-
from swift.codegen.lib import cpp, generator, schema
7+
from swift.codegen.lib import cpp, schema
8+
from swift.codegen.generators import generator
89

910

1011
def _get_type(t: str, trap_affix: str) -> str:

swift/codegen/dbschemegen.py renamed to swift/codegen/generators/dbschemegen.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,8 @@
33

44
import inflection
55

6-
from swift.codegen.lib import paths, schema, generator
6+
from swift.codegen.lib import schema
7+
from swift.codegen.generators import generator
78
from swift.codegen.lib.dbscheme import *
89

910
log = logging.getLogger(__name__)

swift/codegen/lib/generator.py renamed to swift/codegen/generators/generator.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,8 @@
55
import sys
66
from typing import Set
77

8-
from . import options, render, paths
8+
from swift.codegen.lib import render, paths
9+
from swift.codegen.generators import options
910

1011

1112
def _parse(tags: Set[str]) -> argparse.Namespace:

swift/codegen/lib/options.py renamed to swift/codegen/generators/options.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
import pathlib
66
from typing import Set
77

8-
from . import paths
8+
from swift.codegen.lib import paths
99

1010

1111
def _init_options():

swift/codegen/qlgen.py renamed to swift/codegen/generators/qlgen.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,8 @@
66

77
import inflection
88

9-
from swift.codegen.lib import schema, paths, generator, ql
9+
from swift.codegen.lib import schema, ql
10+
from swift.codegen.generators import generator
1011

1112
log = logging.getLogger(__name__)
1213

0 commit comments

Comments
 (0)