Warning, /sdk/codevis/lvtclp/CMakeLists.txt is written in an unsupported language. File is not indexed.

0001 include_directories(SYSTEM ${LLVM_INCLUDE_DIR})
0002 include_directories(SYSTEM ${CMAKE_SOURCE_DIR}/thirdparty)
0003 
0004 find_package(Python COMPONENTS Development REQUIRED)
0005 find_package(Threads REQUIRED)
0006 
0007 ADD_DEFINITIONS(-DQT_NO_KEYWORDS)
0008 
0009 LINK_DIRECTORIES(
0010     ${CLANG_LIBRARY_DIRS}
0011 )
0012 
0013 # Windows does not support yet the LLVM libraries as a shared library.
0014 # Specify all of them by hand. =/
0015 if (USE_LLVM_STATIC_LIBS OR MSVC)
0016     SET(CLANG_EXTRA_LIBRARIES
0017         clangIndex
0018         clangFormat
0019         clangTooling
0020         clangToolingInclusions
0021         clangToolingCore
0022         clangFrontend
0023         clangParse
0024         clangSerialization
0025         clangSema
0026         clangAST
0027         clangLex
0028         clangDriver
0029         clangBasic
0030     )
0031 elseif(APPLE)
0032     # Craft - The tool we use to manage builds on windows and apple
0033     # probably has a bug on the llvm recipe that makes libLLVM.dylib
0034     # not useful. I'v discovered that by linking to libLLVMSupport we at least
0035     # have a successfull build.
0036     SET(CLANG_EXTRA_LIBRARIES
0037         clang-cpp
0038         LLVMSupport
0039     )
0040 
0041 else()
0042     SET(CLANG_EXTRA_LIBRARIES
0043         clang-cpp
0044         LLVM
0045     )
0046 endif()
0047 
0048 AddTargetLibrary(
0049     LIBRARY_NAME
0050         lvtclp
0051     SOURCES
0052         ct_lvtclp_clputil.cpp
0053         ct_lvtclp_compilerutil.cpp
0054         ct_lvtclp_componentutil.cpp
0055         ct_lvtclp_diagnostic_consumer.cpp
0056         ct_lvtclp_filesystemscanner.cpp
0057         ct_lvtclp_fileutil.cpp
0058         ct_lvtclp_headercallbacks.cpp
0059         ct_lvtclp_logicaldepscanner.cpp
0060         ct_lvtclp_logicaldepvisitor.cpp
0061         ct_lvtclp_logicalpostprocessutil.cpp
0062         ct_lvtclp_physicaldepscanner.cpp
0063         ct_lvtclp_staticfnhandler.cpp
0064         ct_lvtclp_cpp_tool.cpp
0065         ct_lvtclp_toolexecutor.cpp
0066         ct_lvtclp_visitlog.cpp
0067     HEADERS
0068         ct_lvtclp_clputil.h
0069         ct_lvtclp_compilerutil.h
0070         ct_lvtclp_componentutil.h
0071         ct_lvtclp_filesystemscanner.h
0072         ct_lvtclp_fileutil.h
0073         ct_lvtclp_headercallbacks.h
0074         ct_lvtclp_logicaldepscanner.h
0075         ct_lvtclp_logicaldepvisitor.h
0076         ct_lvtclp_logicalpostprocessutil.h
0077         ct_lvtclp_physicaldepscanner.h
0078         ct_lvtclp_staticfnhandler.h
0079         ct_lvtclp_toolexecutor.h
0080         ct_lvtclp_visitlog.h
0081     QT_HEADERS
0082         ct_lvtclp_cpp_tool.h
0083     LIBRARIES
0084         Codethink::lvtmdb
0085         Codethink::lvtprj
0086         Codethink::lvtshr
0087         ${CLANG_EXTRA_LIBRARIES}
0088         ${SYSTEM_EXTRA_LIBRARIES}
0089         Qt${QT_MAJOR_VERSION}::Core
0090         Python::Python
0091 )
0092 if (CMAKE_CXX_COMPILER_ID MATCHES "GNU|Clang")
0093     set_target_properties(lvtclp
0094         PROPERTIES COMPILE_FLAGS "${CMAKE_CXX_FLAGS} ${SKIP_CLANG_WARNINGS}"
0095     )
0096 endif()
0097 
0098 # add_lvtclp_exec(
0099 #     NAME exec_name
0100 #     SOURCES foo.cpp bar.cpp)
0101 function(add_lvtclp_exec)
0102     set(options NONE)
0103     set(oneValueArgs NAME)
0104     set(multiValueArgs SOURCES LIBRARIES)
0105     cmake_parse_arguments(clp "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN})
0106 
0107     add_executable(${clp_NAME} ${clp_SOURCES})
0108 
0109     if (CMAKE_CXX_COMPILER_ID MATCHES "GNU|Clang")
0110         set_target_properties(${clp_NAME}
0111             PROPERTIES COMPILE_FLAGS "${CMAKE_CXX_FLAGS} ${SKIP_CLANG_WARNINGS}")
0112     endif()
0113 
0114     target_link_libraries(${clp_NAME}
0115         Codethink::lvtclp
0116         Codethink::lvtshr
0117         ${clp_LIBRARIES}
0118     )
0119 endfunction()
0120 
0121 if (ENABLE_FORTRAN_SCANNER)
0122     set(CTFortranLibsIfAvailable "lvtclp_fortran")
0123 endif()
0124 
0125 add_lvtclp_exec(
0126     NAME codevis_create_codebase_db
0127     SOURCES ct_lvtclp_create_codebase_db.m.cpp
0128     LIBRARIES Qt${QT_MAJOR_VERSION}::Core ${CTFortranLibsIfAvailable})
0129 
0130 add_lvtclp_exec(
0131     NAME codevis_merge_databases
0132     SOURCES ct_lvtclp_merge_databases.m.cpp
0133     LIBRARIES Qt${QT_MAJOR_VERSION}::Core Threads::Threads
0134 )
0135 
0136 add_lvtclp_exec(
0137     NAME codevis_dump_database
0138     SOURCES ct_lvtclp_dumpdatabase.m.cpp)
0139 
0140 if (COMPILE_TESTS)
0141     function(add_lvtclp_test)
0142         set(options NONE)
0143         set(oneValueArgs NAME)
0144         set(multiValueArgs SOURCES LIBRARIES)
0145         cmake_parse_arguments(clp "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN})
0146 
0147         add_lvtclp_exec(NAME ${clp_NAME} SOURCES ${clp_SOURCES} LIBRARIES lvtclp_test ${clp_LIBRARIES} lvttst)
0148         add_test(NAME ${clp_NAME} COMMAND ${clp_NAME})
0149     endfunction()
0150 
0151     add_library(lvtclp_test
0152         ct_lvtclp_testutil.cpp
0153         ct_lvtclp_testutil.h
0154     )
0155     add_library(Codethink::lvtclp_test ALIAS lvtclp_test)
0156     target_link_libraries(
0157         lvtclp_test
0158         Codethink::lvtclp
0159         Catch2::Catch2
0160     )
0161 
0162     add_lvtclp_test(
0163         NAME test_ct_lvtclp_relationships
0164         SOURCES
0165             ct_lvtclp_testrelationships.t.cpp
0166     )
0167 
0168     add_lvtclp_test(
0169         NAME test_ct_lvtclp_compilerutil
0170         SOURCES
0171             ct_lvtclp_compilerutil.t.cpp
0172     )
0173 
0174     add_lvtclp_test(
0175         NAME test_ct_lvtclp_sourcefile
0176         SOURCES
0177             ct_lvtclp_testsourcefile.t.cpp
0178     )
0179 
0180     add_lvtclp_test(
0181         NAME test_ct_lvtclp_namespace
0182         SOURCES
0183             ct_lvtclp_testnamespace.t.cpp
0184     )
0185 
0186     add_lvtclp_test(
0187         NAME test_ct_lvtclp_function
0188         SOURCES
0189             ct_lvtclp_testfunction.t.cpp
0190     )
0191 
0192     add_lvtclp_test(
0193         NAME test_ct_lvtclp_physicalandtemplates
0194         SOURCES
0195             ct_lvtclp_testphysicalandtemplates.t.cpp
0196     )
0197     add_lvtclp_test(
0198         NAME test_ct_lvtclp_udt
0199         SOURCES
0200             ct_lvtclp_testudt.t.cpp
0201     )
0202     add_lvtclp_test(
0203         NAME test_ct_lvtclp_field
0204         SOURCES
0205             ct_lvtclp_testfield.t.cpp
0206     )
0207     add_lvtclp_test(
0208         NAME test_ct_lvtclp_var
0209         SOURCES
0210             ct_lvtclp_testvar.t.cpp
0211     )
0212     add_lvtclp_test(
0213         NAME test_ct_lvtclp_filesystemscanner
0214         SOURCES
0215             ct_lvtclp_filesystemscanner.t.cpp
0216     )
0217 
0218     add_lvtclp_test(
0219         NAME test_ct_lvtclp_fileupdatemgr_physical
0220         SOURCES
0221             ct_lvtclp_fileupdatemgr_physical.t.cpp
0222     )
0223 
0224     add_lvtclp_test(
0225         NAME test_ct_lvtclp_cpp_tool
0226         SOURCES
0227             ct_lvtclp_cpp_tool.t.cpp
0228     )
0229     set_property(TEST test_ct_lvtclp_cpp_tool PROPERTY ENVIRONMENT "TEST_PRJ_PATH=${CMAKE_CURRENT_SOURCE_DIR}/systemtests/")
0230 
0231     add_lvtclp_test(
0232         NAME test_ct_lvtclp_logicalpostprocessutil
0233         SOURCES
0234             ct_lvtclp_logicalpostprocessutil.t.cpp
0235     )
0236 
0237     add_lvtclp_test(
0238         NAME test_ct_lvtclp_clputil
0239         SOURCES
0240             ct_lvtclp_clputil.t.cpp
0241     )
0242 
0243     add_lvtclp_test(
0244         NAME test_ct_lvtclp_physicaldepscanner
0245         SOURCES
0246             ct_lvtclp_physicaldepscanner.t.cpp
0247     )
0248 
0249     add_lvtclp_test(
0250         NAME test_ct_lvtclp_logicaldepscanner
0251         SOURCES
0252             ct_lvtclp_logicaldepscanner.t.cpp
0253     )
0254 endif()
0255     
0256 if (CMAKE_COMPILER_IS_GNUCXX AND ENABLE_CODE_COVERAGE)
0257     setup_target_for_coverage_lcov(
0258         NAME lvtclp_coverage
0259         EXECUTABLE ../lvtclp/run_tests.sh
0260         EXCLUDE "/usr/*"
0261                 "*.m.cpp"
0262                 "*.t.cpp"
0263                 "build*/*"
0264                 "desktopapp/*"
0265                 "lvtclr/*"
0266                 "lvtgrps/*"
0267                 "lvtmdl/*"
0268                 "lvtqtc/*"
0269                 "lvtqtd/*"
0270                 "lvtqtw/*"
0271                 "lvtshr/*"
0272                 "lvtwdg/*"
0273                 "submodules/*"
0274          )
0275 endif()
0276 
0277 SET(INSTALL_DIR ${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_BINDIR})
0278 configure_file(
0279     parse_bde.sh.in
0280     ${CMAKE_BINARY_DIR}/parse_bde.sh
0281 )
0282 
0283 SET(${CMAKE_CURRENT_SOURCE_DIR}/systemtests/)
0284 
0285 configure_file(
0286     autogen-test-variables.h.in
0287     ${CMAKE_CURRENT_BINARY_DIR}/autogen-test-variables.h
0288 )
0289 
0290 install(FILES
0291     ${CMAKE_BINARY_DIR}/parse_bde.sh
0292     PERMISSIONS
0293         OWNER_READ
0294         OWNER_WRITE
0295         OWNER_EXECUTE
0296         GROUP_READ
0297         GROUP_EXECUTE
0298         WORLD_READ
0299         WORLD_EXECUTE
0300     DESTINATION ${CMAKE_INSTALL_BINDIR}
0301 )
0302 
0303 if (NOT ${KDE_FRAMEWORKS_IS_OLD})
0304     install(TARGETS codevis_merge_databases ${KDE_INSTALL_TARGETS_DEFAULT_ARGS})
0305     install(TARGETS codevis_create_codebase_db ${KDE_INSTALL_TARGETS_DEFAULT_ARGS})
0306     install(TARGETS codevis_dump_database ${KDE_INSTALL_TARGETS_DEFAULT_ARGS})
0307 endif()
0308 
0309 if (APPLE)
0310     # See desktopapp/CMakeLists.txt for copying the headers into the bundle
0311     # codevis.app/Contents/MacOS/codevis ->
0312     # codevis.app/Contents/Resources/include
0313     add_compile_definitions(CT_CLANG_HEADERS_RELATIVE_DIR="../Resources/include")
0314 elseif (WIN32)
0315     # Copying the headers into the build folder happens on llvm-build.ba
0316     # but we need to set this directory.
0317     # Winbdows threats directories without the first \ as relatives to the current folder.
0318     add_compile_definitions(CT_CLANG_HEADERS_RELATIVE_DIR="clang")
0319 endif()
0320 
0321 if (ENABLE_FORTRAN_SCANNER)
0322     MESSAGE("Fortran support ENABLED")
0323 
0324     # MLIR is required by flang
0325     find_package(MLIR REQUIRED PATHS "${LLVM_LIBRARY_DIR}/cmake/mlir/" NO_DEFAULT_PATH)
0326     find_package(Flang REQUIRED PATHS "${LLVM_LIBRARY_DIR}/cmake/flang/" NO_DEFAULT_PATH)
0327 
0328     AddTargetLibrary(
0329             LIBRARY_NAME
0330             lvtclp_fortran
0331             SOURCES
0332             fortran/ct_lvtclp_logicalscanner.cpp
0333             fortran/ct_lvtclp_physicalscanner.cpp
0334             fortran/ct_lvtclp_fortran_tool.cpp
0335             fortran/ct_lvtclp_fortran_c_interop.cpp
0336             HEADERS
0337             fortran/ct_lvtclp_logicalscanner.h
0338             fortran/ct_lvtclp_physicalscanner.h
0339             fortran/ct_lvtclp_fortran_tool.h
0340             fortran/ct_lvtclp_fortran_c_interop.h
0341             LIBRARIES
0342             Codethink::lvtmdb
0343             flangFrontend
0344             flangFrontendTool
0345             ${SYSTEM_EXTRA_LIBRARIES}
0346     )
0347     target_include_directories(lvtclp_fortran
0348         PRIVATE
0349         ${LLVM_INCLUDE_DIR}
0350     )
0351     target_compile_definitions(lvtclp_fortran
0352         PRIVATE
0353         FLANG_LITTLE_ENDIAN=1
0354     )
0355 
0356     if (COMPILE_TESTS)
0357         function(add_lvtclp_fortran_test)
0358             set(options NONE)
0359             set(oneValueArgs NAME)
0360             set(multiValueArgs SOURCES LIBRARIES)
0361             cmake_parse_arguments(clp "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN})
0362 
0363             if (ENABLE_FORTRAN_SCANNER)
0364                 set(CTFortranLibsIfAvailable "lvtclp_fortran")
0365             else()
0366                 set(CTFortranLibsIfAvailable "")
0367             endif()
0368             add_lvtclp_exec(NAME ${clp_NAME} SOURCES ${clp_SOURCES} LIBRARIES lvtclp lvtclp_test lvttst ${CTFortranLibsIfAvailable})
0369             add_test(NAME ${clp_NAME} COMMAND ${clp_NAME})
0370         endfunction()
0371 
0372         add_lvtclp_fortran_test(
0373             NAME test_ct_lvtclp_fortranscanner
0374             SOURCES
0375                 fortran/ct_lvtclp_fortranscanner.t.cpp
0376         )
0377     endif()
0378 else()
0379     MESSAGE("Fortran support DISABLED")
0380 endif()