CMakeList.txt search for previous system installation of liveMedia library

Add an alternative HTTPServer definition to be compliant with older liveMedia versions
pull/238/head
José Gómez López 3 years ago
parent 6005c2ffc6
commit 669f205ed9

@ -0,0 +1,28 @@
include(GNUInstallDirs)
find_library(
LIBBASICUSAGEENVIRONMENT_LIBRARY
NAMES BasicUsageEnvironment
HINTS ${PROJECT_BINARY_DIR}/live/)
find_path(LIBBASICUSAGEENVIRONMENT_INCLUDE_DIR
NAMES BasicUsageEnvironment_version.hh
HINTS ${PROJECT_BINARY_DIR}/live/ ${CMAKE_INSTALL_INCLUDEDIR}
PATH_SUFFIXES BasicUsageEnvironment)
include(FindPackageHandleStandardArgs)
find_package_handle_standard_args(libBasicUsageEnvironment DEFAULT_MSG
LIBBASICUSAGEENVIRONMENT_LIBRARY
LIBBASICUSAGEENVIRONMENT_INCLUDE_DIR)
mark_as_advanced(LIBBASICUSAGEENVIRONMENT_LIBRARY LIBBASICUSAGEENVIRONMENT_INCLUDE_DIR)
if(LIBBASICUSAGEENVIRONMENT_FOUND AND NOT TARGET libBasicUsageEnvironment::libBasicUsageEnvironment)
add_library(libBasicUsageEnvironment::libBasicUsageEnvironment SHARED IMPORTED)
set_target_properties(
libBasicUsageEnvironment::libBasicUsageEnvironment
PROPERTIES
INTERFACE_INCLUDE_DIRECTORIES "${LIBBASICUSAGEENVIRONMENT_INCLUDE_DIR}"
IMPORTED_LOCATION ${LIBBASICUSAGEENVIRONMENT_LIBRARY})
endif()

@ -0,0 +1,28 @@
include(GNUInstallDirs)
find_library(
LIBGROUPSOCK_LIBRARY
NAMES groupsock
HINTS ${PROJECT_BINARY_DIR}/live/)
find_path(LIBGROUPSOCK_INCLUDE_DIR
NAMES groupsock_version.hh
HINTS ${PROJECT_BINARY_DIR}/live/ ${CMAKE_INSTALL_INCLUDEDIR}
PATH_SUFFIXES groupsock)
include(FindPackageHandleStandardArgs)
find_package_handle_standard_args(libgroupsock DEFAULT_MSG
LIBGROUPSOCK_LIBRARY
LIBGROUPSOCK_INCLUDE_DIR)
mark_as_advanced(LIBGROUPSOCK_LIBRARY LIBGROUPSOCK_INCLUDE_DIR)
if(LIBGROUPSOCK_FOUND AND NOT TARGET libgroupsock::libgroupsock)
add_library(libgroupsock::libgroupsock SHARED IMPORTED)
set_target_properties(
libgroupsock::libgroupsock
PROPERTIES
INTERFACE_INCLUDE_DIRECTORIES "${LIBGROUPSOCK_INCLUDE_DIR}"
IMPORTED_LOCATION ${LIBGROUPSOCK_LIBRARY})
endif()

@ -0,0 +1,28 @@
include(GNUInstallDirs)
find_library(
LIBLIVEMEDIA_LIBRARY
NAMES liveMedia
HINTS ${PROJECT_BINARY_DIR}/live/)
find_path(LIBLIVEMEDIA_INCLUDE_DIR
NAMES liveMedia_version.hh
HINTS ${PROJECT_BINARY_DIR}/live/ ${CMAKE_INSTALL_INCLUDEDIR}
PATH_SUFFIXES liveMedia)
include(FindPackageHandleStandardArgs)
find_package_handle_standard_args(libliveMedia DEFAULT_MSG
LIBLIVEMEDIA_LIBRARY
LIBLIVEMEDIA_INCLUDE_DIR)
mark_as_advanced(LIBLIVEMEDIA_LIBRARY LIBLIVEMEDIA_INCLUDE_DIR)
if(LIBLIVEMEDIA_FOUND AND NOT TARGET libliveMedia::libliveMedia)
add_library(libliveMedia::libliveMedia SHARED IMPORTED)
set_target_properties(
libliveMedia::libliveMedia
PROPERTIES
INTERFACE_INCLUDE_DIRECTORIES "${LIBLIVEMEDIA_INCLUDE_DIR}"
IMPORTED_LOCATION ${LIBLIVEMEDIA_LIBRARY})
endif()

