Skip to content

Improve build system #281

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 3 commits into from
Aug 7, 2013
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
17 changes: 15 additions & 2 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -70,8 +70,8 @@ elseif(${CMAKE_CXX_COMPILER_ID} MATCHES Clang)
-DASIO_HAS_STD_ADDRESSOFF -DASIO_HAS_STD_FUNCTION -DASIO_HAS_STD_TYPE_TRAITS)
endif()

message("C++ Compiler ID: ${CMAKE_CXX_COMPILER_ID}")
message("C++ Flags: ${CMAKE_CXX_FLAGS} link flags: ${CMAKE_CXX_LINK_FLAGS}")
message(STATUS "C++ Compiler ID: ${CMAKE_CXX_COMPILER_ID}")
message(STATUS "C++ Flags: ${CMAKE_CXX_FLAGS} link flags: ${CMAKE_CXX_LINK_FLAGS}")
if (Boost_FOUND)
if (MSVC)
add_definitions(-D_SCL_SECURE_NO_WARNINGS)
Expand All @@ -92,6 +92,17 @@ message(STATUS " CPP-NETLIB_DISABLE_LOGGING: ${CPP-NETLIB_DISABLE_LOGGING}\t(
message(STATUS " CPP-NETLIB_DISABLE_LIBCXX: ${CPP-NETLIB_DISABLE_LIBCXX}\t(Disable using libc++ when building with clang: ON, OFF)")
message(STATUS "CMake build options selected:")

# Takes one or more lists as parameter and prepends the prefix to every element.
function(prependToElements prefix)
foreach(list ${ARGN} ) # iterate over lists
set(newlist "")
foreach(ele ${${list}} ) # iterate over the elements
set(newlist ${newlist} "${prefix}${ele}")
endforeach(ele)
set(${list} ${newlist} PARENT_SCOPE) # replace the original list
endforeach(list)
endfunction(prependToElements)

############################################################################
#
# The code following this point is for the new directory structure
Expand Down Expand Up @@ -133,6 +144,7 @@ if(CPP-NETLIB_BUILD_SINGLE_LIB)
${CMAKE_CURRENT_SOURCE_DIR}/logging/src
${CMAKE_CURRENT_SOURCE_DIR}/message/src
${CMAKE_CURRENT_SOURCE_DIR}/uri/src
${CMAKE_CURRENT_SOURCE_DIR}
)
endif()

Expand All @@ -155,6 +167,7 @@ if(CPP-NETLIB_BUILD_SINGLE_LIB)
${CPP-NETLIB_LOGGING_SRCS}
${CPP-NETLIB_HTTP_CLIENT_SRCS}
${CPP-NETLIB_HTTP_CLIENT_CONNECTIONS_SRCS}
${CPP-NETLIB_HTTP_SERVER_SRCS}
${CPP-NETLIB_HTTP_MESSAGE_SRCS}
${CPP-NETLIB_HTTP_MESSAGE_WRAPPERS_SRCS}
${CPP-NETLIB_CONSTANTS_SRCS}
Expand Down
8 changes: 7 additions & 1 deletion concurrency/src/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -5,10 +5,16 @@

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

set(CPP-NETLIB_CONCURRENCY_SRCS ${CMAKE_CURRENT_SOURCE_DIR}/thread_pool.cpp)
set(CPP-NETLIB_CONCURRENCY_SRCS
thread_pool.cpp)

if(NOT CPP-NETLIB_BUILD_SINGLE_LIB)
add_library(cppnetlib-concurrency ${CPP-NETLIB_CONCURRENCY_SRCS})
endif()

# prepend current directory to make paths absolute
prependToElements( "${CMAKE_CURRENT_SOURCE_DIR}/"
CPP-NETLIB_CONCURRENCY_SRCS )

# propagate sources to parent directory for one-lib-build
set(CPP-NETLIB_CONCURRENCY_SRCS ${CPP-NETLIB_CONCURRENCY_SRCS} PARENT_SCOPE)
3 changes: 2 additions & 1 deletion contrib/http_examples/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,8 @@ if (OPENSSL_FOUND)
include_directories(${OPENSSL_INCLUDE_DIR})
endif (OPENSSL_FOUND)

if( NOT CPP-NETLIB_DISABLE_LOGGING )
set( CPP-NETLIB_LOGGING_LIB "" )
if( NOT CPP-NETLIB_DISABLE_LOGGING AND NOT CPP-NETLIB_BUILD_SINGLE_LIB)
set( CPP-NETLIB_LOGGING_LIB cppnetlib-logging )
endif()

