From kde-commits Mon May 30 21:26:05 2016 From: Allen Winter Date: Mon, 30 May 2016 21:26:05 +0000 To: kde-commits Subject: [clazy] /: CMakeLists.txt - cleanup, consistent indenting, add some comments Message-Id: X-MARC-Message: https://marc.info/?l=kde-commits&m=146464357424000 Git commit c2e529bb6221c1970b3dce3f6ddef32bddd97cf2 by Allen Winter. Committed on 30/05/2016 at 21:25. Pushed by winterz into branch 'master'. CMakeLists.txt - cleanup, consistent indenting, add some comments M +166 -158 CMakeLists.txt http://commits.kde.org/clazy/c2e529bb6221c1970b3dce3f6ddef32bddd97cf2 diff --git a/CMakeLists.txt b/CMakeLists.txt index ea36728..041c833 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,77 +1,83 @@ -cmake_minimum_required (VERSION 2.6) -project (ClangLazy) - +# This is the top-level CMakeLists.txt file for the Clazy project. +# +# Pass the following variables to cmake to control the build: +# +# -DCLAZY_ON_WINDOWS_HACK=3D[true|false] +# Use Windows plugin support hack to support plugins on Windows. +# Default=3Dfalse +# +project(ClangLazy) + +cmake_minimum_required(VERSION 2.6) = set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${CMAKE_SOURCE_DIR}/cmake) find_package(Clang 3.6 MODULE REQUIRED) = -set( CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin ) -set( CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib ) -set( CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib ) +set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin) +set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib) +set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib) = -add_definitions (-D__STDC_LIMIT_MACROS -D__STDC_CONSTANT_MACROS) -add_definitions (-D_GNU_SOURCE -DHAVE_CLANG_CONFIG_H) +add_definitions(-D__STDC_LIMIT_MACROS -D__STDC_CONSTANT_MACROS) +add_definitions(-D_GNU_SOURCE -DHAVE_CLANG_CONFIG_H) = -OPTION(CLAZY_ON_WINDOWS_HACK "Enable this option if you're using a patched= clang to support plugins on Windows" OFF) +option(CLAZY_ON_WINDOWS_HACK "Enable this option if you're using a patched= clang to support plugins on Windows" OFF) if(CLAZY_ON_WINDOWS_HACK) message("Using Windows plugin support hack") - ADD_DEFINITIONS(-DCLAZY_ON_WINDOWS_HACK) -endif(CLAZY_ON_WINDOWS_HACK) - + add_definitions(-DCLAZY_ON_WINDOWS_HACK) +endif() = if(MSVC) - # disable trigger-happy warnings from Clang/LLVM headers - set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /wd4267 /wd4244 /wd4291 /wd48= 00") + # disable trigger-happy warnings from Clang/LLVM headers + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /wd4267 /wd4244 /wd4291 /wd4800") elseif(CMAKE_COMPILER_IS_GNUCXX OR CMAKE_CXX_COMPILER_ID MATCHES "Clang") - set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=3Dc++11 -fno-common -Wov= erloaded-virtual -Wcast-qual -fno-strict-aliasing -pedantic -Wno-long-long = -Wall -W -Wno-unused-parameter -Wwrite-strings -fno-exceptions -fno-rtti") + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=3Dc++11 -fno-common -Woverl= oaded-virtual -Wcast-qual -fno-strict-aliasing -pedantic -Wno-long-long -Wa= ll -W -Wno-unused-parameter -Wwrite-strings -fno-exceptions -fno-rtti") endif() -set (CMAKE_MODULE_LINKER_FLAGS "${CMAKE_MODULE_LINKER_FLAGS} -Wl,-flat_nam= espace -Wl,-undefined -Wl,suppress") + +set(CMAKE_MODULE_LINKER_FLAGS "${CMAKE_MODULE_LINKER_FLAGS} -Wl,-flat_name= space -Wl,-undefined -Wl,suppress") if(NOT WIN32) - set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fPIC") + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fPIC") endif() = # Look for std::regex support message("Looking for std::regex support...") try_run(RUN_RESULT COMPILE_RESULT ${CMAKE_BINARY_DIR} ${CMAKE_SOURCE_DIR}/= cmake_has_regex_test.cpp) = -if (RUN_RESULT EQUAL 0) - set(HAS_STD_REGEX TRUE) +if(RUN_RESULT EQUAL 0) + set(HAS_STD_REGEX TRUE) else() - set(HAS_STD_REGEX FALSE) + set(HAS_STD_REGEX FALSE) endif() = # Don't link against LLVMSupport, causes: CommandLine Error: Option 'view-= background' registered more than once! -STRING(REPLACE " " ";" LLVM_LIBS_LIST ${LLVM_LIBS}) # Transform into a list -LIST(REMOVE_ITEM LLVM_LIBS_LIST "-lLLVMSupport") # Remove element +string(REPLACE " " ";" LLVM_LIBS_LIST ${LLVM_LIBS}) # Transform into a list +list(REMOVE_ITEM LLVM_LIBS_LIST "-lLLVMSupport") # Remove element = macro(add_clang_plugin name) - set (srcs ${ARGN}) - - include_directories(${CLANG_INCLUDE_DIRS} ${CMAKE_SOURCE_DIR}) - link_directories("${LLVM_INSTALL_PREFIX}/lib" ${LLVM_LIBRARY_DIRS}) + set(srcs ${ARGN}) = - add_library( ${name} SHARED ${srcs} ) + include_directories(${CLANG_INCLUDE_DIRS} ${CMAKE_SOURCE_DIR}) + link_directories("${LLVM_INSTALL_PREFIX}/lib" ${LLVM_LIBRARY_DIRS}) = - if (SYMBOL_FILE) - set_target_properties( ${name} PROPERTIES LINK_FlAGS - "-exported_symbols_list ${SYMBOL_FILE}") - endif() + add_library(${name} SHARED ${srcs}) = - foreach (clang_lib ${CLANG_LIBS}) - target_link_libraries( ${name} ${clang_lib} ) - endforeach() + if(SYMBOL_FILE) + set_target_properties(${name} PROPERTIES LINK_FlAGS "-exported_symbols= _list ${SYMBOL_FILE}") + endif() = - foreach (llvm_lib ${LLVM_LIBS_LIST}) - target_link_libraries( ${name} ${llvm_lib} ) - endforeach() + foreach(clang_lib ${CLANG_LIBS}) + target_link_libraries(${name} ${clang_lib}) + endforeach() = - foreach (user_lib ${USER_LIBS}) - target_link_libraries( ${name} ${user_lib} ) - endforeach() + foreach(llvm_lib ${LLVM_LIBS_LIST}) + target_link_libraries(${name} ${llvm_lib}) + endforeach() = - target_link_libraries( ${name} clazylib ) + foreach(user_lib ${USER_LIBS}) + target_link_libraries(${name} ${user_lib}) + endforeach() = -endmacro(add_clang_plugin) + target_link_libraries(${name} clazylib) +endmacro() = # clazylib version set(clazylib_VERSION_MAJOR 0) @@ -82,130 +88,132 @@ set(clazylib_VERSION ${clazylib_VERSION_MAJOR}.${claz= ylib_VERSION_MINOR}) = include_directories(${CMAKE_BINARY_DIR}) set(CLAZY_LIB_SRC - checkbase.cpp - checkmanager.cpp - SuppressionManager.cpp - ContextUtils.cpp - FixItUtils.cpp - HierarchyUtils.cpp - LoopUtils.cpp - MacroUtils.cpp - QtUtils.cpp - StringUtils.cpp - TemplateUtils.cpp - TypeUtils.cpp - Utils.cpp) - -add_library(clazylib SHARED - ${CLAZY_LIB_SRC} - ) + checkbase.cpp + checkmanager.cpp + SuppressionManager.cpp + ContextUtils.cpp + FixItUtils.cpp + HierarchyUtils.cpp + LoopUtils.cpp + MacroUtils.cpp + QtUtils.cpp + StringUtils.cpp + TemplateUtils.cpp + TypeUtils.cpp + Utils.cpp +) + +add_library(clazylib SHARED ${CLAZY_LIB_SRC}) = set_target_properties(clazylib PROPERTIES VERSION ${clazylib_VERSION} SOVE= RSION ${clazylib_VERSION_MAJOR}) include("GNUInstallDirs") = install(TARGETS clazylib EXPORT LibClaryExport - RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} - LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} - ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} - ) + RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} + LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} + ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} +) = set(SYMBOL_FILE Lazy.exports) = set(SRC_FILES - #level0 - checks/level0/container-anti-pattern.cpp - checks/level0/lambda-in-connect.cpp - checks/level0/qdatetimeutc.cpp - checks/level0/qfileinfo-exists.cpp - checks/level0/qgetenv.cpp - checks/level0/qmap-with-pointer-key.cpp - checks/level0/qstringarg.cpp - checks/level0/qstring-insensitive-allocation.cpp - checks/level0/qstringref.cpp - checks/level0/qvariant-template-instantiation.cpp - checks/level0/temporaryiterator.cpp - checks/level0/unused-non-trivial-variable.cpp - checks/level0/writingtotemporary.cpp - checks/level0/wrong-qglobalstatic.cpp - - #level1 - checks/level1/autounexpectedqstringbuilder.cpp - checks/level1/detachingtemporary.cpp - checks/level1/foreach.cpp - checks/level1/inefficient-qlist-soft.cpp - checks/level1/missing-qobject-macro.cpp - checks/level1/nonpodstatic.cpp - checks/level1/qdeleteall.cpp - checks/level1/qstring-left.cpp - checks/level1/range-loop.cpp - - #level2 - checks/level2/container-inside-loop.cpp - checks/level2/function-args-by-ref.cpp - checks/level2/function-args-by-value.cpp - checks/level2/globalconstcharpointer.cpp - checks/level2/implicitcasts.cpp - checks/level2/missing-type-info.cpp - #checks/level2/oldstyleconnect.cpp) requires std::regex, see below - checks/level2/qstring-allocations.cpp - checks/level2/reservecandidates.cpp - checks/level2/ruleofthree.cpp - checks/level2/ruleoftwosoft.cpp - checks/level2/virtualcallsfromctor.cpp - - #level3 - checks/level3/assertwithsideeffects.cpp - checks/level3/copyable-polymorphic.cpp - checks/level3/detachingmember.cpp - checks/level3/dynamic_cast.cpp - - #hiddenlevel - checks/hiddenlevel/inefficientqlist.cpp - checks/hiddenlevel/isempty-vs-count.cpp - checks/hiddenlevel/qt4-qstring-from-array.cpp - - #support classes - checks/detachingbase.cpp - checks/inefficientqlistbase.cpp - checks/requiredresults.cpp - checks/ruleofbase.cpp - - #top-level worker - Clazy.cpp + #level0 + checks/level0/container-anti-pattern.cpp + checks/level0/lambda-in-connect.cpp + checks/level0/qdatetimeutc.cpp + checks/level0/qfileinfo-exists.cpp + checks/level0/qgetenv.cpp + checks/level0/qmap-with-pointer-key.cpp + checks/level0/qstringarg.cpp + checks/level0/qstring-insensitive-allocation.cpp + checks/level0/qstringref.cpp + checks/level0/qvariant-template-instantiation.cpp + checks/level0/temporaryiterator.cpp + checks/level0/unused-non-trivial-variable.cpp + checks/level0/writingtotemporary.cpp + checks/level0/wrong-qglobalstatic.cpp + + #level1 + checks/level1/autounexpectedqstringbuilder.cpp + checks/level1/detachingtemporary.cpp + checks/level1/foreach.cpp + checks/level1/inefficient-qlist-soft.cpp + checks/level1/missing-qobject-macro.cpp + checks/level1/nonpodstatic.cpp + checks/level1/qdeleteall.cpp + checks/level1/qstring-left.cpp + checks/level1/range-loop.cpp + + #level2 + checks/level2/container-inside-loop.cpp + checks/level2/function-args-by-ref.cpp + checks/level2/function-args-by-value.cpp + checks/level2/globalconstcharpointer.cpp + checks/level2/implicitcasts.cpp + checks/level2/missing-type-info.cpp + #checks/level2/oldstyleconnect.cpp) requires std::regex, see below + checks/level2/qstring-allocations.cpp + checks/level2/reservecandidates.cpp + checks/level2/ruleofthree.cpp + checks/level2/ruleoftwosoft.cpp + checks/level2/virtualcallsfromctor.cpp + + #level3 + checks/level3/assertwithsideeffects.cpp + checks/level3/copyable-polymorphic.cpp + checks/level3/detachingmember.cpp + checks/level3/dynamic_cast.cpp + + #hiddenlevel + checks/hiddenlevel/inefficientqlist.cpp + checks/hiddenlevel/isempty-vs-count.cpp + checks/hiddenlevel/qt4-qstring-from-array.cpp + + #support classes + checks/detachingbase.cpp + checks/inefficientqlistbase.cpp + checks/requiredresults.cpp + checks/ruleofbase.cpp + + #top-level worker + Clazy.cpp ) = -if (HAS_STD_REGEX) - #level2 - set(SRC_FILES ${SRC_FILES} checks/level2/oldstyleconnect.cpp) +if(HAS_STD_REGEX) + #level2 + set(SRC_FILES ${SRC_FILES} checks/level2/oldstyleconnect.cpp) else() - add_definitions(-DNO_STD_REGEX) - message("old-style-connect check is disabled due to missing std::regex= support") - message("Suppressions are disabled due to missing std::regex support") + add_definitions(-DNO_STD_REGEX) + message("old-style-connect check is disabled due to missing std::regex s= upport") + message("Suppressions are disabled due to missing std::regex support") endif() = add_clang_plugin(ClangLazy ${SRC_FILES}) = set_target_properties(ClangLazy PROPERTIES - LINKER_LANGUAGE CXX - PREFIX "") + LINKER_LANGUAGE CXX + PREFIX "" +) = -install(TARGETS ClangLazy RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} - LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} - ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}) +install(TARGETS ClangLazy + RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} + LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} + ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} +) = set(SHARE_INSTALL_DIR ${CMAKE_INSTALL_DATAROOTDIR} CACHE STRING "Share dir= ectory name") = if(NOT WIN32) - configure_file(${CMAKE_SOURCE_DIR}/clazy.cmake ${CMAKE_BINARY_DIR}/cla= zy @ONLY) - install(FILES ${CMAKE_BINARY_DIR}/clazy DESTINATION bin PERMISSIONS OW= NER_WRITE OWNER_EXECUTE OWNER_READ GROUP_EXECUTE GROUP_READ WORLD_READ WORL= D_EXECUTE) + configure_file(${CMAKE_SOURCE_DIR}/clazy.cmake ${CMAKE_BINARY_DIR}/clazy= @ONLY) + install(FILES ${CMAKE_BINARY_DIR}/clazy DESTINATION bin PERMISSIONS OWNE= R_WRITE OWNER_EXECUTE OWNER_READ GROUP_EXECUTE GROUP_READ WORLD_READ WORLD_= EXECUTE) else() - if(MSVC) - set(CLANG_COMPILER "clang-cl") - else() - set(CLANG_COMPILER "clang++") - endif() - configure_file(${CMAKE_SOURCE_DIR}/clazy.bat.cmake ${CMAKE_BINARY_DIR}= /clazy.bat) - install(FILES ${CMAKE_BINARY_DIR}/clazy.bat DESTINATION bin PERMISSION= S OWNER_WRITE OWNER_EXECUTE OWNER_READ GROUP_EXECUTE GROUP_READ WORLD_READ = WORLD_EXECUTE) + if(MSVC) + set(CLANG_COMPILER "clang-cl") + else() + set(CLANG_COMPILER "clang++") + endif() + configure_file(${CMAKE_SOURCE_DIR}/clazy.bat.cmake ${CMAKE_BINARY_DIR}/c= lazy.bat) + install(FILES ${CMAKE_BINARY_DIR}/clazy.bat DESTINATION bin PERMISSIONS = OWNER_WRITE OWNER_EXECUTE OWNER_READ GROUP_EXECUTE GROUP_READ WORLD_READ WO= RLD_EXECUTE) endif() = # Install the explanation README's @@ -226,21 +234,21 @@ install(FILES README.txt LICENSE.GPL.txt DESTINATION = ${DOC_INSTALL_DIR}) = # Install public headers set(CLAZY_LIB_INCLUDES - checkbase.h - checkmanager.h - SuppressionManager.h - ContextUtils.h - FixItUtils.h - HierarchyUtils.h - LoopUtils.h - MacroUtils.h - QtUtils.h - StringUtils.h - TemplateUtils.h - TypeUtils.h - Utils.h - clazy_stl.h - clazylib_export.h + checkbase.h + checkmanager.h + SuppressionManager.h + ContextUtils.h + FixItUtils.h + HierarchyUtils.h + LoopUtils.h + MacroUtils.h + QtUtils.h + StringUtils.h + TemplateUtils.h + TypeUtils.h + Utils.h + clazy_stl.h + clazylib_export.h ) = install(FILES ${CLAZY_LIB_INCLUDES} DESTINATION include/clazy)