70 lines
2.1 KiB
CMake
70 lines
2.1 KiB
CMake
|
cmake_minimum_required(VERSION 2.8.3) # CMAKE_CURRENT_LIST_DIR
|
||
|
|
||
|
project(IronyMode)
|
||
|
|
||
|
set(CMAKE_MODULE_PATH
|
||
|
${PROJECT_SOURCE_DIR}/cmake
|
||
|
${PROJECT_SOURCE_DIR}/cmake/modules
|
||
|
${CMAKE_MODULE_PATH})
|
||
|
|
||
|
include(utils)
|
||
|
|
||
|
include(CTest)
|
||
|
|
||
|
check_for_in_source_build()
|
||
|
release_as_default_build_type()
|
||
|
|
||
|
# Disable exception, we aren't using them and right now clang-cl needs them
|
||
|
# disabled to parse Windows headers.
|
||
|
#
|
||
|
# Logic stolen from LLVM
|
||
|
if (CMAKE_COMPILER_IS_GNUCXX)
|
||
|
set(IRONY_COMPILER_IS_GCC_COMPATIBLE ON)
|
||
|
elseif (MSVC)
|
||
|
set(IRONY_COMPILER_IS_GCC_COMPATIBLE OFF)
|
||
|
elseif (CMAKE_CXX_COMPILER_ID MATCHES "Clang")
|
||
|
set(IRONY_COMPILER_IS_GCC_COMPATIBLE ON)
|
||
|
endif()
|
||
|
|
||
|
if(IRONY_COMPILER_IS_GCC_COMPATIBLE)
|
||
|
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fno-exceptions")
|
||
|
elseif(MSVC)
|
||
|
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /EHs-c- /D_HAS_EXCEPTIONS=0")
|
||
|
# irony-server uses some code that breaks when iterator debugging is enabled
|
||
|
#
|
||
|
# The culprit is CommandLineArgumentParser who initialize its member
|
||
|
# 'Position', of type 'std::string::const_iterator', to 'Input.begin() - 1'.
|
||
|
# With checked iterator the begin() - 1 breaks in debug build.
|
||
|
set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} /D_ITERATOR_DEBUG_LEVEL=0")
|
||
|
endif()
|
||
|
|
||
|
enable_colored_diagnotics()
|
||
|
check_cxx11_options()
|
||
|
|
||
|
if (CXX11_COMPILE_OPTIONS)
|
||
|
add_compile_options_(${CXX11_COMPILE_OPTIONS})
|
||
|
endif()
|
||
|
|
||
|
foreach (link_option ${CXX11_LINK_OPTIONS})
|
||
|
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} ${link_option}")
|
||
|
set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} ${link_option}")
|
||
|
set(CMAKE_MODULE_LINKER_FLAGS "${CMAKE_MODULE_LINKER_FLAGS} ${link_option}")
|
||
|
endforeach()
|
||
|
|
||
|
if (CMAKE_CXX_COMPILER_ID MATCHES "GNU|Clang")
|
||
|
add_compile_options_(-Wall -Wextra)
|
||
|
endif()
|
||
|
|
||
|
option(GENERATE_DOXYGEN "Whether or not to build the Doxygen documentation" OFF)
|
||
|
|
||
|
set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib)
|
||
|
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib)
|
||
|
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin)
|
||
|
|
||
|
add_subdirectory(src)
|
||
|
add_subdirectory(docs)
|
||
|
|
||
|
if (BUILD_TESTING)
|
||
|
add_subdirectory(test)
|
||
|
endif()
|