@ -0,0 +1,28 @@
include(GNUInstallDirs)
find_library(
LIBUSAGEENVIRONMENT_LIBRARY
NAMES UsageEnvironment
HINTS ${PROJECT_BINARY_DIR}/live/)
find_path(LIBUSAGEENVIRONMENT_INCLUDE_DIR
NAMES UsageEnvironment_version.hh
HINTS ${PROJECT_BINARY_DIR}/live/ ${CMAKE_INSTALL_INCLUDEDIR}
PATH_SUFFIXES UsageEnvironment)
include(FindPackageHandleStandardArgs)
find_package_handle_standard_args(libUsageEnvironment DEFAULT_MSG
LIBUSAGEENVIRONMENT_LIBRARY
LIBUSAGEENVIRONMENT_INCLUDE_DIR)
mark_as_advanced(LIBUSAGEENVIRONMENT_LIBRARY LIBUSAGEENVIRONMENT_INCLUDE_DIR)
if(LIBUSAGEENVIRONMENT_FOUND AND NOT TARGET libUsageEnvironment::libUsageEnvironment)
add_library(libUsageEnvironment::libUsageEnvironment SHARED IMPORTED)
set_target_properties(
libUsageEnvironment::libUsageEnvironment
PROPERTIES
INTERFACE_INCLUDE_DIRECTORIES "${LIBUSAGEENVIRONMENT_INCLUDE_DIR}"
IMPORTED_LOCATION ${LIBUSAGEENVIRONMENT_LIBRARY})
endif()

