]>
Commit | Line | Data |
---|---|---|
92f5a8d4 TL |
1 | # Boost.GIL (Generic Image Library) - tests |
2 | # | |
3 | # Copyright (c) 2013-2017 Vinnie Falco (vinnie dot falco at gmail dot com) | |
4 | # Copyright (c) 2018-2019 Mateusz Loskot <mateusz@loskot.net> | |
5 | # Copyright (c) 2018 Dmitry Arkhipov | |
6 | # Copyright (c) 2007-2015 Andrey Semashev | |
7 | # | |
8 | # Use, modification and distribution is subject to the Boost Software License, | |
9 | # Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at | |
10 | # http://www.boost.org/LICENSE_1_0.txt) | |
11 | ||
12 | import ../../config/checks/config : requires ; | |
13 | import os ; | |
14 | import path ; | |
15 | import regex ; | |
f67539c2 | 16 | import sequence ; |
92f5a8d4 TL |
17 | import testing ; |
18 | ||
f67539c2 TL |
19 | # Avoid warnings flood on Travis CI, AppVeyor, CircleCI, Azure Pipelines, GitHub Actions |
20 | if ! [ os.environ CI ] && ! [ os.environ AGENT_JOBSTATUS ] && ! [ os.environ GITHUB_ACTIONS ] | |
92f5a8d4 | 21 | { |
f67539c2 TL |
22 | DEVELOPMENT_EXTRA_WARNINGS = |
23 | <toolset>msvc:<cxxflags>"-W4" | |
24 | <toolset>gcc:<cxxflags>"-pedantic -Wextra -Wcast-align -Wconversion -Wfloat-equal -Wshadow -Wsign-promo -Wstrict-aliasing -Wunused-parameter" | |
25 | <toolset>clang,<variant>debug:<cxxflags>"-pedantic -Wextra -Wcast-align -Wconversion -Wfloat-equal -Wshadow -Wsign-promo -Wstrict-aliasing -Wunused-parameter -Wsign-conversion" | |
26 | <toolset>clang,<variant>release:<cxxflags>"-pedantic -Wextra -Wcast-align -Wconversion -Wfloat-equal -Wshadow -Wsign-promo -Wstrict-aliasing -Wunused-parameter -Wsign-conversion" | |
27 | <toolset>darwin:<cxxflags>"-pedantic -Wextra -Wcast-align -Wconversion -Wfloat-equal -Wshadow -Wsign-promo -Wstrict-aliasing -Wunused-parameter" | |
28 | ; | |
29 | } | |
30 | else | |
31 | { | |
32 | DEVELOPMENT_EXTRA_WARNINGS = | |
33 | <toolset>msvc:<cxxflags>"-W1" | |
34 | ; | |
92f5a8d4 TL |
35 | } |
36 | ||
37 | project | |
38 | : | |
39 | requirements | |
40 | <include>. | |
41 | # TODO: Enable concepts check for all, not just test/core | |
42 | #<define>BOOST_GIL_USE_CONCEPT_CHECK=1 | |
f67539c2 | 43 | <toolset>msvc:<cxxflags>"-bigobj" |
92f5a8d4 | 44 | <toolset>msvc:<asynch-exceptions>on |
92f5a8d4 TL |
45 | <toolset>msvc:<define>_SCL_SECURE_NO_DEPRECATE |
46 | <toolset>msvc:<define>_CRT_SECURE_NO_WARNINGS | |
47 | <toolset>msvc:<define>_CRT_NONSTDC_NO_DEPRECATE | |
48 | <toolset>msvc:<define>NOMINMAX | |
49 | <toolset>intel:<debug-symbols>off | |
50 | <toolset>gcc:<cxxflags>"-fstrict-aliasing" | |
51 | <toolset>darwin:<cxxflags>"-fstrict-aliasing" | |
52 | # variant filter for clang is necessary to allow ubsan_* | |
53 | # custom variants declare distinct set of <cxxflags> | |
54 | <toolset>clang,<variant>debug:<cxxflags>"-fstrict-aliasing" | |
55 | <toolset>clang,<variant>release:<cxxflags>"-fstrict-aliasing" | |
56 | $(DEVELOPMENT_EXTRA_WARNINGS) | |
57 | [ requires | |
58 | cxx11_constexpr | |
59 | cxx11_defaulted_functions | |
60 | cxx11_template_aliases | |
61 | cxx11_trailing_result_types # implies decltype and auto | |
62 | cxx11_variadic_templates | |
63 | ] | |
64 | ; | |
65 | ||
66 | variant gil_ubsan_integer | |
67 | : release | |
68 | : | |
69 | <cxxflags>"-Wno-unused -fstrict-aliasing -fno-omit-frame-pointer -fsanitize=integer -fno-sanitize-recover=integer -fsanitize-blacklist=libs/gil/.ci/blacklist.supp" | |
70 | <linkflags>"-fsanitize=integer" | |
71 | <debug-symbols>on | |
72 | <define>BOOST_USE_ASAN=1 | |
73 | ; | |
74 | ||
75 | variant gil_ubsan_nullability | |
76 | : release | |
77 | : | |
78 | <cxxflags>"-Wno-unused -fstrict-aliasing -fno-omit-frame-pointer -fsanitize=nullability -fno-sanitize-recover=nullability -fsanitize-blacklist=libs/gil/.ci/blacklist.supp" | |
79 | <linkflags>"-fsanitize=nullability" | |
80 | <debug-symbols>on | |
81 | <define>BOOST_USE_ASAN=1 | |
82 | ; | |
83 | ||
84 | variant gil_ubsan_undefined | |
85 | : release | |
86 | : | |
87 | <cxxflags>"-Wno-unused -fstrict-aliasing -fno-omit-frame-pointer -fsanitize=undefined -fno-sanitize-recover=undefined -fsanitize-blacklist=libs/gil/.ci/blacklist.supp" | |
88 | <linkflags>"-fsanitize=undefined" | |
89 | <debug-symbols>on | |
90 | <define>BOOST_USE_ASAN=1 | |
91 | ; | |
92 | ||
93 | rule generate_self_contained_headers ( headers_subpath * : exclude_subpaths * ) | |
94 | { | |
95 | # On CI services, test the self-contained headers on-demand only to avoid build timeouts | |
96 | # CI environment is common for Travis CI, AppVeyor, CircleCI, etc. | |
97 | # For example: | |
98 | # if ! [ os.environ CI ] || [ os.environ TEST_HEADERS ] { | |
99 | # alias self_contained_headers : [ generate_self_contained_headers ] ; | |
100 | # } | |
101 | ||
102 | local targets ; | |
103 | ||
104 | # NOTE: All '/' in test names are replaced with '-' because apparently | |
105 | # test scripts have a problem with test names containing slashes. | |
106 | ||
107 | local top_headers_path = [ path.make $(BOOST_ROOT)/libs/gil/include/boost/gil ] ; | |
f67539c2 TL |
108 | local headers_path = $(top_headers_path) ; |
109 | if $(headers_subpath) | |
110 | { | |
111 | headers_path = $(top_headers_path)/$(headers_subpath) ; | |
112 | } | |
92f5a8d4 | 113 | |
f67539c2 | 114 | for local file in [ path.glob-tree $(headers_path) : *.hpp : $(exclude_subpaths) ] |
92f5a8d4 | 115 | { |
f67539c2 | 116 | local target_no = [ sequence.length $(targets) ] ; |
92f5a8d4 | 117 | local rel_file = [ path.relative-to $(top_headers_path) $(file) ] ; |
f67539c2 | 118 | local target_name = [ regex.replace h/$(target_no)/$(rel_file) "/" "-" ] ; |
92f5a8d4 TL |
119 | local target_name = [ regex.replace $(target_name) "\.hpp" "" ] ; |
120 | targets += [ | |
121 | compile $(BOOST_ROOT)/libs/gil/test/header/main.cpp | |
122 | : <define>"BOOST_GIL_TEST_HEADER=$(rel_file)" <dependency>$(file) | |
123 | : $(target_name) | |
124 | ] ; | |
125 | } | |
126 | ||
127 | return $(targets) ; | |
128 | } | |
129 | ||
f67539c2 TL |
130 | run test_utility_output_stream.cpp ; |
131 | ||
92f5a8d4 TL |
132 | build-project core ; |
133 | build-project legacy ; | |
134 | build-project extension ; |