Skip to content

Commit 552ddad

Browse files
committed
Add Boost Log library
1 parent e697dda commit 552ddad

File tree

3 files changed

+228
-2
lines changed

3 files changed

+228
-2
lines changed

CMakeLists.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ set(BOOST_LIBS
4141
graph
4242
iostreams
4343
locale
44-
#log # a bit complex and some platform specific setup
44+
log
4545
math
4646
mpi
4747
graph_parallel # depends on mpi, so needs to be put after it

cmake/Modules/AddBoostLib.cmake

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
function(_add_boost_lib)
22
set(options )
33
set(oneValueArgs NAME)
4-
set(multiValueArgs SOURCES LINK DEFINE DEFINE_PRIVATE CXXFLAGS_PRIVATE)
4+
set(multiValueArgs SOURCES LINK DEFINE DEFINE_PRIVATE CXXFLAGS_PRIVATE INCLUDE_PRIVATE)
55
cmake_parse_arguments(BOOSTLIB "${options}" "${oneValueArgs}"
66
"${multiValueArgs}" ${ARGN})
77
add_library(Boost_${BOOSTLIB_NAME} STATIC ${BOOSTLIB_SOURCES})
@@ -31,4 +31,7 @@ function(_add_boost_lib)
3131
if(BOOSTLIB_CXXFLAGS_PRIVATE)
3232
target_compile_options(Boost_${BOOSTLIB_NAME} PRIVATE ${BOOSTLIB_CXXFLAGS_PRIVATE})
3333
endif()
34+
if(BOOSTLIB_INCLUDE_PRIVATE)
35+
target_include_directories(Boost_${BOOSTLIB_NAME} PRIVATE ${BOOSTLIB_INCLUDE_PRIVATE})
36+
endif()
3437
endfunction()

libs/log.cmake

Lines changed: 223 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,223 @@
1+
option(BOOST_LOG_WITHOUT_DEBUG_OUTPUT "Disable debug output backend in Boost Log" OFF)
2+
option(BOOST_LOG_WITHOUT_EVENT_LOG "Disable event log backend in Boost Log" OFF)
3+
option(BOOST_LOG_WITHOUT_SYSLOG "Disable syslog backend in Boost Log" OFF)
4+
5+
_add_boost_lib(
6+
NAME log
7+
SOURCES
8+
${BOOST_SOURCE}/libs/log/src/attribute_name.cpp
9+
${BOOST_SOURCE}/libs/log/src/attribute_set.cpp
10+
${BOOST_SOURCE}/libs/log/src/attribute_value_set.cpp
11+
${BOOST_SOURCE}/libs/log/src/code_conversion.cpp
12+
${BOOST_SOURCE}/libs/log/src/core.cpp
13+
${BOOST_SOURCE}/libs/log/src/record_ostream.cpp
14+
${BOOST_SOURCE}/libs/log/src/severity_level.cpp
15+
${BOOST_SOURCE}/libs/log/src/global_logger_storage.cpp
16+
${BOOST_SOURCE}/libs/log/src/named_scope.cpp
17+
${BOOST_SOURCE}/libs/log/src/process_name.cpp
18+
${BOOST_SOURCE}/libs/log/src/process_id.cpp
19+
${BOOST_SOURCE}/libs/log/src/thread_id.cpp
20+
${BOOST_SOURCE}/libs/log/src/timer.cpp
21+
${BOOST_SOURCE}/libs/log/src/exceptions.cpp
22+
${BOOST_SOURCE}/libs/log/src/default_attribute_names.cpp
23+
${BOOST_SOURCE}/libs/log/src/default_sink.cpp
24+
${BOOST_SOURCE}/libs/log/src/text_ostream_backend.cpp
25+
${BOOST_SOURCE}/libs/log/src/text_file_backend.cpp
26+
${BOOST_SOURCE}/libs/log/src/text_multifile_backend.cpp
27+
${BOOST_SOURCE}/libs/log/src/thread_specific.cpp
28+
${BOOST_SOURCE}/libs/log/src/once_block.cpp
29+
${BOOST_SOURCE}/libs/log/src/timestamp.cpp
30+
${BOOST_SOURCE}/libs/log/src/threadsafe_queue.cpp
31+
${BOOST_SOURCE}/libs/log/src/event.cpp
32+
${BOOST_SOURCE}/libs/log/src/trivial.cpp
33+
${BOOST_SOURCE}/libs/log/src/spirit_encoding.cpp
34+
${BOOST_SOURCE}/libs/log/src/format_parser.cpp
35+
${BOOST_SOURCE}/libs/log/src/date_time_format_parser.cpp
36+
${BOOST_SOURCE}/libs/log/src/named_scope_format_parser.cpp
37+
${BOOST_SOURCE}/libs/log/src/unhandled_exception_count.cpp
38+
${BOOST_SOURCE}/libs/log/src/permissions.cpp
39+
${BOOST_SOURCE}/libs/log/src/dump.cpp
40+
DEFINE_PRIVATE
41+
_STDC_CONSTANT_MACROS
42+
BOOST_SPIRIT_USE_PHOENIX_V3=1
43+
BOOST_THREAD_DONT_USE_CHRONO=1
44+
BOOST_LOG_BUILDING_THE_LIB=1
45+
$<$<BOOL:${USE_WINDOWS}>:
46+
NOMINMAX
47+
WIN32_LEAN_AND_MEAN
48+
SECURITY_WIN32
49+
__USE_W32_SOCKETS
50+
BOOST_USE_WINDOWS_H
51+
>
52+
INCLUDE_PRIVATE
53+
${BOOST_SOURCE}/libs/log/src
54+
LINK
55+
Boost::atomic
56+
Boost::date_time
57+
Boost::filesystem
58+
Boost::system
59+
Boost::thread
60+
$<$<BOOL:${USE_WINDOWS}>:
61+
ws2_32
62+
mswsock
63+
advapi32
64+
>
65+
)
66+
67+
try_compile(HAVE_PTHREAD_MUTEX_ROBUST
68+
"${CMAKE_CURRENT_BINARY_DIR}"
69+
"${BOOST_SOURCE}/libs/log/config/pthread-mutex-robust/pthread_mutex_robust.cpp"
70+
COMPILE_DEFINITIONS _XOPEN_SOURCE=600 _GNU_SOURCE=1
71+
)
72+
if(HAVE_PTHREAD_MUTEX_ROBUST)
73+
target_compile_definitions(Boost_log PRIVATE BOOST_LOG_HAS_PTHREAD_MUTEX_ROBUST)
74+
endif()
75+
76+
try_compile(HAVE_ATOMIC_INT32
77+
"${CMAKE_CURRENT_BINARY_DIR}"
78+
"${BOOST_SOURCE}/libs/log/config/atomic-int32/atomic_int32.cpp"
79+
LINK_LIBRARIES Boost::boost
80+
)
81+
if(NOT HAVE_ATOMIC_INT32)
82+
target_compile_definitions(Boost_log PRIVATE BOOST_LOG_WITHOUT_IPC)
83+
else()
84+
if(USE_WINDOWS)
85+
target_sources(Boost_log PRIVATE
86+
${BOOST_SOURCE}/libs/log/src/windows/object_name.cpp
87+
${BOOST_SOURCE}/libs/log/src/windows/mapped_shared_memory.cpp
88+
${BOOST_SOURCE}/libs/log/src/windows/ipc_sync_wrappers.cpp
89+
${BOOST_SOURCE}/libs/log/src/windows/ipc_reliable_message_queue.cpp
90+
)
91+
target_link_libraries(Boost_log PRIVATE secur32)
92+
else()
93+
target_sources(Boost_log PRIVATE
94+
${BOOST_SOURCE}/libs/log/src/posix/object_name.cpp
95+
${BOOST_SOURCE}/libs/log/src/posix/ipc_reliable_message_queue.cpp
96+
)
97+
endif()
98+
endif()
99+
100+
try_compile(HAVE_NATIVE_SYSLOG
101+
"${CMAKE_CURRENT_BINARY_DIR}"
102+
"${BOOST_SOURCE}/libs/log/config/native-syslog/native_syslog.cpp"
103+
)
104+
if(NOT BOOST_LOG_WITHOUT_SYSLOG AND HAVE_NATIVE_SYSLOG)
105+
target_compile_definitions(Boost_log PRIVATE BOOST_LOG_USE_NATIVE_SYSLOG)
106+
target_sources(Boost_log PRIVATE
107+
${BOOST_SOURCE}/libs/log/src/syslog_backend.cpp
108+
)
109+
else()
110+
target_compile_definitions(Boost_log PRIVATE BOOST_LOG_WITHOUT_SYSLOG)
111+
endif()
112+
113+
find_program(MC_EXECUTABLE mc
114+
DOC "Message Compiler executable"
115+
)
116+
if(NOT BOOST_LOG_WITHOUT_EVENT_LOG AND MC_EXECUTABLE AND FALSE)
117+
# TODO: Enable this on Windows
118+
# windows/simple_event_log.mc should be compiled with mc.exe
119+
target_sources(Boost_log PRIVATE
120+
${BOOST_SOURCE}/libs/log/src/windows/event_log_backend.cpp
121+
)
122+
target_link_libraries(Boost_log PRIVATE psapi)
123+
else()
124+
target_compile_definitions(Boost_log PRIVATE BOOST_LOG_WITHOUT_EVENT_LOG)
125+
endif()
126+
127+
if(USE_WINDOWS AND NOT BOOST_LOG_WITHOUT_DEBUG_OUTPUT)
128+
target_sources(Boost_log PRIVATE
129+
${BOOST_SOURCE}/libs/log/src/windows/debug_output_backend.cpp
130+
)
131+
else()
132+
target_compile_definitions(Boost_log PRIVATE BOOST_LOG_WITHOUT_DEBUG_OUTPUT)
133+
endif()
134+
135+
#TODO: Handle SSSE3 and AVX2 optimizations
136+
137+
_add_boost_lib(
138+
NAME log_setup
139+
SOURCES
140+
${BOOST_SOURCE}/libs/log/src/setup/default_filter_factory.cpp
141+
${BOOST_SOURCE}/libs/log/src/setup/default_filter_factory.hpp
142+
${BOOST_SOURCE}/libs/log/src/setup/default_formatter_factory.cpp
143+
${BOOST_SOURCE}/libs/log/src/setup/default_formatter_factory.hpp
144+
${BOOST_SOURCE}/libs/log/src/setup/filter_parser.cpp
145+
${BOOST_SOURCE}/libs/log/src/setup/formatter_parser.cpp
146+
${BOOST_SOURCE}/libs/log/src/setup/init_from_settings.cpp
147+
${BOOST_SOURCE}/libs/log/src/setup/init_from_stream.cpp
148+
${BOOST_SOURCE}/libs/log/src/setup/matches_relation_factory.cpp
149+
${BOOST_SOURCE}/libs/log/src/setup/parser_utils.cpp
150+
${BOOST_SOURCE}/libs/log/src/setup/parser_utils.hpp
151+
${BOOST_SOURCE}/libs/log/src/setup/settings_parser.cpp
152+
DEFINE_PRIVATE
153+
BOOST_LOG_SETUP_BUILDING_THE_LIB=1
154+
INCLUDE_PRIVATE
155+
${BOOST_SOURCE}/libs/log/src
156+
LINK
157+
Boost::log
158+
)
159+
160+
add_library(Boost_log_common INTERFACE)
161+
target_include_directories(Boost_log_common INTERFACE ${BOOST_SOURCE}/libs/log/test/common)
162+
163+
_add_boost_test(
164+
NAME log_test
165+
LINK
166+
Boost::date_time
167+
Boost::filesystem
168+
Boost::log
169+
Boost::log_setup
170+
Boost::regex
171+
Boost::system
172+
Boost::thread
173+
Boost::unit_test_framework
174+
Boost_log_common
175+
TESTS
176+
RUN ${BOOST_SOURCE}/libs/log/test/run/attr_attribute_set.cpp
177+
RUN ${BOOST_SOURCE}/libs/log/test/run/attr_attribute_set_ticket11106.cpp
178+
RUN ${BOOST_SOURCE}/libs/log/test/run/attr_attribute_value_impl.cpp
179+
RUN ${BOOST_SOURCE}/libs/log/test/run/attr_attribute_value_set.cpp
180+
RUN ${BOOST_SOURCE}/libs/log/test/run/attr_attribute_value_set_ticket11190.cpp
181+
RUN ${BOOST_SOURCE}/libs/log/test/run/attr_function.cpp
182+
RUN ${BOOST_SOURCE}/libs/log/test/run/attr_named_scope.cpp
183+
RUN ${BOOST_SOURCE}/libs/log/test/run/attr_sets_insertion_lookup.cpp
184+
RUN ${BOOST_SOURCE}/libs/log/test/run/attr_value_visitation.cpp
185+
RUN ${BOOST_SOURCE}/libs/log/test/run/core.cpp
186+
RUN ${BOOST_SOURCE}/libs/log/test/run/filt_attr.cpp
187+
RUN ${BOOST_SOURCE}/libs/log/test/run/filt_has_attr.cpp
188+
RUN ${BOOST_SOURCE}/libs/log/test/run/filt_matches_boost_regex.cpp
189+
RUN ${BOOST_SOURCE}/libs/log/test/run/filt_matches_spirit_classic.cpp
190+
RUN ${BOOST_SOURCE}/libs/log/test/run/filt_matches_spirit_qi.cpp
191+
RUN ${BOOST_SOURCE}/libs/log/test/run/filt_matches_std_regex.cpp
192+
RUN ${BOOST_SOURCE}/libs/log/test/run/filt_matches_xpressive.cpp
193+
RUN ${BOOST_SOURCE}/libs/log/test/run/form_attr.cpp
194+
RUN ${BOOST_SOURCE}/libs/log/test/run/form_c_decor.cpp
195+
RUN ${BOOST_SOURCE}/libs/log/test/run/form_char_decor.cpp
196+
RUN ${BOOST_SOURCE}/libs/log/test/run/form_csv_decor.cpp
197+
RUN ${BOOST_SOURCE}/libs/log/test/run/form_date_time.cpp
198+
RUN ${BOOST_SOURCE}/libs/log/test/run/form_format.cpp
199+
RUN ${BOOST_SOURCE}/libs/log/test/run/form_if.cpp
200+
RUN ${BOOST_SOURCE}/libs/log/test/run/form_max_size_decor.cpp
201+
RUN ${BOOST_SOURCE}/libs/log/test/run/form_message.cpp
202+
RUN ${BOOST_SOURCE}/libs/log/test/run/form_named_scope.cpp
203+
RUN ${BOOST_SOURCE}/libs/log/test/run/form_to_log_manip.cpp
204+
RUN ${BOOST_SOURCE}/libs/log/test/run/form_xml_decor.cpp
205+
RUN ${BOOST_SOURCE}/libs/log/test/run/sink_text_ipc_mq_backend.cpp
206+
RUN ${BOOST_SOURCE}/libs/log/test/run/src_record_ostream.cpp
207+
RUN ${BOOST_SOURCE}/libs/log/test/run/unhandled_exception_count.cpp
208+
RUN ${BOOST_SOURCE}/libs/log/test/run/unhandled_exception_count_np.cpp
209+
RUN ${BOOST_SOURCE}/libs/log/test/run/util_dynamic_type_disp.cpp
210+
RUN ${BOOST_SOURCE}/libs/log/test/run/util_exception_handler.cpp
211+
RUN ${BOOST_SOURCE}/libs/log/test/run/util_formatting_ostream.cpp
212+
RUN ${BOOST_SOURCE}/libs/log/test/run/util_ipc_object_name.cpp
213+
# RUN ${BOOST_SOURCE}/libs/log/test/run/util_ipc_reliable_mq.cpp
214+
RUN ${BOOST_SOURCE}/libs/log/test/run/util_manip_add_value.cpp
215+
RUN ${BOOST_SOURCE}/libs/log/test/run/util_manip_dump.cpp
216+
RUN ${BOOST_SOURCE}/libs/log/test/run/util_manip_to_log.cpp
217+
RUN ${BOOST_SOURCE}/libs/log/test/run/util_once_block.cpp
218+
RUN ${BOOST_SOURCE}/libs/log/test/run/util_static_type_disp.cpp
219+
RUN ${BOOST_SOURCE}/libs/log/test/run/util_stp_filter_parser.cpp
220+
RUN ${BOOST_SOURCE}/libs/log/test/run/util_stp_formatter_parser.cpp
221+
RUN ${BOOST_SOURCE}/libs/log/test/run/util_stp_settings_parser.cpp
222+
RUN ${BOOST_SOURCE}/libs/log/test/run/util_string_literal.cpp
223+
)

0 commit comments

Comments
 (0)