diff --git a/CMakeLists.txt b/CMakeLists.txt index 1b5d98ba4ba7bfded47c0c4d0ad2c6cce90673d9..07aaf6515d598be3095df285ddedad01b535848f 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,58 +1,167 @@ cmake_minimum_required(VERSION 2.6) project(libtransport) +message(STATUS "Variables to override default places where to find libraries:") +message(STATUS "|- cppunit : -DCPPUNIT_INCLUDE_DIR, -DCPPUNIT_LIBRARY") +message(STATUS "|- swiften : -DSWIFTEN_INCLUDE_DIR, -DSWIFTEN_LIBRARY") +message(STATUS " |- zlib : -DZLIB_LIBRARY") +message(STATUS " |- expat : -DEXPAT_LIBRARY") +message(STATUS " |-libidn : -DLIBIDN_LIBRARY") +message(STATUS " |-libxml : -DLIBXML_LIBRARY") +message(STATUS "|- boost : -DBOOST_INCLUDEDIR, -DBOOST_LIBRARYDIR") +message(STATUS "|- protobuf: -DPROTOBUF_INCLUDE_DIR, -DPROTOBUF_LIBRARY") +message(STATUS " : -DPROTOBUF_PROTOC_EXECUTABLE") +message(STATUS "|- log4cxx : -DLOG4CXX_INCLUDE_DIR, -DLOG4CXX_LIBRARY") +message(STATUS "|- purple : -DPURPLE_INCLUDE_DIR, -DPURPLE_LIBRARY") +message(STATUS " : -DPURPLE_NOT_RUNTIME - enables compilation with libpurple.lib") + if(NOT LIB_INSTALL_DIR) set(LIB_INSTALL_DIR "lib") endif() set(CMAKE_MODULE_PATH "cmake_modules") +# FIND CPPUNIT set(cppunit_DIR "${CMAKE_SOURCE_DIR}/cmake_modules") find_package(cppunit) +if(NOT CPPUNIT_FOUND AND CPPUNIT_INCLUDE_DIR AND CPPUNIT_LIBRARY) + set(CCPUNIT_LIBRARIES ${CPPUNIT_LIBRARY}) + set(CPPUNIT_FOUND 1) + message(STATUS "Using cppunit: ${CPPUNIT_INCLUDE_DIR} ${CPPUNIT_LIBRARIES}") +else() + +endif() + +# FIND SQLITE3 +if (NOT CMAKE_COMPILER_IS_GNUCXX) +ADD_SUBDIRECTORY(msvc-deps) +else() +if (WIN32) +ADD_SUBDIRECTORY(msvc-deps/sqlite3) +else() set(sqlite3_DIR "${CMAKE_SOURCE_DIR}/cmake_modules") find_package(sqlite3) +endif() +endif() +# FIND MYSQL set(mysql_DIR "${CMAKE_SOURCE_DIR}/cmake_modules") find_package(mysql) +# FIND LIBPURPLE set(purple_DIR "${CMAKE_SOURCE_DIR}/cmake_modules") find_package(purple) -set(glib_DIR "${CMAKE_SOURCE_DIR}/cmake_modules") -find_package(glib) +if (WIN32) + if (PURPLE_NOT_RUNTIME) + add_definitions(-DPURPLE_RUNTIME=0) + else(PURPLE_NOT_RUNTIME) + add_definitions(-DPURPLE_RUNTIME=1) + endif(PURPLE_NOT_RUNTIME) +else() + add_definitions(-DPURPLE_RUNTIME=0) +endif() + +# FIND GLIB +# if (GLIB2_INCLUDE_DIR AND GLIB2_LIBRARIES) +# set(GLIB2_FOUND TRUE) +# else() + set(glib_DIR "${CMAKE_SOURCE_DIR}/cmake_modules") + find_package(glib) +# endif() +# FIND LIBXML2 +# set(libxml2_DIR "${CMAKE_SOURCE_DIR}/cmake_modules") +# find_package(libxml2) + +# FIND POPT if (NOT WIN32) set(popt_DIR "${CMAKE_SOURCE_DIR}/cmake_modules") find_package(popt) endif() +# FIND LIBEVENT set(event_DIR "${CMAKE_SOURCE_DIR}/cmake_modules") find_package(event) +# FIND SWIFTEN + set(Swiften_DIR "${CMAKE_SOURCE_DIR}/cmake_modules") find_package(Swiften) +if(NOT SWIFTEN_FOUND) + if (ZLIB_LIBRARY) + set(SWIFTEN_LIBRARY ${SWIFTEN_LIBRARY} ${ZLIB_LIBRARY}) + endif() + if (EXPAT_LIBRARY) + set(SWIFTEN_LIBRARY ${SWIFTEN_LIBRARY} ${EXPAT_LIBRARY}) + endif() + if (LIBIDN_LIBRARY) + set(SWIFTEN_LIBRARY ${SWIFTEN_LIBRARY} ${LIBIDN_LIBRARY}) + endif() + if (LIBXML_LIBRARY) + set(SWIFTEN_LIBRARY ${SWIFTEN_LIBRARY} ${LIBXML_LIBRARY}) + endif() + set(SWIFTEN_LIBRARY ${SWIFTEN_LIBRARY} "Dnsapi") + set(SWIFTEN_LIBRARY ${SWIFTEN_LIBRARY} "Crypt32") + set(SWIFTEN_LIBRARY ${SWIFTEN_LIBRARY} "Secur32") + set(SWIFTEN_LIBRARY ${SWIFTEN_LIBRARY} "Iphlpapi") + set(SWIFTEN_LIBRARY ${SWIFTEN_LIBRARY} "Winscard") + message(STATUS "Using swiften: ${SWIFTEN_INCLUDE_DIR} ${SWIFTEN_LIBRARY}") +endif() + +if (WIN32) + add_definitions(-DSWIFTEN_STATIC=1) + ADD_DEFINITIONS(-D_UNICODE) + ADD_DEFINITIONS(-DUNICODE) +endif() + + +if (CMAKE_COMPILER_IS_GNUCXX) set(openssl_DIR "${CMAKE_SOURCE_DIR}/cmake_modules") find_package(openssl) +endif() +# FIND BOOST set(Boost_DIR "${CMAKE_SOURCE_DIR}/cmake_modules") if (WIN32) -set(Boost_USE_STATIC_LIBS ON) -set(Boost_USE_MULTITHREADED ON) -set(Boost_USE_STATIC_RUNTIME OFF) -endif() -find_package(Boost COMPONENTS program_options date_time system filesystem regex signals REQUIRED) + set(Boost_USE_STATIC_LIBS ON) + set(Boost_USE_MULTITHREADED ON) + set(Boost_USE_STATIC_RUNTIME OFF) + find_package(Boost COMPONENTS program_options date_time system filesystem regex thread signals REQUIRED) +else(WIN32) + find_package(Boost COMPONENTS program_options date_time system filesystem regex thread signals REQUIRED) +endif(WIN32) + message( STATUS "Found Boost: ${Boost_LIBRARIES}, ${Boost_INCLUDE_DIR}") set(Protobuf_DIR "${CMAKE_SOURCE_DIR}/cmake_modules") -find_package(Protobuf REQUIRED) +find_package(Protobuf) + +# FIND PROTOBUF +if (NOT PROTOBUF_FOUND AND PROTOBUF_INCLUDE_DIR AND PROTOBUF_LIBRARY) + set(PROTOBUF_FOUND 1) + set(PROTOBUF_INCLUDE_DIRS ${PROTOBUF_INCLUDE_DIR}) + if (PROTOBUF_PROTOC_EXECUTABLE) + else() + set(PROTOBUF_PROTOC_EXECUTABLE protoc) + endif() + message(STATUS "Using protobuf: ${PROTOBUF_INCLUDE_DIRS} ${PROTOBUF_LIBRARY}") +endif() + set(Communi_DIR "${CMAKE_SOURCE_DIR}/cmake_modules") find_package(Communi) -set(log4cxx_DIR "${CMAKE_SOURCE_DIR}/cmake_modules") -find_package(log4cxx) +if(LOG4CXX_INCLUDE_DIR AND LOG4CXX_LIBRARY) + set(LOG4CXX_LIBRARIES ${LOG4CXX_LIBRARY}) + set(LOG4CXX_FOUND 1) + message(STATUS "Using log4cxx: ${CPPUNIT_INCLUDE_DIR} ${LOG4CXX_INCLUDE_DIR}") +else() + set(log4cxx_DIR "${CMAKE_SOURCE_DIR}/cmake_modules") + find_package(log4cxx) +endif() set(event_DIR "${CMAKE_SOURCE_DIR}/cmake_modules") find_package(event) @@ -60,8 +169,13 @@ find_package(event) set(pqxx_DIR "${CMAKE_SOURCE_DIR}/cmake_modules") find_package(pqxx) +if (NOT WIN32) set(dbus_DIR "${CMAKE_SOURCE_DIR}/cmake_modules") find_package(dbus) +endif() + +set(yahoo2_DIR "${CMAKE_SOURCE_DIR}/cmake_modules") +find_package(yahoo2) find_package(Doxygen) @@ -70,7 +184,7 @@ FIND_PACKAGE(Qt4 COMPONENTS QtCore QtNetwork) # ADD_DEFINITIONS(${SWIFTEN_CFLAGS}) ADD_DEFINITIONS(-DSUPPORT_LEGACY_CAPS) -ADD_DEFINITIONS(-DBOOST_FILESYSTEM_VERSION=2) +# ADD_DEFINITIONS(-DBOOST_FILESYSTEM_VERSION=2) message(" Supported features") message("-----------------------") @@ -79,7 +193,10 @@ if (SPECTRUM_VERSION) ADD_DEFINITIONS(-DSPECTRUM_VERSION="${SPECTRUM_VERSION}") else (SPECTRUM_VERSION) if (EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/.git) - execute_process(COMMAND git "--git-dir=${CMAKE_CURRENT_SOURCE_DIR}/.git" rev-parse --short HEAD + if (NOT GIT_EXECUTABLE) + set (GIT_EXECUTABLE git) + endif() + execute_process(COMMAND ${GIT_EXECUTABLE} "--git-dir=${CMAKE_CURRENT_SOURCE_DIR}/.git" rev-parse --short HEAD OUTPUT_VARIABLE GIT_REVISION OUTPUT_STRIP_TRAILING_WHITESPACE ) @@ -98,8 +215,14 @@ if (SQLITE3_FOUND) include_directories(${SQLITE3_INCLUDE_DIR}) message("SQLite3 : yes") else (SQLITE3_FOUND) +if (WIN32) + ADD_DEFINITIONS(-DWITH_SQLITE) + include_directories(msvc-deps/sqlite3) + message("SQLite3 : bundled") +else() set(SQLITE3_LIBRARIES "") message("SQLite3 : no") +endif() endif (SQLITE3_FOUND) if (MYSQL_FOUND) @@ -126,7 +249,7 @@ if (PROTOBUF_FOUND) include_directories(${PROTOBUF_INCLUDE_DIRS}) message("Network plugins : yes") - if(PURPLE_LIBRARY AND PURPLE_INCLUDE_DIR) + if(PURPLE_FOUND) message("Libpurple plugin : yes") include_directories(${PURPLE_INCLUDE_DIR}) include_directories(${GLIB2_INCLUDE_DIR}) @@ -152,15 +275,31 @@ if (PROTOBUF_FOUND) message("IRC plugin : no (install libCommuni and libprotobuf-dev)") endif() +if (NOT WIN32) message("Frotz plugin : yes") message("SMSTools3 plugin : yes") - if(${LIBDBUSGLIB_FOUND}) message("Skype plugin : yes") include_directories(${LIBDBUSGLIB_INCLUDE_DIRS}) else() message("Skype plugin : no (install dbus-glib-devel)") endif() +else() + message("Frotz plugin : no") + message("SMSTools3 plugin : no") + message("Skype plugin : no") +endif() + +# We have our own copy now... +# if(YAHOO2_FOUND) + message("Libyahoo2 plugin : yes") +# include_directories(${YAHOO2_INCLUDE_DIR}) +# else() +# message("Libyahoo2 plugin : no (install libyahoo2-devel)") +# endif() + + message("Swiften plugin : yes") + message("Twitter plugin : yes") else() message("Network plugins : no (install libprotobuf-dev)") @@ -168,6 +307,8 @@ else() message("IRC plugin : no (install libircclient-qt and libprotobuf-dev)") message("Frotz plugin : no (install libprotobuf-dev)") message("SMSTools3 plugin : no (install libprotobuf-dev)") + message("Swiften plugin : no (install libprotobuf-dev)") + message("Twitter plugin : no (install libprotobuf-dev)") endif() if (LOG4CXX_FOUND) @@ -180,25 +321,17 @@ else() endif() if (WIN32) +ADD_DEFINITIONS(-DLOG4CXX_STATIC) ADD_DEFINITIONS(-D_WIN32_WINNT=0x501) ADD_DEFINITIONS(-DWIN32_LEAN_AND_MEAN) +ADD_DEFINITIONS(-DBOOST_USE_WINDOWS_H) +ADD_DEFINITIONS(-DBOOST_THREAD_USE_LIB) endif() if(CMAKE_BUILD_TYPE MATCHES Debug) if (CMAKE_COMPILER_IS_GNUCXX) - ADD_DEFINITIONS(-O3) + ADD_DEFINITIONS(-O0) ADD_DEFINITIONS(-ggdb) - ADD_DEFINITIONS(-Wall) - ADD_DEFINITIONS(-W) - ADD_DEFINITIONS(-Wcast-align) - ADD_DEFINITIONS(-Wextra -Wno-sign-compare -Wno-unused-parameter) - ADD_DEFINITIONS(-Winit-self) - ADD_DEFINITIONS(-Wmissing-declarations) - ADD_DEFINITIONS(-Wpointer-arith) - ADD_DEFINITIONS(-Wreorder) - ADD_DEFINITIONS(-Woverloaded-virtual) - ADD_DEFINITIONS(-Wsign-promo) - ADD_DEFINITIONS(-Wundef -Wunused) endif() ADD_DEFINITIONS(-DDEBUG) message("Debug : yes") @@ -215,7 +348,10 @@ include_directories(include) include_directories(${EVENT_INCLUDE_DIRS}) include_directories(${SWIFTEN_INCLUDE_DIR}) include_directories(${Boost_INCLUDE_DIRS}) + +if (CMAKE_COMPILER_IS_GNUCXX) include_directories(${OPENSSL_INCLUDE_DIR}) +endif() ADD_SUBDIRECTORY(src) ADD_SUBDIRECTORY(plugin)