cmake_minimum_required ( VERSION 2.8.8 )
project ( juci )
set ( JUCI_VERSION "1.3.0-rc1" )
set ( CPACK_PACKAGE_NAME "jucipp" )
set ( CPACK_PACKAGE_CONTACT "Ole Christian Eidheim <eidheim@gmail.com>" )
set ( CPACK_PACKAGE_VENDOR ${ CPACK_PACKAGE_CONTACT } )
set ( CPACK_PACKAGE_VERSION ${ JUCI_VERSION } )
set ( CPACK_PACKAGE_DESCRIPTION_FILE "${CMAKE_CURRENT_SOURCE_DIR}/README.md" )
set ( CPACK_PACKAGE_DESCRIPTION_SUMMARY "A lightweight, platform independent C++-IDE with support for C++11, C++14, and experimental C++17 features depending on libclang version." )
set ( CPACK_RESOURCE_FILE_LICENSE "${CMAKE_CURRENT_SOURCE_DIR}/LICENSE" )
set ( CPACK_PACKAGING_INSTALL_PREFIX ${ CMAKE_INSTALL_PREFIX } )
set ( CPACK_DEBIAN_PACKAGE_DEPENDS "cmake, make, g++, libclang-3.8-dev, liblldb-3.8-dev, clang-format, pkg-config, libboost-system-dev, libboost-filesystem-dev, libboost-serialization-dev libgtksourceviewmm-3.0-dev, aspell-en, libaspell-dev, libgit2-dev, exuberant-ctags" )
set ( CPACK_DEBIAN_PACKAGE_HOMEPAGE "https://github.com/cppit/jucipp" )
set ( CPACK_DEBIAN_PACKAGE_SHLIBDEPS ON )
include ( CPack )
set ( CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DJUCI_VERSION=\\\" ${ JUCI_VERSION } \\\" -std=c++1y -pthread -Wall -Wextra -Wno-unused-parameter " )
if ( CMAKE_BUILD_TYPE STREQUAL "" )
set ( CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -O3" )
endif ( )
# temporarily disable these warnings: Only <gtksourceview/gtksource.h> can be included directly.
if ( "${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU" )
set ( CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-cpp" )
elseif ( CMAKE_CXX_COMPILER_ID MATCHES "Clang" )
set ( CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-#warnings" )
endif ( )
if ( APPLE )
set ( CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -undefined dynamic_lookup -Wno-unused-command-line-argument" ) #TODO: fix this
link_directories ( /usr/local/lib /usr/local/opt/gettext/lib )
include_directories ( /usr/local/opt/gettext/include )
set ( CMAKE_MACOSX_RPATH 1 )
set ( ENV{PKG_CONFIG_PATH} "$ENV{PKG_CONFIG_PATH}:/usr/local/lib/pkgconfig:/opt/X11/lib/pkgconfig" )
endif ( )
if ( ${ CMAKE_SYSTEM_NAME } MATCHES FreeBSD )
link_directories ( /usr/local/lib )
endif ( )
set ( CMAKE_MODULE_PATH ${ CMAKE_MODULE_PATH } "${CMAKE_SOURCE_DIR}/cmake_modules/" )
find_package ( LibClang REQUIRED )
#Find liblldb with the same version as the version of libclang found
string ( REPLACE libclang liblldb LIBLLDB_LIBRARIES "${LIBCLANG_LIBRARIES}" )
if ( EXISTS "${LIBLLDB_LIBRARIES}" )
set ( LIBLLDB_FOUND TRUE )
elseif ( EXISTS "${LIBLLDB_LIBRARIES}.1" )
set ( LIBLLDB_LIBRARIES "${LIBLLDB_LIBRARIES}.1" )
set ( LIBLLDB_FOUND TRUE )
endif ( )
if ( LIBLLDB_FOUND )
set ( CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DJUCI_ENABLE_DEBUG" )
else ( )
set ( LIBLLDB_LIBRARIES "" )
message ( "liblldb not found. Building juCi++ without debugging support" )
endif ( )
find_package ( Boost 1.54 COMPONENTS system filesystem serialization REQUIRED )
find_package ( ASPELL REQUIRED )
include ( FindPkgConfig )
pkg_check_modules ( GTKMM gtkmm-3.0 REQUIRED )
pkg_check_modules ( GTKSVMM gtksourceviewmm-3.0 REQUIRED )
pkg_check_modules ( LIBGIT2 libgit2 REQUIRED )
if ( MSYS )
set ( global_libraries winpthread )
endif ( )
set ( global_libraries ${ global_libraries }
$ { G T K M M _ L I B R A R I E S }
$ { G T K S V M M _ L I B R A R I E S }
$ { B o o s t _ L I B R A R I E S }
$ { L I B C L A N G _ L I B R A R I E S }
$ { L I B L L D B _ L I B R A R I E S }
$ { A S P E L L _ L I B R A R I E S }
$ { L I B G I T 2 _ L I B R A R I E S }
)
set ( global_includes
$ { B o o s t _ I N C L U D E _ D I R S }
$ { G T K M M _ I N C L U D E _ D I R S }
$ { G T K S V M M _ I N C L U D E _ D I R S }
$ { L I B C L A N G _ I N C L U D E _ D I R S }
$ { A S P E L L _ I N C L U D E _ D I R }
$ { L I B G I T 2 _ I N C L U D E _ D I R S }
$ { P R O J E C T _ S O U R C E _ D I R } / l i b c l a n g m m / s r c
$ { P R O J E C T _ S O U R C E _ D I R } / t i n y - p r o c e s s - l i b r a r y
$ { P R O J E C T _ S O U R C E _ D I R } / s r c
)
add_subdirectory ( "src" )
#TODO: instead of the if-expression below, disable tests on Travis CI for clang++ builds
if ( NOT ( ( "${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang" ) AND ( NOT $ENV{ distribution } STREQUAL "" ) ) )
if ( ENABLE_TESTING )
enable_testing ( )
add_subdirectory ( tests )
endif ( )
endif ( )
if ( ${ CMAKE_SYSTEM_NAME } MATCHES Linux|.*BSD|DragonFly )
install ( FILES "${CMAKE_SOURCE_DIR}/share/juci.desktop"
D E S T I N A T I O N " $ { C M A K E _ I N S T A L L _ P R E F I X } / s h a r e / a p p l i c a t i o n s " )
install ( FILES "${CMAKE_SOURCE_DIR}/share/juci.svg"
D E S T I N A T I O N " $ { C M A K E _ I N S T A L L _ P R E F I X } / s h a r e / i c o n s / h i c o l o r / s c a l a b l e / a p p s " )
endif ( )