grive2/libgrive/CMakeLists.txt

150 lines
3.4 KiB
CMake

project(libgrive)
set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_SOURCE_DIR}/cmake/Modules/")
find_package(LibGcrypt REQUIRED)
find_package(CURL REQUIRED)
find_package(Backtrace)
find_package(Boost 1.40.0 COMPONENTS program_options filesystem unit_test_framework regex system REQUIRED)
find_package(BFD)
find_package(CppUnit)
find_package(Iberty)
find_package(PkgConfig)
pkg_check_modules(YAJL REQUIRED yajl)
add_definitions(-Wall)
# additional headers if build unit tests
IF ( CPPUNIT_FOUND )
set( OPT_INCS ${CPPUNIT_INCLUDE_DIR} )
ENDIF ( CPPUNIT_FOUND )
# build bfd classes if libbfd and the backtrace library is found
if ( BFD_FOUND AND Backtrace_FOUND )
set( OPT_LIBS ${DL_LIBRARY} ${BFD_LIBRARY} ${Backtrace_LIBRARY} )
file( GLOB OPT_SRC
src/bfd/*.cc
)
add_definitions( -DHAVE_BFD )
endif ( BFD_FOUND AND Backtrace_FOUND )
if ( IBERTY_FOUND )
set( OPT_LIBS ${OPT_LIBS} ${IBERTY_LIBRARY} )
else ( IBERTY_FOUND )
set( IBERTY_LIBRARY "" )
endif ( IBERTY_FOUND )
include_directories(
${libgrive_SOURCE_DIR}/src
${libgrive_SOURCE_DIR}/test
${Boost_INCLUDE_DIRS}
${OPT_INCS}
${YAJL_INCLUDE_DIRS}
)
file (GLOB PROTOCOL_HEADERS
${libgrive_SOURCE_DIR}/src/protocol/*.hh
)
file (GLOB UTIL_HEADERS
${libgrive_SOURCE_DIR}/src/util/*.hh
)
file (GLOB XML_HEADERS
${libgrive_SOURCE_DIR}/src/xml/*.hh
)
file (GLOB LIBGRIVE_SRC
src/base/*.cc
src/drive2/*.cc
src/http/*.cc
src/protocol/*.cc
src/json/*.cc
src/util/*.cc
src/util/log/*.cc
)
add_definitions(
-DTEST_DATA="${libgrive_SOURCE_DIR}/test/data/"
-DSRC_DIR="${libgrive_SOURCE_DIR}/src"
)
#add_library( grive SHARED ${LIBGRIVE_SRC} ${OPT_SRC} )
add_library( grive STATIC ${LIBGRIVE_SRC} ${OPT_SRC} )
target_link_libraries( grive
${YAJL_LIBRARIES}
${CURL_LIBRARIES}
${LIBGCRYPT_LIBRARIES}
${Boost_FILESYSTEM_LIBRARY}
${Boost_PROGRAM_OPTIONS_LIBRARY}
${Boost_REGEX_LIBRARY}
${Boost_SYSTEM_LIBRARY}
${IBERTY_LIBRARY}
${OPT_LIBS}
)
#set_target_properties(grive PROPERTIES
# SOVERSION 0 VERSION ${GRIVE_VERSION}
#)
#set_target_properties(grive grive-static PROPERTIES OUTPUT_NAME grive)
if ( LIB_INSTALL_DIR )
else()
set ( LIB_INSTALL_DIR ${CMAKE_INSTALL_PREFIX}/lib )
endif()
# don't install libgrive for now
#install(TARGETS grive LIBRARY DESTINATION ${LIB_INSTALL_DIR} )
#install(TARGETS grive ARCHIVE DESTINATION ${LIB_INSTALL_DIR} )
#install(FILES ${DRIVE_HEADERS} DESTINATION include/grive/drive)
#install(FILES ${PROTOCOL_HEADERS} DESTINATION include/grive/protocol)
#install(FILES ${UTIL_HEADERS} DESTINATION include/grive/util)
#install(FILES ${XML_HEADERS} DESTINATION include/grive/xml)
IF ( CPPUNIT_FOUND )
message("-- Building unitary tests along with the library and the binary")
set( OPT_INCS ${CPPUNIT_INCLUDE_DIR} )
# list of test source files here
file(GLOB TEST_SRC
test/base/*.cc
test/util/*.cc
)
add_executable( unittest
test/UnitTest.cc
${TEST_SRC}
)
target_link_libraries( unittest
grive
${CPPUNIT_LIBRARY}
)
ENDIF ( CPPUNIT_FOUND )
file(GLOB BTEST_SRC
test/btest/*.cc
)
add_executable( btest ${BTEST_SRC} )
target_link_libraries( btest
grive
${Boost_UNIT_TEST_FRAMEWORK_LIBRARY}
)
if ( ${CMAKE_SYSTEM_NAME} MATCHES "FreeBSD" )
set( CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-c++11-narrowing" )
endif ( ${CMAKE_SYSTEM_NAME} MATCHES "FreeBSD" )
if ( WIN32 )
else ( WIN32 )
set_target_properties( btest
PROPERTIES COMPILE_FLAGS -DBOOST_TEST_DYN_LINK )
endif (WIN32)