Skip to content

Commit 04f9aae

Browse files
committed
Restructure 2018 to make it resemble 2020 more and benefit from the improvements to the build setup.
1 parent 70cc455 commit 04f9aae

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

56 files changed

+1764
-479
lines changed

2018/.bazelrc

+3
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,6 @@
1+
build --repo_env=CC=clang
12
build --cxxopt="-std=c++17"
23
build --cxxopt="-fdiagnostics-color"
34
build --disk_cache=/tmp/bazelcache/
5+
build --experimental_action_listener=//tools/actions:generate_compile_commands_listener
6+
test --test_output=errors

2018/.gitignore

+1
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,3 @@
11
input/
22
bazel-*
3+
compile_commands.json

2018/CPPLINT.cfg

+4
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
root=.
2+
filter=-legal/copyright,
3+
filter=-build/c++11
4+
filter=-build/c++14

2018/Makefile

+32
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
# Convenience makefile around Bazel and linting tools.
2+
3+
BUILD_FILES := $(wildcard **/BUILD)
4+
CPP_FILES := $(wildcard **/*.h) $(wildcard **/*.cc)
5+
6+
build:
7+
bazel build ...
8+
9+
test:
10+
bazel test ...
11+
12+
format: buildifier clang-format
13+
14+
lint: buildifier-check clang-format-check cpplint-check
15+
16+
buildifier: $(BUILD_FILES)
17+
buildifier $^
18+
19+
buildifier-check: $(BUILD_FILES)
20+
buildifier -lint $^
21+
22+
clang-format: $(CPP_FILES)
23+
clang-format -i $^
24+
25+
clang-format-check: $(CPP_FILES)
26+
clang-format -Werror -n $^
27+
28+
cpplint-check: $(CPP_FILES)
29+
cpplint $^
30+
31+
compile_commands.json: build
32+
python tools/actions/generate_compile_commands_json.py

2018/README.md

+1-42
Original file line numberDiff line numberDiff line change
@@ -1,44 +1,3 @@
11
# Advent of Code 2018
22

