Skip to content

Commit

Permalink
Merge branch '1.0' of https://github.com/datastax/cpp-driver into 1.0
Browse files Browse the repository at this point in the history
Conflicts:
	CMakeLists.txt
	include/cassandra.h
  • Loading branch information
Jim Bisso committed Jun 10, 2014
2 parents 26c76f7 + f5481c9 commit e4ab222
Show file tree
Hide file tree
Showing 158 changed files with 8,168 additions and 5,547 deletions.
13 changes: 11 additions & 2 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@

# cmake output
*.cmake
!Find*.cmake
*.build
*.xcodeproj
CMakeFiles
Expand Down Expand Up @@ -58,5 +59,13 @@ Doxyfile
*.files
*.includes

/extra/ccm_bridge/nbproject/private/
/nbproject/private/
# MSVC
*.vcxproj
*.vcxproj.filters
*.sdf
*.sln
*.suo
*.opensdf


config.txt
150 changes: 103 additions & 47 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ set(CASS_DRIVER_PROJECT_NAME ${PROJECT_NAME_STR})
project(${PROJECT_NAME_STR} C CXX)

#-------------------
# The version number
# Version
#-------------------
set(PROJECT_VERSION_MAJOR 0)
set(PROJECT_VERSION_MINOR 7)
Expand All @@ -18,38 +18,68 @@ set(PROJECT_VERSION_STRING ${PROJECT_VERSION_MAJOR}.${PROJECT_VERSION_MINOR}.${P
# TODO(mstump) add version header

#-------------------
# setup deps
# Dependencies
#-------------------
find_package(OpenSSL REQUIRED)
set(LIBS ${LIBS} ${OPENSSL_LIBRARIES})

find_package(ZLIB REQUIRED)
set(LIBS ${LIBS} ${ZLIB_LIBRARIES})

# libuv
set(LIBUV_INCLUDE_NAMES uv.h)
set(LIBUV_LIBRARY_NAMES libuv.dylib)
set(_LIBUV_ROOT_HINTS ${LIBUV_ROOT_DIR} ENV LIBUV_ROOT_DIR)

if(WIN32)
set(_LIBUV_ROOT_PATHS "${PROJECT_SOURCE_DIR}/lib/libuv/")
set(_LIBUV_ROOT_HINTS_AND_PATHS HINTS ${_LIBUV_ROOT_HINTS} PATHS ${_LIBUV_ROOT_PATHS})
else()
set(_LIBUV_ROOT_PATHS "/usr/" "/usr/local/")
set(_LIBUV_ROOT_HINTS_AND_PATHS HINTS ${_LIBUV_ROOT_HINTS} PATHS ${_LIBUV_ROOT_PATHS})
endif()

find_path(LIBUV_INCLUDE_DIRS NAMES ${LIBUV_INCLUDE_NAMES} HINTS /usr/include /usr/local/include)
find_library(LIBUV_LIBRARIES NAMES ${LIBUV_LIBRARY_NAMES} HINTS /usr/include /usr/local/include)
find_path(LIBUV_INCLUDE_DIR
NAMES uv.h
HINTS ${_LIBUV_INCLUDEDIR} ${_LIBUV_ROOT_HINTS_AND_PATHS}
PATH_SUFFIXES include)

if(LIBUV_INCLUDE_DIRS AND LIBUV_LIBRARIES)
set(LIBUV_FOUND TRUE)
set(INCLUDES ${INCLUDES} ${LIBUV_INCLUDE_DIR} )
set(LIBS ${LIBS} ${LIBUV_LIBRARIES} )
message(STATUS "Found LIBUV: ${LIBUV_LIBRARIES}")
else(LIBUV_INCLUDE_DIRS AND LIBUV_LIBRARIES)
message(FATAL_ERROR "Could not find LIBUV library.")
endif(LIBUV_INCLUDE_DIRS AND LIBUV_LIBRARIES)
find_library(LIBUV_LIBRARY
NAMES uv libuv
HINTS ${_LIBUV_LIBDIR} ${_LIBUV_ROOT_HINTS_AND_PATHS}
PATH_SUFFIXES lib)

# Build up the include path's
set(LIBUV_LIBRARIES ${LIBUV_LIBRARY})

include(FindPackageHandleStandardArgs)
find_package_handle_standard_args(Libuv "Could NOT find libuv, try to set the path to the libuv root folder in the system variable LIBUV_ROOT_DIR"
LIBUV_LIBRARIES
LIBUV_INCLUDE_DIR)

set(INCLUDES ${INCLUDES} ${LIBUV_INCLUDE_DIR})
set(LIBS ${LIBS} ${LIBUV_LIBRARIES})

# openssl
if(WIN32)
set(_OPENSSL_VERSION "1.0.1h")
set(OPENSSL_ROOT_DIR "${PROJECT_SOURCE_DIR}/lib/openssl/")
#set(ZLIB_NAMES zlibwapi)
#set(ZLIB_ROOT "${PROJECT_SOURCE_DIR}/lib/zlib/")
endif()

find_package(OpenSSL REQUIRED)
set(LIBS ${LIBS} ${OPENSSL_LIBRARIES})
set(INCLUDES ${INCLUDES} ${OPENSSL_INCLUDE_DIR} )
set(INCLUDES ${INCLUDES} ${ZLIB_INCLUDE_DIR} )
set(INCLUDES ${INCLUDES} ${Boost_INCLUDE_DIRS} )

#find_package(ZLIB REQUIRED)
#set(LIBS ${LIBS} ${ZLIB_LIBRARIES})
#set(INCLUDES ${INCLUDES} ${ZLIB_INCLUDE_DIR} )

if(WIN32)
set(LIBS ${LIBS} iphlpapi psapi wsock32 ws2_32)
endif()

# Build up the include path's
set(PROJECT_INCLUDE_DIR ${PROJECT_SOURCE_DIR}/include)
set(INCLUDES ${INCLUDES} ${PROJECT_INCLUDE_DIR})

#-------------------
# Compiler flags
#-------------------

set(MULTICORE_CORES_NUMBER "3" CACHE STRING "Number of cores (for multicore compilation)")
option(MULTICORE_COMPILATION "Enable multicore compilation" OFF)

Expand All @@ -66,21 +96,25 @@ if(MULTICORE_COMPILATION)
# ~/.pam_environment file (in any case check man).
endif()

if (${CMAKE_SYSTEM_NAME} MATCHES "Windows")
if(MSVC)
set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} /MD")
set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} /MDd")
set(CMAKE_SHARED_LINKER_FLAGS_DEBUG "${CMAKE_SHARED_LINKER_FLAGS_DEBUG} /NODEFAULTLIB:LIBCMT")

