[mono/tests] Add strong named assembly loading tests
[mono.git] / mono / tests / testing_gac / Makefile.am
1
2 ### buildtree stuff
3
4 CLASS=$(mcs_topdir)/class/lib/$(DEFAULT_PROFILE)
5
6 if FULL_AOT_TESTS
7 PROFILE_MCS_FLAGS = -d:MOBILE,MOBILE_LEGACY,FULL_AOT_DESKTOP 
8 endif
9
10 if HYBRID_AOT_TESTS
11 PROFILE_MCS_FLAGS = -d:MOBILE,MOBILE_LEGACY 
12 endif
13
14 ### test runner stuff
15
16
17 RUNTIME= $(top_builddir)/runtime/mono-wrapper
18 TEST_RUNTIME = MONO_PATH=$(CLASS) $(RUNTIME)
19 TOOLS_RUNTIME= MONO_PATH=$(mcs_topdir)/class/lib/build $(RUNTIME)
20
21 TEST_RUNNER = ../test-runner.exe --runtime $(RUNTIME)
22
23 if HOST_WIN32
24 TEST_RUNNER_ARGS=--runtime $(if $(MONO_EXECUTABLE),$(shell cygpath -w -a $(MONO_EXECUTABLE) | sed 's/\\/\\\\/g'),mono)
25 else
26 TEST_RUNNER_ARGS=--runtime $(if $(MONO_EXECUTABLE),$(MONO_EXECUTABLE),mono)
27 endif
28
29 TEST_RUNNER_ARGS += $(if $(V), --verbose,)
30
31 CLASS=$(mcs_topdir)/class/lib/$(DEFAULT_PROFILE)
32
33 if FULL_AOT_TESTS
34 TEST_RUNNER += --aot-run-flags "$(AOT_RUN_FLAGS)" --aot-build-flags "$(AOT_BUILD_FLAGS)"
35 endif
36
37 if HYBRID_AOT_TESTS
38 TEST_RUNNER += --aot-run-flags "$(AOT_RUN_FLAGS)" --aot-build-flags "$(AOT_BUILD_FLAGS)"
39 endif
40
41 ### tools
42
43 GACUTIL= $(mcs_topdir)/class/lib/build/gacutil.exe
44 SN= $(mcs_topdir)/class/lib/build/sn.exe
45
46 MCS= $(TOOLS_RUNTIME) $(CSC) -noconfig -nologo -debug:portable -target:library $(PROFILE_MCS_FLAGS)
47
48 ### testcase stuff
49
50 BASE_MONO_PATH=$(CLASS)
51
52 V1_SRC= v1/gactestlib.cs
53 V2_SRC= v2/gactestlib.cs
54 APP_V1_SRC = v1/app.cs v1/app-refl-load.cs
55
56 APP_SIGNED_V1_EXE = app-v1.exe app-refl-load-v1.exe
57
58 UNSIGNED_V1_DLL= unsigned_v1/gactestlib.dll
59 UNSIGNED_V2_DLL= unsigned_v2/gactestlib.dll
60
61 SIGNED_V1_DLL= signed_v1/gactestlib.dll
62 SIGNED_V2_DLL= signed_v2/gactestlib.dll
63
64 GACTESTLIB_SRCS= $(V1_SRC) $(V2_SRC)
65 GACTESTLIB_DLLS= $(SIGNED_V1_DLL) $(SIGNED_V2_DLL) $(UNSIGNED_V1_DLL) $(UNSIGNED_V2_DLL)
66
67 if FULL_AOT_TESTS
68 GACTESTLIB_DLLS_AOT=$(GACTESTLIB_DLLS:.dll=.dll$(PLATFORM_AOT_SUFFIX))
69 APP_SIGNED_V1_AOT=$(APP_SIGNED_V1_EXE:.exe=.exe$(PLATFORM_AOT_SUFFIX))
70 endif
71
72 if HYBRID_AOT_TESTS
73 GACTESTLIB_DLLS_AOT=$(GACTESTLIB_DLLS:.dll=.dll$(PLATFORM_AOT_SUFFIX))
74 APP_SIGNED_V1_AOT=$(APP_SIGNED_V1_EXE:.exe=.exe$(PLATFORM_AOT_SUFFIX))
75 endif
76
77
78 SIGNING_KEY= testkey.snk
79
80 # prefix for the testing gac.  gacutil will add lib/mono/gac directories
81 GACDIR=.
82
83 SIGN= -delaysign -keyfile:$(SIGNING_KEY)
84
85
86 ### autotools stuff
87
88 EXTRA_DIST= README $(SIGNING_KEY) $(GACTESTLIB_SRCS) 
89
90 ### Test cases
91
92 # MONO_GAC_PREFIX tests
93 if FULL_AOT_TESTS
94 GAC_TESTS=
95 else
96 if HYBRID_AOT_TESTS
97 GAC_TESTS=
98 else
99 GAC_TESTS= test-signed-v1-app-gac
100 endif
101 endif
102
103 # MONO_PATH tests
104 MP_TESTS= test-signed-v1-app-mp-unsigned-v1 \
105         test-signed-v1-app-mp-signed-v1 \
106         test-signed-v1-app-mp-unsigned-v2-signed-v1 \
107         test-signed-v1-app-mp-signed-v2-signed-v1
108
109 ###
110
111 .PHONY: runtest compile-tests prereqs
112
113 runtest: $(MP_TESTS) $(GAC_TESTS)
114
115 compile-tests: prereqs $(APP_SIGNED_V1_EXE) $(APP_SIGNED_V1_AOT)
116
117 prereqs: $(GACTESTLIB_DLLS) $(GACTESTLIB_DLLS_AOT) gacinstall
118
119 $(UNSIGNED_V1_DLL): $(V1_SRC)
120         -mkdir -p $(@D)
121         $(MCS) -out:$@ $<
122
123 $(UNSIGNED_V2_DLL): $(V2_SRC)
124         -mkdir -p $(@D)
125         $(MCS) -out:$@ $<
126
127 $(SIGNED_V1_DLL): $(V1_SRC) $(SIGNING_KEY)
128         -mkdir -p $(@D)
129         $(MCS) -out:$@ $(SIGN) $< && $(TOOLS_RUNTIME) $(SN) -R $@ $(SIGNING_KEY)
130
131 $(SIGNED_V2_DLL): $(V2_SRC) $(SIGNING_KEY)
132         -mkdir -p $(@D)
133         $(MCS) -out:$@ $(SIGN) $< && $(TOOLS_RUNTIME) $(SN) -R $@ $(SIGNING_KEY)
134
135 %-v1.exe: v1/%.cs $(SIGNED_V1_DLL)
136         $(MCS) -target:exe -out:$@ -r:$(SIGNED_V1_DLL) $<
137
138 %.exe$(PLATFORM_AOT_SUFFIX): %.exe 
139         $(TEST_RUNTIME) $(AOT_BUILD_FLAGS) $<
140
141 %.dll$(PLATFORM_AOT_SUFFIX): %.dll 
142         $(TEST_RUNTIME) $(AOT_BUILD_FLAGS) $<
143
144 test-signed-v1-app-mp-unsigned-v1: $(APP_SIGNED_V1_EXE) prereqs
145         $(TOOLS_RUNTIME) $(TEST_RUNNER) $(TEST_RUNNER_ARGS) --testsuite-name "testing_gac_$@" --mono-path "unsigned_v1:$(BASE_MONO_PATH)" --expected-exit-code 1 $(APP_SIGNED_V1_EXE)
146
147 test-signed-v1-app-mp-signed-v1: $(APP_SIGNED_V1_EXE) prereqs
148         $(TOOLS_RUNTIME) $(TEST_RUNNER) $(TEST_RUNNER_ARGS) --testsuite-name "testing_gac_$@" --mono-path "signed_v1:$(BASE_MONO_PATH)"  $(APP_SIGNED_V1_EXE)
149
150 test-signed-v1-app-gac: $(APP_SIGNED_V1_EXE) gacinstall prereqs
151         $(TOOLS_RUNTIME) $(TEST_RUNNER) $(TEST_RUNNER_ARGS) --testsuite-name "testing_gac_$@" --mono-gac-prefix $(GACDIR) $(APP_SIGNED_V1_EXE)
152
153 test-signed-v1-app-mp-unsigned-v2-signed-v1: $(APP_SIGNED_V1_EXE) prereqs
154         $(TOOLS_RUNTIME) $(TEST_RUNNER) $(TEST_RUNNER_ARGS) --testsuite-name "testing_gac_$@" --mono-path "unsigned_v2:signed_v1:$(BASE_MONO_PATH)" $(APP_SIGNED_V1_EXE)
155
156 test-signed-v1-app-mp-signed-v2-signed-v1: $(APP_SIGNED_V1_EXE) prereqs
157         $(TOOLS_RUNTIME) $(TEST_RUNNER) $(TEST_RUNNER_ARGS) --testsuite-name "testing_gac_$@" --mono-path "signed_v2:signed_v1:$(BASE_MONO_PATH)" $(APP_SIGNED_V1_EXE)
158
159 .PHONY: gacinstall
160
161 gacinstall: $(SIGNED_V1_DLL) $(GACTESTLIB_DLLS_AOT)
162         $(TOOLS_RUNTIME) $(GACUTIL) -i $< -gacdir $(GACDIR) 
163
164 mostlyclean-local: clean-gac-subdir clean-gactestlib-dll
165         -rm -f TestResult-*.xml
166
167 .PHONY: clean-gac-subdir clean-gactestlib-dll
168
169 clean-gac-subdir:
170         -rm -rf $(GACDIR)/lib/mono/gac/
171
172 clean-gactestlib-dll:
173         -rm -f $(GACTESTLIB_DLLS)
174         -rm -f $(GACTESTLIB_DLLS_AOT)
175         -rm -f $(APP_SIGNED_V1_EXE) $(APP_SIGNED_V1_AOT)