ARMv5 doesn't actually use romfs_size.h
[barrelfish] / hake / symbolic_targets.mk
1 ##########################################################################
2 # Copyright (c) 2009-2014 ETH Zurich.
3 # All rights reserved.
4 #
5 # This file is distributed under the terms in the attached LICENSE file.
6 # If you do not find this file, copies can be found by writing to:
7 # ETH Zurich D-INFK, CAB F.78, Universitaetstr. 6, CH-8092 Zurich,
8 # Attn: Systems Group.
9 #
10 # This file defines symbolic (i.e. non-file) targets for the Makefile
11 # generated by Hake.  Edit this to add your own symbolic targets.
12 #
13 ##########################################################################
14
15 # Disable built-in implicit rules. GNU make adds environment's MAKEFLAGS too.
16 MAKEFLAGS=r
17
18 # Explicitly disable the flex and bison implicit rules
19 %.c : %.y
20
21 %.c : %.l
22
23 # Set default architecture to the first specified by Hake in generated Makefile.
24 ARCH ?= $(word 1, $(HAKE_ARCHS))
25
26 # Generic help text: this is the default target.
27 .PHONY: help
28 help:: 
29         @echo "------------------------------------------------------------------"
30         @echo "This is the 'help' target for the Barrelfish Makefile.  This Makefile"
31         @echo "has been generated by hake in the top-level directory of your build tree."
32         @echo "See the Hake documentation for more information."
33         @echo ""
34         @echo "This Makefile contains build targets for the following architectures:"
35         @echo ""                
36         @echo "$(HAKE_ARCHS)"
37         @echo ""        
38         @echo "To change configuration options, edit the Config.hs file in the hake"
39         @echo "subdirectory of this directory and run 'make rehake'."
40         @echo ""
41         @echo "To change the set of symbolic make targets available (for example, to"
42         @echo "build a different set of modules or architectures for your boot image),"
43         @echo "edit the local copy of the symbolic_targets.mk in this directory."
44         @echo ""        
45         @echo "Useful make targets:"
46         @echo " - <file>:           any file which can be built in the Barrelfish tree" 
47         @echo " - 'help':           show this help text"
48         @echo " - 'help-platforms': show the platforms (file collections) which can be built"
49         @echo " - 'help-boot':      show the boot sequences which can be initiated"
50         @echo " - 'clean':          remove most generated files" 
51         @echo " - 'realclean':      remove all generated files (clears the build tree)"
52         @echo " - 'rehake':         attempt to re-run hake"
53         @echo ""
54
55 # Print the list of defined platforms.  Most of these will be
56 # generated by Hake; this is just the preamble:
57 .PHONY: help-platforms
58 help-platforms:: 
59         @echo "------------------------------------------------------------------"
60         @echo "Platforms supported by this Makefile.  Use 'make <platform name>':"
61         @echo " (these are the platforms available with your architecture choices)"
62         @echo ""
63
64 # Print the list of defined boots.  Most of these will be
65 # generated by Hake; this is just the preamble:
66 .PHONY: help-boot
67 help-boot:: 
68         @echo "------------------------------------------------------------------"
69         @echo "Boot instructions supported by this Makefile.  Use 'make <boot name>':"
70         @echo " (these are the targets available with your architecture choices)"
71         @echo ""
72
73 # All binaries of the RCCE LU benchmark
74 BIN_RCCE_LU= \
75         sbin/rcce_lu_A1 \
76         sbin/rcce_lu_A2 \
77         sbin/rcce_lu_A4 \
78         sbin/rcce_lu_A8 \
79         sbin/rcce_lu_A16 \
80         sbin/rcce_lu_A32 \
81         sbin/rcce_lu_A64
82
83 # All binaries of the RCCE BT benchmark
84 BIN_RCCE_BT= \
85         sbin/rcce_bt_A1 \
86         sbin/rcce_bt_A4 \
87         sbin/rcce_bt_A9  \
88         sbin/rcce_bt_A16 \
89         sbin/rcce_bt_A25 \
90         sbin/rcce_bt_A36
91
92 # All test domains
93 TESTS_COMMON= \
94         sbin/hellotest \
95         sbin/idctest \
96         sbin/memtest \
97         sbin/schedtest \
98         sbin/testerror \
99         sbin/yield_test
100
101 TESTS_x86= \
102         sbin/tests/luatest \
103         sbin/tests/numatest
104
105 TESTS_x86_64= \
106         $(TESTS_x86) \
107         sbin/arrakis_hellotest \
108         sbin/ata_rw28_test \
109         sbin/bomp_cpu_bound \
110         sbin/bomp_cpu_bound_progress \
111         sbin/bomp_sync \
112         sbin/bomp_sync_progress \
113         sbin/bomp_test \
114         sbin/bulk_shm \
115         sbin/cryptotest \
116         sbin/fputest \
117         sbin/fread_test \
118         sbin/fscanf_test \
119         sbin/mdbtest_addr_zero \
120         sbin/mdbtest_range_query \
121         sbin/mem_affinity \
122         sbin/multihoptest \
123         sbin/net-test \
124         sbin/net_openport_test \
125         sbin/perfmontest \
126         sbin/phoenix_kmeans \
127         sbin/socketpipetest \
128         sbin/spantest \
129         sbin/spin \
130         sbin/testconcurrent \
131         sbin/testdesc \
132         sbin/testdesc-child \
133         sbin/tests/cxxtest \
134         sbin/tests/dma_test \
135         sbin/tests/xphi_nameservice_test \
136         sbin/thcidctest \
137         sbin/thcminitest \
138         sbin/thctest \
139         sbin/timer_test \
140         sbin/tlstest \
141         sbin/tweedtest \
142         sbin/xcorecap \
143         sbin/xcorecapserv
144
145 TESTS_k1om= \
146         $(TESTS_x86) \
147         sbin/tests/dma_test \
148         sbin/tests/xeon_phi_inter \
149         sbin/tests/xeon_phi_test \
150         sbin/tests/xphi_nameservice_test
151
152 # All benchmark domains
153 BENCH_COMMON= \
154         sbin/channel_cost_bench \
155         sbin/flounder_stubs_buffer_bench \
156         sbin/flounder_stubs_empty_bench \
157         sbin/flounder_stubs_payload_bench \
158         sbin/xcorecapbench
159
160 BENCH_x86= \
161         sbin/multihop_latency_bench \
162         sbin/net_openport_test \
163         sbin/perfmontest \
164         sbin/thc_v_flounder_empty \
165         sbin/timer_test \
166         sbin/udp_throughput \
167         sbin/ump_exchange \
168         sbin/ump_latency \
169         sbin/ump_latency_cache \
170         sbin/ump_receive \
171         sbin/ump_send \
172         sbin/ump_throughput
173
174 BENCH_x86_64= \
175         $(BENCH_x86) \
176         $(BIN_RCCE_BT) \
177         $(BIN_RCCE_LU) \
178         sbin/ahci_bench \
179         sbin/apicdrift_bench \
180         sbin/benchmarks/bomp_mm \
181         sbin/benchmarks/dma_bench \
182         sbin/benchmarks/xomp_share \
183         sbin/benchmarks/xomp_spawn \
184         sbin/benchmarks/xomp_work \
185         sbin/benchmarks/xphi_ump_bench \
186         sbin/bomp_benchmark_cg \
187         sbin/bomp_benchmark_ft \
188         sbin/bomp_benchmark_is \
189         sbin/bulk_transfer_passthrough \
190         sbin/bulkbench \
191         sbin/bulkbench_micro_echo \
192         sbin/bulkbench_micro_rtt \
193         sbin/bulkbench_micro_throughput \
194         sbin/elb_app \
195         sbin/elb_app_tcp \
196         sbin/lrpc_bench \
197         sbin/mdb_bench \
198         sbin/mdb_bench_old \
199         sbin/netthroughput \
200         sbin/phases_bench \
201         sbin/phases_scale_bench \
202         sbin/placement_bench \
203         sbin/rcce_pingpong \
204         sbin/shared_mem_clock_bench \
205         sbin/tsc_bench
206
207 BENCH_k1om=\
208         $(BENCH_x86) \
209         sbin/benchmarks/bomp_mm \
210         sbin/benchmarks/dma_bench \
211         sbin/benchmarks/xomp_share \
212         sbin/benchmarks/xomp_spawn \
213         sbin/benchmarks/xomp_work \
214         sbin/benchmarks/xphi_ump_bench \
215         sbin/benchmarks/xphi_xump_bench 
216
217 # Default list of modules to build/install for all enabled architectures
218 MODULES_COMMON= \
219         sbin/init \
220         sbin/chips \
221         sbin/skb \
222         sbin/spawnd \
223         sbin/startd \
224         sbin/mem_serv \
225         sbin/monitor \
226         sbin/ramfsd
227
228 # List of modules that are arch-independent and always built
229 MODULES_GENERIC= \
230         skb_ramfs.cpio.gz \
231         sshd_ramfs.cpio.gz
232
233 # x86_64-specific modules to build by default
234 # this should shrink as targets are ported and move into the generic list above
235 MODULES_x86_64= \
236         sbin/elver \
237         sbin/cpu \
238         sbin/arrakismon \
239         sbin/bench \
240         sbin/bfscope \
241         sbin/boot_perfmon \
242         sbin/datagatherer \
243         sbin/ahcid \
244         sbin/e1000n \
245         sbin/NGD_mng \
246         sbin/e10k \
247         sbin/sfxge \
248         sbin/e10k_queue \
249         sbin/rtl8029 \
250         sbin/netd \
251         sbin/echoserver \
252         sbin/fbdemo \
253         sbin/fish \
254         sbin/hpet \
255         sbin/lpc_kbd \
256         sbin/lpc_timer \
257         sbin/mem_serv_dist \
258         sbin/lo_queue \
259         sbin/pci \
260         sbin/acpi \
261         sbin/kaluga \
262         sbin/serial \
263         sbin/angler \
264         sbin/sshd \
265         sbin/lshw \
266         sbin/sif \
267         sbin/slideshow \
268         sbin/vbe \
269         sbin/vmkitmon \
270         sbin/vnode_map_test \
271         sbin/webserver \
272         sbin/routing_setup \
273         sbin/bcached \
274         sbin/xeon_phi_mgr \
275         sbin/xeon_phi \
276         sbin/dma_mgr \
277         sbin/ioat_dma \
278         sbin/virtio_blk_host \
279         sbin/virtio_blk \
280         sbin/block_server \
281         sbin/block_server_client \
282         sbin/bs_user \
283         sbin/bulk_shm \
284         sbin/corectrl \
285         sbin/megaraid \
286         lib/libmegaraid.a
287
288 MODULES_k1om= \
289         sbin/weever \
290         sbin/cpu \
291         sbin/xeon_phi \
292         sbin/corectrl \
293         xeon_phi_multiboot
294
295 # the following are broken in the newidc system
296 MODULES_x86_64_broken= \
297         sbin/barriers \
298         sbin/ipi_bench \
299         sbin/ring_barriers \
300         sbin/ssf_bcast \
301         sbin/lamport_bcast
302
303 # x86-32-specific module to build by default
304 MODULES_x86_32=\
305         sbin/cpu \
306         sbin/lpc_kbd \
307         sbin/serial \
308         $(BIN_RCCE_BT) \
309         $(BIN_RCCE_LU) \
310         sbin/rcce_pingpong \
311         sbin/bench \
312         sbin/fbdemo \
313         sbin/fish \
314         sbin/fputest \
315         sbin/pci \
316         sbin/acpi \
317         sbin/kaluga \
318         sbin/slideshow \
319         sbin/thc_v_flounder_empty \
320         sbin/thcidctest \
321         sbin/thcminitest \
322         sbin/thctest \
323         sbin/vbe \
324         sbin/mem_serv_dist \
325         sbin/routing_setup \
326         sbin/multihoptest \
327         sbin/multihop_latency_bench \
328         sbin/angler \
329         sbin/sshd \
330         sbin/corectrl
331
332 # ARM-specific modules to build by default
333 MODULES_armv5=\
334         sbin/cpu \
335         sbin/cpu.bin
336
337 # XScale-specific modules to build by default
338 MODULES_xscale=\
339         sbin/cpu_ixp2800 \
340         sbin/cpu_ixp2800.bin
341
342 # ARMv7-specific modules to build by default
343 # XXX: figure out armv7 default
344 MODULES_armv7=\
345         sbin/cpu_omap44xx \
346         sbin/usb_manager \
347         sbin/usb_keyboard \
348         sbin/kaluga \
349         sbin/fish \
350         sbin/corectrl
351
352 # construct list of all modules to be built (arch-specific and common for each arch)
353 MODULES=$(foreach a,$(HAKE_ARCHS),$(foreach m,$(MODULES_$(a)),$(a)/$(m)) \
354                                   $(foreach m,$(MODULES_COMMON),$(a)/$(m))) \
355                 $(foreach a,$(HAKE_ARCHS),$(foreach m,$(TESTS_$(a)),$(a)/$(m)) \
356                                           $(foreach m,$(TESTS_COMMON),$(a)/$(m))) \
357                 $(foreach a,$(HAKE_ARCHS),$(foreach m,$(BENCH_$(a)),$(a)/$(m)) \
358                                   $(foreach m,$(BENCH_COMMON),$(a)/$(m))) \
359         $(MODULES_GENERIC)
360
361 # XXX: this should be overridden in some local settings file?
362 INSTALL_PREFIX ?= /home/netos/tftpboot/$(USER)
363
364 # upload Xeon Phi images to nfs share (leave blank to cancel)
365 BARRELFISH_NFS_DIR ?="emmentaler.ethz.ch:/mnt/local/nfs/barrelfish/xeon_phi"
366
367 # Only install a binary if it doesn't exist in INSTALL_PREFIX or the
368 # modification timestamp differs.
369
370 install: $(MODULES)
371         @echo ""; \
372         echo "Installing modules..." ; \
373         for m in ${MODULES}; do \
374           if [ ! -f ${INSTALL_PREFIX}/$$m ] || \
375               [ $$(stat -c%Y $$m) -ne $$(stat -c%Y ${INSTALL_PREFIX}/$$m) ]; then \
376                  do_update=1; \
377                  echo "  > Installing $$m" ; \
378                  mkdir -p ${INSTALL_PREFIX}/$$(dirname $$m); \
379                  install -p $$m ${INSTALL_PREFIX}/$$m; \
380           fi; \
381         done; \
382         if [ ! $$do_update ]; then \
383                 echo "  > All up to date" ; \
384         fi; \
385         echo ""; \
386         echo "done." ; \
387
388 .PHONY : install
389
390
391 install_headers:
392         echo "Installing header files..." ; \
393         for a in ${HAKE_ARCHS}; do \
394           mkdir -p "$$a" ; \
395           cp -rv "${SRCDIR}/include" "$$a/" ; \
396         done; \
397         echo "done." ; \
398
399 .PHONY : install_headers
400
401 # Source indexing targets
402 cscope.files:
403         find $(abspath .) $(abspath $(SRCDIR)) -name '*.[ch]' -type f -print | sort | uniq > $@
404 .PHONY: cscope.files
405
406 cscope.out: cscope.files
407         cscope -k -b -i$<
408
409 TAGS: cscope.files
410         etags - < $< # for emacs
411         cat $< | xargs ctags -o TAGS_VI # for vim
412
413 # force rebuild of the Makefile
414 rehake: ./hake/hake
415         ./hake/hake --source-dir $(SRCDIR) --install-dir . \
416                     --output-filename Makefile
417 .PHONY: rehake
418
419 clean::
420         $(RM) -r tools docs $(HAKE_ARCHS)
421 .PHONY: clean
422
423 realclean:: clean
424         $(RM) hake/*.o hake/*.hi hake/hake Hakefiles.hs cscope.*
425 .PHONY: realclean
426
427 # Scheduler simulator test cases
428 RUNTIME = 1000
429 TESTS = $(addsuffix .txt,$(basename $(wildcard $(SRCDIR)/tools/schedsim/*.cfg)))
430
431 schedsim-regen: $(TESTS)
432
433 $(TESTS): %.txt: %.cfg tools/bin/simulator
434         tools/bin/simulator $< $(RUNTIME) > $@
435
436 schedsim-check: $(wildcard $(SRCDIR)/tools/schedsim/*.cfg)
437         for f in $^; do tools/bin/simulator $$f $(RUNTIME) | diff -q - `dirname $$f`/`basename $$f .cfg`.txt || exit 1; done
438
439 ######################################################################
440 #
441 # Documentation
442 #
443 ######################################################################
444
445 # pretend to be CMake's CONFIGURE_FILE command
446 # TODO: clean this up
447 Doxyfile: $(SRCDIR)/doc/Doxyfile.cmake
448         sed -r 's#@CMAKE_SOURCE_DIR@#$(SRCDIR)#g' $< > $@
449
450 doxygen: Doxyfile
451         doxygen $<
452 .PHONY: doxygen
453
454 ################################################################################
455 #
456 # Backwards compatibility: remove soon
457
458 ################################################################################
459
460 all: 
461         @echo "Type 'make help' for information on available targets."
462 .PHONY : all
463
464 sim: simulate
465 .PHONY : sim
466
467 simulate: 
468         @echo "The targets 'sim' and 'simulate' have removed."
469         @echo "Type 'make help-boot' for a list of simulation targets."
470 .PHONY : simulate