@ -9,7 +9,14 @@ set(LIVE555URL http://www.live555.com/liveMedia/public/live555-latest.tar.gz CAC
set(LIVE555CFLAGS -DBSD=1 -DSOCKLEN_T=socklen_t -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE=1 -DALLOW_RTSP_SERVER_PORT_REUSE=1 -DNO_OPENSSL=1 CACHE STRING "live555 CFGLAGS")
set(CMAKE_CXX_STANDARD 11)
#set(CMAKE_INSTALL_PREFIX /usr)
#set(CMAKE_INSTALL_LIBDIR lib/${CMAKE_LIBRARY_ARCHITECTURE})
#set(CMAKE_INSTALL_FULL_LIBDIR /usr/lib/${CMAKE_LIBRARY_ARCHITECTURE})
list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/CMake/")
#message(STATUS "Arch: ${CMAKE_LIBRARY_ARCHITECTURE}")
#message(STATUS "Libs: ${CMAKE_INSTALL_LIBDIR}")
# set version based on git
find_package(Git)
if(GIT_FOUND)
@ -70,22 +77,51 @@ add_library(v4l2wrapper STATIC ${LIBSRC_FILES})
target_link_libraries (${PROJECT_NAME} v4l2wrapper)
# live555
set(LIVE ${CMAKE_BINARY_DIR}/live)
set(LIVEINCLUDE ${LIVE}/groupsock/include ${LIVE}/liveMedia/include ${LIVE}/UsageEnvironment/include ${LIVE}/BasicUsageEnvironment/include)
if (NOT EXISTS ${LIVE})
file (DOWNLOAD ${LIVE555URL} ${CMAKE_BINARY_DIR}/live555-latest.tar.gz )
EXECUTE_PROCESS(COMMAND ${CMAKE_COMMAND} -E tar xvf ${CMAKE_BINARY_DIR}/live555-latest.tar.gz RESULT_VARIABLE unpack_result)
if(NOT unpack_result STREQUAL "0")
message(FATAL_ERROR "Fetching and compiling live555 failed!")
find_package(LiveMedia)
find_package(UsageEnvironment)
find_package(BasicUsageEnvironment)
find_package(GroupSock)
if (NOT LIBLIVEMEDIA_FOUND OR NOT LIBBASICUSAGEENVIRONMENT_FOUND OR NOT LIBUSAGEENVIRONMENT_FOUND OR NOT LIBGROUPSOCK_FOUND )
set(LIVE ${CMAKE_BINARY_DIR}/live)
set(LIVEINCLUDE ${LIVE}/groupsock/include ${LIVE}/liveMedia/include ${LIVE}/UsageEnvironment/include ${LIVE}/BasicUsageEnvironment/include)
if (NOT EXISTS ${LIVE})
file (DOWNLOAD ${LIVE555URL} ${CMAKE_BINARY_DIR}/live555-latest.tar.gz )
EXECUTE_PROCESS(COMMAND ${CMAKE_COMMAND} -E tar xvf ${CMAKE_BINARY_DIR}/live555-latest.tar.gz RESULT_VARIABLE unpack_result)
if(NOT unpack_result STREQUAL "0")
message(FATAL_ERROR "Fetching and compiling live555 failed!")
endif()
endif()
FILE(GLOB LIVESOURCE ${LIVE}/groupsock/*.c* ${LIVE}/liveMedia/*.c* ${LIVE}/UsageEnvironment/*.c* ${LIVE}/BasicUsageEnvironment/*.c*)
add_definitions(${LIVE555CFLAGS})
endif()
if (LIBLIVEMEDIA_FOUND AND LIBBASICUSAGEENVIRONMENT_FOUND AND LIBUSAGEENVIRONMENT_FOUND AND LIBGROUPSOCK_FOUND)
message(STATUS "live555 loaded")
target_link_libraries (${PROJECT_NAME} liveMedia)
target_link_libraries (${PROJECT_NAME} UsageEnvironment)
target_link_libraries (${PROJECT_NAME} BasicUsageEnvironment)
target_link_libraries (${PROJECT_NAME} groupsock)
SET(CPACK_DEBIAN_PACKAGE_DEPENDS ${CPACK_DEBIAN_PACKAGE_DEPENDS}liblivemedia50,)
SET(CPACK_DEBIAN_PACKAGE_DEPENDS ${CPACK_DEBIAN_PACKAGE_DEPENDS}libusageenvironment3,)
SET(CPACK_DEBIAN_PACKAGE_DEPENDS ${CPACK_DEBIAN_PACKAGE_DEPENDS}libbasicusageenvironment1,)
SET(CPACK_DEBIAN_PACKAGE_DEPENDS ${CPACK_DEBIAN_PACKAGE_DEPENDS}libgroupsock8,)
endif()
FILE(GLOB LIVESOURCE ${LIVE}/groupsock/*.c* ${LIVE}/liveMedia/*.c* ${LIVE}/UsageEnvironment/*.c* ${LIVE}/BasicUsageEnvironment/*.c*)
add_definitions(${LIVE555CFLAGS})
# librtsp
aux_source_directory(src SRC_FILES)
add_library (libv4l2rtspserver STATIC ${LIVESOURCE} ${SRC_FILES})
target_include_directories(libv4l2rtspserver PUBLIC ${LIVEINCLUDE} inc)
if (NOT LIBLIVEMEDIA_FOUND OR NOT LIBBASICUSAGEENVIRONMENT_FOUND OR NOT LIBUSAGEENVIRONMENT_FOUND OR NOT LIBGROUPSOCK_FOUND )
add_library (libv4l2rtspserver STATIC ${LIVESOURCE} ${SRC_FILES})
target_include_directories(libv4l2rtspserver PUBLIC ${LIVEINCLUDE} inc)
endif()
if (LIBLIVEMEDIA_FOUND AND LIBBASICUSAGEENVIRONMENT_FOUND AND LIBUSAGEENVIRONMENT_FOUND AND LIBGROUPSOCK_FOUND)
add_library (libv4l2rtspserver SHARED ${SRC_FILES})
target_link_libraries (libv4l2rtspserver liveMedia)
target_link_libraries (libv4l2rtspserver UsageEnvironment)
target_link_libraries (libv4l2rtspserver BasicUsageEnvironment)
target_link_libraries (libv4l2rtspserver groupsock)
target_include_directories(libv4l2rtspserver PUBLIC inc})
target_include_directories(libv4l2rtspserver PUBLIC ${LIBLIVEMEDIA_INCLUDE_DIR} ${LIBBASICUSAGEENVIRONMENT_INCLUDE_DIR} ${LIBUSAGEENVIRONMENT_INCLUDE_DIR} ${LIBGROUPSOCK_INCLUDE_DIR} )
endif()
target_link_libraries (${PROJECT_NAME} libv4l2rtspserver)
#testing

@ -172,8 +172,13 @@ class HTTPServer : public RTSPServer
return httpServer;
}
#if LIVEMEDIA_LIBRARY_VERSION_INT < 1611187200
HTTPServer(UsageEnvironment& env, int ourSocketIPv4, int ourSocketIPv6, Port rtspPort, UserAuthenticationDatabase* authDatabase, unsigned reclamationTestSeconds, unsigned int hlsSegment, const std::string & webroot)
: RTSPServer(env, ourSocketIPv4, rtspPort, authDatabase, reclamationTestSeconds), m_hlsSegment(hlsSegment), m_webroot(webroot)
#else
HTTPServer(UsageEnvironment& env, int ourSocketIPv4, int ourSocketIPv6, Port rtspPort, UserAuthenticationDatabase* authDatabase, unsigned reclamationTestSeconds, unsigned int hlsSegment, const std::string & webroot)
: RTSPServer(env, ourSocketIPv4, ourSocketIPv6, rtspPort, authDatabase, reclamationTestSeconds), m_hlsSegment(hlsSegment), m_webroot(webroot)
#endif
{
if ( (!m_webroot.empty()) && (*m_webroot.rend() != '/') ) {
m_webroot += "/";

@ -2,6 +2,7 @@ SET(CMAKE_SYSTEM_NAME Linux)
SET(CPACK_DEBIAN_PACKAGE_ARCHITECTURE armhf)
SET(CMAKE_C_COMPILER arm-linux-gnueabihf-gcc)
SET(CMAKE_CXX_COMPILER arm-linux-gnueabihf-g++)
SET(CMAKE_LIBRARY_ARCHITECTURE arm-linux-gnuebihf)
SET(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)

Loading…
Cancel
Save