Skip to content

Commit a93e065

Browse files
committed
cmake: fixes build to a single library
1 parent 4eefc70 commit a93e065

File tree

8 files changed

+112
-50
lines changed

8 files changed

+112
-50
lines changed

CMakeLists.txt

+13
Original file line numberDiff line numberDiff line change
@@ -92,6 +92,17 @@ message(STATUS " CPP-NETLIB_DISABLE_LOGGING: ${CPP-NETLIB_DISABLE_LOGGING}\t(
9292
message(STATUS " CPP-NETLIB_DISABLE_LIBCXX: ${CPP-NETLIB_DISABLE_LIBCXX}\t(Disable using libc++ when building with clang: ON, OFF)")
9393
message(STATUS "CMake build options selected:")
9494

95+
# Takes one or more lists as parameter and prepends the prefix to every element.
96+
function(prependToElements prefix)
97+
foreach(list ${ARGN} ) # iterate over lists
98+
set(newlist "")
99+
foreach(ele ${${list}} ) # iterate over the elements
100+
set(newlist ${newlist} "${prefix}${ele}")
101+
endforeach(ele)
102+
set(${list} ${newlist} PARENT_SCOPE) # replace the original list
103+
endforeach(list)
104+
endfunction(prependToElements)
105+
95106
############################################################################
96107
#
97108
# The code following this point is for the new directory structure
@@ -133,6 +144,7 @@ if(CPP-NETLIB_BUILD_SINGLE_LIB)
133144
${CMAKE_CURRENT_SOURCE_DIR}/logging/src
134145
${CMAKE_CURRENT_SOURCE_DIR}/message/src
135146
${CMAKE_CURRENT_SOURCE_DIR}/uri/src
147+
${CMAKE_CURRENT_SOURCE_DIR}
136148
)
137149
endif()
138150

@@ -155,6 +167,7 @@ if(CPP-NETLIB_BUILD_SINGLE_LIB)
155167
${CPP-NETLIB_LOGGING_SRCS}
156168
${CPP-NETLIB_HTTP_CLIENT_SRCS}
157169
${CPP-NETLIB_HTTP_CLIENT_CONNECTIONS_SRCS}
170+
${CPP-NETLIB_HTTP_SERVER_SRCS}
158171
${CPP-NETLIB_HTTP_MESSAGE_SRCS}
159172
${CPP-NETLIB_HTTP_MESSAGE_WRAPPERS_SRCS}
160173
${CPP-NETLIB_CONSTANTS_SRCS}

concurrency/src/CMakeLists.txt

+7-1
Original file line numberDiff line numberDiff line change
@@ -5,10 +5,16 @@
55

66
include_directories(${CPP-NETLIB_SOURCE_DIR}/concurrency/src)
77

8-
set(CPP-NETLIB_CONCURRENCY_SRCS ${CMAKE_CURRENT_SOURCE_DIR}/thread_pool.cpp)
8+
set(CPP-NETLIB_CONCURRENCY_SRCS
9+
thread_pool.cpp)
10+
911
if(NOT CPP-NETLIB_BUILD_SINGLE_LIB)
1012
add_library(cppnetlib-concurrency ${CPP-NETLIB_CONCURRENCY_SRCS})
1113
endif()
1214

15+
# prepend current directory to make paths absolut
16+
prependToElements( "${CMAKE_CURRENT_SOURCE_DIR}/"
17+
CPP-NETLIB_CONCURRENCY_SRCS )
18+
1319
# propagate sources to parent directory for one-lib-build
1420
set(CPP-NETLIB_CONCURRENCY_SRCS ${CPP-NETLIB_CONCURRENCY_SRCS} PARENT_SCOPE)

contrib/http_examples/CMakeLists.txt

+2-1
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,8 @@ if (OPENSSL_FOUND)
1313
include_directories(${OPENSSL_INCLUDE_DIR})
1414
endif (OPENSSL_FOUND)
1515

16-
if( NOT CPP-NETLIB_DISABLE_LOGGING )
16+
set( CPP-NETLIB_LOGGING_LIB "" )
17+
if( NOT CPP-NETLIB_DISABLE_LOGGING AND NOT CPP-NETLIB_BUILD_SINGLE_LIB)
1718
set( CPP-NETLIB_LOGGING_LIB cppnetlib-logging )
1819
endif()
1920

