Skip to content

Commit 93e56b0

Browse files
committed
added a script to automatically update the headers
1 parent f0cf36b commit 93e56b0

File tree

3 files changed

+96
-8
lines changed

3 files changed

+96
-8
lines changed

Makefile

+5-1
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
# SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
33

44
SANITIZERS = none msan asan usan tsan
5-
.PHONY: default check ce todo distclean clean build test all $(SANITIZERS)
5+
.PHONY: default update check ce todo distclean clean build test all $(SANITIZERS)
66

77
CXX_FLAGS = -g
88
SANITIZER = none
@@ -57,6 +57,10 @@ ce:
5757
@mkdir -p $(BUILD)
5858
bin/mk-compiler-explorer.py $(BUILD)
5959

60+
SOURCE_CMAKELISTS = src/beman/execution26/CMakeLists.txt
61+
update:
62+
bin/update-cmake-headers.py $(SOURCE_CMAKELISTS)
63+
6064
check:
6165
@for h in `find include -name \*.hpp`; \
6266
do \

bin/update-cmake-headers.py

+60
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,60 @@
1+
#!/usr/bin/python3
2+
# bin/update-cmake-headers.py
3+
# SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
4+
5+
import glob
6+
import os
7+
import re
8+
import sys
9+
10+
head_re = re.compile("include/(?P<name>.*)\.hpp")
11+
def clean_name(file):
12+
match = head_re.match(file)
13+
return match.group("name")
14+
15+
def get_headers(dir):
16+
result = []
17+
for header in glob.glob(dir + '/*.hpp'):
18+
result.append(clean_name(header))
19+
result.sort()
20+
return result
21+
22+
sections = {
23+
'public': get_headers('include/beman/*'),
24+
'detail': get_headers('include/beman/*/detail'),
25+
}
26+
27+
file_set_re = re.compile(" *FILE_SET.*")
28+
section_re = re.compile(" *FILE_SET \${TARGET_LIBRARY}_(?P<section>.*)_headers TYPE HEADERS")
29+
header_re = re.compile(" *\${PROJECT_SOURCE_DIR}/include/beman/.*/.*\.hpp")
30+
31+
if len(sys.argv) != 2:
32+
print(f'usage: {sys.argv[0]} <path>/CMakeLists.txt')
33+
sys.exit(1)
34+
35+
cmake = sys.argv[1]
36+
print(f'updating {cmake}')
37+
38+
section = ""
39+
section_done = False
40+
41+
with open(cmake, 'r') as input:
42+
lines = input.readlines()
43+
44+
with open(f'{cmake}', 'w') as output:
45+
for line in lines:
46+
if None != file_set_re.match(line):
47+
section = ""
48+
match = section_re.match(line)
49+
if None != match:
50+
section = match.group("section")
51+
section_done = False
52+
if None != header_re.match(line):
53+
if not section_done:
54+
section_done = True
55+
project = "${PROJECT_SOURCE_DIR}"
56+
for header in sections[section]:
57+
output.write(f' {project}/include/{header}.hpp\n')
58+
else:
59+
output.write(line)
60+
pass

src/beman/execution26/CMakeLists.txt

