diff options
author | Miguel Costa <miguel.costa@qt.io> | 2021-08-05 10:43:11 +0200 |
---|---|---|
committer | Miguel Costa <miguel.costa@qt.io> | 2021-08-09 13:01:15 +0000 |
commit | f461d068d96ba6f78b6fda77b14c46476cfe73ff (patch) | |
tree | 4879629ce8cc61fb0fe4501e67b9afa01ef6a005 /src | |
parent | 6555ac55d49942f079d6da96eb9674dc59295d48 (diff) |
Add concurrency test
Added a sample solution that makes it easier to reproduce concurrency
issues in parallel builds of Qt/MSBuild projects. A .bat script builds
the sample solution in a loop and records any errors. This script can be
left to run unattended in order to find concurrency issues that occur
infrequently.
Change-Id: I006f8436289caf7e8d784fe73c2d1cb5c2ec73e0
Reviewed-by: Oliver Wolff <oliver.wolff@qt.io>
Diffstat (limited to 'src')
28 files changed, 885 insertions, 0 deletions
diff --git a/src/tests/concurrency/Solution1/MyPropertySheet.props b/src/tests/concurrency/Solution1/MyPropertySheet.props new file mode 100644 index 00000000..af2b343c --- /dev/null +++ b/src/tests/concurrency/Solution1/MyPropertySheet.props @@ -0,0 +1,10 @@ +<?xml version="1.0" encoding="utf-8"?> +<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> + <ImportGroup Label="PropertySheets" /> + <PropertyGroup Label="UserMacros"> + </PropertyGroup> + <PropertyGroup /> + <ItemDefinitionGroup /> + <ItemGroup> + </ItemGroup> +</Project>
\ No newline at end of file diff --git a/src/tests/concurrency/Solution1/QtClassLibrary1/QtClass.cpp b/src/tests/concurrency/Solution1/QtClassLibrary1/QtClass.cpp new file mode 100644 index 00000000..c5a77aac --- /dev/null +++ b/src/tests/concurrency/Solution1/QtClassLibrary1/QtClass.cpp @@ -0,0 +1,10 @@ +#include "QtClass.h" + +QtClass::QtClass(QObject *parent) + : QObject(parent) +{ +} + +QtClass::~QtClass() +{ +} diff --git a/src/tests/concurrency/Solution1/QtClassLibrary1/QtClass.h b/src/tests/concurrency/Solution1/QtClassLibrary1/QtClass.h new file mode 100644 index 00000000..7e9b180d --- /dev/null +++ b/src/tests/concurrency/Solution1/QtClassLibrary1/QtClass.h @@ -0,0 +1,13 @@ +#pragma once +#include "qtclasslibrary1_global.h" + +#include <QObject> + +class QTCLASSLIBRARY1_EXPORT QtClass : public QObject +{ + Q_OBJECT + +public: + QtClass(QObject *parent); + ~QtClass(); +}; diff --git a/src/tests/concurrency/Solution1/QtClassLibrary1/QtClassLibrary1.cpp b/src/tests/concurrency/Solution1/QtClassLibrary1/QtClassLibrary1.cpp new file mode 100644 index 00000000..10792c43 --- /dev/null +++ b/src/tests/concurrency/Solution1/QtClassLibrary1/QtClassLibrary1.cpp @@ -0,0 +1,5 @@ +#include "QtClassLibrary1.h" + +QtClassLibrary1::QtClassLibrary1() +{ +} diff --git a/src/tests/concurrency/Solution1/QtClassLibrary1/QtClassLibrary1.h b/src/tests/concurrency/Solution1/QtClassLibrary1/QtClassLibrary1.h new file mode 100644 index 00000000..68e88384 --- /dev/null +++ b/src/tests/concurrency/Solution1/QtClassLibrary1/QtClassLibrary1.h @@ -0,0 +1,9 @@ +#pragma once + +#include "qtclasslibrary1_global.h" + +class QTCLASSLIBRARY1_EXPORT QtClassLibrary1 +{ +public: + QtClassLibrary1(); +}; diff --git a/src/tests/concurrency/Solution1/QtClassLibrary1/QtClassLibrary1.vcxproj b/src/tests/concurrency/Solution1/QtClassLibrary1/QtClassLibrary1.vcxproj new file mode 100644 index 00000000..5be6d898 --- /dev/null +++ b/src/tests/concurrency/Solution1/QtClassLibrary1/QtClassLibrary1.vcxproj @@ -0,0 +1,119 @@ +<?xml version="1.0" encoding="utf-8"?> +<Project DefaultTargets="Build" ToolsVersion="16.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> + <ItemGroup Label="ProjectConfigurations"> + <ProjectConfiguration Include="Debug|x64"> + <Configuration>Debug</Configuration> + <Platform>x64</Platform> + </ProjectConfiguration> + <ProjectConfiguration Include="Release|x64"> + <Configuration>Release</Configuration> + <Platform>x64</Platform> + </ProjectConfiguration> + </ItemGroup> + <PropertyGroup Label="Globals"> + <ProjectGuid>{CE78EC51-C4A0-465B-A161-21C257BD057B}</ProjectGuid> + <Keyword>QtVS_v304</Keyword> + <WindowsTargetPlatformVersion Condition="'$(Configuration)|$(Platform)' == 'Debug|x64'">10.0</WindowsTargetPlatformVersion> + <WindowsTargetPlatformVersion Condition="'$(Configuration)|$(Platform)' == 'Release|x64'">10.0</WindowsTargetPlatformVersion> + <QtMsBuild Condition="Exists('$(MSBuildProjectDirectory)\..\..\..\..\qtmsbuild')" + >$([System.IO.Path]::GetFullPath( + $(MSBuildProjectDirectory)\..\..\..\..\qtmsbuild\QtMsBuild))</QtMsBuild> + <QtMsBuild Condition="'$(QtMsBuild)'=='' OR !Exists('$(QtMsBuild)\qt.targets')">$(MSBuildProjectDirectory)\QtMsBuild</QtMsBuild> + </PropertyGroup> + <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" /> + <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|x64'" Label="Configuration"> + <ConfigurationType>DynamicLibrary</ConfigurationType> + <PlatformToolset>v142</PlatformToolset> + </PropertyGroup> + <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Release|x64'" Label="Configuration"> + <ConfigurationType>DynamicLibrary</ConfigurationType> + <PlatformToolset>v142</PlatformToolset> + </PropertyGroup> + <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" /> + <ImportGroup Condition="Exists('$(QtMsBuild)\qt_defaults.props')"> + <Import Project="$(QtMsBuild)\qt_defaults.props" /> + </ImportGroup> + <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|x64'" Label="QtSettings"> + <QtInstall>$(DefaultQtVersion)</QtInstall> + <QtModules>core</QtModules> + <QtBuildConfig>debug</QtBuildConfig> + </PropertyGroup> + <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Release|x64'" Label="QtSettings"> + <QtInstall>$(DefaultQtVersion)</QtInstall> + <QtModules>core</QtModules> + <QtBuildConfig>release</QtBuildConfig> + </PropertyGroup> + <Target Name="QtMsBuildNotFound" BeforeTargets="CustomBuild;ClCompile" Condition="!Exists('$(QtMsBuild)\qt.targets') or !Exists('$(QtMsBuild)\qt.props')"> + <Message Importance="High" Text="QtMsBuild: could not locate qt.targets, qt.props; project may not build correctly." /> + </Target> + <ImportGroup Label="ExtensionSettings" /> + <ImportGroup Label="Shared" /> + <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)' == 'Debug|x64'"> + <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> + <Import Project="..\MyPropertySheet.props" /> + <Import Project="$(QtMsBuild)\Qt.props" /> + </ImportGroup> + <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)' == 'Release|x64'"> + <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> + <Import Project="..\MyPropertySheet.props" /> + <Import Project="$(QtMsBuild)\Qt.props" /> + </ImportGroup> + <PropertyGroup Label="UserMacros" /> + <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|x64'"> + <AllProjectIncludesArePublic>true</AllProjectIncludesArePublic> + </PropertyGroup> + <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Release|x64'"> + <AllProjectIncludesArePublic>true</AllProjectIncludesArePublic> + </PropertyGroup> + <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'"> + <ProjectReference> + <UseLibraryDependencyInputs>true</UseLibraryDependencyInputs> + </ProjectReference> + </ItemDefinitionGroup> + <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'"> + <ProjectReference> + <UseLibraryDependencyInputs>true</UseLibraryDependencyInputs> + </ProjectReference> + </ItemDefinitionGroup> + <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|x64'" Label="Configuration"> + <ClCompile> + <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType> + <MultiProcessorCompilation>true</MultiProcessorCompilation> + <DebugInformationFormat>ProgramDatabase</DebugInformationFormat> + <Optimization>Disabled</Optimization> + <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary> + <PreprocessorDefinitions>QTCLASSLIBRARY1_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions> + </ClCompile> + <Link> + <SubSystem>Windows</SubSystem> + <GenerateDebugInformation>true</GenerateDebugInformation> + </Link> + </ItemDefinitionGroup> + <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)' == 'Release|x64'" Label="Configuration"> + <ClCompile> + <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType> + <MultiProcessorCompilation>true</MultiProcessorCompilation> + <DebugInformationFormat>None</DebugInformationFormat> + <Optimization>MaxSpeed</Optimization> + <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary> + <PreprocessorDefinitions>QTCLASSLIBRARY1_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions> + </ClCompile> + <Link> + <SubSystem>Windows</SubSystem> + <GenerateDebugInformation>false</GenerateDebugInformation> + </Link> + </ItemDefinitionGroup> + <ItemGroup> + <QtMoc Include="QtClass.h" /> + <ClInclude Include="qtclasslibrary1_global.h" /> + <ClInclude Include="QtClassLibrary1.h" /> + <ClCompile Include="QtClass.cpp" /> + <ClCompile Include="QtClassLibrary1.cpp" /> + </ItemGroup> + <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" /> + <ImportGroup Condition="Exists('$(QtMsBuild)\qt.targets')"> + <Import Project="$(QtMsBuild)\qt.targets" /> + </ImportGroup> + <ImportGroup Label="ExtensionTargets"> + </ImportGroup> +</Project>
\ No newline at end of file diff --git a/src/tests/concurrency/Solution1/QtClassLibrary1/QtClassLibrary1.vcxproj.filters b/src/tests/concurrency/Solution1/QtClassLibrary1/QtClassLibrary1.vcxproj.filters new file mode 100644 index 00000000..5c88d0d9 --- /dev/null +++ b/src/tests/concurrency/Solution1/QtClassLibrary1/QtClassLibrary1.vcxproj.filters @@ -0,0 +1,42 @@ +<?xml version="1.0" encoding="utf-8"?> +<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> + <ItemGroup> + <Filter Include="Source Files"> + <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier> + <Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions> + </Filter> + <Filter Include="Header Files"> + <UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier> + <Extensions>h;hh;hpp;hxx;hm;inl;inc;xsd</Extensions> + </Filter> + <Filter Include="Resource Files"> + <UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier> + <Extensions>qrc;rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms</Extensions> + </Filter> + <Filter Include="Translation Files"> + <UniqueIdentifier>{639EADAA-A684-42e4-A9AD-28FC9BCB8F7C}</UniqueIdentifier> + <Extensions>ts</Extensions> + </Filter> + </ItemGroup> + <ItemGroup> + <ClInclude Include="qtclasslibrary1_global.h"> + <Filter>Header Files</Filter> + </ClInclude> + <ClCompile Include="QtClassLibrary1.cpp"> + <Filter>Source Files</Filter> + </ClCompile> + <ClInclude Include="QtClassLibrary1.h"> + <Filter>Header Files</Filter> + </ClInclude> + </ItemGroup> + <ItemGroup> + <QtMoc Include="QtClass.h"> + <Filter>Header Files</Filter> + </QtMoc> + </ItemGroup> + <ItemGroup> + <ClCompile Include="QtClass.cpp"> + <Filter>Source Files</Filter> + </ClCompile> + </ItemGroup> +</Project>
\ No newline at end of file diff --git a/src/tests/concurrency/Solution1/QtClassLibrary1/qtclasslibrary1_global.h b/src/tests/concurrency/Solution1/QtClassLibrary1/qtclasslibrary1_global.h new file mode 100644 index 00000000..565e06ba --- /dev/null +++ b/src/tests/concurrency/Solution1/QtClassLibrary1/qtclasslibrary1_global.h @@ -0,0 +1,13 @@ +#pragma once + +#include <QtCore/qglobal.h> + +#ifndef BUILD_STATIC +# if defined(QTCLASSLIBRARY1_LIB) +# define QTCLASSLIBRARY1_EXPORT Q_DECL_EXPORT +# else +# define QTCLASSLIBRARY1_EXPORT Q_DECL_IMPORT +# endif +#else +# define QTCLASSLIBRARY1_EXPORT +#endif diff --git a/src/tests/concurrency/Solution1/QtWidgetsApplication1/QtWidgetsApplication1.cpp b/src/tests/concurrency/Solution1/QtWidgetsApplication1/QtWidgetsApplication1.cpp new file mode 100644 index 00000000..3ae59435 --- /dev/null +++ b/src/tests/concurrency/Solution1/QtWidgetsApplication1/QtWidgetsApplication1.cpp @@ -0,0 +1,11 @@ +#include "QtWidgetsApplication1.h" +#include "QtClass.h" +#include "Header.h" + +QtWidgetsApplication1::QtWidgetsApplication1(QWidget *parent) + : QMainWindow(parent) +{ + ui.setupUi(this); + qtObject = new QtClass(this); + foobar(); +} diff --git a/src/tests/concurrency/Solution1/QtWidgetsApplication1/QtWidgetsApplication1.h b/src/tests/concurrency/Solution1/QtWidgetsApplication1/QtWidgetsApplication1.h new file mode 100644 index 00000000..1a76b9a1 --- /dev/null +++ b/src/tests/concurrency/Solution1/QtWidgetsApplication1/QtWidgetsApplication1.h @@ -0,0 +1,18 @@ +#pragma once + +#include <QtWidgets/QMainWindow> +#include "ui_QtWidgetsApplication1.h" + +class QtClass; + +class QtWidgetsApplication1 : public QMainWindow +{ + Q_OBJECT + +public: + QtWidgetsApplication1(QWidget *parent = Q_NULLPTR); + +private: + Ui::QtWidgetsApplication1Class ui; + QtClass *qtObject; +}; diff --git a/src/tests/concurrency/Solution1/QtWidgetsApplication1/QtWidgetsApplication1.qrc b/src/tests/concurrency/Solution1/QtWidgetsApplication1/QtWidgetsApplication1.qrc new file mode 100644 index 00000000..d56c1ee5 --- /dev/null +++ b/src/tests/concurrency/Solution1/QtWidgetsApplication1/QtWidgetsApplication1.qrc @@ -0,0 +1,4 @@ +<RCC> + <qresource prefix="QtWidgetsApplication1"> + </qresource> +</RCC> diff --git a/src/tests/concurrency/Solution1/QtWidgetsApplication1/QtWidgetsApplication1.ui b/src/tests/concurrency/Solution1/QtWidgetsApplication1/QtWidgetsApplication1.ui new file mode 100644 index 00000000..4d40f03c --- /dev/null +++ b/src/tests/concurrency/Solution1/QtWidgetsApplication1/QtWidgetsApplication1.ui @@ -0,0 +1,28 @@ +<UI version="4.0" > + <class>QtWidgetsApplication1Class</class> + <widget class="QMainWindow" name="QtWidgetsApplication1Class" > + <property name="objectName" > + <string notr="true">QtWidgetsApplication1Class</string> + </property> + <property name="geometry" > + <rect> + <x>0</x> + <y>0</y> + <width>600</width> + <height>400</height> + </rect> + </property> + <property name="windowTitle" > + <string>QtWidgetsApplication1</string> + </property> <widget class="QMenuBar" name="menuBar" /> + <widget class="QToolBar" name="mainToolBar" /> + <widget class="QWidget" name="centralWidget" /> + <widget class="QStatusBar" name="statusBar" /> + </widget> + <layoutDefault spacing="6" margin="11" /> + <pixmapfunction></pixmapfunction> + <resources> + <include location="QtWidgetsApplication1.qrc"/> + </resources> + <connections/> +</UI> diff --git a/src/tests/concurrency/Solution1/QtWidgetsApplication1/QtWidgetsApplication1.vcxproj b/src/tests/concurrency/Solution1/QtWidgetsApplication1/QtWidgetsApplication1.vcxproj new file mode 100644 index 00000000..5cd0dccc --- /dev/null +++ b/src/tests/concurrency/Solution1/QtWidgetsApplication1/QtWidgetsApplication1.vcxproj @@ -0,0 +1,115 @@ +<?xml version="1.0" encoding="utf-8"?> +<Project DefaultTargets="Build" ToolsVersion="16.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> + <ItemGroup Label="ProjectConfigurations"> + <ProjectConfiguration Include="Debug|x64"> + <Configuration>Debug</Configuration> + <Platform>x64</Platform> + </ProjectConfiguration> + <ProjectConfiguration Include="Release|x64"> + <Configuration>Release</Configuration> + <Platform>x64</Platform> + </ProjectConfiguration> + </ItemGroup> + <PropertyGroup Label="Globals"> + <ProjectGuid>{806AF248-25F9-4300-9FB3-100E5F79C026}</ProjectGuid> + <Keyword>QtVS_v304</Keyword> + <WindowsTargetPlatformVersion Condition="'$(Configuration)|$(Platform)' == 'Debug|x64'">10.0</WindowsTargetPlatformVersion> + <WindowsTargetPlatformVersion Condition="'$(Configuration)|$(Platform)' == 'Release|x64'">10.0</WindowsTargetPlatformVersion> + <QtMsBuild Condition="Exists('$(MSBuildProjectDirectory)\..\..\..\..\qtmsbuild')" + >$([System.IO.Path]::GetFullPath( + $(MSBuildProjectDirectory)\..\..\..\..\qtmsbuild\QtMsBuild))</QtMsBuild> + <QtMsBuild Condition="'$(QtMsBuild)'=='' OR !Exists('$(QtMsBuild)\qt.targets')">$(MSBuildProjectDirectory)\QtMsBuild</QtMsBuild> + </PropertyGroup> + <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" /> + <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|x64'" Label="Configuration"> + <ConfigurationType>Application</ConfigurationType> + <PlatformToolset>v142</PlatformToolset> + </PropertyGroup> + <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Release|x64'" Label="Configuration"> + <ConfigurationType>Application</ConfigurationType> + <PlatformToolset>v142</PlatformToolset> + </PropertyGroup> + <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" /> + <ImportGroup Condition="Exists('$(QtMsBuild)\qt_defaults.props')"> + <Import Project="$(QtMsBuild)\qt_defaults.props" /> + </ImportGroup> + <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|x64'" Label="QtSettings"> + <QtInstall>$(DefaultQtVersion)</QtInstall> + <QtModules>core;gui;widgets</QtModules> + <QtBuildConfig>debug</QtBuildConfig> + </PropertyGroup> + <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Release|x64'" Label="QtSettings"> + <QtInstall>$(DefaultQtVersion)</QtInstall> + <QtModules>core;gui;widgets</QtModules> + <QtBuildConfig>release</QtBuildConfig> + </PropertyGroup> + <Target Name="QtMsBuildNotFound" BeforeTargets="CustomBuild;ClCompile" Condition="!Exists('$(QtMsBuild)\qt.targets') or !Exists('$(QtMsBuild)\qt.props')"> + <Message Importance="High" Text="QtMsBuild: could not locate qt.targets, qt.props; project may not build correctly." /> + </Target> + <ImportGroup Label="ExtensionSettings" /> + <ImportGroup Label="Shared" /> + <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)' == 'Debug|x64'"> + <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> + <Import Project="..\MyPropertySheet.props" /> + <Import Project="$(QtMsBuild)\Qt.props" /> + </ImportGroup> + <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)' == 'Release|x64'"> + <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> + <Import Project="..\MyPropertySheet.props" /> + <Import Project="$(QtMsBuild)\Qt.props" /> + </ImportGroup> + <PropertyGroup Label="UserMacros" /> + <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|x64'"> + <CopyLocalProjectReference>true</CopyLocalProjectReference> + </PropertyGroup> + <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Release|x64'"> + <CopyLocalProjectReference>true</CopyLocalProjectReference> + </PropertyGroup> + <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|x64'" Label="Configuration"> + <ClCompile> + <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType> + <MultiProcessorCompilation>true</MultiProcessorCompilation> + <DebugInformationFormat>ProgramDatabase</DebugInformationFormat> + <Optimization>Disabled</Optimization> + <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary> + </ClCompile> + <Link> + <SubSystem>Windows</SubSystem> + <GenerateDebugInformation>true</GenerateDebugInformation> + </Link> + </ItemDefinitionGroup> + <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)' == 'Release|x64'" Label="Configuration"> + <ClCompile> + <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType> + <MultiProcessorCompilation>true</MultiProcessorCompilation> + <DebugInformationFormat>None</DebugInformationFormat> + <Optimization>MaxSpeed</Optimization> + <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary> + </ClCompile> + <Link> + <SubSystem>Windows</SubSystem> + <GenerateDebugInformation>false</GenerateDebugInformation> + </Link> + </ItemDefinitionGroup> + <ItemGroup> + <QtRcc Include="QtWidgetsApplication1.qrc" /> + <QtUic Include="QtWidgetsApplication1.ui" /> + <QtMoc Include="QtWidgetsApplication1.h" /> + <ClCompile Include="QtWidgetsApplication1.cpp" /> + <ClCompile Include="main.cpp" /> + </ItemGroup> + <ItemGroup> + <ProjectReference Include="..\QtClassLibrary1\QtClassLibrary1.vcxproj"> + <Project>{ce78ec51-c4a0-465b-a161-21c257bd057b}</Project> + </ProjectReference> + <ProjectReference Include="..\StaticLib1\StaticLib1.vcxproj"> + <Project>{8463051a-b32c-43f0-9a77-9f223598aac9}</Project> + </ProjectReference> + </ItemGroup> + <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" /> + <ImportGroup Condition="Exists('$(QtMsBuild)\qt.targets')"> + <Import Project="$(QtMsBuild)\qt.targets" /> + </ImportGroup> + <ImportGroup Label="ExtensionTargets"> + </ImportGroup> +</Project>
\ No newline at end of file diff --git a/src/tests/concurrency/Solution1/QtWidgetsApplication1/QtWidgetsApplication1.vcxproj.filters b/src/tests/concurrency/Solution1/QtWidgetsApplication1/QtWidgetsApplication1.vcxproj.filters new file mode 100644 index 00000000..4cb63b79 --- /dev/null +++ b/src/tests/concurrency/Solution1/QtWidgetsApplication1/QtWidgetsApplication1.vcxproj.filters @@ -0,0 +1,44 @@ +<?xml version="1.0" encoding="utf-8"?> +<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> + <ItemGroup> + <Filter Include="Source Files"> + <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier> + <Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions> + </Filter> + <Filter Include="Header Files"> + <UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier> + <Extensions>h;hh;hpp;hxx;hm;inl;inc;xsd</Extensions> + </Filter> + <Filter Include="Resource Files"> + <UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier> + <Extensions>qrc;rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms</Extensions> + </Filter> + <Filter Include="Form Files"> + <UniqueIdentifier>{99349809-55BA-4b9d-BF79-8FDBB0286EB3}</UniqueIdentifier> + <Extensions>ui</Extensions> + </Filter> + <Filter Include="Translation Files"> + <UniqueIdentifier>{639EADAA-A684-42e4-A9AD-28FC9BCB8F7C}</UniqueIdentifier> + <Extensions>ts</Extensions> + </Filter> + </ItemGroup> + <ItemGroup> + <QtRcc Include="QtWidgetsApplication1.qrc"> + <Filter>Resource Files</Filter> + </QtRcc> + <QtUic Include="QtWidgetsApplication1.ui"> + <Filter>Form Files</Filter> + </QtUic> + <QtMoc Include="QtWidgetsApplication1.h"> + <Filter>Header Files</Filter> + </QtMoc> + <ClCompile Include="QtWidgetsApplication1.cpp"> + <Filter>Source Files</Filter> + </ClCompile> + </ItemGroup> + <ItemGroup> + <ClCompile Include="main.cpp"> + <Filter>Source Files</Filter> + </ClCompile> + </ItemGroup> +</Project>
\ No newline at end of file diff --git a/src/tests/concurrency/Solution1/QtWidgetsApplication1/main.cpp b/src/tests/concurrency/Solution1/QtWidgetsApplication1/main.cpp new file mode 100644 index 00000000..8237fdac --- /dev/null +++ b/src/tests/concurrency/Solution1/QtWidgetsApplication1/main.cpp @@ -0,0 +1,10 @@ +#include "QtWidgetsApplication1.h" +#include <QtWidgets/QApplication> + +int main(int argc, char *argv[]) +{ + QApplication a(argc, argv); + QtWidgetsApplication1 w; + w.show(); + return a.exec(); +} diff --git a/src/tests/concurrency/Solution1/QtWidgetsApplication2/QtWidgetsApplication2.cpp b/src/tests/concurrency/Solution1/QtWidgetsApplication2/QtWidgetsApplication2.cpp new file mode 100644 index 00000000..d448405a --- /dev/null +++ b/src/tests/concurrency/Solution1/QtWidgetsApplication2/QtWidgetsApplication2.cpp @@ -0,0 +1,9 @@ +#include "QtWidgetsApplication2.h" +#include "QtClass.h" + +QtWidgetsApplication2::QtWidgetsApplication2(QWidget *parent) + : QMainWindow(parent) +{ + ui.setupUi(this); + qtObject = new QtClass(this); +} diff --git a/src/tests/concurrency/Solution1/QtWidgetsApplication2/QtWidgetsApplication2.h b/src/tests/concurrency/Solution1/QtWidgetsApplication2/QtWidgetsApplication2.h new file mode 100644 index 00000000..8c9701bb --- /dev/null +++ b/src/tests/concurrency/Solution1/QtWidgetsApplication2/QtWidgetsApplication2.h @@ -0,0 +1,18 @@ +#pragma once + +#include <QtWidgets/QMainWindow> +#include "ui_QtWidgetsApplication2.h" + +class QtClass; + +class QtWidgetsApplication2 : public QMainWindow +{ + Q_OBJECT + +public: + QtWidgetsApplication2(QWidget *parent = Q_NULLPTR); + +private: + Ui::QtWidgetsApplication2Class ui; + QtClass* qtObject; +}; diff --git a/src/tests/concurrency/Solution1/QtWidgetsApplication2/QtWidgetsApplication2.qrc b/src/tests/concurrency/Solution1/QtWidgetsApplication2/QtWidgetsApplication2.qrc new file mode 100644 index 00000000..2018e6d2 --- /dev/null +++ b/src/tests/concurrency/Solution1/QtWidgetsApplication2/QtWidgetsApplication2.qrc @@ -0,0 +1,4 @@ +<RCC> + <qresource prefix="QtWidgetsApplication2"> + </qresource> +</RCC> diff --git a/src/tests/concurrency/Solution1/QtWidgetsApplication2/QtWidgetsApplication2.ui b/src/tests/concurrency/Solution1/QtWidgetsApplication2/QtWidgetsApplication2.ui new file mode 100644 index 00000000..f9a85f5b --- /dev/null +++ b/src/tests/concurrency/Solution1/QtWidgetsApplication2/QtWidgetsApplication2.ui @@ -0,0 +1,28 @@ +<UI version="4.0" > + <class>QtWidgetsApplication2Class</class> + <widget class="QMainWindow" name="QtWidgetsApplication2Class" > + <property name="objectName" > + <string notr="true">QtWidgetsApplication2Class</string> + </property> + <property name="geometry" > + <rect> + <x>0</x> + <y>0</y> + <width>600</width> + <height>400</height> + </rect> + </property> + <property name="windowTitle" > + <string>QtWidgetsApplication2</string> + </property> <widget class="QMenuBar" name="menuBar" /> + <widget class="QToolBar" name="mainToolBar" /> + <widget class="QWidget" name="centralWidget" /> + <widget class="QStatusBar" name="statusBar" /> + </widget> + <layoutDefault spacing="6" margin="11" /> + <pixmapfunction></pixmapfunction> + <resources> + <include location="QtWidgetsApplication2.qrc"/> + </resources> + <connections/> +</UI> diff --git a/src/tests/concurrency/Solution1/QtWidgetsApplication2/QtWidgetsApplication2.vcxproj b/src/tests/concurrency/Solution1/QtWidgetsApplication2/QtWidgetsApplication2.vcxproj new file mode 100644 index 00000000..0413ccda --- /dev/null +++ b/src/tests/concurrency/Solution1/QtWidgetsApplication2/QtWidgetsApplication2.vcxproj @@ -0,0 +1,115 @@ +<?xml version="1.0" encoding="utf-8"?> +<Project DefaultTargets="Build" ToolsVersion="16.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> + <ItemGroup Label="ProjectConfigurations"> + <ProjectConfiguration Include="Debug|x64"> + <Configuration>Debug</Configuration> + <Platform>x64</Platform> + </ProjectConfiguration> + <ProjectConfiguration Include="Release|x64"> + <Configuration>Release</Configuration> + <Platform>x64</Platform> + </ProjectConfiguration> + </ItemGroup> + <PropertyGroup Label="Globals"> + <ProjectGuid>{B74596C2-46DC-4615-A6EF-0CB66643BB2B}</ProjectGuid> + <Keyword>QtVS_v304</Keyword> + <WindowsTargetPlatformVersion Condition="'$(Configuration)|$(Platform)' == 'Debug|x64'">10.0</WindowsTargetPlatformVersion> + <WindowsTargetPlatformVersion Condition="'$(Configuration)|$(Platform)' == 'Release|x64'">10.0</WindowsTargetPlatformVersion> + <QtMsBuild Condition="Exists('$(MSBuildProjectDirectory)\..\..\..\..\qtmsbuild')" + >$([System.IO.Path]::GetFullPath( + $(MSBuildProjectDirectory)\..\..\..\..\qtmsbuild\QtMsBuild))</QtMsBuild> + <QtMsBuild Condition="'$(QtMsBuild)'=='' OR !Exists('$(QtMsBuild)\qt.targets')">$(MSBuildProjectDirectory)\QtMsBuild</QtMsBuild> + </PropertyGroup> + <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" /> + <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|x64'" Label="Configuration"> + <ConfigurationType>Application</ConfigurationType> + <PlatformToolset>v142</PlatformToolset> + </PropertyGroup> + <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Release|x64'" Label="Configuration"> + <ConfigurationType>Application</ConfigurationType> + <PlatformToolset>v142</PlatformToolset> + </PropertyGroup> + <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" /> + <ImportGroup Condition="Exists('$(QtMsBuild)\qt_defaults.props')"> + <Import Project="$(QtMsBuild)\qt_defaults.props" /> + </ImportGroup> + <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|x64'" Label="QtSettings"> + <QtInstall>$(DefaultQtVersion)</QtInstall> + <QtModules>core;gui;widgets</QtModules> + <QtBuildConfig>debug</QtBuildConfig> + </PropertyGroup> + <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Release|x64'" Label="QtSettings"> + <QtInstall>$(DefaultQtVersion)</QtInstall> + <QtModules>core;gui;widgets</QtModules> + <QtBuildConfig>release</QtBuildConfig> + </PropertyGroup> + <Target Name="QtMsBuildNotFound" BeforeTargets="CustomBuild;ClCompile" Condition="!Exists('$(QtMsBuild)\qt.targets') or !Exists('$(QtMsBuild)\qt.props')"> + <Message Importance="High" Text="QtMsBuild: could not locate qt.targets, qt.props; project may not build correctly." /> + </Target> + <ImportGroup Label="ExtensionSettings" /> + <ImportGroup Label="Shared" /> + <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)' == 'Debug|x64'"> + <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> + <Import Project="..\MyPropertySheet.props" /> + <Import Project="$(QtMsBuild)\Qt.props" /> + </ImportGroup> + <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)' == 'Release|x64'"> + <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> + <Import Project="..\MyPropertySheet.props" /> + <Import Project="$(QtMsBuild)\Qt.props" /> + </ImportGroup> + <PropertyGroup Label="UserMacros" /> + <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|x64'"> + <CopyLocalProjectReference>true</CopyLocalProjectReference> + </PropertyGroup> + <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Release|x64'"> + <CopyLocalProjectReference>true</CopyLocalProjectReference> + </PropertyGroup> + <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|x64'" Label="Configuration"> + <ClCompile> + <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType> + <MultiProcessorCompilation>true</MultiProcessorCompilation> + <DebugInformationFormat>ProgramDatabase</DebugInformationFormat> + <Optimization>Disabled</Optimization> + <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary> + </ClCompile> + <Link> + <SubSystem>Windows</SubSystem> + <GenerateDebugInformation>true</GenerateDebugInformation> + </Link> + </ItemDefinitionGroup> + <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)' == 'Release|x64'" Label="Configuration"> + <ClCompile> + <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType> + <MultiProcessorCompilation>true</MultiProcessorCompilation> + <DebugInformationFormat>None</DebugInformationFormat> + <Optimization>MaxSpeed</Optimization> + <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary> + </ClCompile> + <Link> + <SubSystem>Windows</SubSystem> + <GenerateDebugInformation>false</GenerateDebugInformation> + </Link> + </ItemDefinitionGroup> + <ItemGroup> + <QtRcc Include="QtWidgetsApplication2.qrc" /> + <QtUic Include="QtWidgetsApplication2.ui" /> + <QtMoc Include="QtWidgetsApplication2.h" /> + <ClCompile Include="QtWidgetsApplication2.cpp" /> + <ClCompile Include="main.cpp" /> + </ItemGroup> + <ItemGroup> + <ProjectReference Include="..\QtClassLibrary1\QtClassLibrary1.vcxproj"> + <Project>{ce78ec51-c4a0-465b-a161-21c257bd057b}</Project> + </ProjectReference> + <ProjectReference Include="..\StaticLib1\StaticLib1.vcxproj"> + <Project>{8463051a-b32c-43f0-9a77-9f223598aac9}</Project> + </ProjectReference> + </ItemGroup> + <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" /> + <ImportGroup Condition="Exists('$(QtMsBuild)\qt.targets')"> + <Import Project="$(QtMsBuild)\qt.targets" /> + </ImportGroup> + <ImportGroup Label="ExtensionTargets"> + </ImportGroup> +</Project>
\ No newline at end of file diff --git a/src/tests/concurrency/Solution1/QtWidgetsApplication2/QtWidgetsApplication2.vcxproj.filters b/src/tests/concurrency/Solution1/QtWidgetsApplication2/QtWidgetsApplication2.vcxproj.filters new file mode 100644 index 00000000..f8580ae6 --- /dev/null +++ b/src/tests/concurrency/Solution1/QtWidgetsApplication2/QtWidgetsApplication2.vcxproj.filters @@ -0,0 +1,44 @@ +<?xml version="1.0" encoding="utf-8"?> +<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> + <ItemGroup> + <Filter Include="Source Files"> + <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier> + <Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions> + </Filter> + <Filter Include="Header Files"> + <UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier> + <Extensions>h;hh;hpp;hxx;hm;inl;inc;xsd</Extensions> + </Filter> + <Filter Include="Resource Files"> + <UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier> + <Extensions>qrc;rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms</Extensions> + </Filter> + <Filter Include="Form Files"> + <UniqueIdentifier>{99349809-55BA-4b9d-BF79-8FDBB0286EB3}</UniqueIdentifier> + <Extensions>ui</Extensions> + </Filter> + <Filter Include="Translation Files"> + <UniqueIdentifier>{639EADAA-A684-42e4-A9AD-28FC9BCB8F7C}</UniqueIdentifier> + <Extensions>ts</Extensions> + </Filter> + </ItemGroup> + <ItemGroup> + <QtRcc Include="QtWidgetsApplication2.qrc"> + <Filter>Resource Files</Filter> + </QtRcc> + <QtUic Include="QtWidgetsApplication2.ui"> + <Filter>Form Files</Filter> + </QtUic> + <QtMoc Include="QtWidgetsApplication2.h"> + <Filter>Header Files</Filter> + </QtMoc> + <ClCompile Include="QtWidgetsApplication2.cpp"> + <Filter>Source Files</Filter> + </ClCompile> + </ItemGroup> + <ItemGroup> + <ClCompile Include="main.cpp"> + <Filter>Source Files</Filter> + </ClCompile> + </ItemGroup> +</Project>
\ No newline at end of file diff --git a/src/tests/concurrency/Solution1/QtWidgetsApplication2/main.cpp b/src/tests/concurrency/Solution1/QtWidgetsApplication2/main.cpp new file mode 100644 index 00000000..8f58a279 --- /dev/null +++ b/src/tests/concurrency/Solution1/QtWidgetsApplication2/main.cpp @@ -0,0 +1,10 @@ +#include "QtWidgetsApplication2.h" +#include <QtWidgets/QApplication> + +int main(int argc, char *argv[]) +{ + QApplication a(argc, argv); + QtWidgetsApplication2 w; + w.show(); + return a.exec(); +} diff --git a/src/tests/concurrency/Solution1/Solution1.sln b/src/tests/concurrency/Solution1/Solution1.sln new file mode 100644 index 00000000..4069cb33 --- /dev/null +++ b/src/tests/concurrency/Solution1/Solution1.sln @@ -0,0 +1,43 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio Version 16 +VisualStudioVersion = 16.0.30804.86 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "QtClassLibrary1", "QtClassLibrary1\QtClassLibrary1.vcxproj", "{CE78EC51-C4A0-465B-A161-21C257BD057B}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "QtWidgetsApplication1", "QtWidgetsApplication1\QtWidgetsApplication1.vcxproj", "{806AF248-25F9-4300-9FB3-100E5F79C026}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "QtWidgetsApplication2", "QtWidgetsApplication2\QtWidgetsApplication2.vcxproj", "{B74596C2-46DC-4615-A6EF-0CB66643BB2B}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "StaticLib1", "StaticLib1\StaticLib1.vcxproj", "{8463051A-B32C-43F0-9A77-9F223598AAC9}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|x64 = Debug|x64 + Release|x64 = Release|x64 + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {CE78EC51-C4A0-465B-A161-21C257BD057B}.Debug|x64.ActiveCfg = Debug|x64 + {CE78EC51-C4A0-465B-A161-21C257BD057B}.Debug|x64.Build.0 = Debug|x64 + {CE78EC51-C4A0-465B-A161-21C257BD057B}.Release|x64.ActiveCfg = Release|x64 + {CE78EC51-C4A0-465B-A161-21C257BD057B}.Release|x64.Build.0 = Release|x64 + {806AF248-25F9-4300-9FB3-100E5F79C026}.Debug|x64.ActiveCfg = Debug|x64 + {806AF248-25F9-4300-9FB3-100E5F79C026}.Debug|x64.Build.0 = Debug|x64 + {806AF248-25F9-4300-9FB3-100E5F79C026}.Release|x64.ActiveCfg = Release|x64 + {806AF248-25F9-4300-9FB3-100E5F79C026}.Release|x64.Build.0 = Release|x64 + {B74596C2-46DC-4615-A6EF-0CB66643BB2B}.Debug|x64.ActiveCfg = Debug|x64 + {B74596C2-46DC-4615-A6EF-0CB66643BB2B}.Debug|x64.Build.0 = Debug|x64 + {B74596C2-46DC-4615-A6EF-0CB66643BB2B}.Release|x64.ActiveCfg = Release|x64 + {B74596C2-46DC-4615-A6EF-0CB66643BB2B}.Release|x64.Build.0 = Release|x64 + {8463051A-B32C-43F0-9A77-9F223598AAC9}.Debug|x64.ActiveCfg = Debug|x64 + {8463051A-B32C-43F0-9A77-9F223598AAC9}.Debug|x64.Build.0 = Debug|x64 + {8463051A-B32C-43F0-9A77-9F223598AAC9}.Release|x64.ActiveCfg = Release|x64 + {8463051A-B32C-43F0-9A77-9F223598AAC9}.Release|x64.Build.0 = Release|x64 + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + SolutionGuid = {76259E50-26CE-4EC6-99CE-B1245F270DD3} + EndGlobalSection +EndGlobal diff --git a/src/tests/concurrency/Solution1/StaticLib1/Header.h b/src/tests/concurrency/Solution1/StaticLib1/Header.h new file mode 100644 index 00000000..22475e74 --- /dev/null +++ b/src/tests/concurrency/Solution1/StaticLib1/Header.h @@ -0,0 +1,4 @@ +#pragma once + +void foobar(); + diff --git a/src/tests/concurrency/Solution1/StaticLib1/StaticLib1.cpp b/src/tests/concurrency/Solution1/StaticLib1/StaticLib1.cpp new file mode 100644 index 00000000..6b623059 --- /dev/null +++ b/src/tests/concurrency/Solution1/StaticLib1/StaticLib1.cpp @@ -0,0 +1,3 @@ +void foobar() +{ +} diff --git a/src/tests/concurrency/Solution1/StaticLib1/StaticLib1.vcxproj b/src/tests/concurrency/Solution1/StaticLib1/StaticLib1.vcxproj new file mode 100644 index 00000000..77f3c437 --- /dev/null +++ b/src/tests/concurrency/Solution1/StaticLib1/StaticLib1.vcxproj @@ -0,0 +1,93 @@ +<?xml version="1.0" encoding="utf-8"?> +<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> + <ItemGroup Label="ProjectConfigurations"> + <ProjectConfiguration Include="Debug|x64"> + <Configuration>Debug</Configuration> + <Platform>x64</Platform> + </ProjectConfiguration> + <ProjectConfiguration Include="Release|x64"> + <Configuration>Release</Configuration> + <Platform>x64</Platform> + </ProjectConfiguration> + </ItemGroup> + <PropertyGroup Label="Globals"> + <VCProjectVersion>16.0</VCProjectVersion> + <Keyword>Win32Proj</Keyword> + <ProjectGuid>{8463051a-b32c-43f0-9a77-9f223598aac9}</ProjectGuid> + <RootNamespace>StaticLib1</RootNamespace> + <WindowsTargetPlatformVersion>10.0</WindowsTargetPlatformVersion> + </PropertyGroup> + <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" /> + <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration"> + <ConfigurationType>StaticLibrary</ConfigurationType> + <UseDebugLibraries>true</UseDebugLibraries> + <PlatformToolset>v142</PlatformToolset> + <CharacterSet>Unicode</CharacterSet> + </PropertyGroup> + <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration"> + <ConfigurationType>StaticLibrary</ConfigurationType> + <UseDebugLibraries>false</UseDebugLibraries> + <PlatformToolset>v142</PlatformToolset> + <WholeProgramOptimization>true</WholeProgramOptimization> + <CharacterSet>Unicode</CharacterSet> + </PropertyGroup> + <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" /> + <ImportGroup Label="ExtensionSettings"> + </ImportGroup> + <ImportGroup Label="Shared"> + </ImportGroup> + <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|x64'"> + <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> + </ImportGroup> + <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|x64'"> + <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> + </ImportGroup> + <PropertyGroup Label="UserMacros" /> + <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'"> + <LinkIncremental>true</LinkIncremental> + <AllProjectIncludesArePublic>true</AllProjectIncludesArePublic> + </PropertyGroup> + <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'"> + <LinkIncremental>false</LinkIncremental> + <AllProjectIncludesArePublic>true</AllProjectIncludesArePublic> + </PropertyGroup> + <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'"> + <ClCompile> + <WarningLevel>Level3</WarningLevel> + <SDLCheck>true</SDLCheck> + <PreprocessorDefinitions>_DEBUG;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions> + <ConformanceMode>true</ConformanceMode> + </ClCompile> + <Link> + <SubSystem> + </SubSystem> + <GenerateDebugInformation>true</GenerateDebugInformation> + </Link> + </ItemDefinitionGroup> + <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'"> + <ClCompile> + <WarningLevel>Level3</WarningLevel> + <FunctionLevelLinking>true</FunctionLevelLinking> + <IntrinsicFunctions>true</IntrinsicFunctions> + <SDLCheck>true</SDLCheck> + <PreprocessorDefinitions>NDEBUG;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions> + <ConformanceMode>true</ConformanceMode> + </ClCompile> + <Link> + <SubSystem> + </SubSystem> + <EnableCOMDATFolding>true</EnableCOMDATFolding> + <OptimizeReferences>true</OptimizeReferences> + <GenerateDebugInformation>true</GenerateDebugInformation> + </Link> + </ItemDefinitionGroup> + <ItemGroup> + <ClCompile Include="StaticLib1.cpp" /> + </ItemGroup> + <ItemGroup> + <ClInclude Include="Header.h" /> + </ItemGroup> + <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" /> + <ImportGroup Label="ExtensionTargets"> + </ImportGroup> +</Project>
\ No newline at end of file diff --git a/src/tests/concurrency/Solution1/StaticLib1/StaticLib1.vcxproj.filters b/src/tests/concurrency/Solution1/StaticLib1/StaticLib1.vcxproj.filters new file mode 100644 index 00000000..ce5268c9 --- /dev/null +++ b/src/tests/concurrency/Solution1/StaticLib1/StaticLib1.vcxproj.filters @@ -0,0 +1,27 @@ +<?xml version="1.0" encoding="utf-8"?> +<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> + <ItemGroup> + <Filter Include="Source Files"> + <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier> + <Extensions>cpp;c;cc;cxx;c++;cppm;ixx;def;odl;idl;hpj;bat;asm;asmx</Extensions> + </Filter> + <Filter Include="Header Files"> + <UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier> + <Extensions>h;hh;hpp;hxx;h++;hm;inl;inc;ipp;xsd</Extensions> + </Filter> + <Filter Include="Resource Files"> + <UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier> + <Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms</Extensions> + </Filter> + </ItemGroup> + <ItemGroup> + <ClCompile Include="StaticLib1.cpp"> + <Filter>Source Files</Filter> + </ClCompile> + </ItemGroup> + <ItemGroup> + <ClInclude Include="Header.h"> + <Filter>Header Files</Filter> + </ClInclude> + </ItemGroup> +</Project>
\ No newline at end of file diff --git a/src/tests/concurrency/loop_msbuild.bat b/src/tests/concurrency/loop_msbuild.bat new file mode 100644 index 00000000..4c98cba4 --- /dev/null +++ b/src/tests/concurrency/loop_msbuild.bat @@ -0,0 +1,36 @@ +@ECHO OFF + +SET TOTAL=0 +SET FAIL=0 +SET RATE=0 +SET USER_QUIT=0 +SET PAD=..00 + +:loop + CLS + SET RATE=%PAD%%RATE% + ECHO ################################################################################ + ECHO # Total: %TOTAL%, Failed: %FAIL%...%RATE:~-4,-2%,%RATE:~-2%%% + ECHO ################################################################################ + IF %USER_QUIT% EQU 1 GOTO quit + SET /A "TOTAL+=1" + msbuild %* ^ + /m /bl /v:m /nologo ^ + && ( + DEL last_build_ok.binlog 2> NUL + COPY msbuild.binlog last_build_ok.binlog > NUL + ) || ( + SET /A "FAIL+=1" + COPY msbuild.binlog error_build_%TOTAL%.binlog > NUL + ) + SET /A "RATE=(FAIL*100*100)/(TOTAL)" + ECHO ################################################################################ + CHOICE /C QNOP /N /T 1 /D N /M "# [N]ext / [O]pen Log / [P]ause / [Q]uit ?" + IF %ERRORLEVEL% EQU 3 ( + START "" msbuild.binlog + PAUSE + ) + IF %ERRORLEVEL% EQU 4 PAUSE + SET USER_QUIT=%ERRORLEVEL% + GOTO :loop +:quit |