228 lines
6.3 KiB
CMake
228 lines
6.3 KiB
CMake
# -*- cmake -*-
|
|
|
|
project(llcorehttp)
|
|
|
|
include(00-Common)
|
|
include(GoogleMock)
|
|
include(CURL)
|
|
include(OpenSSL)
|
|
include(ZLIB)
|
|
include(LLCoreHttp)
|
|
include(LLAddBuildTest)
|
|
include(LLMessage)
|
|
include(LLCommon)
|
|
include(Tut)
|
|
|
|
include_directories (${CMAKE_CURRENT_SOURCE_DIR})
|
|
|
|
include_directories(
|
|
${LLMESSAGE_INCLUDE_DIRS}
|
|
${LLCOMMON_INCLUDE_DIRS}
|
|
${LLCOREHTTP_INCLUDE_DIRS}
|
|
)
|
|
|
|
set(llcorehttp_SOURCE_FILES
|
|
bufferarray.cpp
|
|
bufferstream.cpp
|
|
httpcommon.cpp
|
|
llhttpconstants.cpp
|
|
httpheaders.cpp
|
|
httpoptions.cpp
|
|
httprequest.cpp
|
|
httpresponse.cpp
|
|
_httplibcurl.cpp
|
|
_httpopcancel.cpp
|
|
_httpoperation.cpp
|
|
_httpoprequest.cpp
|
|
_httpopsetget.cpp
|
|
_httpopsetpriority.cpp
|
|
_httppolicy.cpp
|
|
_httppolicyclass.cpp
|
|
_httppolicyglobal.cpp
|
|
_httpreplyqueue.cpp
|
|
_httprequestqueue.cpp
|
|
_httpservice.cpp
|
|
_refcounted.cpp
|
|
)
|
|
|
|
set(llcorehttp_HEADER_FILES
|
|
CMakeLists.txt
|
|
|
|
bufferarray.h
|
|
bufferstream.h
|
|
httpcommon.h
|
|
llhttpconstants.h
|
|
httphandler.h
|
|
httpheaders.h
|
|
httpoptions.h
|
|
httprequest.h
|
|
httpresponse.h
|
|
_httpinternal.h
|
|
_httplibcurl.h
|
|
_httpopcancel.h
|
|
_httpoperation.h
|
|
_httpoprequest.h
|
|
_httpopsetget.h
|
|
_httpopsetpriority.h
|
|
_httppolicy.h
|
|
_httppolicyclass.h
|
|
_httppolicyglobal.h
|
|
_httpreadyqueue.h
|
|
_httpreplyqueue.h
|
|
_httprequestqueue.h
|
|
_httpservice.h
|
|
_mutex.h
|
|
_refcounted.h
|
|
_thread.h
|
|
)
|
|
|
|
set_source_files_properties(${llcorehttp_HEADER_FILES}
|
|
PROPERTIES HEADER_FILE_ONLY TRUE)
|
|
if (DARWIN OR LINUX)
|
|
# Boost headers define unused members in condition_variable so...
|
|
set_source_files_properties(${llcorehttp_SOURCE_FILES}
|
|
PROPERTIES COMPILE_FLAGS -Wno-unused-variable)
|
|
endif (DARWIN OR LINUX)
|
|
|
|
list(APPEND llcorehttp_SOURCE_FILES ${llcorehttp_HEADER_FILES})
|
|
|
|
add_library (llcorehttp ${llcorehttp_SOURCE_FILES})
|
|
target_link_libraries(
|
|
llcorehttp
|
|
${CURL_LIBRARIES}
|
|
${OPENSSL_LIBRARIES}
|
|
${CRYPTO_LIBRARIES}
|
|
${BOOST_THREAD_LIBRARY}
|
|
)
|
|
|
|
# tests
|
|
if (LL_TESTS)
|
|
SET(llcorehttp_TEST_SOURCE_FILES
|
|
tests/test_allocator.cpp
|
|
)
|
|
|
|
set(llcorehttp_TEST_HEADER_FILS
|
|
tests/test_httpstatus.hpp
|
|
tests/test_refcounted.hpp
|
|
tests/test_httpoperation.hpp
|
|
tests/test_httprequest.hpp
|
|
tests/test_httprequestqueue.hpp
|
|
tests/test_httpheaders.hpp
|
|
tests/test_bufferarray.hpp
|
|
tests/test_bufferstream.hpp
|
|
)
|
|
|
|
set_source_files_properties(${llcorehttp_TEST_HEADER_FILES}
|
|
PROPERTIES HEADER_FILE_ONLY TRUE)
|
|
|
|
list(APPEND llcorehttp_TEST_SOURCE_FILES ${llcorehttp_TEST_HEADER_FILES})
|
|
|
|
# LL_ADD_PROJECT_UNIT_TESTS(llcorehttp "${llcorehttp_TEST_SOURCE_FILES}")
|
|
|
|
# set(TEST_DEBUG on)
|
|
set(test_libs
|
|
${LLCOREHTTP_LIBRARIES}
|
|
${WINDOWS_LIBRARIES}
|
|
${LLMESSAGE_LIBRARIES}
|
|
${LLCOMMON_LIBRARIES}
|
|
${GOOGLEMOCK_LIBRARIES}
|
|
${CURL_LIBRARIES}
|
|
${OPENSSL_LIBRARIES}
|
|
${CRYPTO_LIBRARIES}
|
|
${BOOST_SYSTEM_LIBRARY}
|
|
${BOOST_THREAD_LIBRARY}
|
|
)
|
|
|
|
# If http_proxy is in the current environment (e.g. to fetch s3-proxy
|
|
# autobuild packages), suppress it for this integration test: it screws up
|
|
# the tests.
|
|
LL_ADD_INTEGRATION_TEST(llcorehttp
|
|
"${llcorehttp_TEST_SOURCE_FILES}"
|
|
"${test_libs}"
|
|
"-Dhttp_proxy"
|
|
${PYTHON_EXECUTABLE}
|
|
"${CMAKE_CURRENT_SOURCE_DIR}/tests/test_llcorehttp_peer.py"
|
|
)
|
|
|
|
if (DARWIN)
|
|
# Path inside the app bundle where we'll need to copy libraries
|
|
set(LL_TEST_DESTINATION_DIR
|
|
${CMAKE_BINARY_DIR}/sharedlibs/Resources
|
|
)
|
|
|
|
# Create the Contents/Resources directory
|
|
add_custom_command(
|
|
TARGET INTEGRATION_TEST_llcorehttp PRE_BUILD
|
|
COMMAND ${CMAKE_COMMAND}
|
|
ARGS
|
|
-E
|
|
make_directory
|
|
${LL_TEST_DESTINATION_DIR}
|
|
COMMENT "Creating Resources directory in app bundle."
|
|
)
|
|
|
|
# Copy the required libraries to the package app
|
|
add_custom_command(TARGET INTEGRATION_TEST_llcorehttp PRE_BUILD
|
|
COMMAND ${CMAKE_COMMAND} -E copy ${AUTOBUILD_INSTALL_DIR}/lib/release/libapr-1.0.dylib ${LL_TEST_DESTINATION_DIR}
|
|
DEPENDS ${AUTOBUILD_INSTALL_DIR}/lib/release/libapr-1.0.dylib
|
|
)
|
|
add_custom_command(TARGET INTEGRATION_TEST_llcorehttp PRE_BUILD
|
|
COMMAND ${CMAKE_COMMAND} -E copy ${AUTOBUILD_INSTALL_DIR}/lib/release/libaprutil-1.0.dylib ${LL_TEST_DESTINATION_DIR}
|
|
DEPENDS ${AUTOBUILD_INSTALL_DIR}/lib/release/libaprutil-1.0.dylib
|
|
)
|
|
add_custom_command(TARGET INTEGRATION_TEST_llcorehttp PRE_BUILD
|
|
COMMAND ${CMAKE_COMMAND} -E copy ${AUTOBUILD_INSTALL_DIR}/lib/release/libexception_handler.dylib ${LL_TEST_DESTINATION_DIR}
|
|
DEPENDS ${AUTOBUILD_INSTALL_DIR}/lib/release/libexception_handler.dylib
|
|
)
|
|
foreach(expat ${EXPAT_COPY})
|
|
add_custom_command(TARGET INTEGRATION_TEST_llcorehttp PRE_BUILD
|
|
COMMAND ${CMAKE_COMMAND} -E copy ${AUTOBUILD_INSTALL_DIR}/lib/release/${expat} ${LL_TEST_DESTINATION_DIR}
|
|
DEPENDS ${AUTOBUILD_INSTALL_DIR}/lib/release/${expat}
|
|
)
|
|
endforeach(expat)
|
|
|
|
endif (DARWIN)
|
|
|
|
#
|
|
# Example Programs
|
|
#
|
|
SET(llcorehttp_EXAMPLE_SOURCE_FILES
|
|
examples/http_texture_load.cpp
|
|
)
|
|
|
|
set(example_libs
|
|
${LLCOREHTTP_LIBRARIES}
|
|
${WINDOWS_LIBRARIES}
|
|
${LLMESSAGE_LIBRARIES}
|
|
${LLCOMMON_LIBRARIES}
|
|
${GOOGLEMOCK_LIBRARIES}
|
|
${CURL_LIBRARIES}
|
|
${OPENSSL_LIBRARIES}
|
|
${CRYPTO_LIBRARIES}
|
|
${BOOST_SYSTEM_LIBRARY}
|
|
${BOOST_THREAD_LIBRARY}
|
|
)
|
|
|
|
add_executable(http_texture_load
|
|
${llcorehttp_EXAMPLE_SOURCE_FILES}
|
|
)
|
|
set_target_properties(http_texture_load
|
|
PROPERTIES
|
|
RUNTIME_OUTPUT_DIRECTORY "${EXE_STAGING_DIR}"
|
|
)
|
|
|
|
if (WINDOWS)
|
|
# The following come from LLAddBuildTest.cmake's INTEGRATION_TEST_xxxx target.
|
|
set_target_properties(http_texture_load
|
|
PROPERTIES
|
|
LINK_FLAGS "/debug /NODEFAULTLIB:LIBCMT /SUBSYSTEM:CONSOLE"
|
|
LINK_FLAGS_DEBUG "/NODEFAULTLIB:\"LIBCMT;LIBCMTD;MSVCRT\" /INCREMENTAL:NO"
|
|
LINK_FLAGS_RELEASE ""
|
|
)
|
|
endif (WINDOWS)
|
|
|
|
target_link_libraries(http_texture_load ${example_libs})
|
|
|
|
endif (LL_TESTS)
|
|
|