phoenix-firestorm/indra/llcorehttp/CMakeLists.txt

214 lines
5.5 KiB
CMake

# -*- cmake -*-
project(llcorehttp)
include(00-Common)
include(GoogleMock)
include(CURL)
include(OpenSSL)
include(NGHTTP2)
include(ZLIBNG)
include(LLCoreHttp)
include(LLAddBuildTest)
include(LLCommon)
include(Tut)
include(bugsplat)
include_directories (${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_CURRENT_SOURCE_DIR}/../llmessage )
set(llcorehttp_SOURCE_FILES
bufferarray.cpp
bufferstream.cpp
httpcommon.cpp
llhttpconstants.cpp
httpheaders.cpp
httpoptions.cpp
httprequest.cpp
httpresponse.cpp
httpstats.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
httpstats.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
llcommon
ll::libcurl
ll::openssl
ll::nghttp2
)
set_target_include_dirs( llcorehttp ${CMAKE_CURRENT_SOURCE_DIR})
# tests
set(LLCOREHTTP_TESTS ON CACHE BOOL
"Build and run llcorehttp integration tests specifically")
if (LL_TESTS AND LLCOREHTTP_TESTS)
SET(llcorehttp_TEST_SOURCE_FILES
)
set(llcorehttp_TEST_HEADER_FILES
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
llmessage
llcommon
)
# 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. We used to use a sequence
# of '${CMAKE_COMMAND} -E copy' commands, but 'cmake -E copy' does only a
# single file at a time: it doesn't understand wildcards. 'cmake -E copy' is
# for portability. This operation is Darwin-specific. We can count on the
# 'cp' command.
set(copy_dylibs
libapr-1.0.dylib
libaprutil-1.0.dylib
libnghttp2*.dylib
liburiparser*.dylib
${EXPAT_COPY}
)
add_custom_command(TARGET INTEGRATION_TEST_llcorehttp PRE_BUILD
WORKING_DIRECTORY "${AUTOBUILD_INSTALL_DIR}/lib/release"
COMMAND cp -v
${copy_dylibs}
${LL_TEST_DESTINATION_DIR}
DEPENDS ${copy_dylibs}
)
endif (DARWIN)
#
# Example Programs
#
SET(llcorehttp_EXAMPLE_SOURCE_FILES
examples/http_texture_load.cpp
)
set(example_libs
llcorehttp
llmessage
llcommon
)
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 AND LLCOREHTTP_TESTS)