Added bootstrap tests for Testcase.nqp.
[kakapo:rurbans-kakapo.git] / build / Makefile.in
1 ## arguments we want to run parrot with
2 PARROT_ARGS   :=
3
4 ## configuration settings
5 VERSION       := @versiondir@
6 BIN_DIR       := @bindir@
7 LIB_DIR       := @libdir@$(VERSION)
8 DOC_DIR       := @docdir@$(VERSION)
9 MANDIR        := @mandir@$(VERSION)
10
11
12 ## Setup some commands
13 MAKE          := @make_c@
14 PERL          := @perl@
15 CAT           := @cat@
16 CHMOD         := @chmod@
17 CP            := @cp@
18 DUMP      := $(BIN_DIR)/pbc_dump@exe@
19 LINK          := $(BIN_DIR)/pbc_merge@exe@
20 MKPATH        := @mkpath@
21 RM_F          := @rm_f@
22 RM_RF         := @rm_rf@
23 POD2MAN       := pod2man
24 #IF(parrot_is_shared and not(cygwin or win32)):export LD_RUN_PATH := @blib_dir@:$(LD_RUN_PATH)
25 PARROT        := $(BIN_DIR)/parrot@exe@
26 PARROT_NQP      := $(BIN_DIR)/parrot-nqp@exe@
27 PBC_TO_EXE    := $(BIN_DIR)/pbc_to_exe@exe@
28 #IF(darwin):
29 #IF(darwin):# MACOSX_DEPLOYMENT_TARGET must be defined for OS X compilation/linking
30 #IF(darwin):export MACOSX_DEPLOYMENT_TARGET := @osx_version@
31
32 COMPILE_pg      := $(PARROT) $(PARROT_ARGS) $(PERL6GRAMMAR)
33 COMPILE_nqp     := $(PARROT_NQP)
34 COMPILE_pir     := $(PARROT) $(PARROT_ARGS)
35 STRIP_PIRA      := grep -v '^.annotate'
36
37 # FIXME: This should go away, replaced by some kind of AllTests mechanism that gloms the tests together in a single suite.
38 ALL_TESTS =             \
39         t-pmc-common    \
40         t-pmc-float             \
41         t-pmc-sub               \
42         t-pmc-undef     \
43         t-unittest-loader       \
44         t-unittest-suite        \
45         t-unittest-testcase     \
46
47 BASE_LIB_PIRS =                         \
48         src/Global.pir                  \
49         src/Parrot/Opcode.pir           \
50         src/Parrot/Parrot.pir           \
51         src/Parrot/Pir.pir                      \
52         src/Pmc/Array.pir                       \
53         src/Pmc/COMMON.pir              \
54         src/Pmc/Exception.pir           \
55         src/Pmc/Hash.pir                        \
56         src/Pmc/Namespace.pir           \
57         src/Pmc/String.pir              \
58         src/Pmc/Sub.pir                 \
59         src/Pmc/Undef.pir               \
60         
61
62 FULL_LIB_PIRS =                 \
63         $(BASE_LIB_PIRS)                \
64         src/Classes/P6object.pir                \
65         src/Classes/P6metaclass.pir     \
66         src/UnitTest/Result.pir         \
67         src/UnitTest/Testcase.pir       \
68
69         # src/Classes/Class.pir \
70         # src/Classes/ArrayBased.pir    \
71         # src/Classes/BaseBehavior.pir  \
72         # src/Classes/HashBased.pir     \
73         # src/ConfigFile.pir            \
74         # src/DependencyQueue.pir \
75         # src/Dumper.pir                        \
76         # src/Exceptions.pir                    \
77         # src/Pmc/Class.pir             \
78         # src/Pmc/Config.pir    \
79         # src/Pmc/File.pir              \
80         # src/Pmc/OS.pir                \
81         # src/Program.pir               \
82         # src/Matchers/AllOf.pir                \
83         # src/Matchers/AnyOne.pir       \
84         # src/Matchers/Boolean.pir      \
85         # src/Matchers/Defined.pir      \
86         # src/Matchers/DescribedAs.pir  \
87         # src/Matchers/Elements.pir             \
88         # src/Matchers/Empty.pir                \
89         # src/Matchers/Equals.pir               \
90         # src/Matchers/EqualsArray.pir          \
91         # src/Matchers/EqualsFloat.pir          \
92         # src/Matchers/Factory.pir              \
93         # src/Matchers/InstanceOf.pir           \
94         # src/Matchers/Matcher.pir              \
95         # src/Matchers/Not.pir                  \
96         # src/Matchers/TypeSafe.pir             \
97         # src/UnitTest/Listeners.pir            \
98         # src/UnitTest/Loader.pir                       \
99         # src/UnitTest/Suite.pir                        \
100         
101 #       src/Matchers/IdenticalTo.pir    \       
102 #       src/Matchers/Null.pir           \
103 #       src/Matchers/True.pir           \
104
105
106 # This list does not include Makefile because that is human-generated.
107 GENERATED_FILES =                               \
108         $(BASE_LIB_PIRS)                        \
109         $(FULL_LIB_PIRS)                        \
110         library/kakapo_base.pir                 \
111         library/kakapo_full.pir                 \
112         src/Internals/Base.pir                  \
113         src/Internals/Full.pir                  \
114         src/Internals/kakapo_bottom.pir \
115         src/Internals/kakapo_top.pir            \
116         $(KRT0)                                 \
117         $(LIBRARY_PBCS)
118
119 KRT0 =                                          \
120         library/krt0.pbc
121         
122 LIBRARY_COMMON_DEPS =                   \
123         Makefile                                        \
124         src/Internals/kakapo_bottom.pir \
125         src/Internals/kakapo_top.pir
126         
127 LIBRARY_PBCS =                          \
128         library/kakapo_base.pbc         \
129         library/kakapo_full.pbc                 \
130         $(KRT0)
131
132
133 TEST_CLEANUPS =                 \
134         t/Global.pir                            \
135         t/Parrot.pir                            \
136         t/Pmc/test-array.pbc            \
137         t/Pmc/test-array.pir            \
138         t/Pmc/Array.pir                 \
139         t/Program.pir                   \
140         t/Pmc/test-rpa.pbc              \
141         t/Pmc/test-rsa.pbc              \
142         t/Pmc/test-undef.pbc            \
143         t/Classes/test-Attributes.pbc   \
144         t/Sanity/test-P6object.pbc      \
145         t/Classes/Attributes.pbc                \
146         t/Pmc/Array.pbc                 \
147         t/Pmc/ResizablePMCArray.pbc\
148         t/Pmc/ResizableStringArray.pbc\
149         t/Pmc/Undef.pbc                 \
150         t/Sanity/P6object.pbc           
151
152 #######################################################################
153 ##### Implicit rules here 
154 #######################################################################
155
156 # NOTE: Using "old sk00l" implicit rules here because Microsoft's Nmake supports those.
157 .SUFFIXES: 
158 .SUFFIXES: .pg .nqp .pira .pir .pbc .t.pbc .dump
159 .PRECIOUS: .pir
160
161 .pg.pira:
162         @echo "*** Compiling to PIRA: $<"
163         $(COMPILE_pg) --output=$@ $<
164
165 .nqp.pira: 
166         @echo "*** Compiling to PIRA: $<"
167         $(COMPILE_nqp) --target=pir --output=$@  $<
168
169 .pira.pir:
170         @echo "*** Strip annotations PIRA->PIR: $<"
171         $(STRIP_PIRA) $< > $@
172
173 .pir.pbc:
174         @echo "*** Compiling to PBC: $<"
175         $(COMPILE_pir) --output=$@ $<
176         
177 .pbc.t.pbc:
178         @echo "*** Linking to krt0: $<"
179         $(LINK) --output=$@  $(KRT0) $<
180         
181 .pbc.dump:
182         @echo "*** Dumping binary: $<"
183         $(PBC_DUMP) -d $< > $@
184         
185 #######################################################################
186 ##### Targets start here (asciibetical order)
187 #######################################################################
188
189 ALL: all
190
191 Makefile: build/Makefile.in
192         $(PERL) Configure.pl
193
194 all: build
195
196 build:  kakapo.cfg $(LIBRARY_PBCS)
197         @echo "Build FULL"
198
199 CHANGES:        src/package.nqp
200         $(CP) src/package.nqp $@
201
202 clean: testclean
203         $(RM_F) $(GENERATED_FILES)
204
205 distclean: realclean
206
207 # This is a listing of all targets, that are meant to be called by users
208 help:
209         @echo ""
210         @echo "The following targets are available for the user:"
211         @echo ""
212         @echo "  all:               build (This is the default target.)"
213         @echo "  build:             kakapo.cfg library/kakapo_*.pbc"
214         @echo ""
215         @echo "Testing:"
216         @echo "  test:              Run the test suite."
217         @echo "  testclean:         Clean up test results."
218         @echo ""
219         @echo "Cleaning:"
220         @echo "  clean:             Basic cleanup."
221         @echo "  realclean:         Also removes files generated by 'Configure.pl'"
222         @echo "  distclean:         Also removes also anything built, in theory"
223         @echo ""
224         @echo "Misc:"
225         @echo "  help:              Print this help message."
226         @echo ""
227
228 kakapo.cfg:
229 #IF(win32):     IF NOT EXIST kakapo.cfg $(CP) kakapo_cfg.tmpl kakapo.cfg
230 #IF(not(win32)):        if [ ! -f kakapo.cfg ]; then $(CP) kakapo_cfg.tmpl kakapo.cfg ; fi
231
232 library/kakapo_base.pir: $(LIBRARY_COMMON_DEPS) $(BASE_LIB_PIRS) src/Internals/Base.pir
233         $(CAT) src/Internals/kakapo_top.pir             \
234                 src/Internals/Base.pir                  \
235                 $(BASE_LIB_PIRS)                        \
236                 src/Internals/kakapo_bottom.pir \
237         > $@
238         
239 library/kakapo_full.pir: $(LIBRARY_COMMON_DEPS) $(FULL_LIB_PIRS) src/Internals/Full.pir
240         $(CAT) src/Internals/kakapo_top.pir             \
241                 src/Internals/Full.pir                  \
242                 $(FULL_LIB_PIRS)                \
243                 src/Internals/kakapo_bottom.pir \
244         > $@
245
246 library/krt0.pir: src/Internals/krt0_pir.tmpl
247         $(CP) src/Internals/krt0_pir.tmpl $@
248
249 install:
250         # install kakapo_base
251         $(CP) library/kakapo_base.pbc $(LIB_DIR)/library/kakapo_base.pbc
252         $(CHMOD) 0444 $(LIB_DIR)/library/kakapo_base.pbc
253         # install kakapo_full
254         $(CP) library/kakapo_full.pbc $(LIB_DIR)/library/kakapo_full.pbc
255         $(CHMOD) 0444 $(LIB_DIR)/library/kakapo_full.pbc
256         # install krt0
257         $(CP) library/krt0.pbc $(LIB_DIR)/library/krt0.pbc
258         $(CHMOD) 0444 $(LIB_DIR)/library/krt0.pbc
259         # install docs
260         -$(MKPATH) $(DOC_DIR)/kakapo
261         $(CP) $(DOC_FILES) $(DOC_DIR)/kakapo
262
263 realclean: clean 
264         $(RM_F) Makefile
265
266 release: build
267         -$(MKPATH) released
268         $(CP) library/kakapo_base.pir released/kakapo_base.pir
269         $(CP) library/kakapo_full.pir released/kakapo_full.pir
270         $(CP) library/krt0.pir released/krt0.pir
271         
272 src/Internals/kakapo_bottom.pir: src/Internals/kakapo_bottom_pir.tmpl
273         $(CP) src/Internals/kakapo_bottom_pir.tmpl $@
274         
275 src/Internals/kakapo_top.pir: src/Internals/kakapo_top_pir.tmpl
276         $(CP) src/Internals/kakapo_top_pir.tmpl $@
277
278 test: build $(ALL_TESTS)
279
280 test-bootstrap: build
281         $(PERL) t/harness.pl  t/bootstrap
282         
283 #----------------------------------------------------------------------
284 # Individual test-foo targets 
285 #----------------------------------------------------------------------
286
287 t-global: build t/Global.t.pbc
288         $(PARROT) $(PARROT_FLAGS) -Llibrary t/Global.t.pbc
289
290 t-matchers-boolean: build t/Matchers/Boolean.t.pbc
291         $(PARROT) $(PARROT_FLAGS) -Llibrary t/Matchers/Boolean.t.pbc
292
293 t-pmc-common: build t/Pmc/COMMON.t.pbc
294         $(PARROT) $(PARROT_FLAGS) -Llibrary t/Pmc/COMMON.t.pbc
295
296 t-pmc-float: build t/Pmc/Float.t.pbc   t/Pmc/COMMON.pbc
297         $(PARROT) $(PARROT_FLAGS) -Llibrary t/Pmc/Float.t.pbc
298         
299 t-pmc-sub: build t/Pmc/Sub.t.pbc   t/Pmc/COMMON.pbc
300         $(PARROT) $(PARROT_FLAGS) -Llibrary t/Pmc/Sub.t.pbc
301         
302 t-pmc-undef: build t/Pmc/Undef.t.pbc   t/Pmc/COMMON.pbc
303         $(PARROT) $(PARROT_FLAGS) -Llibrary t/Pmc/Undef.t.pbc
304         
305 t-unittest: build t/UnitTest/AllTests.t.pbc   t/UnitTest/Loader.pbc   t/UnitTest/Suite.pbc   t/UnitTest/Testcase.pbc
306         $(PARROT) $(PARROT_FLAGS) -Llibrary t/UnitTest/AllTests.t.pbc
307
308 t-unittest-loader: build t/UnitTest/Loader.t.pbc
309         $(PARROT) $(PARROT_FLAGS) -Llibrary t/UnitTest/Loader.t.pbc
310
311 t-unittest-suite: build t/UnitTest/Suite.t.pbc
312         $(PARROT) $(PARROT_FLAGS) -Llibrary t/UnitTest/Suite.t.pbc
313
314 t-unittest-testcase: build t/UnitTest/Testcase.t.pbc
315         $(PARROT) $(PARROT_FLAGS) -Llibrary t/UnitTest/Testcase.t.pbc
316
317 #----------------------------------------------------------------------
318 # Compile rules that support the test-foo targets, above.
319 #----------------------------------------------------------------------
320
321 t/Global.t.pbc: $(KRT0) t/Global.pbc
322         $(LINK) --output=$@  $(KRT0) t/Global.pbc > $@
323
324 t/Matchers/Boolean.t.pbc: $(KRT0) t/Matchers/Boolean.pbc
325         $(LINK) --output=$@  $(KRT0) t/Matchers/Boolean.pbc > $@
326
327 t/Pmc/COMMON.t.pbc: $(KRT0) t/Pmc/COMMON.pbc
328         $(LINK) --output=$@  $(KRT0) t/Pmc/COMMON.pbc > $@
329
330 t/Pmc/Float.t.pbc: $(KRT0) t/Pmc/Float.pbc
331         $(LINK) --output=$@  $(KRT0) t/Pmc/Float.pbc > $@
332
333 t/Pmc/Sub.t.pbc: $(KRT0) t/Pmc/Sub.pbc
334         $(LINK) --output=$@  $(KRT0) t/Pmc/Sub.pbc > $@
335
336 t/Pmc/Undef.t.pbc: $(KRT0) t/Pmc/Undef.pbc
337         $(LINK) --output=$@  $(KRT0) t/Pmc/Undef.pbc > $@
338
339 t/UnitTest/AllTests.t.pbc: $(KRT0) t/UnitTest/AllTests.pbc
340         $(LINK) --output=$@  $(KRT0) t/UnitTest/AllTests.pbc > $@
341
342 t/UnitTest/Loader.t.pbc: $(KRT0) t/UnitTest/Loader.pbc
343         $(LINK) --output=$@  $(KRT0) t/UnitTest/Loader.pbc > $@
344
345 t/UnitTest/Suite.t.pbc: $(KRT0) t/UnitTest/Suite.pbc
346         $(LINK) --output=$@  $(KRT0) t/UnitTest/Suite.pbc > $@
347
348 t/UnitTest/Testcase.t.pbc: $(KRT0) t/UnitTest/Testcase.pbc
349         $(LINK) --output=$@  $(KRT0) t/UnitTest/Testcase.pbc > $@
350
351 testclean:
352         $(RM_F) $(TEST_CLEANUPS)
353
354 uninstall:
355         $(RM_F) $(LIB_DIR)/library/kakapo_base.pbc
356         $(RM_F) $(LIB_DIR)/library/kakapo_full.pbc
357         $(RM_RF) $(DOC_DIR)/kakapo