# On Visual C++ -pedantic flag is not used,
# -fPIC is not used on Windows platform (all DLLs are
# relocable), -Wall generates about 30k stupid warnings
# that can hide useful ones.
set(PLATFORM_DEPENDENT_CXX_FLAGS "-D_CRT_SECURE_NO_WARNINGS")
set(PLATFORM_DEPENDENT_C_FLAGS "-D_CRT_SECURE_NO_WARNINGS")

# TODO(mpenick): Fix these "possible loss of data" warnings
set(PLATFORM_DEPENDENT_CXX_FLAGS "-D_CRT_SECURE_NO_WARNINGS /wd4244 /wd4267")

# needed for windows sockets (not verified)
add_definitions(-D_WIN32_WINNT=0x0501)
else()
# GCC/Clang specific compiler options
# I disabled long-long warning because boost generates about 50 such warnings
set(PLATFORM_DEPENDENT_CXX_FLAGS "-std=c++0x -fPIC -Wall -pedantic -Wextra -Werror -Wno-long-long -Wno-c++11-narrowing -Wno-deprecated-declarations -Wno-unused-parameter")
set(PLATFORM_DEPENDENT_C_FLAGS "-std=c89 -fPIC -Wall -pedantic -Wextra -Werror -Wno-long-long -Wno-deprecated-declarations -Wno-unused-parameter")
endif()

#-------------------
Expand All @@ -92,8 +126,6 @@ set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR})
set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR})
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR})

message(STATUS "info CMAKE_BINARY_DIR: ${CMAKE_BINARY_DIR}")