http/CMakeLists.txt

+1
Original file line numberDiff line numberDiff line change
@@ -15,4 +15,5 @@ set(CPP-NETLIB_HTTP_MESSAGE_SRCS ${CPP-NETLIB_HTTP_MESSAGE_SRCS} PARENT_SCOPE)
1515
set(CPP-NETLIB_HTTP_MESSAGE_WRAPPERS_SRCS ${CPP-NETLIB_HTTP_MESSAGE_WRAPPERS_SRCS} PARENT_SCOPE)
1616
set(CPP-NETLIB_HTTP_CLIENT_CONNECTIONS_SRCS ${CPP-NETLIB_HTTP_CLIENT_CONNECTIONS_SRCS} PARENT_SCOPE)
1717
set(CPP-NETLIB_HTTP_CLIENT_SRCS ${CPP-NETLIB_HTTP_CLIENT_SRCS} PARENT_SCOPE)
18+
set(CPP-NETLIB_HTTP_SERVER_SRCS ${CPP-NETLIB_HTTP_SERVER_SRCS} PARENT_SCOPE)
1819
set(CPP-NETLIB_CONSTANTS_SRCS ${CPP-NETLIB_CONSTANTS_SRCS} PARENT_SCOPE)

http/src/CMakeLists.txt

+36-17
Original file line numberDiff line numberDiff line change
@@ -19,8 +19,9 @@ include_directories(${OPENSSL_INCLUDE_DIR})
1919
endif()
2020

2121
set(CPP-NETLIB_HTTP_MESSAGE_SRCS
22-
${CMAKE_CURRENT_SOURCE_DIR}/http/request.cpp
23-
${CMAKE_CURRENT_SOURCE_DIR}/http/response.cpp)
22+
http/request.cpp
23+
http/response.cpp)
24+
2425
if(NOT CPP-NETLIB_BUILD_SINGLE_LIB)
2526
add_library(cppnetlib-http-message ${CPP-NETLIB_HTTP_MESSAGE_SRCS})
2627
add_dependencies(cppnetlib-http-message
@@ -30,41 +31,49 @@ if(NOT CPP-NETLIB_BUILD_SINGLE_LIB)
3031
cppnetlib-message)
3132
endif()
3233

33-
set(CPP-NETLIB_HTTP_MESSAGE_WRAPPERS_SRCS ${CMAKE_CURRENT_SOURCE_DIR}/http/message/wrappers.cpp)
34+
set(CPP-NETLIB_HTTP_MESSAGE_WRAPPERS_SRCS
35+
http/message/wrappers.cpp)
36+
3437
if(NOT CPP-NETLIB_BUILD_SINGLE_LIB)
3538
add_library(cppnetlib-http-message-wrappers ${CPP-NETLIB_HTTP_MESSAGE_WRAPPERS_SRCS})
3639
endif()
3740

3841
set(CPP-NETLIB_HTTP_CLIENT_CONNECTIONS_SRCS
39-
${CMAKE_CURRENT_SOURCE_DIR}/http/client_connections.cpp
40-
${CMAKE_CURRENT_SOURCE_DIR}/http/simple_connection_manager.cpp
41-
${CMAKE_CURRENT_SOURCE_DIR}/http/simple_connection_factory.cpp
42-
${CMAKE_CURRENT_SOURCE_DIR}/http/connection_delegate_factory.cpp
43-
${CMAKE_CURRENT_SOURCE_DIR}/http/client_resolver_delegate.cpp
44-
${CMAKE_CURRENT_SOURCE_DIR}/http/client_resolver_delegate_factory.cpp
45-
${CMAKE_CURRENT_SOURCE_DIR}/http/client_connection_delegates.cpp
46-
${CMAKE_CURRENT_SOURCE_DIR}/http/client_connection_factory.cpp
47-
${CMAKE_CURRENT_SOURCE_DIR}/http/client_async_resolver.cpp
48-
${CMAKE_CURRENT_SOURCE_DIR}/http/client_connection_normal.cpp)
42+
http/client_connections.cpp
43+
http/simple_connection_manager.cpp
44+
http/simple_connection_factory.cpp
45+
http/connection_delegate_factory.cpp
46+
http/client_resolver_delegate.cpp
47+
http/client_resolver_delegate_factory.cpp
48+
http/client_connection_delegates.cpp
49+
http/client_connection_factory.cpp
50+
http/client_async_resolver.cpp
51+
http/client_connection_normal.cpp)
52+
4953
if(NOT CPP-NETLIB_BUILD_SINGLE_LIB)
5054
add_library(cppnetlib-http-client-connections ${CPP-NETLIB_HTTP_CLIENT_CONNECTIONS_SRCS})
5155
endif()
5256

