# CMake command examples: # Native (Linux): # cmake .. # Windows: # cmake -DCMAKE_TOOLCHAIN_FILE=~/cmake/Toolchain-mingw32.cmake -DCMAKE_INSTALL_PREFIX=~/cmake/win32 .. # ARM (Linux): # cmake -DCMAKE_TOOLCHAIN_FILE=~/cmake/Toolchain-codesourcery.cmake -DCMAKE_INSTALL_PREFIX=~/cmake/arm .. cmake_minimum_required(VERSION 2.8) project("skype4empathy" C) if(CMAKE_SOURCE_DIR STREQUAL CMAKE_BUILD_DIR) message(ERROR "You don't want to configure in the source directory!") endif() # configure set ( CONFIG_AUTHOR "Gabriele Giacone" ) set ( CONFIG_CONTACT_EMAIL " <1o5g4r8o@gmail.com>") set ( CONFIG_HOMEPAGE "http://eion.robbmob.com" ) set ( CONFIG_DESCRIPTION_SUMMARY "This is the Skype API Plugin for Empathy" ) set ( CONFIG_LICENSE "GPLv3") set ( BUILD_TYPE "Debug" CACHE STRING "Debug or Release?") set ( CPACK_GENERATOR "DEB" CACHE STRING "Configure Installer Package (DEB/RPM)") set ( CMAKE_INSTALL_PREFIX "/usr" CACHE STRING "Prefix for operation system e.g. /usr") message( " GENERATOR = ${CPACK_GENERATOR}" ) # Set default install prefix to project root directory set ( DEB_CMAKE_INSTALL_PREFIX "${CMAKE_INSTALL_PREFIX}" ) set ( CONFIG_INSTALLER_FOLDER "${CMAKE_SOURCE_DIR}/installer" ) set ( CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/cmake" ) set ( CPACK_SET_DESTDIR "ON" ) set ( DEB_BUILDDIR "obj-${DEB_BUILD_GNU_TYPE}" ) # Flags set ( LIBPURPLE_CFLAGS "-DPURPLE_PLUGINS -DENABLE_NLS" ) set ( CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wall -pthread -shared -fPIC -DPIC") # Set Flags for 32 and 64bit if ( "${CMAKE_SIZEOF_VOID_P}" EQUAL "8" ) set(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS} -g -m32 -m64 -O2 -Wno-pointer-to-int-cast -Wno-int-to-pointer-cast") set(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS} -g -DDEBUG -O0 -Wno-pointer-to-int-cast -Wno-int-to-pointer-cast") elseif( "${CMAKE_SIZEOF_VOID_P}" EQUAL "4" ) set(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS} -O2 -I. -g -march=athlon-xp") set(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS} -g -DDEBUG -O0 -I. -march=athlon-xp") else() set(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS} -I. -g -O2") set(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS} -I. -g -O2") endif() # project version set ( ${PROJECT_NAME}_MAJOR_VERSION 0 ) set ( ${PROJECT_NAME}_MINOR_VERSION 1 ) set ( ${PROJECT_NAME}_PATCH_LEVEL 0 ) set ( PROJECT_VERSION "${${PROJECT_NAME}_MAJOR_VERSION}.${${PROJECT_NAME}_MINOR_VERSION}.${${PROJECT_NAME}_PATCH_LEVEL}" ) # Purple Settings IF(NOT PURPLE_MAJOR_VERSION) set ( PURPLE_MAJOR_VERSION 2 ) ENDIF(NOT PURPLE_MAJOR_VERSION) set ( PIDGIN_INSTALL_DIR "${CMAKE_INSTALL_PREFIX}/share/pixmaps/pidgin/") set ( PURPLE_LIB_INSTALL_DIR "${CMAKE_INSTALL_PREFIX}/lib/purple-${PURPLE_MAJOR_VERSION}/") # Set the default path for built executables to the "bin" directory set(EXECUTABLE_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/bin) # Add definitions for gettext. set ( LOCALE_DIR "${CMAKE_INSTALL_PREFIX}/share/locale") # Enable debug symbols by default if(CMAKE_BUILD_TYPE STREQUAL "") set(CMAKE_BUILD_TYPE Debug) endif() ################################################################################ # Configure and find libraries ################################################################################ if(NOT CMAKE_CROSSCOMPILING) # Packages find_package(PkgConfig REQUIRED) option(NLS "Native language support" ON) if(NLS) find_package(Gettext) endif(NLS) # Modules pkg_check_modules(GLIB REQUIRED glib-2.0) pkg_check_modules(DBUS REQUIRED dbus-1) pkg_check_modules(LIBPURPLE REQUIRED purple) include_directories( ${GLIB_INCLUDE_DIRS} ${DBUS_INCLUDE_DIRS} ${LIBPURPLE_INCLUDE_DIRS} ) else(NOT CMAKE_CROSSCOMPILING) if(${CMAKE_SYSTEM_NAME} STREQUAL Windows) # GLIB include directories set(GLIB_CFLAGS -I${CMAKE_INSTALL_PREFIX}/include/glib-2.0 -I${CMAKE_INSTALL_PREFIX}/lib/glib-2.0/include -I${CMAKE_INSTALL_PREFIX}/include/dbus-1.0 -I${CMAKE_INSTALL_PREFIX}/lib/dbus-1.0/include -I${CMAKE_INSTALL_PREFIX}/include/libpurple -I${CMAKE_INSTALL_PREFIX}/lib/libpurple/include ) # same as native values set(GLIB_LIBRARIES glib-2.0 dbus-1.0 purple) # directory which includes *.dll.a files set(GLIB_LIBRARY_DIRS ${CMAKE_INSTALL_PREFIX}/lib) endif() endif(NOT CMAKE_CROSSCOMPILING) ################################################################################ # Dependencies ################################################################################ # Definitions set(CFLAGS ${GLIB_CFLAGS} ${DBUS_CFLAGS} ${LIBPURPLE_CFLAGS} ) add_definitions( ${CFLAGS} ) # Linker libraries set(LIBS ${GLIB_LIBRARIES} ${DBUS_LIBRARIES} ${LIBPURPLE_LIBRARIES} ) link_libraries(${LIBS}) # Linker library directories set(LIBRARY_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/lib) set(LIB_PATHS ${GLIB_LIBRARY_DIRS} ${DBUS_LIBRARY_DIRS} ${LIBPURPLE_LIBRARY_DIRS} ) link_directories(${LIB_PATHS}) # Include directories #set(INCLUDE_PATHS # ${PROJECT_SOURCE_DIR}/pixmaps #) #include_directories(${INCLUDE_PATHS}) ################################################################################ # Add Sources ################################################################################ # determine source and header files SET(SOURCES libskype.c debug.c skype_messaging_carbon2.c skype_messaging_win32.c skype_events.c skype_messaging.c skype_messaging_carbon.c skype_messaging_dbus.c skype_messaging_network.c skype_messaging_x11.c ) # libskype.so DEPENDS skype_messaging_x11.c skype_messaging_dbus.c add_library(skype MODULE libskype.c) # libskype_dbus.so DEPENDS skype_messaging_x11.c skype_messaging_dbus.c add_library(skype_dbus MODULE libskype.c) set_target_properties(${skype_dbus} PROPERTIES COMPILE_FLAGS "-DSKYPE_DBUS") # libskypenet.so: .DEPENDS skype_messaging_network.c add_library(skypenet MODULE libskype.c) set_target_properties(${skypenet} PROPERTIES COMPILE_FLAGS "-DSKYPENET") # libskypearm.so: .DEPENDS skype_messaging_x11.c add_library(skypearm MODULE libskype.c) # Install files INSTALL (CODE "FILE(MAKE_DIRECTORY ${PURPLE_LIB_INSTALL_DIR})") INSTALL (TARGETS ${skype} ${skype_dbus} ${skypenet}${skypearm} DESTINATION ${PURPLE_LIB_INSTALL_DIR}) ################################################################################ # Add Icons and theme for emphaty ################################################################################ foreach(size 16 22 48) FILE(GLOB PIDGIN_IMAGE ${CMAKE_CURRENT_SOURCE_DIR}icons/${size}/*.png) INSTALL (FILES ${PIDGIN_IMAGE} DESTINATION ${PIDGIN_INSTALL_DIR}protocols/${size}) endforeach(size) FILE(GLOB PIDGIN_EMOTES ${CMAKE_CURRENT_SOURCE_DIR}theme) INSTALL (FILES ${PIDGIN_EMOTES} DESTINATION ${PIDGIN_INSTALL_DIR}emotes/skype) ################################################################################ # Add locales - Creates the CPACK-Component locales ################################################################################ option(INSTALL_LOC "Install locales data" ON) if(GETTEXT_FOUND AND GETTEXTLIBS_FOUND AND INSTALL_LOC) message( "-> Add locales" ) set (HAVE_GETTEXT true) file (GLOB project_TRANSLATIONS ${CMAKE_SOURCE_DIR}/po/*.po) GETTEXT_CREATE_TRANSLATIONS (${CMAKE_CURRENT_SOURCE_DIR}/po/skype4pidgin.pot ALL ${project_TRANSLATIONS}) endif(GETTEXT_FOUND AND GETTEXTLIBS_FOUND AND INSTALL_LOC) ################################################################################ # Add uninstall option ################################################################################ configure_file( "${CMAKE_SOURCE_DIR}/cmake/CMake_Uninstall.cmake.in" "${CMAKE_CURRENT_BINARY_DIR}/CMake_Uninstall.cmake" IMMEDIATE @ONLY) add_custom_target(uninstall COMMAND ${CMAKE_COMMAND} -P ${CMAKE_CURRENT_BINARY_DIR}/CMake_Uninstall.cmake COMMENT "Add uninstall options" ) ################################################################################ # Add installer package options (e.g. debian folder) ################################################################################ option(BUILD_INSTALLER "Generate an Installer for your OS" ON) if ( BUILD_INSTALLER AND NOT EXISTS "${CONFIG_INSTALLER_FOLDER}/") include (Installer) #add_subdirectory(cmake/installer) endif() ################################################################################ # Optimize Compiler ################################################################################ include (OptimizeForArchitecture) execute_process( COMMAND sed "s, \"auto\" CACHE, \"none\" CACHE," INPUT_FILE ${CMAKE_SOURCE_DIR}/cmake/OptimizeForArchitecture.cmake OUTPUT_FILE ${CMAKE_BINARY_DIR}/cmake/OptimizeForArchitecture.cmake ) install(FILES ${CMAKE_BINARY_DIR}/../cmake/OptimizeForArchitecture.cmake DESTINATION cmake ) ################################################################################ # Summary ################################################################################ message( "" ) message( "Environment:" ) message( " HOST_GNU_TYPE = ${DEB_HOST_GNU_TYPE}" ) message( " HOST_ARCH = ${DEB_HOST_ARCH}" ) message( " GNU Type = ${DEB_BUILD_GNU_TYPE}" ) message( " Architecture: ${DEB_BUILD_ARCH}" ) message( " System Type: ${DEB_BUILD_GNU_SYSTEM}") message( " System: ${DEB_BUILD_GNU_SYSTEM}") message( " CPU: ${DEB_HOST_ARCH_CPU}") message( "" ) if ( BUILD_INSTALLER ) message( "Installer:" ) message( " GENERATOR = ${CPACK_GENERATOR}" ) message( " INSTALL_DIRECTORY = ${CPACK_PACKAGE_INSTALL_DIRECTORY}" ) message( " DEB_BUILDDIR = ${DEB_BUILDDIR}" ) message( "" ) endif() message( "Summary:" ) message( " PACKAGE_VERSION = ${PROJECT_VERSION}" ) message( " EXECUTABLE_OUTPUT_PATH = ${EXECUTABLE_OUTPUT_PATH}" ) message( "" ) message( "Variables that can be changed:" ) message( " CONFIG_AUTHOR = ${CONFIG_AUTHOR}" ) message( " CONFIG_CONTACT_EMAIL = ${CONFIG_CONTACT_EMAIL}" ) message( " BUILD_TYPE = ${BUILD_TYPE}" ) message( " BUILD_INSTALLER = ${BUILD_INSTALLER}" ) message( " CONFIG_LICENSE = ${CONFIG_LICENSE}" ) message( " CMAKE_INSTALL_PREFIX = ${CMAKE_INSTALL_PREFIX}" ) message( " LOCALE_DIR = ${LOCALE_DIR}" ) message( " PIDGIN_INSTALL_DIR = ${PIDGIN_INSTALL_DIR}" ) message( " PURPLE_LIB_INSTALL_DIR = ${PURPLE_LIB_INSTALL_DIR}" ) message( "" ) message( "Libs:" ) message( "" )