# we must add header files as dependencies (if header
# changes project must be recompiled, right).
file(GLOB INC_FILES
Expand Down Expand Up @@ -122,19 +154,18 @@ set_target_properties(${PROJECT_LIB_NAME} PROPERTIES VERSION ${PROJECT_VERSION_S
set_target_properties(${PROJECT_LIB_NAME_STATIC} PROPERTIES OUTPUT_NAME ${PROJECT_LIB_NAME_STATIC})
set_target_properties(${PROJECT_LIB_NAME_STATIC} PROPERTIES VERSION ${PROJECT_VERSION_STRING} SOVERSION ${PROJECT_VERSION_MAJOR})

set(PROJECT_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${PLATFORM_DEPENDENT_CXX_FLAGS}")
set(PROJECT_C_FLAGS "${CMAKE_C_FLAGS} ${PLATFORM_DEPENDENT_C_FLAGS}")
set(PROJECT_CXX_FLAGS "${CMAKE_CXX_FLAGS}")

set_property(
TARGET ${PROJECT_LIB_NAME}
APPEND PROPERTY COMPILE_FLAGS ${PROJECT_CXX_FLAGS})
APPEND PROPERTY COMPILE_FLAGS "${PROJECT_CXX_FLAGS} ${PLATFORM_DEPENDENT_CXX_FLAGS} -DCASS_BUILDING")

set_property(
TARGET ${PROJECT_LIB_NAME_STATIC}
APPEND PROPERTY COMPILE_FLAGS ${PROJECT_CXX_FLAGS})
APPEND PROPERTY COMPILE_FLAGS "${PROJECT_CXX_FLAGS} ${PLATFORM_DEPENDENT_CXX_FLAGS} -DCASS_STATIC")

#-------------------
# install target
# Install target
#-------------------

# Where to put headers
Expand All @@ -158,7 +189,7 @@ install(TARGETS ${PROJECT_LIB_NAME_STATIC}
ARCHIVE DESTINATION ${INSTALL_LIB_DIR}) # for static library

#-------------------
# uninstall target
# Uninstall target
#-------------------

configure_file(
Expand All @@ -172,35 +203,60 @@ add_custom_target(UNINSTALL
#-------------------
# Unit tests
#-------------------

add_subdirectory(test/unit_tests)

#-------------------
# Integration tests
#-------------------
# add_subdirectory(extra/ccm_bridge)
# add_subdirectory(test/integration_tests)

if(WIN32)
set(BOOST_ROOT "${PROJECT_SOURCE_DIR}/lib/boost/")
set(LIBSSH2_ROOT "${PROJECT_SOURCE_DIR}/lib/libssh2/")
set(INTEGRATION_TEST_CXX_FLAGS "${CMAKE_C_FLAGS} -D_CRT_SECURE_NO_WARNINGS")
else()
set(INTEGRATION_TEST_CXX_FLAGS "-std=c++0x -fPIC -Wall -pedantic -Wextra -Werror -Wno-long-long -Wno-c++11-narrowing -Wno-deprecated-declarations -Wno-unused-parameter")
endif()

find_package(Boost 1.41.0 COMPONENTS system thread unit_test_framework date_time program_options)

set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${PROJECT_SOURCE_DIR}/test/ccm_bridge/cmake/Modules/")
find_package(LIBSSH2)

if((Boost_FOUND) AND (LIBSSH2_FOUND))
add_subdirectory(test/ccm_bridge)
add_subdirectory(test/integration_tests)
endif()

#-------------------
# Examples
#-------------------

if(MSVC)
set(EXAMPLE_C_FLAGS "${CMAKE_C_FLAGS} -D_CRT_SECURE_NO_WARNINGS")
else()
set(EXAMPLE_C_FLAGS "${CMAKE_C_FLAGS} -std=c89 -fPIC -Wall -pedantic -Wextra -Werror -Wno-long-long -Wno-deprecated-declarations -Wno-unused-parameter")
endif()

add_subdirectory(examples/async)
add_subdirectory(examples/basic)
add_subdirectory(examples/collections)

#-------------------
# the demo program
#-------------------
add_subdirectory(demo)
add_subdirectory(examples/prepared)
add_subdirectory(examples/batch)
add_subdirectory(examples/uuids)
add_subdirectory(examples/simple)

#-----------------------------------
# generating API docs with Doxygen
# Generating API docs with Doxygen
#-----------------------------------

find_package(Doxygen)

if(DOXYGEN_FOUND)
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/Doxyfile.in ${CMAKE_CURRENT_BINARY_DIR}/Doxyfile @ONLY)
add_custom_target(doc
${DOXYGEN_EXECUTABLE} ${CMAKE_CURRENT_BINARY_DIR}/Doxyfile
WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
COMMENT "Generating API documentation with Doxygen" VERBATIM)
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/Doxyfile.in ${CMAKE_CURRENT_BINARY_DIR}/Doxyfile @ONLY)
add_custom_target(doc
${DOXYGEN_EXECUTABLE} ${CMAKE_CURRENT_BINARY_DIR}/Doxyfile
WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
COMMENT "Generating API documentation with Doxygen" VERBATIM)
endif(DOXYGEN_FOUND)

Loading

0 comments on commit e4ab222

Please sign in to comment.