53-
set(CPP-NETLIB_CONSTANTS_SRCS constants.cpp)
57+
set(CPP-NETLIB_CONSTANTS_SRCS
58+
constants.cpp)
59+
5460
if(NOT CPP-NETLIB_BUILD_SINGLE_LIB)
5561
add_library(cppnetlib-constants ${CPP-NETLIB_CONSTANTS_SRCS})
5662
endif()
5763

5864
# Server implementation files.
5965
set(CPP-NETLIB_HTTP_SERVER_SRCS
60-
${CMAKE_CURRENT_SOURCE_DIR}/http/server/session.cpp http/server/simple_sessions.cpp
61-
${CMAKE_CURRENT_SOURCE_DIR}/http/server/dynamic_dispatcher.cpp)
66+
http/server/session.cpp
67+
http/server/simple_sessions.cpp
68+
http/server/dynamic_dispatcher.cpp)
69+
6270
if (NOT CPP-NETLIB_BUILD_SINGLE_LIB)
6371
add_library(cppnetlib-http-server ${CPP-NETLIB_HTTP_SERVER_SRCS})
6472
endif()
6573

6674
set(CPP-NETLIB_HTTP_CLIENT_SRCS
67-
${CMAKE_CURRENT_SOURCE_DIR}/http/client.cpp)
75+
http/client.cpp)
76+
6877
if(NOT CPP-NETLIB_BUILD_SINGLE_LIB)
6978
add_library(cppnetlib-http-client ${CPP-NETLIB_HTTP_CLIENT_SRCS})
7079
add_dependencies(cppnetlib-http-client
@@ -92,9 +101,19 @@ if(NOT CPP-NETLIB_BUILD_SINGLE_LIB)
92101
)
93102
endif()
94103

104+
# prepend current directory to make paths absolut
105+
prependToElements( "${CMAKE_CURRENT_SOURCE_DIR}/"
106+
CPP-NETLIB_HTTP_MESSAGE_SRCS
107+
CPP-NETLIB_HTTP_MESSAGE_WRAPPERS_SRCS
108+
CPP-NETLIB_HTTP_CLIENT_CONNECTIONS_SRCS
109+
CPP-NETLIB_CONSTANTS_SRCS
110+
CPP-NETLIB_HTTP_SERVER_SRCS
111+
CPP-NETLIB_HTTP_CLIENT_SRCS )
112+
95113
# propagate sources to parent directory for one-lib-build
96114
set(CPP-NETLIB_HTTP_MESSAGE_SRCS ${CPP-NETLIB_HTTP_MESSAGE_SRCS} PARENT_SCOPE)
97115
set(CPP-NETLIB_HTTP_MESSAGE_WRAPPERS_SRCS ${CPP-NETLIB_HTTP_MESSAGE_WRAPPERS_SRCS} PARENT_SCOPE)
98116
set(CPP-NETLIB_HTTP_CLIENT_CONNECTIONS_SRCS ${CPP-NETLIB_HTTP_CLIENT_CONNECTIONS_SRCS} PARENT_SCOPE)
99117
set(CPP-NETLIB_HTTP_CLIENT_SRCS ${CPP-NETLIB_HTTP_CLIENT_SRCS} PARENT_SCOPE)
118+
set(CPP-NETLIB_HTTP_SERVER_SRCS ${CPP-NETLIB_HTTP_SERVER_SRCS} PARENT_SCOPE)
100119
set(CPP-NETLIB_CONSTANTS_SRCS ${CPP-NETLIB_CONSTANTS_SRCS} PARENT_SCOPE)