Expand Down
1 change: 1 addition & 0 deletions http/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -15,4 +15,5 @@ set(CPP-NETLIB_HTTP_MESSAGE_SRCS ${CPP-NETLIB_HTTP_MESSAGE_SRCS} PARENT_SCOPE)
set(CPP-NETLIB_HTTP_MESSAGE_WRAPPERS_SRCS ${CPP-NETLIB_HTTP_MESSAGE_WRAPPERS_SRCS} PARENT_SCOPE)
set(CPP-NETLIB_HTTP_CLIENT_CONNECTIONS_SRCS ${CPP-NETLIB_HTTP_CLIENT_CONNECTIONS_SRCS} PARENT_SCOPE)
set(CPP-NETLIB_HTTP_CLIENT_SRCS ${CPP-NETLIB_HTTP_CLIENT_SRCS} PARENT_SCOPE)
set(CPP-NETLIB_HTTP_SERVER_SRCS ${CPP-NETLIB_HTTP_SERVER_SRCS} PARENT_SCOPE)
set(CPP-NETLIB_CONSTANTS_SRCS ${CPP-NETLIB_CONSTANTS_SRCS} PARENT_SCOPE)
53 changes: 36 additions & 17 deletions http/src/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -19,8 +19,9 @@ include_directories(${OPENSSL_INCLUDE_DIR})
endif()

set(CPP-NETLIB_HTTP_MESSAGE_SRCS
${CMAKE_CURRENT_SOURCE_DIR}/http/request.cpp
${CMAKE_CURRENT_SOURCE_DIR}/http/response.cpp)
http/request.cpp
http/response.cpp)

if(NOT CPP-NETLIB_BUILD_SINGLE_LIB)
add_library(cppnetlib-http-message ${CPP-NETLIB_HTTP_MESSAGE_SRCS})
add_dependencies(cppnetlib-http-message
Expand All @@ -30,41 +31,49 @@ if(NOT CPP-NETLIB_BUILD_SINGLE_LIB)
cppnetlib-message)
endif()

set(CPP-NETLIB_HTTP_MESSAGE_WRAPPERS_SRCS ${CMAKE_CURRENT_SOURCE_DIR}/http/message/wrappers.cpp)
set(CPP-NETLIB_HTTP_MESSAGE_WRAPPERS_SRCS
http/message/wrappers.cpp)

if(NOT CPP-NETLIB_BUILD_SINGLE_LIB)
add_library(cppnetlib-http-message-wrappers ${CPP-NETLIB_HTTP_MESSAGE_WRAPPERS_SRCS})
endif()

set(CPP-NETLIB_HTTP_CLIENT_CONNECTIONS_SRCS
${CMAKE_CURRENT_SOURCE_DIR}/http/client_connections.cpp
${CMAKE_CURRENT_SOURCE_DIR}/http/simple_connection_manager.cpp
${CMAKE_CURRENT_SOURCE_DIR}/http/simple_connection_factory.cpp
${CMAKE_CURRENT_SOURCE_DIR}/http/connection_delegate_factory.cpp
${CMAKE_CURRENT_SOURCE_DIR}/http/client_resolver_delegate.cpp
${CMAKE_CURRENT_SOURCE_DIR}/http/client_resolver_delegate_factory.cpp
${CMAKE_CURRENT_SOURCE_DIR}/http/client_connection_delegates.cpp
${CMAKE_CURRENT_SOURCE_DIR}/http/client_connection_factory.cpp
${CMAKE_CURRENT_SOURCE_DIR}/http/client_async_resolver.cpp
${CMAKE_CURRENT_SOURCE_DIR}/http/client_connection_normal.cpp)
http/client_connections.cpp
http/simple_connection_manager.cpp
http/simple_connection_factory.cpp
http/connection_delegate_factory.cpp
http/client_resolver_delegate.cpp
http/client_resolver_delegate_factory.cpp
http/client_connection_delegates.cpp
http/client_connection_factory.cpp
http/client_async_resolver.cpp
http/client_connection_normal.cpp)

if(NOT CPP-NETLIB_BUILD_SINGLE_LIB)
add_library(cppnetlib-http-client-connections ${CPP-NETLIB_HTTP_CLIENT_CONNECTIONS_SRCS})
endif()

set(CPP-NETLIB_CONSTANTS_SRCS constants.cpp)
set(CPP-NETLIB_CONSTANTS_SRCS
constants.cpp)

if(NOT CPP-NETLIB_BUILD_SINGLE_LIB)
add_library(cppnetlib-constants ${CPP-NETLIB_CONSTANTS_SRCS})
endif()

# Server implementation files.
set(CPP-NETLIB_HTTP_SERVER_SRCS
${CMAKE_CURRENT_SOURCE_DIR}/http/server/session.cpp http/server/simple_sessions.cpp
${CMAKE_CURRENT_SOURCE_DIR}/http/server/dynamic_dispatcher.cpp)
http/server/session.cpp
http/server/simple_sessions.cpp
http/server/dynamic_dispatcher.cpp)

