Merge pull request #4453 from lambdageek/bug-49721
[mono.git] / mcs / tools / xbuild / Makefile
1 thisdir = tools/xbuild
2 SUBDIRS = 
3 include ../../build/rules.make
4 NO_TESTS = yes
5
6 include xbuild.make
7
8 LOCAL_MCS_FLAGS =
9 LIB_REFS = $(XBUILD_FRAMEWORK) $(XBUILD_UTILITIES) $(XBUILD_ENGINE) $(XBUILD_MSTASKS) $(PARENT_PROFILE)System $(PARENT_PROFILE)System.Core
10 PROGRAM = xbuild.exe
11
12 include ../../build/executable.make
13
14 XBUILD_DIR=.
15 include $(XBUILD_DIR)/xbuild_test.make
16
17 ifeq (4.0, $(FRAMEWORK_VERSION))
18 install-local: xbuild-net4-fail
19 else
20 install-local: install-extras
21 endif
22
23 PORTABLE_TARGETS_SRC:=data/Portable/Targets
24 PCL5_FX_SRC:=data/Portable/Frameworks/v5.0
25
26 NETFRAMEWORK_DIR=$(mono_libdir)/mono/xbuild-frameworks/.NETFramework
27 PCL5_FX_DIR=$(mono_libdir)/mono/xbuild-frameworks/.NETPortable/v5.0
28 VS_TARGETS_DIR = $(mono_libdir)/mono/xbuild/Microsoft/VisualStudio
29 PORTABLE_TARGETS_DIR = $(mono_libdir)/mono/xbuild/Microsoft/Portable
30 NUGET_BUILDTASKS_TARGETS_DIR = $(mono_libdir)/mono/xbuild/Microsoft/NuGet
31
32 ifeq (14.0, $(XBUILD_VERSION))
33 install-extras: install-versioned-files install-global-files
34 else
35 install-extras: install-versioned-files
36 endif
37
38 #install files into xbuild's versioned locations
39 install-versioned-files: install-bin-data install-nuget-imports
40
41 #install files that are only installed once across all xbuild versions
42 install-global-files: install-frameworks install-web-targets install-pcl-targets install-pcl5-framework install-nuget-targets
43
44 install-bin-data:
45         $(MKINSTALLDIRS) $(DESTDIR)$(XBUILD_BIN_DIR)/MSBuild
46         $(INSTALL_DATA) data/xbuild.rsp $(DESTDIR)$(XBUILD_BIN_DIR)
47         $(INSTALL_DATA) data/$(XBUILD_VERSION)/Microsoft.Common.tasks $(DESTDIR)$(XBUILD_BIN_DIR)
48         $(INSTALL_DATA) data/$(XBUILD_VERSION)/Microsoft.Common.targets $(DESTDIR)$(XBUILD_BIN_DIR)
49 ifeq (14.0, $(XBUILD_VERSION))
50         $(INSTALL_DATA) data/$(XBUILD_VERSION)/Microsoft.Common.props $(DESTDIR)$(XBUILD_BIN_DIR)/../
51 endif
52         $(INSTALL_DATA) data/$(XBUILD_VERSION)/Microsoft.CSharp.targets $(DESTDIR)$(XBUILD_BIN_DIR)
53         $(INSTALL_DATA) data/Microsoft.Build.xsd $(DESTDIR)$(XBUILD_BIN_DIR)
54         $(INSTALL_DATA) data/Microsoft.VisualBasic.targets $(DESTDIR)$(XBUILD_BIN_DIR)
55         $(INSTALL_DATA) data/MSBuild/Microsoft.Build.CommonTypes.xsd $(DESTDIR)$(XBUILD_BIN_DIR)/MSBuild
56         $(INSTALL_DATA) data/MSBuild/Microsoft.Build.Core.xsd $(DESTDIR)$(XBUILD_BIN_DIR)/MSBuild
57         sed -e 's/@ASM_VERSION@/$(XBUILD_ASSEMBLY_VERSION)/g' data/xbuild.exe.config.in > $(DESTDIR)$(XBUILD_BIN_DIR)/xbuild.exe.config
58
59 install-frameworks:
60         $(MKINSTALLDIRS) $(DESTDIR)$(NETFRAMEWORK_DIR)/v$(FRAMEWORK_VERSION)/RedistList
61         $(INSTALL_DATA) frameworks/net_$(FRAMEWORK_VERSION).xml $(DESTDIR)$(NETFRAMEWORK_DIR)/v$(FRAMEWORK_VERSION)/RedistList/FrameworkList.xml
62         $(MKINSTALLDIRS) $(DESTDIR)$(NETFRAMEWORK_DIR)/v2.0/RedistList
63         $(INSTALL_DATA) frameworks/net_2.0.xml $(DESTDIR)$(NETFRAMEWORK_DIR)/v2.0/RedistList/FrameworkList.xml
64         $(MKINSTALLDIRS) $(DESTDIR)$(NETFRAMEWORK_DIR)/v3.0/RedistList
65         $(INSTALL_DATA) frameworks/net_3.0.xml $(DESTDIR)$(NETFRAMEWORK_DIR)/v3.0/RedistList/FrameworkList.xml
66         $(MKINSTALLDIRS) $(DESTDIR)$(NETFRAMEWORK_DIR)/v3.5/RedistList
67         $(INSTALL_DATA) frameworks/net_3.5.xml $(DESTDIR)$(NETFRAMEWORK_DIR)/v3.5/RedistList/FrameworkList.xml
68         $(MKINSTALLDIRS) $(DESTDIR)$(NETFRAMEWORK_DIR)/v4.0/RedistList
69         $(INSTALL_DATA) frameworks/net_4.0.xml $(DESTDIR)$(NETFRAMEWORK_DIR)/v4.0/RedistList/FrameworkList.xml
70         $(MKINSTALLDIRS) $(DESTDIR)$(NETFRAMEWORK_DIR)/v4.0/Profile/Client/RedistList
71         $(INSTALL_DATA) frameworks/net_4.0_client.xml $(DESTDIR)$(NETFRAMEWORK_DIR)/v4.0/Profile/Client/RedistList/FrameworkList.xml
72         $(MKINSTALLDIRS) $(DESTDIR)$(NETFRAMEWORK_DIR)/v4.5.1/RedistList
73         $(INSTALL_DATA) frameworks/net_4.5.1.xml $(DESTDIR)$(NETFRAMEWORK_DIR)/v4.5.1/RedistList/FrameworkList.xml
74         $(MKINSTALLDIRS) $(DESTDIR)$(NETFRAMEWORK_DIR)/v4.5.2/RedistList
75         $(INSTALL_DATA) frameworks/net_4.5.2.xml $(DESTDIR)$(NETFRAMEWORK_DIR)/v4.5.2/RedistList/FrameworkList.xml
76         $(MKINSTALLDIRS) $(DESTDIR)$(NETFRAMEWORK_DIR)/v4.6/RedistList
77         $(INSTALL_DATA) frameworks/net_4.6.xml $(DESTDIR)$(NETFRAMEWORK_DIR)/v4.6/RedistList/FrameworkList.xml
78         $(MKINSTALLDIRS) $(DESTDIR)$(NETFRAMEWORK_DIR)/v4.6.1/RedistList
79         $(INSTALL_DATA) frameworks/net_4.6.1.xml $(DESTDIR)$(NETFRAMEWORK_DIR)/v4.6.1/RedistList/FrameworkList.xml
80         $(MKINSTALLDIRS) $(DESTDIR)$(NETFRAMEWORK_DIR)/v4.6.2/RedistList
81         $(INSTALL_DATA) frameworks/net_4.6.2.xml $(DESTDIR)$(NETFRAMEWORK_DIR)/v4.6.2/RedistList/FrameworkList.xml
82
83 install-pcl-targets:
84         $(MKINSTALLDIRS) $(DESTDIR)$(PORTABLE_TARGETS_DIR)
85         $(INSTALL_DATA) $(PORTABLE_TARGETS_SRC)/Microsoft.Portable.Core.props $(DESTDIR)$(PORTABLE_TARGETS_DIR)/Microsoft.Portable.Core.props
86         $(INSTALL_DATA) $(PORTABLE_TARGETS_SRC)/Microsoft.Portable.Core.targets $(DESTDIR)$(PORTABLE_TARGETS_DIR)/Microsoft.Portable.Core.targets
87
88         for VERSION in v4.0 v4.5 v4.6 v5.0; do \
89                 $(MKINSTALLDIRS) $(DESTDIR)$(PORTABLE_TARGETS_DIR)/$$VERSION; \
90                 $(INSTALL_DATA) $(PORTABLE_TARGETS_SRC)/$$VERSION/Microsoft.Portable.Common.targets $(DESTDIR)$(PORTABLE_TARGETS_DIR)/$$VERSION/Microsoft.Portable.Common.targets; \
91                 $(INSTALL_DATA) $(PORTABLE_TARGETS_SRC)/$$VERSION/Microsoft.Portable.CSharp.targets $(DESTDIR)$(PORTABLE_TARGETS_DIR)/$$VERSION/Microsoft.Portable.CSharp.targets; \
92                 $(INSTALL_DATA) $(PORTABLE_TARGETS_SRC)/$$VERSION/Microsoft.Portable.VisualBasic.targets $(DESTDIR)$(PORTABLE_TARGETS_DIR)/$$VERSION/Microsoft.Portable.VisualBasic.targets; \
93         done
94
95 install-web-targets:
96         $(MKINSTALLDIRS) $(DESTDIR)$(VS_TARGETS_DIR)/v9.0/WebApplications
97         $(INSTALL_DATA) targets/Microsoft.WebApplication.targets $(DESTDIR)$(VS_TARGETS_DIR)/v9.0/WebApplications
98         $(MKINSTALLDIRS) $(DESTDIR)$(VS_TARGETS_DIR)/v10.0/WebApplications
99         $(INSTALL_DATA) targets/Microsoft.WebApplication.targets $(DESTDIR)$(VS_TARGETS_DIR)/v10.0/WebApplications
100         $(MKINSTALLDIRS) $(DESTDIR)$(VS_TARGETS_DIR)/v11.0/WebApplications
101         $(INSTALL_DATA) targets/Microsoft.WebApplication.targets $(DESTDIR)$(VS_TARGETS_DIR)/v11.0/WebApplications
102         $(MKINSTALLDIRS) $(DESTDIR)$(VS_TARGETS_DIR)/v12.0/WebApplications
103         $(INSTALL_DATA) targets/Microsoft.WebApplication.targets $(DESTDIR)$(VS_TARGETS_DIR)/v12.0/WebApplications
104         $(MKINSTALLDIRS) $(DESTDIR)$(VS_TARGETS_DIR)/v14.0/WebApplications
105         $(INSTALL_DATA) targets/Microsoft.WebApplication.targets $(DESTDIR)$(VS_TARGETS_DIR)/v14.0/WebApplications
106
107 NUGET_BUILDTASKS_REPO_DIR=$(topdir)/../external/nuget-buildtasks
108
109 install-nuget-targets:
110         $(MKINSTALLDIRS) $(DESTDIR)$(NUGET_BUILDTASKS_TARGETS_DIR)
111         $(INSTALL_DATA) $(NUGET_BUILDTASKS_REPO_DIR)/src/Microsoft.NuGet.Build.Tasks/Microsoft.NuGet.targets $(DESTDIR)$(NUGET_BUILDTASKS_TARGETS_DIR)
112         $(INSTALL_DATA) $(NUGET_BUILDTASKS_REPO_DIR)/src/Microsoft.NuGet.Build.Tasks/Microsoft.NuGet.props $(DESTDIR)$(NUGET_BUILDTASKS_TARGETS_DIR)
113
114 install-nuget-imports:
115 ifeq (14.0, $(XBUILD_VERSION))
116         $(MKINSTALLDIRS) $(DESTDIR)$(XBUILD_BIN_DIR)/../Imports/Microsoft.Common.props/ImportBefore
117         $(MKINSTALLDIRS) $(DESTDIR)$(XBUILD_BIN_DIR)/../Microsoft.Common.targets/ImportAfter
118         $(INSTALL_DATA) $(NUGET_BUILDTASKS_REPO_DIR)/src/Microsoft.NuGet.Build.Tasks/ImportBeforeAfter/Microsoft.NuGet.ImportBefore.props $(DESTDIR)$(XBUILD_BIN_DIR)/../Imports/Microsoft.Common.props/ImportBefore
119         $(INSTALL_DATA) $(NUGET_BUILDTASKS_REPO_DIR)/src/Microsoft.NuGet.Build.Tasks/ImportBeforeAfter/Microsoft.NuGet.ImportAfter.targets $(DESTDIR)$(XBUILD_BIN_DIR)/../Microsoft.Common.targets/ImportAfter
120 endif
121
122 # The .NETPortable,Version=v5.0 framework contains no assemblies, and essentially just fills the requirement
123 # for a framework moniker. When using it, assemblies are provided by NuGet packages such as .NETStandard.Library
124 install-pcl5-framework:
125         $(MKINSTALLDIRS) $(DESTDIR)$(PCL5_FX_DIR)/RedistList
126         $(INSTALL_DATA) $(PCL5_FX_SRC)/FrameworkList.xml $(DESTDIR)$(PCL5_FX_DIR)/RedistList/FrameworkList.xml
127
128         $(MKINSTALLDIRS) $(DESTDIR)$(PCL5_FX_DIR)/SupportedFrameworks
129         $(INSTALL_DATA) "$(PCL5_FX_SRC)/.NET Framework 4.6.xml" "$(DESTDIR)$(PCL5_FX_DIR)/SupportedFrameworks/.NET Framework 4.6.xml"
130         $(INSTALL_DATA) "$(PCL5_FX_SRC)/ASP.NET Core 1.0.xml" "$(DESTDIR)$(PCL5_FX_DIR)/SupportedFrameworks/ASP.NET Core 1.0.xml"
131         $(INSTALL_DATA) "$(PCL5_FX_SRC)/Windows Universal 10.0.xml" "$(DESTDIR)$(PCL5_FX_DIR)/SupportedFrameworks/Windows Universal 10.0.xml"
132
133 EXTRA_DISTFILES = \
134         data/xbuild.rsp \
135         data/xbuild.exe.config.in \
136         data/xbuild.exe.config_test.in \
137         data/Microsoft.Build.xsd \
138         data/2.0/Microsoft.Common.tasks \
139         data/3.5/Microsoft.Common.tasks \
140         data/4.0/Microsoft.Common.tasks \
141         data/12.0/Microsoft.Common.tasks \
142         data/14.0/Microsoft.Common.tasks \
143         data/2.0/Microsoft.Common.targets \
144         data/3.5/Microsoft.Common.targets \
145         data/4.0/Microsoft.Common.targets \
146         data/12.0/Microsoft.Common.targets \
147         data/14.0/Microsoft.Common.targets \
148         data/14.0/Microsoft.Common.props \
149         data/2.0/Microsoft.CSharp.targets \
150         data/3.5/Microsoft.CSharp.targets \
151         data/4.0/Microsoft.CSharp.targets \
152         data/12.0/Microsoft.CSharp.targets \
153         data/14.0/Microsoft.CSharp.targets \
154         data/Microsoft.VisualBasic.targets \
155         data/MSBuild/Microsoft.Build.CommonTypes.xsd \
156         data/MSBuild/Microsoft.Build.Core.xsd \
157         data/Portable/Targets/Microsoft.Portable.Core.props \
158         data/Portable/Targets/Microsoft.Portable.Core.targets \
159         data/Portable/Targets/v4.0/Microsoft.Portable.Common.targets \
160         data/Portable/Targets/v4.0/Microsoft.Portable.CSharp.targets \
161         data/Portable/Targets/v4.0/Microsoft.Portable.VisualBasic.targets \
162         data/Portable/Targets/v4.5/Microsoft.Portable.Common.targets \
163         data/Portable/Targets/v4.5/Microsoft.Portable.CSharp.targets \
164         data/Portable/Targets/v4.5/Microsoft.Portable.VisualBasic.targets \
165         data/Portable/Targets/v4.6/Microsoft.Portable.Common.targets \
166         data/Portable/Targets/v4.6/Microsoft.Portable.CSharp.targets \
167         data/Portable/Targets/v4.6/Microsoft.Portable.VisualBasic.targets \
168         data/Portable/Targets/v5.0/Microsoft.Portable.Common.targets \
169         data/Portable/Targets/v5.0/Microsoft.Portable.CSharp.targets \
170         data/Portable/Targets/v5.0/Microsoft.Portable.VisualBasic.targets \
171         "data/Portable/Frameworks/v5.0/.NET Framework 4.6.xml" \
172         "data/Portable/Frameworks/v5.0/ASP.NET Core 1.0.xml" \
173         "data/Portable/Frameworks/v5.0/FrameworkList.xml" \
174         "data/Portable/Frameworks/v5.0/Windows Universal 10.0.xml" \
175         frameworks/net_2.0.xml \
176         frameworks/net_3.0.xml \
177         frameworks/net_3.5.xml \
178         frameworks/net_4.0.xml \
179         frameworks/net_4.0_client.xml \
180         frameworks/net_4.5.xml \
181         frameworks/net_4.5.1.xml \
182         frameworks/net_4.5.2.xml \
183         frameworks/net_4.6.xml \
184         frameworks/net_4.6.1.xml \
185         frameworks/net_4.6.2.xml \
186         targets/Microsoft.WebApplication.targets        \
187         $(NUGET_BUILDTASKS_REPO_DIR)/src/Microsoft.NuGet.Build.Tasks/ImportBeforeAfter/Microsoft.NuGet.ImportBefore.props       \
188         $(NUGET_BUILDTASKS_REPO_DIR)/src/Microsoft.NuGet.Build.Tasks/ImportBeforeAfter/Microsoft.NuGet.ImportAfter.targets      \
189         $(NUGET_BUILDTASKS_REPO_DIR)/src/Microsoft.NuGet.Build.Tasks/Microsoft.NuGet.targets \
190         $(NUGET_BUILDTASKS_REPO_DIR)/src/Microsoft.NuGet.Build.Tasks/Microsoft.NuGet.props \
191         xbuild.make \
192         xbuild_test.make