+31-7
Original file line numberDiff line numberDiff line change
@@ -24,27 +24,39 @@ target_sources(${TARGET_LIBRARY}
2424
FILES
2525
${PROJECT_SOURCE_DIR}/include/beman/execution26/detail/almost_scheduler.hpp
2626
${PROJECT_SOURCE_DIR}/include/beman/execution26/detail/as_except_ptr.hpp
27+
${PROJECT_SOURCE_DIR}/include/beman/execution26/detail/basic_operation.hpp
2728
${PROJECT_SOURCE_DIR}/include/beman/execution26/detail/basic_receiver.hpp
29+
${PROJECT_SOURCE_DIR}/include/beman/execution26/detail/basic_sender.hpp
2830
${PROJECT_SOURCE_DIR}/include/beman/execution26/detail/basic_state.hpp
29-
${PROJECT_SOURCE_DIR}/include/beman/execution26/detail/callable.hpp
3031
${PROJECT_SOURCE_DIR}/include/beman/execution26/detail/call_result_t.hpp
32+
${PROJECT_SOURCE_DIR}/include/beman/execution26/detail/callable.hpp
3133
${PROJECT_SOURCE_DIR}/include/beman/execution26/detail/check_type_alias_exist.hpp
3234
${PROJECT_SOURCE_DIR}/include/beman/execution26/detail/common.hpp
3335
${PROJECT_SOURCE_DIR}/include/beman/execution26/detail/completion_domain.hpp
3436
${PROJECT_SOURCE_DIR}/include/beman/execution26/detail/completion_signature.hpp
3537
${PROJECT_SOURCE_DIR}/include/beman/execution26/detail/completion_signatures.hpp
38+
${PROJECT_SOURCE_DIR}/include/beman/execution26/detail/completion_signatures_for.hpp
39+
${PROJECT_SOURCE_DIR}/include/beman/execution26/detail/completion_signatures_of_t.hpp
3640
${PROJECT_SOURCE_DIR}/include/beman/execution26/detail/completion_tag.hpp
3741
${PROJECT_SOURCE_DIR}/include/beman/execution26/detail/connect.hpp
42+
${PROJECT_SOURCE_DIR}/include/beman/execution26/detail/connect_all.hpp
43+
${PROJECT_SOURCE_DIR}/include/beman/execution26/detail/connect_all_result.hpp
44+
${PROJECT_SOURCE_DIR}/include/beman/execution26/detail/connect_result_t.hpp
3845
${PROJECT_SOURCE_DIR}/include/beman/execution26/detail/continues_on.hpp
3946
${PROJECT_SOURCE_DIR}/include/beman/execution26/detail/decayed_same_as.hpp
47+
${PROJECT_SOURCE_DIR}/include/beman/execution26/detail/decayed_tuple.hpp
4048
${PROJECT_SOURCE_DIR}/include/beman/execution26/detail/decayed_typeof.hpp
49+
${PROJECT_SOURCE_DIR}/include/beman/execution26/detail/decays_to.hpp
4150
${PROJECT_SOURCE_DIR}/include/beman/execution26/detail/default_domain.hpp
4251
${PROJECT_SOURCE_DIR}/include/beman/execution26/detail/default_impls.hpp
4352
${PROJECT_SOURCE_DIR}/include/beman/execution26/detail/empty_env.hpp
4453
${PROJECT_SOURCE_DIR}/include/beman/execution26/detail/env_of_t.hpp
4554
${PROJECT_SOURCE_DIR}/include/beman/execution26/detail/env_type.hpp
55+
${PROJECT_SOURCE_DIR}/include/beman/execution26/detail/error_types_of_t.hpp
56+
${PROJECT_SOURCE_DIR}/include/beman/execution26/detail/forward_like.hpp
4657
${PROJECT_SOURCE_DIR}/include/beman/execution26/detail/forwarding_query.hpp
4758
${PROJECT_SOURCE_DIR}/include/beman/execution26/detail/fwd_env.hpp
59+
${PROJECT_SOURCE_DIR}/include/beman/execution26/detail/gather_signatures.hpp
4860
${PROJECT_SOURCE_DIR}/include/beman/execution26/detail/get_allocator.hpp
4961
${PROJECT_SOURCE_DIR}/include/beman/execution26/detail/get_completion_scheduler.hpp
5062
${PROJECT_SOURCE_DIR}/include/beman/execution26/detail/get_completion_signatures.hpp
@@ -55,42 +67,54 @@ target_sources(${TARGET_LIBRARY}
5567
${PROJECT_SOURCE_DIR}/include/beman/execution26/detail/get_stop_token.hpp
5668
${PROJECT_SOURCE_DIR}/include/beman/execution26/detail/impls_for.hpp
5769
${PROJECT_SOURCE_DIR}/include/beman/execution26/detail/indices_for.hpp
70+
${PROJECT_SOURCE_DIR}/include/beman/execution26/detail/indirect_meta_apply.hpp
5871
${PROJECT_SOURCE_DIR}/include/beman/execution26/detail/inplace_stop_source.hpp
5972
${PROJECT_SOURCE_DIR}/include/beman/execution26/detail/join_env.hpp
6073
${PROJECT_SOURCE_DIR}/include/beman/execution26/detail/make_env.hpp
6174
${PROJECT_SOURCE_DIR}/include/beman/execution26/detail/matching_sig.hpp
75+
${PROJECT_SOURCE_DIR}/include/beman/execution26/detail/meta_contains.hpp
76+
${PROJECT_SOURCE_DIR}/include/beman/execution26/detail/meta_filter.hpp
77+
${PROJECT_SOURCE_DIR}/include/beman/execution26/detail/meta_prepend.hpp
78+
${PROJECT_SOURCE_DIR}/include/beman/execution26/detail/meta_unique.hpp
6279
${PROJECT_SOURCE_DIR}/include/beman/execution26/detail/movable_value.hpp
6380
${PROJECT_SOURCE_DIR}/include/beman/execution26/detail/never_stop_token.hpp
6481
${PROJECT_SOURCE_DIR}/include/beman/execution26/detail/nostopstate.hpp
6582
${PROJECT_SOURCE_DIR}/include/beman/execution26/detail/nothrow_callable.hpp
6683
${PROJECT_SOURCE_DIR}/include/beman/execution26/detail/operation_state.hpp
67-
${PROJECT_SOURCE_DIR}/include/beman/execution26/detail/queryable.hpp
84+
${PROJECT_SOURCE_DIR}/include/beman/execution26/detail/product_type.hpp
6885
${PROJECT_SOURCE_DIR}/include/beman/execution26/detail/query_with_default.hpp
86+
${PROJECT_SOURCE_DIR}/include/beman/execution26/detail/queryable.hpp
6987
${PROJECT_SOURCE_DIR}/include/beman/execution26/detail/receiver.hpp
70-
${PROJECT_SOURCE_DIR}/include/beman/execution26/detail/schedule.hpp
71-
${PROJECT_SOURCE_DIR}/include/beman/execution26/detail/scheduler.hpp
72-
${PROJECT_SOURCE_DIR}/include/beman/execution26/detail/schedule_result_t.hpp
7388
${PROJECT_SOURCE_DIR}/include/beman/execution26/detail/sched_attrs.hpp
7489
${PROJECT_SOURCE_DIR}/include/beman/execution26/detail/sched_env.hpp
90+
${PROJECT_SOURCE_DIR}/include/beman/execution26/detail/schedule.hpp
91+
${PROJECT_SOURCE_DIR}/include/beman/execution26/detail/schedule_result_t.hpp
92+
${PROJECT_SOURCE_DIR}/include/beman/execution26/detail/scheduler.hpp
7593
${PROJECT_SOURCE_DIR}/include/beman/execution26/detail/sender.hpp
7694
${PROJECT_SOURCE_DIR}/include/beman/execution26/detail/sender_decompose.hpp
7795
${PROJECT_SOURCE_DIR}/include/beman/execution26/detail/sender_for.hpp
7896
${PROJECT_SOURCE_DIR}/include/beman/execution26/detail/sender_in.hpp
97+
${PROJECT_SOURCE_DIR}/include/beman/execution26/detail/sends_stopped.hpp
7998
${PROJECT_SOURCE_DIR}/include/beman/execution26/detail/set_error.hpp
8099
${PROJECT_SOURCE_DIR}/include/beman/execution26/detail/set_stopped.hpp
81100
${PROJECT_SOURCE_DIR}/include/beman/execution26/detail/set_value.hpp
82101
${PROJECT_SOURCE_DIR}/include/beman/execution26/detail/simple_allocator.hpp
102+
${PROJECT_SOURCE_DIR}/include/beman/execution26/detail/single_sender.hpp
103+
${PROJECT_SOURCE_DIR}/include/beman/execution26/detail/single_sender_value_type.hpp
83104
${PROJECT_SOURCE_DIR}/include/beman/execution26/detail/start.hpp
84105
${PROJECT_SOURCE_DIR}/include/beman/execution26/detail/state_type.hpp
85-
${PROJECT_SOURCE_DIR}/include/beman/execution26/detail/stoppable_source.hpp
86-
${PROJECT_SOURCE_DIR}/include/beman/execution26/detail/stoppable_token.hpp
87106
${PROJECT_SOURCE_DIR}/include/beman/execution26/detail/stop_callback_for_t.hpp
88107
${PROJECT_SOURCE_DIR}/include/beman/execution26/detail/stop_source.hpp
108+
${PROJECT_SOURCE_DIR}/include/beman/execution26/detail/stoppable_source.hpp
109+
${PROJECT_SOURCE_DIR}/include/beman/execution26/detail/stoppable_token.hpp
89110
${PROJECT_SOURCE_DIR}/include/beman/execution26/detail/transform_sender.hpp
111+
${PROJECT_SOURCE_DIR}/include/beman/execution26/detail/type_list.hpp
90112
${PROJECT_SOURCE_DIR}/include/beman/execution26/detail/unstoppable_token.hpp
91113
${PROJECT_SOURCE_DIR}/include/beman/execution26/detail/valid_completion_for.hpp
92114
${PROJECT_SOURCE_DIR}/include/beman/execution26/detail/valid_completion_signatures.hpp
93115
${PROJECT_SOURCE_DIR}/include/beman/execution26/detail/valid_specialization.hpp
116+
${PROJECT_SOURCE_DIR}/include/beman/execution26/detail/value_types_of_t.hpp
117+
${PROJECT_SOURCE_DIR}/include/beman/execution26/detail/variant_or_empty.hpp
94118
)
95119
get_property(DETAIL_HEADER_FILES TARGET ${TARGET_LIBRARY} PROPERTY HEADER_SET_${TARGET_LIBRARY}_detail_headers)
96120
source_group("Header Files\\detail" FILES ${DETAIL_HEADER_FILES})

0 commit comments

Comments
 (0)