blob: 9545910da131e49d578d25c734c8653ad5e8d380 [file] [log] [blame]
## Copyright (C) 1999-2005 Open Source Telecom Corporation.
## Copyright (C) 2006-2008 David Sugar, Tycho Softworks.
## Copyright (C) 2009-2011 Werner Dittmann
##
## This file is free software; as a special exception the author gives
## unlimited permission to copy and/or distribute it, with or without
## modifications, as long as this notice is preserved.
##
## This program is distributed in the hope that it will be useful, but
## WITHOUT ANY WARRANTY, to the extent permitted by law; without even the
## implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
#
cmake_minimum_required(VERSION 2.6)
PROJECT(libccrtp)
# for debug and trace during CMakeList development
set(CMAKE_VERBOSE_MAKEFILE FALSE)
SET(CPACK_PACKAGE_VERSION_MAJOR 2)
SET(CPACK_PACKAGE_VERSION_MINOR 0)
SET(CPACK_PACKAGE_VERSION_PATCH 4)
# set some global variables, in particular version variables
set (VERSION 2.0.4)
set (SOVERSION ${VERSION})
STRING(REGEX REPLACE "[.].*$" "" SOVERSION ${SOVERSION})
set (REQUIRES 5.0.0)
set (PACKAGE ccrtp)
# Set library postfix in case of 64 bit architecture
# this caused problems in debian where it has to always be lib....
set(LIB64 "")
if (NOT EXISTS /etc/debian_version)
if ( "${CMAKE_SYSTEM_PROCESSOR}" STREQUAL "x86_64" )
set(LIB64 "64")
endif()
endif()
include(cmake/Modules/AutoArgs.cmake)
enable_arg(srtp true)
if(MSVC60)
set(BUILD_STATIC ON CACHE BOOL "static linking only" FORCE)
MARK_AS_ADVANCED(BUILD_STATIC)
else()
option(BUILD_STATIC "Set to OFF to build shared libraries" OFF)
endif()
MESSAGE( STATUS "Configuring GNU ${PROJECT_NAME} ${VERSION}...")
# include all the fine stuff we need
include(cmake/Modules/FindGcryptConfig.cmake)
include(FindPkgConfig)
include(CheckLibraryExists)
include(CheckIncludeFiles)
if(${PROJECT_NAME} STREQUAL ${CMAKE_PROJECT_NAME})
include(cmake/Modules/GeneratePackage.cmake)
GENERATE_PACKAGING(${PACKAGE} ${VERSION})
endif()
# setup the Thread include and lib
find_package(Threads)
if (CMAKE_HAVE_PTHREAD_H)
set(HAVE_PTHREAD_H TRUE)
endif()
set (LIBS ${LIBS} ${CMAKE_THREAD_LIBS_INIT})
if (USES_UCOMMON_INCLUDE_DIRS)
message(STATUS " Using local commoncpp dependency")
else()
find_package(PkgConfig)
pkg_check_modules(USES_UCOMMON commoncpp>=${REQUIRES})
endif()
include_directories(${USES_UCOMMON_INCLUDE_DIRS} ${CMAKE_CURRENT_SOURCE_DIR}/src/ccrtp)
link_directories(${USES_UCOMMON_LIBRARY_DIRS})
add_definitions(${USES_UCOMMON_CFLAGS})
set (LIBS ${LIBS} ${USES_UCOMMON_LDFLAGS} commoncpp ${USES_UCOMMON_LIBRARIES})
if(WIN32 AND NOT CYGWIN AND NOT MSYS AND NOT MINGW)
check_include_files(openssl/ssl.h HAVE_OPENSSL_WINDOWS)
else()
pkg_check_modules(OPENSSL libssl>=0.9.8)
endif()
if (enable_srtp)
# now get info about crypto libraries
gcr_check(GCRYPT gcrypt)
if (GCRYPT_FOUND AND NOT OPENSSL_FOUND)
set(SRTP_SUPPORT TRUE)
check_include_files(gcrypt.h HAVE_GCRYPT_H)
set(LIBS ${LIBS} ${GCRYPT_LIBRARIES})
else ()
set(GCRYPT_FOUND FALSE)
if (OPENSSL_FOUND OR HAVE_OPENSSL_WINDOWS)
set(SRTP_SUPPORT TRUE)
check_include_files(openssl/bn.h HAVE_OPENSSL_BN_H)
check_include_files(openssl/aes.h HAVE_OPENSSL_AES_H)
check_include_files(openssl/sha.h HAVE_OPENSSL_SHA_H)
check_library_exists(crypto EVP_CipherInit_ex "" HAVE_SSL_CRYPT)
if(HAVE_OPENSSL_WINDOWS)
set(LIBS ${LIBS} libeay32)
else()
set(LIBS ${LIBS} -lcrypto)
endif()
else()
message(WARNING "No crypto library found")
endif()
endif()
endif()
# the following set(...) commands are only to have backward
# compatibility with autoconf stuff to generate the pc file
set(prefix ${CMAKE_INSTALL_PREFIX})
set(exec_prefix ${prefix}/bin)
set(libdir ${prefix}/lib${LIB64})
set(includedir ${prefix}/include)
set(PACKAGE pkgconfig)
configure_file(libccrtp.pc.in ${CMAKE_CURRENT_BINARY_DIR}/libccrtp.pc @ONLY)
configure_file(ccrtp.spec.cmake ${CMAKE_CURRENT_BINARY_DIR}/ccrtp.spec @ONLY)
if(CMAKE_COMPILER_IS_GNUCXX)
add_definitions(-g -O2 -fno-strict-aliasing)
add_definitions(-Wno-long-long -Wno-char-subscripts)
add_definitions(-Wall -ansi -pedantic)
endif()
# now prepare and go for the sub-directories
include_directories(${CMAKE_CURRENT_BINARY_DIR}/src ${CMAKE_CURRENT_SOURCE_DIR}/src ${CMAKE_CURRENT_SOURCE_DIR}/src/ccrtp)
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/ccrtp-config.h.cmake ${CMAKE_CURRENT_BINARY_DIR}/ccrtp-config.h)
include_directories("${CMAKE_CURRENT_BINARY_DIR}")
add_subdirectory(src)
add_subdirectory(demo)
add_subdirectory(doc)
########### install files ###############
install(FILES ${CMAKE_CURRENT_BINARY_DIR}/libccrtp.pc DESTINATION lib${LIB64}/pkgconfig)
if(${PROJECT_NAME} STREQUAL ${CMAKE_PROJECT_NAME})
########### Add uninstall target ###############
configure_file(
"${CMAKE_CURRENT_SOURCE_DIR}/cmake/cmake_uninstall.cmake.in"
"${CMAKE_CURRENT_BINARY_DIR}/cmake_uninstall.cmake"
IMMEDIATE @ONLY)
add_custom_target(uninstall
"${CMAKE_COMMAND}" -P "${CMAKE_CURRENT_BINARY_DIR}/cmake_uninstall.cmake")
endif()
####### define target to build RPM
#include(UseRPMTools)
#if(RPMTools_FOUND)
# RPMTools_ADD_RPM_TARGETS(${PROJECT_NAME} ${CMAKE_SOURCE_DIR}/ccrtp.spec.cmake)
#endif()