Files @ 4e3b6ce117b2
Branch filter:

Location: libtransport.git/CMakeLists.txt

Daniel Henninger
One more function to go after this. At some future date I'd like to consider if the API provides some better mechanisms, but this'll do for now.
cmake_minimum_required(VERSION 2.6)
project(libtransport)

set(CMAKE_MODULE_PATH "cmake_modules")

set(cppunit_DIR "${CMAKE_SOURCE_DIR}/cmake_modules")
find_package(cppunit)

set(sqlite3_DIR "${CMAKE_SOURCE_DIR}/cmake_modules")
find_package(sqlite3)

set(mysql_DIR "${CMAKE_SOURCE_DIR}/cmake_modules")
find_package(mysql)

set(purple_DIR "${CMAKE_SOURCE_DIR}/cmake_modules")
find_package(purple)

set(glib_DIR "${CMAKE_SOURCE_DIR}/cmake_modules")
find_package(glib)

if (NOT WIN32)
	set(popt_DIR "${CMAKE_SOURCE_DIR}/cmake_modules")
	find_package(popt)
endif()

set(event_DIR "${CMAKE_SOURCE_DIR}/cmake_modules")
find_package(event)

set(Swiften_DIR "${CMAKE_SOURCE_DIR}/cmake_modules")
find_package(Swiften REQUIRED)

set(openssl_DIR "${CMAKE_SOURCE_DIR}/cmake_modules")
find_package(openssl REQUIRED)

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 thread signals REQUIRED)
message( STATUS "Found Boost: ${Boost_LIBRARIES}, ${Boost_INCLUDE_DIR}")

set(Protobuf_DIR "${CMAKE_SOURCE_DIR}/cmake_modules")
find_package(Protobuf REQUIRED)

set(Communi_DIR "${CMAKE_SOURCE_DIR}/cmake_modules")
find_package(Communi)

set(log4cxx_DIR "${CMAKE_SOURCE_DIR}/cmake_modules")
find_package(log4cxx)

set(event_DIR "${CMAKE_SOURCE_DIR}/cmake_modules")
find_package(event)

set(pqxx_DIR "${CMAKE_SOURCE_DIR}/cmake_modules")
find_package(pqxx)

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)
		execute_process(COMMAND git "--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)
	set(SQLITE3_LIBRARIES "")
	message("SQLite3           : no")
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_LIBRARY AND PURPLE_INCLUDE_DIR)
		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()

	message("Frotz 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)")
endif()

if (LOG4CXX_FOUND)
	message("Logging           : yes")
	include_directories(${LOG4CXX_INCLUDE_DIR})
else()
	message(FATAL_ERROR "Logging           : no (install log4cxx-devel)")
endif()

if (WIN32)
ADD_DEFINITIONS(-D_WIN32_WINNT=0x501)
ADD_DEFINITIONS(-DWIN32_LEAN_AND_MEAN)
endif()

if(CMAKE_BUILD_TYPE MATCHES Debug)
if (CMAKE_COMPILER_IS_GNUCXX)
	ADD_DEFINITIONS(-O3)
	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")
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})
include_directories(${OPENSSL_INCLUDE_DIR})

ADD_SUBDIRECTORY(src)
ADD_SUBDIRECTORY(plugin)
ADD_SUBDIRECTORY(include)
ADD_SUBDIRECTORY(spectrum)
ADD_SUBDIRECTORY(backends)
if (NOT WIN32)
	ADD_SUBDIRECTORY(spectrum_manager)
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("----------------------")