diff --git a/servatrice/CMakeLists.txt b/servatrice/CMakeLists.txt index 8af8fc4a..41c42952 100644 --- a/servatrice/CMakeLists.txt +++ b/servatrice/CMakeLists.txt @@ -1,44 +1,30 @@ -CMAKE_MINIMUM_REQUIRED(VERSION 2.6) -SET(CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}) +# CMakeLists for servatrice directory +# +# provides the servatrice binary + PROJECT(servatrice) -# cmake modules -include(GNUInstallDirs) +# cmake module for libgcrypt is included in current directory +SET(CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}) +FIND_PACKAGE(Libgcrypt REQUIRED) SET(servatrice_SOURCES src/main.cpp src/passwordhasher.cpp - src/servatrice.cpp + src/servatrice.cpp src/servatrice_connection_pool.cpp src/servatrice_database_interface.cpp - src/server_logger.cpp - src/serversocketinterface.cpp + src/server_logger.cpp + src/serversocketinterface.cpp src/isl_interface.cpp ${CMAKE_CURRENT_BINARY_DIR}/version_string.cpp ) -SET(servatrice_HEADERS - src/servatrice.h - src/servatrice_connection_pool.h - src/servatrice_database_interface.h - src/server_logger.h - src/serversocketinterface.h - src/isl_interface.h -) SET(QT_DONTUSE_QTGUI) SET(QT_USE_QTNETWORK TRUE) SET(QT_USE_QTSQL TRUE) -FIND_PACKAGE(Qt4 REQUIRED) -FIND_PACKAGE(Protobuf REQUIRED) -FIND_PACKAGE(Libgcrypt REQUIRED) -FIND_PACKAGE(Threads) - -#set(CMAKE_BUILD_TYPE Release) -set(CMAKE_CXX_FLAGS_DEBUG "-ggdb -O2") -set(CMAKE_CXX_FLAGS_RELEASE "-O2") - -QT4_WRAP_CPP(servatrice_HEADERS_MOC ${servatrice_HEADERS}) +# Include directories INCLUDE(${QT_USE_FILE}) INCLUDE_DIRECTORIES(../common) INCLUDE_DIRECTORIES(${LIBGCRYPT_INCLUDE_DIR}) @@ -46,7 +32,8 @@ INCLUDE_DIRECTORIES(${PROTOBUF_INCLUDE_DIR}) INCLUDE_DIRECTORIES(${CMAKE_CURRENT_BINARY_DIR}/../common) INCLUDE_DIRECTORIES(${CMAKE_CURRENT_BINARY_DIR}) -ADD_EXECUTABLE(servatrice ${servatrice_SOURCES} ${servatrice_HEADERS_MOC}) +# Build servatrice binary and link it +ADD_EXECUTABLE(servatrice MACOSX_BUNDLE ${servatrice_SOURCES} ${servatrice_MOC_SRCS}) TARGET_LINK_LIBRARIES(servatrice cockatrice_common ${QT_LIBRARIES} ${LIBGCRYPT_LIBRARY} ${CMAKE_THREAD_LIBS_INIT}) #add_custom_target(versionheader ALL DEPENDS version_header) @@ -56,4 +43,42 @@ add_custom_command( ) # install rules -INSTALL(PROGRAMS ${CMAKE_CURRENT_BINARY_DIR}/servatrice DESTINATION ${CMAKE_INSTALL_BINDIR}) +if(UNIX) + if(APPLE) + INSTALL(TARGETS servatrice BUNDLE DESTINATION ${CMAKE_INSTALL_PREFIX}) + else() + # Assume linux + INSTALL(TARGETS servatrice RUNTIME DESTINATION ${CMAKE_INSTALL_PREFIX}/bin) + endif() +elseif(WIN32) + INSTALL(TARGETS servatrice RUNTIME DESTINATION ${CMAKE_INSTALL_PREFIX}) +endif() + +if(APPLE) + set(plugin_dest_dir ${CMAKE_INSTALL_PREFIX}/servatrice.app/Contents/Plugins) + set(qtconf_dest_dir ${CMAKE_INSTALL_PREFIX}/servatrice.app/Contents/Resources) + + # note: no codecs in qt5 + # note: phonon_backend => mediaservice + # note: needs platform on osx + + if (CMAKE_BUILD_TYPE STREQUAL "Debug") + install(DIRECTORY "${QT_PLUGINS_DIR}/" DESTINATION ${plugin_dest_dir} COMPONENT Runtime + FILES_MATCHING REGEX "(codecs|iconengines|imageformats|mediaservice|phonon_backend|platforms)/.*_debug\\.dylib") + else() + install(DIRECTORY "${QT_PLUGINS_DIR}/" DESTINATION ${plugin_dest_dir} COMPONENT Runtime + FILES_MATCHING REGEX "(codecs|iconengines|imageformats|mediaservice|phonon_backend|platforms)/[^_]*\\.dylib") + endif() + + install(CODE " + file(WRITE \"${qtconf_dest_dir}/qt.conf\" \"[Paths] +Plugins = Plugins\") + " COMPONENT Runtime) + + install(CODE " + file(GLOB_RECURSE QTPLUGINS + \"${plugin_dest_dir}/*.dylib\") + include(BundleUtilities) + fixup_bundle(\"${CMAKE_INSTALL_PREFIX}/servatrice.app\" \"\${QTPLUGINS}\" \"${QT_LIBRARY_DIR}\") + " COMPONENT Runtime) +endif()