Files @ 4d2f3bd06950
Branch filter:

Location: libtransport.git/CMakeLists.txt

Jan Kaluza
Check for boost_thread and also boost_thread-mt
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")

MACRO(LIST_CONTAINS var value)
	SET(${var})
	FOREACH (value2 ${ARGN})
		IF (${value} STREQUAL ${value2})
		SET(${var} TRUE)
		ENDIF (${value} STREQUAL ${value2})
	ENDFOREACH (value2)
ENDMACRO(LIST_CONTAINS)

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)

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)
	find_package(Boost COMPONENTS program_options date_time system filesystem regex thread signals REQUIRED)
else(WIN32)
	LIST_CONTAINS(contains -lboost_program_options ${SWIFTEN_LIBRARY})
	if(contains)
		message(STATUS "Using non-multithreaded boost")
		set(Boost_USE_MULTITHREADED 0)
	endif(contains)
	find_package(Boost COMPONENTS program_options date_time system filesystem regex thread signals REQUIRED)
	if (NOT Boost_FOUND)
		find_package(Boost COMPONENTS program_options date_time system filesystem regex thread-mt signals REQUIRED)
	endif()
endif(WIN32)

message( STATUS "Found Boost: ${Boost_LIBRARIES}, ${Boost_INCLUDE_DIR}")

set(Protobuf_DIR "${CMAKE_SOURCE_DIR}/cmake_modules")
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)

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)

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)

INCLUDE(FindQt4)
FIND_PACKAGE(Qt4 COMPONENTS QtCore QtNetwork)

# ADD_DEFINITIONS(${SWIFTEN_CFLAGS})
ADD_DEFINITIONS(-DSUPPORT_LEGACY_CAPS)
# ADD_DEFINITIONS(-DBOOST_FILESYSTEM_VERSION=2)

message("  Supported features")
message("-----------------------")

if (SPECTRUM_VERSION)
	ADD_DEFINITIONS(-DSPECTRUM_VERSION="${SPECTRUM_VERSION}")
else (SPECTRUM_VERSION)
	if (EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/.git)
		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
		)
		set(SPECTRUM_VERSION 2.0.0-beta-git-${GIT_REVISION})
		ADD_DEFINITIONS(-DSPECTRUM_VERSION="${SPECTRUM_VERSION}")
	else (EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/.git)
		set(SPECTRUM_VERSION 2.0.0-alpha)
		ADD_DEFINITIONS(-DSPECTRUM_VERSION="${SPECTRUM_VERSION}")
	endif (EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/.git)
endif (SPECTRUM_VERSION)

message("Version           : " ${SPECTRUM_VERSION})

if (SQLITE3_FOUND)
	ADD_DEFINITIONS(-DWITH_SQLITE)
	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)
	ADD_DEFINITIONS(-DWITH_MYSQL)
	include_directories(${MYSQL_INCLUDE_DIR})
	message("MySQL             : yes")
else (MYSQL_FOUND)
	set(MYSQL_LIBRARIES "")
	message("MySQL             : no (install mysql-devel)")
endif (MYSQL_FOUND)

if (PQXX_FOUND)
	ADD_DEFINITIONS(-DWITH_PQXX)
	include_directories(${PQXX_INCLUDE_DIR})
	message("PostgreSQL        : yes")
else (PQXX_FOUND)
	set(PQXX_LIBRARY "")
	set(PQ_LIBRARY "")
	message("PostgreSQL        : no (install libpqxx-devel)")
endif (PQXX_FOUND)

if (PROTOBUF_FOUND)
	ADD_DEFINITIONS(-DWITH_PROTOBUF)
	include_directories(${PROTOBUF_INCLUDE_DIRS})
	message("Network plugins   : yes")

	if(PURPLE_FOUND)
		message("Libpurple plugin  : yes")
		include_directories(${PURPLE_INCLUDE_DIR})
		include_directories(${GLIB2_INCLUDE_DIR})
	else()
		message("Libpurple plugin  : no (install libpurple)")
	endif()

	if (HAVE_EVENT)
		ADD_DEFINITIONS(-DWITH_LIBEVENT)
		include_directories(${EVENT_INCLUDE_DIRS})
		message("  libev eventloop : yes")
	else()
		message("  libev eventloop : no (install libev-devel)")
	endif()

	if(IRC_FOUND)
		ADD_DEFINITIONS(-DCOMMUNI_SHARED)
		message("IRC plugin        : yes")
		include_directories(${QT_QTNETWORK_INCLUDE_DIR})
		include_directories(${IRC_INCLUDE_DIR})
		include(${QT_USE_FILE})
	else()
		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)")
	message("Libpurple plugin  : no (install libpurple and libprotobuf-dev)")
	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)
	message("Log4cxx           : yes")
	include_directories(${LOG4CXX_INCLUDE_DIR})
	ADD_DEFINITIONS(-DWITH_LOG4CXX)
else()
	set(LOG4CXX_LIBRARIES "")
	message("Log4cxx           : no (install log4cxx-devel)")
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(-O0)
	ADD_DEFINITIONS(-ggdb)
endif()
	ADD_DEFINITIONS(-DDEBUG)
	message("Debug             : yes")
else(CMAKE_BUILD_TYPE MATCHES Debug)
	message("Debug             : no (run \"cmake . -DCMAKE_BUILD_TYPE=Debug\")")
endif(CMAKE_BUILD_TYPE MATCHES Debug)


SET(TRANSPORT_VERSION 2.0)
SET(PROJECT_VERSION 2.0)
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)
ADD_SUBDIRECTORY(include)
ADD_SUBDIRECTORY(spectrum)
ADD_SUBDIRECTORY(backends)
if (NOT WIN32)
	ADD_SUBDIRECTORY(spectrum_manager)
#	ADD_SUBDIRECTORY(spectrum2_send_message)
endif()

if (CPPUNIT_FOUND)
	message("tests             : yes")
	include_directories(${CPPUNIT_INCLUDE_DIR})
else()
	message("tests             : no (install CPPUnit)")
endif()

if(DOXYGEN_FOUND)
	message("Docs              : yes")
	ADD_SUBDIRECTORY(docs)
else(DOXYGEN_FOUND)
	message("Docs              : no (install doxygen)")
endif(DOXYGEN_FOUND)

message("----------------------")