build: removed usage of environment variables from CMakeLists

This commit is contained in:
mlangkabel
2019-11-17 15:32:21 +01:00
parent 6c5ac66a59
commit 1c300e0240
3 changed files with 52 additions and 207 deletions
+52 -99
View File
@@ -1,16 +1,9 @@
cmake_minimum_required(VERSION 3.1)
set(BUILD_CXX_LANGUAGE_PACKAGE OFF CACHE BOOL "Add C and C++ support to the Sourcetrail indexer.")
set(BUILD_JAVA_LANGUAGE_PACKAGE OFF CACHE BOOL "Add Java support to the Sourcetrail indexer.")
set(BUILD_PYTHON_LANGUAGE_PACKAGE OFF CACHE BOOL "Add Python support to the Sourcetrail indexer.")
configure_file(
"${CMAKE_SOURCE_DIR}/cmake/language_packages.h.in"
"${CMAKE_BINARY_DIR}/src/lib/language_packages.h"
)
#set (CMAKE_VERBOSE_MAKEFILE ON)
include(cmake/add_files.cmake)
@@ -19,29 +12,29 @@ include(cmake/version.cmake)
include(cmake/version_setup.cmake)
include(cmake/licenses.cmake)
# prohibit in-source-builds
IF(${CMAKE_BINARY_DIR} STREQUAL ${CMAKE_SOURCE_DIR})
MESSAGE(STATUS "In-source-builds are not allowed")
MESSAGE(STATUS "Clean your source directory (e.g. delete the CMakeCache.txt file)")
MESSAGE(FATAL_ERROR "Please create a separate build directory and call CMake again")
ENDIF(${CMAKE_BINARY_DIR} STREQUAL ${CMAKE_SOURCE_DIR})
if (${CMAKE_BINARY_DIR} STREQUAL ${CMAKE_SOURCE_DIR})
message(STATUS "In-source-builds are not allowed")
message(STATUS "Clean your source directory (e.g. delete the CMakeCache.txt file)")
message(FATAL_ERROR "Please create a separate build directory and call CMake again")
endif()
# speed up recompiling on unix with ccache
find_program(CCACHE_PROGRAM ccache)
if (CCACHE_PROGRAM)
message(STATUS "ccache found")
# Support Unix Makefiles and Ninja
set_property(GLOBAL PROPERTY RULE_LAUNCH_COMPILE "${CCACHE_PROGRAM}")
endif()
# Variables --------------------------------------------------------------------
set(PROJECT_NAME Sourcetrail)
set(PROJECT_NAME_LOWER_CASE sourcetrail)
# speed up recompiling on unix with ccache
find_program(CCACHE_PROGRAM ccache)
if(CCACHE_PROGRAM)
MESSAGE(STATUS "ccache found")
# Support Unix Makefiles and Ninja
set_property(GLOBAL PROPERTY RULE_LAUNCH_COMPILE "${CCACHE_PROGRAM}")
endif()
set(APP_PROJECT_NAME "${PROJECT_NAME}")
set(APP_INDEXER_NAME "${PROJECT_NAME}_indexer")
set(LIB_UTILITY_PROJECT_NAME "${PROJECT_NAME}_lib_utility")
set(LIB_GUI_PROJECT_NAME "${PROJECT_NAME}_lib_gui")
set(LIB_CXX_PROJECT_NAME "${PROJECT_NAME}_lib_cxx")
@@ -50,17 +43,8 @@ set(LIB_PYTHON_PROJECT_NAME "${PROJECT_NAME}_lib_python")
set(LIB_PROJECT_NAME "${PROJECT_NAME}_lib")
set(TEST_PROJECT_NAME "${PROJECT_NAME}_test")
set (APP_INDEXER_NAME "${PROJECT_NAME_LOWER_CASE}_indexer")
if (WIN32)
include(cmake/setWinXxBits.cmake)
set(PLATFORM_INCLUDE "includesWindows.h")
# this adds the library path for VLD, must be done before the project target is created
if(${WINXXBITS} STREQUAL "Win32")
LINK_DIRECTORIES($ENV{VLD_DIR}/lib/Win32)
else()
LINK_DIRECTORIES($ENV{VLD_DIR}/lib/Win64)
endif()
elseif (APPLE)
set(PLATFORM_INCLUDE "includesMac.h")
else ()
@@ -103,26 +87,12 @@ endif()
if (BUILD_CXX_LANGUAGE_PACKAGE)
if (UNIX AND APPLE)
if ("${CMAKE_BUILD_TYPE}" STREQUAL "Release")
find_package(LLVM REQUIRED PATHS "$ENV{CLANG_DIR}/build_release/lib/cmake/llvm" NO_DEFAULT_PATH)
else()
find_package(LLVM REQUIRED PATHS "$ENV{CLANG_DIR}/build_debug/lib/cmake/llvm" NO_DEFAULT_PATH)
endif()
elseif(UNIX)
find_package(LLVM REQUIRED PATHS "$ENV{LLVM_DIR}/lib/cmake" )
else()
if(${WINXXBITS} STREQUAL "Win32")
find_package(LLVM REQUIRED PATHS "$ENV{CLANG_DIR}/build_win32/lib/cmake/llvm")
else()
find_package(LLVM REQUIRED PATHS "$ENV{CLANG_DIR}/build_win64/lib/cmake/llvm")
endif()
find_package(Clang REQUIRED)
if (LLVM_FOUND)
message(STATUS "Found LLVM ${LLVM_VERSION}")
endif()
find_package(CLANG REQUIRED PATHS "${CMAKE_SOURCE_DIR}/cmake" NO_DEFAULT_PATH)
add_definitions(${CLANG_DEFINITIONS})
endif()
@@ -131,62 +101,20 @@ endif()
set(Boost_USE_MULTITHREAD ON)
set(Boost_USE_STATIC_LIBS ON)
set(Boost_USE_STATIC_RUNTIME OFF)
set(BOOST_LIBRARYDIR $ENV{BOOST_DIR})
if(UNIX AND NOT APPLE)
set(BOOST_ROOT $ENV{BOOST_DIR})
elseif(UNIX AND APPLE)
set(BOOST_ROOT $ENV{BOOST_DIR})
set(Boost_NO_SYSTEM_PATHS ON)
else()
set(BOOST_INCLUDEDIR $ENV{BOOST_DIR})
STRING(REGEX REPLACE "\\\\" "/" BOOST_LIBRARYDIR ${BOOST_LIBRARYDIR})
if(${WINXXBITS} STREQUAL "Win32")
set(BOOST_LIBRARYDIR "${BOOST_LIBRARYDIR}/lib32-msvc-14.0")
else()
set(BOOST_LIBRARYDIR "${BOOST_LIBRARYDIR}/lib64-msvc-14.0")
endif()
set(Boost_NO_SYSTEM_PATHS ON)
endif()
find_package(Boost 1.68 COMPONENTS system program_options filesystem date_time REQUIRED)
# Qt ---------------------------------------------------------------------------
# Find the QtWidgets library
if(UNIX)
set(CMAKE_PREFIX_PATH "$ENV{QT_DIR}/")
if(APPLE)
set(Qt5Widgets_DIR "$ENV{QT_DIR}/cmake/Qt5Widgets/")
set(Qt5PrintSupport_DIR "$ENV{QT_DIR}/cmake/Qt5PrintSupport/")
endif()
else()
if(${WINXXBITS} STREQUAL "Win32")
set(CMAKE_PREFIX_PATH "$ENV{QT_WIN32_DIR}/")
else()
set(CMAKE_PREFIX_PATH "$ENV{QT_WIN64_DIR}/")
endif()
set(Qt5Widgets_DIR "${CMAKE_PREFIX_PATH}/lib/cmake/Qt5Widgets")
set(Qt5PrintSupport_DIR "${CMAKE_PREFIX_PATH}/lib/cmake/Qt5PrintSupport")
set(Qt5Network_DIR "${CMAKE_PREFIX_PATH}/lib/cmake/Qt5Network")
set(Qt5Svg_DIR "${CMAKE_PREFIX_PATH}/lib/cmake/Qt5Svg")
endif()
find_package(Qt5Widgets)
find_package(Qt5PrintSupport)
find_package(Qt5Network)
find_package(Qt5Svg)
find_package(Qt5 COMPONENTS Widgets PrintSupport Network Svg REQUIRED)
if (WIN32)
find_package(Qt5WinExtras)
find_package(Qt5 COMPONENTS WinExtras REQUIRED)
endif()
if(Qt5Widgets_FOUND)
MESSAGE(STATUS "Found Qt ${Qt5Widgets_VERSION_STRING}")
message(STATUS "Found Qt ${Qt5Widgets_VERSION_STRING}")
# FIX: Qt was built with -reduce-relocations
if (Qt5_POSITION_INDEPENDENT_CODE)
SET(CMAKE_POSITION_INDEPENDENT_CODE ON)
@@ -325,6 +253,12 @@ target_include_directories(${LIB_PROJECT_NAME} SYSTEM
target_link_libraries(${LIB_PROJECT_NAME} ${LIB_UTILITY_PROJECT_NAME} ${Boost_LIBRARIES})
#configure language package defines
configure_file(
"${CMAKE_SOURCE_DIR}/cmake/language_packages.h.in"
"${CMAKE_BINARY_DIR}/src/lib/language_packages.h"
)
# Lib Cxx ----------------------------------------------------------------------
@@ -352,6 +286,7 @@ if (BUILD_CXX_LANGUAGE_PACKAGE)
)
link_directories(${LLVM_LIBRARY_DIRS} ${CLANG_LIBRARY_DIRS} ${Boost_LIBRARY_DIRS})
llvm_map_components_to_libnames(REQ_LLVM_LIBS
support core libdriver passes
x86asmparser x86codegen
@@ -371,6 +306,25 @@ if (BUILD_CXX_LANGUAGE_PACKAGE)
xcorecodegen
)
set(CLANG_LIBRARIES
clangASTMatchers
clangFrontend
clangSerialization
clangDriver
clangTooling
clangParse
clangSema
clangStaticAnalyzerFrontend
clangStaticAnalyzerCheckers
clangStaticAnalyzerCore
clangAnalysis
clangRewriteFrontend
clangEdit
clangAST
clangLex
clangBasic
)
target_link_libraries(${LIB_CXX_PROJECT_NAME} ${LIB_UTILITY_PROJECT_NAME} ${CLANG_LIBRARIES} ${REQ_LLVM_LIBS})
if (WIN32)
@@ -550,6 +504,9 @@ set(CMAKE_INCLUDE_CURRENT_DIR ON)
add_executable(${APP_INDEXER_NAME} ${INDEXER_FILES})
set_target_properties(${APP_INDEXER_NAME} PROPERTIES OUTPUT_NAME sourcetrail_indexer)
if (WIN32)
# hide the console when running a release build.
set_target_properties(${APP_INDEXER_NAME} PROPERTIES LINK_FLAGS_DEBUG "/SUBSYSTEM:CONSOLE /DEBUG:FASTLINK")
@@ -780,11 +737,7 @@ if (WIN32)
endif ()
# Visual Leak Detector ---------------------------------------------------------
if (WIN32)
include_directories($ENV{VLD_DIR}/include)
endif ()
if (UNIX)
# symlinks for data
-95
View File
@@ -1,95 +0,0 @@
if (UNIX AND APPLE)
if ("${CMAKE_BUILD_TYPE}" STREQUAL "Release")
set(CLANG_BUILD_PATH "$ENV{CLANG_DIR}/build_release")
else()
set(CLANG_BUILD_PATH "$ENV{CLANG_DIR}/build_debug")
endif()
elseif(UNIX)
set(CLANG_BUILD_PATH "$ENV{LLVM_DIR}")
else()
if(${WINXXBITS} STREQUAL "Win32")
set(CLANG_BUILD_PATH "$ENV{CLANG_DIR}/build_win32")
else()
set(CLANG_BUILD_PATH "$ENV{CLANG_DIR}/build_win64")
endif()
endif()
if (UNIX AND NOT APPLE)
find_program(
LLVMCONFIG
llvm-config
PATHS "${CLANG_BUILD_PATH}/bin"
HINTS "${CLANG_BUILD_PATH}/bin"
)
execute_process(
COMMAND ${LLVMCONFIG} --cxxflags
OUTPUT_VARIABLE CLANG_DEFINITIONS
OUTPUT_STRIP_TRAILING_WHITESPACE
)
else()
execute_process(
COMMAND ${CLANG_BUILD_PATH}/bin/llvm-config --cxxflags
OUTPUT_VARIABLE CLANG_DEFINITIONS
)
endif()
# Remove unwanted flags
string(REPLACE "-fno-exceptions" "" CLANG_DEFINITIONS "${CLANG_DEFINITIONS}")
string(REPLACE "-fno-rtti" "" CLANG_DEFINITIONS "${CLANG_DEFINITIONS}")
string(REPLACE "-std=c++11" "" CLANG_DEFINITIONS "${CLANG_DEFINITIONS}")
if(CMAKE_COMPILER_IS_GNUCXX)
string(REPLACE "-Wcovered-switch-default" "" CLANG_DEFINITIONS "${CLANG_DEFINITIONS}")
endif()
if(UNIX AND NOT APPLE)
execute_process(
COMMAND ${LLVMCONFIG} --includedir
OUTPUT_VARIABLE CLANG_INCLUDE_DIRS
OUTPUT_STRIP_TRAILING_WHITESPACE
)
else()
set(CLANG_INCLUDE_DIRS
"$ENV{CLANG_DIR}/llvm/tools/clang/include"
"${CLANG_BUILD_PATH}/tools/clang/include"
)
endif()
set(CLANG_LIBRARY_DIRS "${CLANG_BUILD_PATH}/lib")
set(CLANG_LIBRARIES
#clangApplyReplacements
#clangARCMigrate
#clangCodeGen
#clangDynamicASTMatchers
#clangFormat
#clangFrontendTool
#clangIndex
#clangQuer
#clangTidy
#clangTidyGoogleModule
#clangTidyLLVMModule
#clangTidyMiscModule
clangASTMatchers
clangFrontend
clangSerialization
clangDriver
clangTooling
clangParse
clangSema
clangStaticAnalyzerFrontend
clangStaticAnalyzerCheckers
clangStaticAnalyzerCore
clangAnalysis
clangRewriteFrontend
clangEdit
clangAST
clangLex
clangBasic
)
include(FindPackageHandleStandardArgs)
find_package_handle_standard_args(CLANG DEFAULT_MSG CLANG_LIBRARIES CLANG_INCLUDE_DIRS)
mark_as_advanced(CLANG_INCLUDE_DIRS CLANG_LIBRARIES)
-13
View File
@@ -1,13 +0,0 @@
string(REGEX MATCH "64" MATCH_64 ${CMAKE_GENERATOR})
if("${MATCH_64}" STREQUAL "64")
message(STATUS "Target is 64 bits")
if (WIN32)
set(WINXXBITS Win64)
endif(WIN32)
else()
message(STATUS "Target is 32 bits")
if (WIN32)
set(WINXXBITS Win32)
endif(WIN32)
endif()