http/test/CMakeLists.txt

+30-25
Original file line numberDiff line numberDiff line change
@@ -17,30 +17,41 @@ if (OPENSSL_FOUND)
1717
add_definitions(-DNETWORK_ENABLE_HTTPS)
1818
endif()
1919

20+
21+
set( CPPNETLIB_LIBRARIES cppnetlib )
22+
set( CPPNETLIB_CLIENT_LIBRARIES ${CPPNETLIB_LIBRARIES} )
23+
set( CPPNETLIB_SERVER_LIBRARIES ${CPPNETLIB_LIBRARIES} )
24+
if(NOT CPP-NETLIB_BUILD_SINGLE_LIB)
25+
set( CPPNETLIB_LIBRARIES
26+
cppnetlib-message
27+
cppnetlib-message-wrappers
28+
cppnetlib-http-message
29+
cppnetlib-http-message-wrappers
30+
cppnetlib-uri
31+
cppnetlib-constants )
32+
33+
set( CPPNETLIB_CLIENT_LIBRARIES
34+
${CPPNETLIB_LIBRARIES}
35+
cppnetlib-http-client
36+
cppnetlib-http-client-connections )
37+
38+
set( CPPNETLIB_SERVER_LIBRARIES
39+
cppnetlib-http-server )
40+
endif()
41+
42+
2043
if (CPP-NETLIB_BUILD_TESTS)
2144
# These are the internal (simple) tests.
2245
set (MESSAGE_TESTS request_base_test request_test response_test
2346
response_incremental_parser_test)
2447
foreach ( test ${MESSAGE_TESTS} )
2548
add_executable(cpp-netlib-http-${test} ${test}.cpp)
26-
add_dependencies(cpp-netlib-http-${test}
27-
cppnetlib-message
28-
cppnetlib-message-wrappers
29-
cppnetlib-http-message
30-
cppnetlib-http-message-wrappers
31-
cppnetlib-uri
32-
cppnetlib-constants)
3349
target_link_libraries(cpp-netlib-http-${test}
3450
${Boost_LIBRARIES}
3551
${GTEST_BOTH_LIBRARIES}
3652
${ICU_LIBRARIES} ${ICU_I18N_LIBRARIES}
3753
${CMAKE_THREAD_LIBS_INIT}
38-
cppnetlib-message
39-
cppnetlib-message-wrappers
40-
cppnetlib-http-message
41-
cppnetlib-http-message-wrappers
42-
cppnetlib-uri
43-
cppnetlib-constants)
54+
${CPPNETLIB_LIBRARIES} )
4455
set_target_properties(cpp-netlib-http-${test}
4556
PROPERTIES RUNTIME_OUTPUT_DIRECTORY ${CPP-NETLIB_BINARY_DIR}/tests)
4657
add_test(cpp-netlib-http-${test}
@@ -54,16 +65,8 @@ if (CPP-NETLIB_BUILD_TESTS)
5465
${GTEST_BOTH_LIBRARIES}
5566
${ICU_LIBRARIES} ${ICU_I18N_LIBRARIES}
5667
${CMAKE_THREAD_LIBS_INIT}
57-
cppnetlib-constants
58-
cppnetlib-uri
59-
cppnetlib-message
60-
cppnetlib-message-wrappers
61-
cppnetlib-message-directives
6268
${CPP-NETLIB_LOGGING_LIB}
63-
cppnetlib-http-message
64-
cppnetlib-http-message-wrappers
65-
cppnetlib-http-client
66-
cppnetlib-http-client-connections)
69+
${CPPNETLIB_CLIENT_LIBRARIES} )
6770
if (OPENSSL_FOUND)
6871
target_link_libraries(cpp-netlib-http-client_test ${OPENSSL_LIBRARIES})
6972
endif()
@@ -77,9 +80,11 @@ if (CPP-NETLIB_BUILD_TESTS)
7780
server_default_connection_manager_test server_test)
7881
foreach (test ${SERVER_TESTS})
7982
add_executable(cpp-netlib-http-${test} ${test}.cpp)
80-
add_dependencies(cpp-netlib-http-${test} cppnetlib-http-server)
81-
target_link_libraries(cpp-netlib-http-${test} ${Boost_LIBRARIES}
82-
${GTEST_BOTH_LIBRARIES} ${CMAKE_THREAD_LIBS_INIT} cppnetlib-http-server)
83+
target_link_libraries(cpp-netlib-http-${test}
84+
${Boost_LIBRARIES}
85+
${GTEST_BOTH_LIBRARIES}
86+
${CMAKE_THREAD_LIBS_INIT}
87+
${CPPNETLIB_SERVER_LIBRARIES} )
8388
set_target_properties(cpp-netlib-http-${test} PROPERTIES
8489
RUNTIME_OUTPUT_DIRECTORY ${CPP-NETLIB_BINARY_DIR}/tests)
8590
add_test(cpp-netlib-http-${test}

logging/src/CMakeLists.txt

+8-3
Original file line numberDiff line numberDiff line change
@@ -4,10 +4,15 @@
44
# http://www.boost.org/LICENSE_1_0.txt)
55

66
include_directories(${CPP-NETLIB_SOURCE_DIR}/logging/src ${CPP-NETLIB_SOURCE_DIR})
7-
set(CPP-NETLIB_LOGGING_SRCS logging.cpp)
7+
8+
set(CPP-NETLIB_LOGGING_SRCS
9+
logging.cpp)
10+
811
add_library(cppnetlib-logging ${CPP-NETLIB_LOGGING_SRCS})
9-
foreach (src_file ${CPP-NETLIB_LOGGING_SRCS})
10-
endforeach(src_file)
12+
13+
# prepend current directory to make paths absolut
14+
prependToElements( "${CMAKE_CURRENT_SOURCE_DIR}/"
15+
CPP-NETLIB_LOGGING_SRCS )
1116

1217
# propagate sources to parent directory for one-lib-build
1318
set(CPP-NETLIB_LOGGING_SRCS ${CPP-NETLIB_LOGGING_SRCS} PARENT_SCOPE)

message/src/CMakeLists.txt

+15-3
Original file line numberDiff line numberDiff line change
@@ -7,17 +7,29 @@
77

88
include_directories(${CPP-NETLIB_SOURCE_DIR}/uri/src ${CPP-NETLIB_SOURCE_DIR}/message/src)
99

10-
set(CPP-NETLIB_MESSAGE_SRCS message.cpp)
10+
set(CPP-NETLIB_MESSAGE_SRCS
11+
message.cpp)
12+
1113
add_library(cppnetlib-message ${CPP-NETLIB_MESSAGE_SRCS})
1214
add_dependencies(cppnetlib-message cppnetlib-uri)
1315
target_link_libraries(cppnetlib-message cppnetlib-uri)
1416

15-
set(CPP-NETLIB_MESSAGE_DIRECTIVES_SRCS directives.cpp)
17+
set(CPP-NETLIB_MESSAGE_DIRECTIVES_SRCS
18+
directives.cpp)
19+
1620
add_library(cppnetlib-message-directives ${CPP-NETLIB_MESSAGE_DIRECTIVES_SRCS})
1721

18-
set(CPP-NETLIB_MESSAGE_WRAPPERS_SRCS wrappers.cpp)
22+
set(CPP-NETLIB_MESSAGE_WRAPPERS_SRCS
23+
wrappers.cpp)
24+
1925
add_library(cppnetlib-message-wrappers ${CPP-NETLIB_MESSAGE_WRAPPERS_SRCS})
2026

27+
# prepend current directory to make paths absolut
28+
prependToElements( "${CMAKE_CURRENT_SOURCE_DIR}/"
29+
CPP-NETLIB_MESSAGE_SRCS
30+
CPP-NETLIB_MESSAGE_DIRECTIVES_SRCS
31+
CPP-NETLIB_MESSAGE_WRAPPERS_SRCS )
32+
2133
# propagate sources to parent directory for one-lib-build
2234
set(CPP-NETLIB_MESSAGE_SRCS ${CPP-NETLIB_MESSAGE_SRCS} PARENT_SCOPE)
2335
set(CPP-NETLIB_MESSAGE_DIRECTIVES_SRCS ${CPP-NETLIB_MESSAGE_DIRECTIVES_SRCS} PARENT_SCOPE)

0 commit comments

Comments
 (0)