From 1c300e0240faa642992b09d17dfe0772d93dc925 Mon Sep 17 00:00:00 2001 From: mlangkabel Date: Sun, 17 Nov 2019 15:32:21 +0100 Subject: [PATCH] build: removed usage of environment variables from CMakeLists --- CMakeLists.txt | 151 ++++++++++++++------------------------- cmake/CLANGConfig.cmake | 95 ------------------------ cmake/setWinXxBits.cmake | 13 ---- 3 files changed, 52 insertions(+), 207 deletions(-) delete mode 100644 cmake/CLANGConfig.cmake delete mode 100644 cmake/setWinXxBits.cmake diff --git a/CMakeLists.txt b/CMakeLists.txt index c198b1b0..fe8b1f53 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -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 diff --git a/cmake/CLANGConfig.cmake b/cmake/CLANGConfig.cmake deleted file mode 100644 index 08467f0a..00000000 --- a/cmake/CLANGConfig.cmake +++ /dev/null @@ -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) diff --git a/cmake/setWinXxBits.cmake b/cmake/setWinXxBits.cmake deleted file mode 100644 index f116f9a4..00000000 --- a/cmake/setWinXxBits.cmake +++ /dev/null @@ -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() \ No newline at end of file