3-
https://adventofcode.com
4-
5-
## Set up
6-
7-
Since we will be doing the exercises in C++, it makes sense to have a nice C++
8-
environment set up. From experience, [bazel](https://bazel.io), while having a
9-
small barrier to entry, is the most convenient build system in the long run. It
10-
also supports other languages.
11-
12-
13-
### Prerequisites
14-
15-
You need to have
16-
[XCode](https://itunes.apple.com/de/app/xcode/id497799835?l=en&mt=12) and
17-
homebrew installed.
18-
19-
20-
### Bazel
21-
22-
In order to install [bazel](https://bazel.io) and test the installation on your
23-
Mac, run the following commands in the project directory.
24-
25-
```bash
26-
brew install bazel
27-
bazel clean --expunge
28-
sudo xcode-select -s /Applications/Xcode.app/Contents/Developer
29-
sudo xcodebuild -license
30-
bazel clean --expunge
31-
bazel test kd:day1_test --test_output=errors
32-
bazel run -c opt kd:day1_main < inputs/day1
33-
```
34-
35-
36-
### Your code
37-
38-
Create a directory with your initials. For the project layout, have a look at
39-
the `kd` directory.
40-
41-
42-
## C++
43-
44-
* https://google.github.io/styleguide/cppguide.html
3+
https://adventofcode.com/2018

2018/WORKSPACE

+3
Original file line numberDiff line numberDiff line change
@@ -5,16 +5,19 @@ http_archive(
55
name = "rules_cc",
66
urls = ["https://github.com/bazelbuild/rules_cc/archive/262ebec3c2296296526740db4aefce68c80de7fa.zip"],
77
strip_prefix = "rules_cc-262ebec3c2296296526740db4aefce68c80de7fa",
8+
sha256 = "9a446e9dd9c1bb180c86977a8dc1e9e659550ae732ae58bd2e8fd51e15b2c91d",
89
)
910

1011
http_archive(
1112
name = "com_google_absl",
1213
urls = ["https://github.com/abseil/abseil-cpp/archive/98eb410c93ad059f9bba1bf43f5bb916fc92a5ea.zip"],
1314
strip_prefix = "abseil-cpp-98eb410c93ad059f9bba1bf43f5bb916fc92a5ea",
15+
sha256 = "aabf6c57e3834f8dc3873a927f37eaf69975d4b28117fc7427dfb1c661542a87",
1416
)
1517

1618
http_archive(
1719
name = "com_google_googletest",
1820
urls = ["https://github.com/google/googletest/archive/011959aafddcd30611003de96cfd8d7a7685c700.zip"],
1921
strip_prefix = "googletest-011959aafddcd30611003de96cfd8d7a7685c700",
22+
sha256 = "6a5d7d63cd6e0ad2a7130471105a3b83799a7a2b14ef7ec8d742b54f01a4833c",
2023
)

2018/aoc18/BUILD

+256
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,256 @@
1+
cc_library(
2+
name = "day01",
3+
srcs = ["day01.cc"],
4+
hdrs = ["day01.h"],
5+
deps = [
6+
"@com_google_absl//absl/container:flat_hash_set",
7+
"@com_google_absl//absl/types:optional",
8+
],
9+
)
10+
11+
cc_test(
12+
name = "day01_test",
13+
srcs = ["day01_test.cc"],
14+
deps = [
15+
":day01",
16+
"@com_google_googletest//:gtest_main",
17+
],
18+
)
19+
20+
cc_binary(
21+
name = "day01_main",
22+
srcs = ["day01_main.cc"],
23+
deps = [
24+
":day01",
25+
],
26+
)
27+
28+
cc_library(
29+
name = "day02",
30+
srcs = ["day02.cc"],
31+
hdrs = ["day02.h"],
32+
deps = [
33+
"@com_google_absl//absl/container:flat_hash_map",
34+
"@com_google_absl//absl/strings",
35+
],
36+
)
37+
38+
cc_test(
39+
name = "day02_test",
40+
srcs = ["day02_test.cc"],
41+
deps = [
42+
":day02",
43+
"@com_google_googletest//:gtest_main",
44+
],
45+
)
46+
47+
cc_binary(
48+
name = "day02_main",
49+
srcs = ["day02_main.cc"],
50+
deps = [
51+
":day02",
52+
],
53+
)
54+
55+
cc_library(
56+
name = "day03",
57+
srcs = ["day03.cc"],
58+
hdrs = ["day03.h"],
59+
deps = [
60+
"@com_google_absl//absl/types:optional",
61+
],
62+
)
63+
64+
cc_test(
65+
name = "day03_test",
66+
srcs = ["day03_test.cc"],
67+
deps = [
68+
":day03",
69+
"@com_google_googletest//:gtest_main",
70+
],
71+
)
72+
73+
cc_binary(
74+
name = "day03_main",
75+
srcs = ["day03_main.cc"],
76+
deps = [
77+
":day03",
78+
],
79+
)
80+
81+
cc_library(
82+
name = "day04",
83+
srcs = ["day04.cc"],
84+
hdrs = ["day04.h"],
85+
deps = [
86+
],
87+
)
88+
89+
cc_test(
90+
name = "day04_test",
91+
srcs = ["day04_test.cc"],
92+
deps = [
93+
":day04",
94+
"@com_google_absl//absl/strings",
95+
"@com_google_googletest//:gtest_main",
96+
],
97+
)
98+
99+
cc_binary(
100+
name = "day04_main",
101+
srcs = ["day04_main.cc"],
102+
deps = [
103+
":day04",
104+
],
105+
)
106+
107+
cc_library(
108+
name = "day05",
109+
srcs = ["day05.cc"],
110+
hdrs = ["day05.h"],
111+
deps = [
112+
],
113+
)
114+
115+
cc_test(
116+
name = "day05_test",
117+
srcs = ["day05_test.cc"],
118+
deps = [
119+
":day05",
120+
"@com_google_googletest//:gtest_main",
121+
],
122+
)
123+
124+
cc_binary(
125+
name = "day05_main",
126+
srcs = ["day05_main.cc"],
127+
deps = [
128+
":day05",
129+
],
130+
)
131+
132+
cc_library(
133+
name = "day07",
134+
srcs = ["day07.cc"],
135+
hdrs = ["day07.h"],
136+
deps = [
137+
"@com_google_absl//absl/strings",
138+
],
139+
)
140+
141+
cc_test(
142+
name = "day07_test",
143+
srcs = ["day07_test.cc"],
144+
deps = [
145+
":day07",
146+
"@com_google_googletest//:gtest_main",
147+
],
148+
)
149+
150+
cc_binary(
151+
name = "day07_main",
152+
srcs = ["day07_main.cc"],
153+
deps = [
154+
":day07",
155+
],
156+
)
157+
158+
cc_library(
159+
name = "day08",
160+
srcs = ["day08.cc"],
161+
hdrs = ["day08.h"],
162+
deps = [
163+
],
164+
)
165+
166+
cc_test(
167+
name = "day08_test",
168+
srcs = ["day08_test.cc"],
169+
deps = [
170+
":day08",
171+
"@com_google_googletest//:gtest_main",
172+
],
173+
)
174+
175+
cc_binary(
176+
name = "day08_main",
177+
srcs = ["day08_main.cc"],
178+
deps = [
179+
":day08",
180+
],
181+
)
182+
183+
cc_library(
184+
name = "day09",
185+
srcs = ["day09.cc"],
186+
hdrs = ["day09.h"],
187+
deps = [
188+
],
189+
)
190+
191+
cc_test(
192+
name = "day09_test",
193+
srcs = ["day09_test.cc"],
194+
deps = [
195+
":day09",
196+
"@com_google_googletest//:gtest_main",
197+
],
198+
)
199+
200+
cc_binary(
201+
name = "day09_main",
202+
srcs = ["day09_main.cc"],
203+
deps = [
204+
":day09",
205+
],
206+
)
207+
208+
cc_library(
209+
name = "day10",
210+
srcs = ["day10.cc"],
211+
hdrs = ["day10.h"],
212+
deps = [
213+
],
214+
)
215+
216+
cc_test(
217+
name = "day10_test",
218+
srcs = ["day10_test.cc"],
219+
deps = [
220+
":day10",
221+
"@com_google_googletest//:gtest_main",
222+
],
223+
)
224+
225+
cc_binary(
226+
name = "day10_main",
227+
srcs = ["day10_main.cc"],
228+
deps = [
229+
":day10",
230+
],
231+
)
232+
233+
cc_library(
234+
name = "day16",
235+
srcs = ["day16.cc"],
236+
hdrs = ["day16.h"],
237+
deps = [
238+
],
239+
)
240+
241+
cc_test(
242+
name = "day16_test",
243+
srcs = ["day16_test.cc"],
244+
deps = [
245+
":day16",
246+
"@com_google_googletest//:gtest_main",
247+
],
248+
)
249+
250+
cc_binary(
251+
name = "day16_main",
252+
srcs = ["day16_main.cc"],
253+
deps = [
254+
":day16",
255+
],
256+
)

2018/kd/day1.cc 2018/aoc18/day01.cc

+5-5
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
#include "kd/day1.h"
1+
#include "aoc18/day01.h"
22

33
#include <iterator>
44
#include <numeric>
@@ -7,8 +7,8 @@
77
#include "absl/container/flat_hash_set.h"
88
#include "absl/types/optional.h"
99

10-
namespace kd {
11-
namespace day1 {
10+
namespace aoc18 {
11+
namespace day01 {
1212

1313
int CalculateFrequency(const std::vector<int>& increments) {
1414
return std::accumulate(std::begin(increments), std::end(increments), 0);
@@ -35,5 +35,5 @@ int FindFirstDuplicateFrequency(const std::vector<int>& increments) {
3535
return current_frequency;
3636
}
3737

38-
} // namespace day1
39-
} // namespace kd
38+
} // namespace day01
39+
} // namespace aoc18

0 commit comments

Comments
 (0)