if (NOT CPP-NETLIB_BUILD_SINGLE_LIB)
add_library(cppnetlib-http-server ${CPP-NETLIB_HTTP_SERVER_SRCS})
endif()

set(CPP-NETLIB_HTTP_CLIENT_SRCS
${CMAKE_CURRENT_SOURCE_DIR}/http/client.cpp)
http/client.cpp)

if(NOT CPP-NETLIB_BUILD_SINGLE_LIB)
add_library(cppnetlib-http-client ${CPP-NETLIB_HTTP_CLIENT_SRCS})
add_dependencies(cppnetlib-http-client
Expand Down Expand Up @@ -92,9 +101,19 @@ if(NOT CPP-NETLIB_BUILD_SINGLE_LIB)
)
endif()

# prepend current directory to make paths absolute
prependToElements( "${CMAKE_CURRENT_SOURCE_DIR}/"
CPP-NETLIB_HTTP_MESSAGE_SRCS
CPP-NETLIB_HTTP_MESSAGE_WRAPPERS_SRCS
CPP-NETLIB_HTTP_CLIENT_CONNECTIONS_SRCS
CPP-NETLIB_CONSTANTS_SRCS
CPP-NETLIB_HTTP_SERVER_SRCS
CPP-NETLIB_HTTP_CLIENT_SRCS )

# propagate sources to parent directory for one-lib-build
set(CPP-NETLIB_HTTP_MESSAGE_SRCS ${CPP-NETLIB_HTTP_MESSAGE_SRCS} PARENT_SCOPE)
set(CPP-NETLIB_HTTP_MESSAGE_WRAPPERS_SRCS ${CPP-NETLIB_HTTP_MESSAGE_WRAPPERS_SRCS} PARENT_SCOPE)
set(CPP-NETLIB_HTTP_CLIENT_CONNECTIONS_SRCS ${CPP-NETLIB_HTTP_CLIENT_CONNECTIONS_SRCS} PARENT_SCOPE)
set(CPP-NETLIB_HTTP_CLIENT_SRCS ${CPP-NETLIB_HTTP_CLIENT_SRCS} PARENT_SCOPE)
set(CPP-NETLIB_HTTP_SERVER_SRCS ${CPP-NETLIB_HTTP_SERVER_SRCS} PARENT_SCOPE)
set(CPP-NETLIB_CONSTANTS_SRCS ${CPP-NETLIB_CONSTANTS_SRCS} PARENT_SCOPE)
55 changes: 30 additions & 25 deletions http/test/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -17,30 +17,41 @@ if (OPENSSL_FOUND)
add_definitions(-DNETWORK_ENABLE_HTTPS)
endif()


set( CPPNETLIB_LIBRARIES cppnetlib )
set( CPPNETLIB_CLIENT_LIBRARIES ${CPPNETLIB_LIBRARIES} )
set( CPPNETLIB_SERVER_LIBRARIES ${CPPNETLIB_LIBRARIES} )
if(NOT CPP-NETLIB_BUILD_SINGLE_LIB)
set( CPPNETLIB_LIBRARIES
cppnetlib-message
cppnetlib-message-wrappers
cppnetlib-http-message
cppnetlib-http-message-wrappers
cppnetlib-uri
cppnetlib-constants )

set( CPPNETLIB_CLIENT_LIBRARIES
${CPPNETLIB_LIBRARIES}
cppnetlib-http-client
cppnetlib-http-client-connections )

set( CPPNETLIB_SERVER_LIBRARIES
cppnetlib-http-server )
endif()


