diff --git a/src/libs/clangsupport/codecompletionchunk.h b/src/libs/clangsupport/codecompletionchunk.h index 315bf602491..b1a0ba32e71 100644 --- a/src/libs/clangsupport/codecompletionchunk.h +++ b/src/libs/clangsupport/codecompletionchunk.h @@ -112,6 +112,6 @@ public: CLANGSUPPORT_EXPORT QDebug operator<<(QDebug debug, const CodeCompletionChunk &chunk); -std::ostream &operator<<(std::ostream &os, const CodeCompletionChunk::Kind &kind); +CLANGSUPPORT_EXPORT std::ostream &operator<<(std::ostream &os, const CodeCompletionChunk::Kind &kind); } // namespace ClangBackEnd diff --git a/src/libs/clangsupport/processexception.h b/src/libs/clangsupport/processexception.h index 7dbcad17bb5..3ad10ba4fc4 100644 --- a/src/libs/clangsupport/processexception.h +++ b/src/libs/clangsupport/processexception.h @@ -29,9 +29,11 @@ #include +#include "clangsupport_global.h" + namespace ClangBackEnd { -class ProcessException : public std::exception +class CLANGSUPPORT_EXPORT ProcessException : public std::exception { public: ProcessException() = default; diff --git a/src/libs/clangsupport/readmessageblock.h b/src/libs/clangsupport/readmessageblock.h index 391d89b751d..b83040d4720 100644 --- a/src/libs/clangsupport/readmessageblock.h +++ b/src/libs/clangsupport/readmessageblock.h @@ -29,6 +29,8 @@ #include +#include "clangsupport_global.h" + QT_BEGIN_NAMESPACE class QDataStream; class QIODevice; @@ -38,7 +40,7 @@ namespace ClangBackEnd { class MessageEnvelop; -class ReadMessageBlock +class CLANGSUPPORT_EXPORT ReadMessageBlock { public: ReadMessageBlock(QIODevice *ioDevice = nullptr); diff --git a/src/libs/clangsupport/tooltipinfo.h b/src/libs/clangsupport/tooltipinfo.h index f50c93a53e2..31bf313ab14 100644 --- a/src/libs/clangsupport/tooltipinfo.h +++ b/src/libs/clangsupport/tooltipinfo.h @@ -30,6 +30,8 @@ #include +#include "clangsupport_global.h" + namespace ClangBackEnd { class ToolTipInfo @@ -106,6 +108,6 @@ public: QDebug operator<<(QDebug debug, const ToolTipInfo &message); std::ostream &operator<<(std::ostream &os, const ToolTipInfo &message); -const char *qdocCategoryToString(ToolTipInfo::QdocCategory category); +CLANGSUPPORT_EXPORT const char *qdocCategoryToString(ToolTipInfo::QdocCategory category); } // namespace ClangBackEnd diff --git a/src/libs/clangsupport/writemessageblock.h b/src/libs/clangsupport/writemessageblock.h index 8a126fed36e..e8baa978d05 100644 --- a/src/libs/clangsupport/writemessageblock.h +++ b/src/libs/clangsupport/writemessageblock.h @@ -28,6 +28,8 @@ #include #include +#include "clangsupport_global.h" + QT_BEGIN_NAMESPACE class QVariant; class QDataStream; @@ -39,7 +41,7 @@ namespace ClangBackEnd { class MessageEnvelop; -class WriteMessageBlock +class CLANGSUPPORT_EXPORT WriteMessageBlock { public: WriteMessageBlock(QIODevice *ioDevice = nullptr); diff --git a/tests/unit/CMakeLists.txt b/tests/unit/CMakeLists.txt index eb072a2d922..9fee1f4a145 100644 --- a/tests/unit/CMakeLists.txt +++ b/tests/unit/CMakeLists.txt @@ -1,2 +1,40 @@ +cmake_minimum_required(VERSION 3.10) + +if (NOT QT_CREATOR_API_DEFINED) + list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/../../cmake") + + project(unit) + + enable_testing() + + # Needed for pch + set(QtCreator_SOURCE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/../../") + option(BUILD_WITH_PCH "Build with precompiled headers" ON) + + set(CMAKE_AUTOMOC ON) + set(CMAKE_AUTORCC ON) + set(CMAKE_AUTOUIC ON) + + set(CMAKE_CXX_STANDARD 17) + set(CMAKE_CXX_STANDARD_REQUIRED ON) + set(CMAKE_CXX_EXTENSIONS OFF) + + set(CMAKE_INCLUDE_CURRENT_DIR ON) + + set(BUILD_EXECUTABLES echo) + + set(IMPLICIT_DEPENDS Qt5::Test) + + include(QtCreatorIDEBranding) + include(QtCreatorAPI) + + set(WITH_TESTS ON) + set(GOOGLETEST_DIR ${CMAKE_CURRENT_LIST_DIR}/unittest/3rdparty/googletest) + + find_package(Clang MODULE) + find_package(Qt5 COMPONENTS Core Widgets Network Qml Concurrent Test Xml MODULE) + find_package(Threads) +endif() + add_subdirectory(echoserver) add_subdirectory(unittest) diff --git a/tests/unit/unittest/CMakeLists.txt b/tests/unit/unittest/CMakeLists.txt index 4bc5c1fc04f..94319955138 100644 --- a/tests/unit/unittest/CMakeLists.txt +++ b/tests/unit/unittest/CMakeLists.txt @@ -14,7 +14,9 @@ if (NOT Googletest_FOUND) endif() if (MSVC) - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /bigobj") + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /bigobj") +elseif (MINGW) + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wa,-mbig-obj") endif() add_qtc_test(unittest GTEST @@ -31,7 +33,7 @@ add_qtc_test(unittest GTEST QT_RESTRICTED_CAST_FROM_ASCII UNIT_TESTS DONT_CHECK_MESSAGE_COUNTER - QTC_RESOURCE_DIR="${PROJECT_SOURCE_DIR}/share/qtcreator" + QTC_RESOURCE_DIR="${CMAKE_CURRENT_LIST_DIR}/../../../share/qtcreator" TESTDATA_DIR="${CMAKE_CURRENT_BINARY_DIR}/data" ECHOSERVER="$/echo" CPPTOOLS_JSON="${CMAKE_CURRENT_BINARY_DIR}/CppTools.json" @@ -139,23 +141,22 @@ function(extend_qtc_test_with_target_sources target) ) endfunction() -foreach(clang_tools_library clangbackend_lib) - extend_qtc_test_with_target_sources(${clang_tools_library} - DEFINES - CLANGSUPPORT_BUILD_LIB - INCLUDES - $ - ) -endforeach() +if (NOT TARGET clangbackend_lib) + add_subdirectory(../../../src/tools/clangbackend/source ${CMAKE_CURRENT_BINARY_DIR}/clangbackend) +endif() +extend_qtc_test(unittest DEPENDS clangbackend_lib) -extend_qtc_test_with_target_sources(Sqlite) - -extend_qtc_test(unittest DEFINES _HAVE_SQLITE_CONFIG_H) +if (NOT TARGET Sqlite) + add_subdirectory(../../../src/libs/sqlite ${CMAKE_CURRENT_BINARY_DIR}/sqlite) +endif() +extend_qtc_test_with_target_sources(Sqlite + DEFINES _HAVE_SQLITE_CONFIG_H +) if (APPLE) -extend_qtc_test(unittest DEFINES _BSD_SOURCE) + extend_qtc_test(unittest DEFINES _BSD_SOURCE) elseif (UNIX) -extend_qtc_test(unittest DEFINES _POSIX_C_SOURCE=200809L _GNU_SOURCE _DEFAULT_SOURCE) + extend_qtc_test(unittest DEFINES _POSIX_C_SOURCE=200809L _GNU_SOURCE _DEFAULT_SOURCE) endif() # Do not work on the source directory data @@ -166,7 +167,7 @@ add_custom_command(TARGET unittest POST_BUILD ) # create fake CppTools.json for the mime type definitions -file(READ "${PROJECT_SOURCE_DIR}/src/plugins/cpptools/CppTools.json.in" plugin_json_in) +file(READ "../../../src/plugins/cpptools/CppTools.json.in" plugin_json_in) string(REPLACE "\\\"" "\"" plugin_json_in ${plugin_json_in}) string(REPLACE "\\'" "'" plugin_json_in ${plugin_json_in}) string(REPLACE "$$QTCREATOR_VERSION" "${IDE_VERSION}" plugin_json_in ${plugin_json_in}) @@ -253,6 +254,7 @@ finalize_qtc_gtest(unittest ".c$") # Path needs to be before CppTools target_include_directories(unittest PRIVATE + BEFORE ../../../src/tools/clangbackend/source BEFORE ../../../src/plugins ) @@ -329,17 +331,21 @@ extend_qtc_test(unittest "${QmlDesignerDir}/designercore/include/model.h" ) -extend_qtc_test_with_target_sources(Utils DEFINES QTCREATOR_UTILS_STATIC_LIB "QTC_REL_TOOLS_PATH=\"${RELATIVE_LIBEXEC_PATH}\"") -extend_qtc_test(unittest - CONDITION APPLE - DEPENDS ${FWFoundation} ${FWAppKit} -) -extend_qtc_test_with_target_sources(CPlusPlus DEFINES CPLUSPLUS_BUILD_STATIC_LIB) -extend_qtc_test_with_target_sources(3rd_cplusplus DEFINES CPLUSPLUS_BUILD_LIB) -extend_qtc_test_with_target_sources(ClangSupport DEFINES CLANGSUPPORT_BUILD_LIB) +if (NOT TARGET Utils) + add_subdirectory(../../../src/libs/utils ${CMAKE_CURRENT_BINARY_DIR}/utils) +endif() +if (NOT TARGET CPlusPlus) + add_subdirectory(../../../src/libs/3rdparty/cplusplus ${CMAKE_CURRENT_BINARY_DIR}/3rd_cplusplus) + add_subdirectory(../../../src/libs/cplusplus ${CMAKE_CURRENT_BINARY_DIR}/cplusplus) +endif() +if (NOT TARGET ClangSupport) + add_subdirectory(../../../src/libs/clangsupport ${CMAKE_CURRENT_BINARY_DIR}/clangsupport) +endif() + +extend_qtc_test(unittest DEPENDS Utils CPlusPlus ClangSupport) extend_qtc_test(unittest - SOURCES_PREFIX_FROM_TARGET ClangCodeModel + SOURCES_PREFIX ../../../src/plugins/clangcodemodel SOURCES clangactivationsequencecontextprocessor.cpp clangactivationsequencecontextprocessor.h clangactivationsequenceprocessor.cpp clangactivationsequenceprocessor.h @@ -365,7 +371,7 @@ extend_qtc_test(unittest ) extend_qtc_test(unittest - SOURCES_PREFIX_FROM_TARGET Core + SOURCES_PREFIX ../../../src/plugins/coreplugin DEFINES CORE_STATIC_LIBRARY SOURCES coreicons.cpp coreicons.h @@ -374,7 +380,7 @@ extend_qtc_test(unittest ) extend_qtc_test(unittest - SOURCES_PREFIX_FROM_TARGET CppTools + SOURCES_PREFIX ../../../src/plugins/cpptools DEFINES CPPTOOLS_STATIC_LIBRARY SOURCES cppprojectfile.cpp cppprojectfile.h @@ -389,15 +395,16 @@ extend_qtc_test(unittest ) extend_qtc_test(unittest - SOURCES_PREFIX_FROM_TARGET ProjectExplorer + SOURCES_PREFIX ../../../src/plugins/projectexplorer DEFINES PROJECTEXPLORER_STATIC_LIBRARY SOURCES projectmacro.cpp projectmacro.h ) extend_qtc_test(unittest - SOURCES_PREFIX_FROM_TARGET ClangFormat - DEFINES CLANGPCHMANAGER_STATIC_LIB + SOURCES_PREFIX ../../../src/plugins/clangformat + CONDITION TARGET libclang + DEPENDS ${CLANG_TOOLING_LIBS} SOURCES clangformatconstants.h clangformatbaseindenter.cpp clangformatbaseindenter.h