cmake_minimum_required ( VERSION 2.6 FATAL_ERROR ) project ( openobex C ) # # The project version # set ( VERSION_MAJOR 1 ) set ( VERSION_MINOR 3 ) set ( VERSION_PATCH 0 ) set ( SHORT_VERSION "${VERSION_MAJOR}.${VERSION_MINOR}" ) set ( VERSION "${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_PATCH}" ) if ( VERSION_PATCH GREATER 0 ) set ( SHORT_VERSION "${VERSION}" ) endif ( VERSION_PATCH GREATER 0 ) # # The path for our own CMake modules # set ( CMAKE_MODULE_PATH ${PROJECT_SOURCE_DIR}/CMakeModules ) # # Define the default build type # set ( CMAKE_CONFIGURATION_TYPES "Release;Debug" CACHE STRING "" FORCE ) if ( NOT CMAKE_BUILD_TYPE ) set ( CMAKE_BUILD_TYPE Release CACHE STRING "Build type" FORCE ) endif ( NOT CMAKE_BUILD_TYPE ) # # define how to build libraries # option ( BUILD_SHARED_LIBS "Build shared libraries" ON ) # # check common compiler flags # include ( CheckCCompilerFlag ) if ( CMAKE_COMPILER_IS_GNUCC ) if ( UNIX AND NOT WIN32 ) set ( COMPILER_FLAG_VISIBILITY -fvisibility=hidden ) check_c_compiler_flag ( ${COMPILER_FLAG_VISIBILITY} COMPILER_SUPPORT_VISIBILITY ) endif ( UNIX AND NOT WIN32 ) set ( LINKER_FLAG_NOUNDEFINED -Wl,--no-undefined ) check_c_compiler_flag ( "${LINKER_FLAG_NOUNDEFINED}" COMPILER_SUPPORT_NOUNDEFINED ) endif ( CMAKE_COMPILER_IS_GNUCC ) if ( MSVC ) # Some compiler options for MSVC to not print non-sense warnings. add_definitions ( -D_CRT_SECURE_NO_DEPRECATE -D_CRT_NONSTDC_NO_DEPRECATE ) endif ( MSVC ) # # which transports shall be included # find_package ( Bluetooth ) set ( OPENOBEX_BLUETOOTH_AVAILABLE ${Bluetooth_FOUND} ) find_package ( Irda ) set ( OPENOBEX_IRDA_AVAILABLE ${Irda_FOUND} ) find_package ( LibUSB ) set ( OPENOBEX_USB_AVAILABLE ${LibUSB_FOUND} ) foreach ( transport BLUETOOTH IRDA USB ) if ( OPENOBEX_${transport}_AVAILABLE ) set ( OPENOBEX_${transport} ON CACHE BOOL "Build with ${transport} support") else ( OPENOBEX_${transport}_AVAILABLE ) set ( OPENOBEX_${transport} OFF CACHE BOOL "Build with ${transport} support") endif ( OPENOBEX_${transport}_AVAILABLE ) if (OPENOBEX_${transport}) add_definitions ( -DHAVE_${transport} ) endif (OPENOBEX_${transport}) endforeach ( transport ) if ( OPENOBEX_IRDA ) if ( WIN32 ) add_definitions ( -DHAVE_IRDA_WINDOWS ) else ( WIN32 ) string ( TOUPPER "HAVE_IRDA_${CMAKE_SYSTEM_NAME}" IRDA_SYSTEM_DEFINITION ) add_definitions ( -D${IRDA_SYSTEM_DEFINITION} ) endif ( WIN32 ) endif ( OPENOBEX_IRDA ) if ( OPENOBEX_BLUETOOTH ) if ( WIN32 ) add_definitions ( -DHAVE_BLUETOOTH_WINDOWS ) else ( WIN32 ) string ( TOUPPER "HAVE_BLUETOOTH_${CMAKE_SYSTEM_NAME}" BLUETOOTH_SYSTEM_DEFINITION ) add_definitions ( -D${BLUETOOTH_SYSTEM_DEFINITION} ) endif ( WIN32 ) endif ( OPENOBEX_BLUETOOTH ) # # create pkg-config files # these get copied and installed in the library dirs # TODO: those files should be moved to subdirs for each library # set ( prefix "${CMAKE_INSTALL_PREFIX}" ) set ( exec_prefix "\${prefix}" ) set ( libdir "\${prefix}/lib" ) set ( includedir "\${prefix}/include" ) if ( OPENOBEX_USB AND UNIX AND NOT WIN32 ) set ( REQUIRES "libusb" ) endif ( OPENOBEX_USB AND UNIX AND NOT WIN32 ) foreach ( file openobex openobex-glib ) configure_file ( ${PROJECT_SOURCE_DIR}/${file}.pc.in ${CMAKE_CURRENT_BINARY_DIR}/${file}.pc @ONLY ) endforeach ( file ) if ( NOT PKGCONFIG_INSTALL_DIR ) set ( PKGCONFIG_INSTALL_DIR lib/pkgconfig CACHE PATH "Where to install .pc files to" FORCE ) endif ( NOT PKGCONFIG_INSTALL_DIR ) mark_as_advanced ( PKGCONFIG_INSTALL_DIR ) # # process include directory # add_subdirectory ( include ) include_directories ( BEFORE SYSTEM "${CMAKE_CURRENT_SOURCE_DIR}/include" ) if ( MSVC ) include_directories ( AFTER SYSTEM "${CMAKE_SOURCE_DIR}/include/msvc" ) endif ( MSVC ) # # build the main library # add_subdirectory ( lib ) link_directories ( "${CMAKE_CURRENT_BINARY_DIR}/lib" ) if ( BUILD_SHARED_LIBS ) add_definitions ( -DOPENOBEX_DLL ) endif ( BUILD_SHARED_LIBS ) # # build the documentation # add_subdirectory ( doc ) # # build the applications # add_custom_target ( openobex-apps ) add_subdirectory ( apps ) add_subdirectory ( ircp ) # # build the glib binding library # not enabled by default because it requires an additional dependency # option ( BUILD_GLIB_BINDING "Build the glib binding library") if ( BUILD_GLIB_BINDING ) add_subdirectory ( glib ) endif ( BUILD_GLIB_BINDING ) # # The following adds CPack support # set ( CPACK_PACKAGE_DESCRIPTION_SUMMARY "OpenObex" ) set ( CPACK_PACKAGE_VENDOR "The OpenObex Development Team" ) set ( CPACK_RESOURCE_FILE_LICENSE "${CMAKE_CURRENT_SOURCE_DIR}/COPYING.LIB" ) set ( CPACK_RESOURCE_FILE_README "${CMAKE_CURRENT_SOURCE_DIR}/README" ) set ( CPACK_PACKAGE_VERSION_MAJOR "${VERSION_MAJOR}" ) set ( CPACK_PACKAGE_VERSION_MINOR "${VERSION_MINOR}" ) set ( CPACK_PACKAGE_VERSION_PATCH "${VERSION_PATCH}" ) set ( CPACK_PACKAGE_VERSION "${VERSION}" ) if ( UNIX ) set ( CPACK_GENERATOR "TGZ" ) set ( CPACK_SOURCE_GENERATOR "TGZ" ) elseif ( WIN32 ) # # For NSIS, install from http://nsis.sf.net. # For ZIP, install e.g. info-zip from http://www.info-zip.org. # set ( CPACK_GENERATOR "ZIP;NSIS" ) set ( CPACK_SOURCE_GENERATOR "ZIP" ) endif ( UNIX ) set ( CPACK_SOURCE_IGNORE_FILES "/build/" "/\\\\.svn/" "~$" ) # this must _follow_ the settings! include ( CPack )