if (CPP-NETLIB_BUILD_TESTS)
# These are the internal (simple) tests.
set (MESSAGE_TESTS request_base_test request_test response_test
response_incremental_parser_test)
foreach ( test ${MESSAGE_TESTS} )
add_executable(cpp-netlib-http-${test} ${test}.cpp)
add_dependencies(cpp-netlib-http-${test}
cppnetlib-message
cppnetlib-message-wrappers
cppnetlib-http-message
cppnetlib-http-message-wrappers
cppnetlib-uri
cppnetlib-constants)
target_link_libraries(cpp-netlib-http-${test}
${Boost_LIBRARIES}
${GTEST_BOTH_LIBRARIES}
${ICU_LIBRARIES} ${ICU_I18N_LIBRARIES}
${CMAKE_THREAD_LIBS_INIT}
cppnetlib-message
cppnetlib-message-wrappers
cppnetlib-http-message
cppnetlib-http-message-wrappers
cppnetlib-uri
cppnetlib-constants)
${CPPNETLIB_LIBRARIES} )
set_target_properties(cpp-netlib-http-${test}
PROPERTIES RUNTIME_OUTPUT_DIRECTORY ${CPP-NETLIB_BINARY_DIR}/tests)
add_test(cpp-netlib-http-${test}
Expand All @@ -54,16 +65,8 @@ if (CPP-NETLIB_BUILD_TESTS)
${GTEST_BOTH_LIBRARIES}
${ICU_LIBRARIES} ${ICU_I18N_LIBRARIES}
${CMAKE_THREAD_LIBS_INIT}
cppnetlib-constants
cppnetlib-uri
cppnetlib-message
cppnetlib-message-wrappers
cppnetlib-message-directives
${CPP-NETLIB_LOGGING_LIB}
cppnetlib-http-message
cppnetlib-http-message-wrappers
cppnetlib-http-client
cppnetlib-http-client-connections)
${CPPNETLIB_CLIENT_LIBRARIES} )
if (OPENSSL_FOUND)
target_link_libraries(cpp-netlib-http-client_test ${OPENSSL_LIBRARIES})
endif()
Expand All @@ -77,9 +80,11 @@ if (CPP-NETLIB_BUILD_TESTS)
server_default_connection_manager_test server_test)
foreach (test ${SERVER_TESTS})
add_executable(cpp-netlib-http-${test} ${test}.cpp)
add_dependencies(cpp-netlib-http-${test} cppnetlib-http-server)
target_link_libraries(cpp-netlib-http-${test} ${Boost_LIBRARIES}
${GTEST_BOTH_LIBRARIES} ${CMAKE_THREAD_LIBS_INIT} cppnetlib-http-server)
target_link_libraries(cpp-netlib-http-${test}
${Boost_LIBRARIES}
${GTEST_BOTH_LIBRARIES}
${CMAKE_THREAD_LIBS_INIT}
${CPPNETLIB_SERVER_LIBRARIES} )
set_target_properties(cpp-netlib-http-${test} PROPERTIES
RUNTIME_OUTPUT_DIRECTORY ${CPP-NETLIB_BINARY_DIR}/tests)
add_test(cpp-netlib-http-${test}
Expand Down
11 changes: 8 additions & 3 deletions logging/src/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -4,10 +4,15 @@
# http://www.boost.org/LICENSE_1_0.txt)

include_directories(${CPP-NETLIB_SOURCE_DIR}/logging/src ${CPP-NETLIB_SOURCE_DIR})
set(CPP-NETLIB_LOGGING_SRCS logging.cpp)

set(CPP-NETLIB_LOGGING_SRCS
logging.cpp)

add_library(cppnetlib-logging ${CPP-NETLIB_LOGGING_SRCS})
foreach (src_file ${CPP-NETLIB_LOGGING_SRCS})
endforeach(src_file)

# prepend current directory to make paths absolute
prependToElements( "${CMAKE_CURRENT_SOURCE_DIR}/"
CPP-NETLIB_LOGGING_SRCS )

# propagate sources to parent directory for one-lib-build
set(CPP-NETLIB_LOGGING_SRCS ${CPP-NETLIB_LOGGING_SRCS} PARENT_SCOPE)
18 changes: 15 additions & 3 deletions message/src/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -7,17 +7,29 @@

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

set(CPP-NETLIB_MESSAGE_SRCS message.cpp)
set(CPP-NETLIB_MESSAGE_SRCS
message.cpp)

add_library(cppnetlib-message ${CPP-NETLIB_MESSAGE_SRCS})
add_dependencies(cppnetlib-message cppnetlib-uri)
target_link_libraries(cppnetlib-message cppnetlib-uri)

set(CPP-NETLIB_MESSAGE_DIRECTIVES_SRCS directives.cpp)
set(CPP-NETLIB_MESSAGE_DIRECTIVES_SRCS
directives.cpp)

add_library(cppnetlib-message-directives ${CPP-NETLIB_MESSAGE_DIRECTIVES_SRCS})

set(CPP-NETLIB_MESSAGE_WRAPPERS_SRCS wrappers.cpp)
set(CPP-NETLIB_MESSAGE_WRAPPERS_SRCS
wrappers.cpp)

add_library(cppnetlib-message-wrappers ${CPP-NETLIB_MESSAGE_WRAPPERS_SRCS})

# prepend current directory to make paths absolute
prependToElements( "${CMAKE_CURRENT_SOURCE_DIR}/"
CPP-NETLIB_MESSAGE_SRCS
CPP-NETLIB_MESSAGE_DIRECTIVES_SRCS
CPP-NETLIB_MESSAGE_WRAPPERS_SRCS )

# propagate sources to parent directory for one-lib-build
set(CPP-NETLIB_MESSAGE_SRCS ${CPP-NETLIB_MESSAGE_SRCS} PARENT_SCOPE)
set(CPP-NETLIB_MESSAGE_DIRECTIVES_SRCS ${CPP-NETLIB_MESSAGE_DIRECTIVES_SRCS} PARENT_SCOPE)
Expand Down