1 include $(top_srcdir)/mk/common.mk
5 CLASS=$(mcs_topdir)/class/lib/$(DEFAULT_PROFILE)
8 PROFILE_MCS_FLAGS = -d:MOBILE,MOBILE_LEGACY,FULL_AOT_DESKTOP
12 PROFILE_MCS_FLAGS = -d:MOBILE,MOBILE_LEGACY
18 PLATFORM_PATH_SEPARATOR=;
20 PLATFORM_PATH_SEPARATOR=:
23 RUNTIME= $(top_builddir)/runtime/mono-wrapper
24 TEST_RUNTIME = MONO_PATH=$(CLASS) $(RUNTIME)
25 TOOLS_RUNTIME= MONO_PATH=$(mcs_topdir)/class/lib/build $(RUNTIME)
27 # These tests are testing strict assembly strong-name resolution
28 TEST_RUNNER = ../test-runner.exe --runtime $(RUNTIME) --runtime-args "--assembly-loader=strict"
32 DEFAULT_WIN32_RUNTIME=$(shell cygpath -w -a $(top_builddir)/@mono_runtime@ | sed 's/\\/\\\\/g')
34 DEFAULT_WIN32_RUNTIME=$(top_builddir)/runtime/mono-wrapper)
36 TEST_RUNNER_ARGS=--runtime $(if $(MONO_EXECUTABLE),$(shell cygpath -w -a $(MONO_EXECUTABLE) | sed 's/\\/\\\\/g'),$(DEFAULT_WIN32_RUNTIME))
38 TEST_RUNNER_ARGS=--runtime $(if $(MONO_EXECUTABLE),$(MONO_EXECUTABLE),mono)
41 TEST_RUNNER_ARGS += $(if $(V), --verbose,)
44 TEST_RUNNER += --runtime-args "$(AOT_RUN_FLAGS)"
48 TEST_RUNNER += --runtime-args "$(AOT_RUN_FLAGS)"
53 GACUTIL= $(mcs_topdir)/class/lib/build/gacutil.exe
54 SN= $(mcs_topdir)/class/lib/build/sn.exe
56 MCS= $(TOOLS_RUNTIME) $(CSC) -noconfig -nologo -debug:portable -target:library $(PROFILE_MCS_FLAGS)
60 BASE_MONO_PATH=$(CLASS)
62 V1_SRC= v1/gactestlib.cs
63 V2_SRC= v2/gactestlib.cs
64 APP_V1_SRC = v1/app.cs v1/app-refl-load.cs
66 APP_SIGNED_V1_EXE = app-v1.exe app-refl-load-v1.exe
68 APP_BOTH_EXE = app-both.exe
70 UNSIGNED_V1_DLL= unsigned_v1/gactestlib.dll
71 UNSIGNED_V2_DLL= unsigned_v2/gactestlib.dll
73 SIGNED_V1_DLL= signed_v1/gactestlib.dll
74 SIGNED_V2_DLL= signed_v2/gactestlib.dll
76 GACTESTLIB_SRCS= $(V1_SRC) $(V2_SRC)
77 GACTESTLIB_DLLS= $(SIGNED_V1_DLL) $(SIGNED_V2_DLL) $(UNSIGNED_V1_DLL) $(UNSIGNED_V2_DLL)
80 #GACTESTLIB_DLLS_AOT=$(GACTESTLIB_DLLS:.dll=.dll$(PLATFORM_AOT_SUFFIX))
81 #APP_SIGNED_V1_AOT=$(APP_SIGNED_V1_EXE:.exe=.exe$(PLATFORM_AOT_SUFFIX))
85 #GACTESTLIB_DLLS_AOT=$(GACTESTLIB_DLLS:.dll=.dll$(PLATFORM_AOT_SUFFIX))
86 #APP_SIGNED_V1_AOT=$(APP_SIGNED_V1_EXE:.exe=.exe$(PLATFORM_AOT_SUFFIX))
90 SIGNING_KEY= $(srcdir)/testkey.snk
92 # prefix for the testing gac. gacutil will add lib/mono/gac directories
95 SIGN= -delaysign -keyfile:$(SIGNING_KEY)
100 EXTRA_DIST= README $(SIGNING_KEY) $(GACTESTLIB_SRCS)
104 .PHONY: run-test test-local prereqs
110 $(MAKE) test-app-both
111 $(MAKE) test-signed-v1-app-mp-unsigned-v1
112 $(MAKE) test-signed-v1-app-mp-signed-v1
113 $(MAKE) test-signed-v1-app-mp-unsigned-v2-signed-v1
114 $(MAKE) test-signed-v1-app-mp-signed-v2-signed-v1
115 $(MAKE) test-signed-v1-app-gac
119 test-local: prereqs $(APP_SIGNED_V1_EXE) $(APP_BOTH_EXE) $(APP_SIGNED_V1_AOT)
121 prereqs: $(GACTESTLIB_DLLS) $(GACTESTLIB_DLLS_AOT)
124 $(UNSIGNED_V1_DLL): $(V1_SRC)
128 $(UNSIGNED_V2_DLL): $(V2_SRC)
132 $(SIGNED_V1_DLL): $(V1_SRC) $(SIGNING_KEY)
134 $(MCS) -out:$@ $(SIGN) $< && $(TOOLS_RUNTIME) $(SN) -R $@ $(SIGNING_KEY)
136 $(SIGNED_V2_DLL): $(V2_SRC) $(SIGNING_KEY)
138 $(MCS) -out:$@ $(SIGN) $< && $(TOOLS_RUNTIME) $(SN) -R $@ $(SIGNING_KEY)
140 app-both.exe: app-both.cs $(SIGNED_V1_DLL) $(SIGNED_V2_DLL)
141 $(MCS) -target:exe -out:$@ -r:V1=$(SIGNED_V1_DLL) /r:V2=$(SIGNED_V2_DLL) $<
143 %-v1.exe: v1/%.cs $(SIGNED_V1_DLL)
144 $(MCS) -target:exe -out:$@ -r:$(SIGNED_V1_DLL) $<
146 %.exe$(PLATFORM_AOT_SUFFIX): %.exe
147 $(TEST_RUNTIME) $(AOT_BUILD_FLAGS) $<
149 %.dll$(PLATFORM_AOT_SUFFIX): %.dll
150 $(TEST_RUNTIME) $(AOT_BUILD_FLAGS) $<
154 test-signed-v1-app-mp-unsigned-v1: $(APP_SIGNED_V1_EXE) prereqs
155 $(TOOLS_RUNTIME) $(TEST_RUNNER) $(TEST_RUNNER_ARGS) --testsuite-name "testing_gac_$@" --mono-path "unsigned_v1$(PLATFORM_PATH_SEPARATOR)$(BASE_MONO_PATH)" --expected-exit-code 1 $(APP_SIGNED_V1_EXE)
157 test-signed-v1-app-mp-signed-v1: $(APP_SIGNED_V1_EXE) prereqs
158 $(TOOLS_RUNTIME) $(TEST_RUNNER) $(TEST_RUNNER_ARGS) --testsuite-name "testing_gac_$@" --mono-path "signed_v1$(PLATFORM_PATH_SEPARATOR)$(BASE_MONO_PATH)" $(APP_SIGNED_V1_EXE)
160 test-signed-v1-app-mp-unsigned-v2-signed-v1: $(APP_SIGNED_V1_EXE) prereqs
161 $(TOOLS_RUNTIME) $(TEST_RUNNER) $(TEST_RUNNER_ARGS) --testsuite-name "testing_gac_$@" --mono-path "unsigned_v2$(PLATFORM_PATH_SEPARATOR)signed_v1$(PLATFORM_PATH_SEPARATOR)$(BASE_MONO_PATH)" $(APP_SIGNED_V1_EXE)
163 test-signed-v1-app-mp-signed-v2-signed-v1: $(APP_SIGNED_V1_EXE) prereqs
164 $(TOOLS_RUNTIME) $(TEST_RUNNER) $(TEST_RUNNER_ARGS) --testsuite-name "testing_gac_$@" --mono-path "signed_v2$(PLATFORM_PATH_SEPARATOR)signed_v1$(PLATFORM_PATH_SEPARATOR)$(BASE_MONO_PATH)" $(APP_SIGNED_V1_EXE)
166 # N.B. the path order is important - the test needs to load v1 successfully and then try to load v2 from the v1 directory.
167 test-app-both: $(APP_BOTH_EXE) prereqs
168 $(TOOLS_RUNTIME) $(TEST_RUNNER) $(TEST_RUNNER_ARGS) --testsuite-name "testing_gac_$@" --mono-path "signed_v1$(PLATFORM_PATH_SEPARATOR)signed_v2$(PLATFORM_PATH_SEPARATOR)$(BASE_MONO_PATH)" app-both.exe
170 # MONO_GAC_PREFIX tests
172 test-signed-v1-app-gac: $(APP_SIGNED_V1_EXE) gacinstall prereqs
173 $(TOOLS_RUNTIME) $(TEST_RUNNER) $(TEST_RUNNER_ARGS) --testsuite-name "testing_gac_$@" --mono-gac-prefix $(GACDIR) $(APP_SIGNED_V1_EXE)
177 gacinstall: $(SIGNED_V1_DLL) $(GACTESTLIB_DLLS_AOT)
178 $(TOOLS_RUNTIME) $(GACUTIL) -i $< -gacdir $(GACDIR)
180 mostlyclean-local: clean-gac-subdir clean-gactestlib-dll
181 -rm -f TestResult-*.xml
183 .PHONY: clean-gac-subdir clean-gactestlib-dll
186 -rm -rf $(GACDIR)/lib/mono/gac/
188 clean-gactestlib-dll:
189 -rm -f $(GACTESTLIB_DLLS)
190 -rm -f $(GACTESTLIB_DLLS_AOT)
191 -rm -f $(APP_SIGNED_V1_EXE) $(APP_SIGNED_V1_AOT)