Skip to content

Commit 8df1f1c

Browse files
committed
Merge pull request #281 from niosHD/improve-build-system
Improve build system
2 parents 438a55c + f796642 commit 8df1f1c

File tree

8 files changed

+114
-52
lines changed

8 files changed

+114
-52
lines changed

CMakeLists.txt

Lines changed: 15 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -70,8 +70,8 @@ elseif(${CMAKE_CXX_COMPILER_ID} MATCHES Clang)
7070
-DASIO_HAS_STD_ADDRESSOFF -DASIO_HAS_STD_FUNCTION -DASIO_HAS_STD_TYPE_TRAITS)
7171
endif()
7272

73-
message("C++ Compiler ID: ${CMAKE_CXX_COMPILER_ID}")
74-
message("C++ Flags: ${CMAKE_CXX_FLAGS} link flags: ${CMAKE_CXX_LINK_FLAGS}")
73+
message(STATUS "C++ Compiler ID: ${CMAKE_CXX_COMPILER_ID}")
74+
message(STATUS "C++ Flags: ${CMAKE_CXX_FLAGS} link flags: ${CMAKE_CXX_LINK_FLAGS}")
7575
if (Boost_FOUND)
7676
if (MSVC)
7777
add_definitions(-D_SCL_SECURE_NO_WARNINGS)
@@ -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

Lines changed: 7 additions & 1 deletion
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 absolute
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

Lines changed: 2 additions & 1 deletion
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

Lines changed: 1 addition & 0 deletions
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

Lines changed: 36 additions & 17 deletions
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 absolute
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

Lines changed: 30 additions & 25 deletions
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

Lines changed: 8 additions & 3 deletions
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 absolute
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

Lines changed: 15 additions & 3 deletions
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 absolute
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)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy