# Copyright 1998-2003 Simon Wright # This package is free software; you can redistribute it and/or # modify it under terms of the GNU General Public License as # published by the Free Software Foundation; either version 2, or # (at your option) any later version. This package is distributed in # the hope that it will be useful, but WITHOUT ANY WARRANTY; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. See the GNU General Public License for more # details. You should have received a copy of the GNU General Public # License distributed with this package; see file COPYING. If not, # write to the Free Software Foundation, 59 Temple Place - Suite # 330, Boston, MA 02111-1307, USA. # $Id: makefile,v 1.40.2.14 2003/02/14 21:51:38 simon Exp $ # (GNU) Makefile for Booch Components. all:: ##################### # Default build rule %: %.adb gnatmake $(GNATMAKE_FLAGS) $@ ######## # Tests #GCOV_FLAGS = -ftest-coverage -fprofile-arcs GNATMAKE_FLAGS = -O2 -g -gnatqQafy -gnatwaL -j2 -m -k GNATMAKE_FLAGS += $(GCOV_FLAGS) ADA_SOURCE = \ bc.ad[bs] \ bc-containers.ad[bs] \ bc-copy.ad[bs] \ bc-filter.ad[bs] ADA_SOURCE += \ bc-support-bounded.ad[bs] \ bc-support-bounded_hash_tables.ad[bs] \ bc-support-dynamic.ad[bs] \ bc-support-exceptions.ad[bs] \ bc-support-hash_tables.ad[bs] \ bc-support-managed_storage.ad[bs] \ bc-support-memory_streams.ad[bs] \ bc-support-standard_storage.ads \ bc-support-synchronization.ad[bs] \ bc-support-unbounded.ad[bs] \ bc-support-unmanaged.ad[bs] \ bc-support-unmanaged_storage.ad[bs] \ bc-support.ad[bs] test: testable for t in $(TESTABLE); do \ echo running $$t; \ ./$$t 2>&1; \ done clean:: rm -f $(TESTABLE) TEST_SRC = assertions.ad[bs] global_heap.ad[bs] TESTABLE += avl_test TEST_SRC += avl_test.ad[bs] avl_test_support.ad[bs] avl_test: force ADA_SOURCE += \ bc-containers-bags-bounded.ad[bs] \ bc-containers-bags-dynamic.ad[bs] \ bc-containers-bags-unbounded.ad[bs] \ bc-containers-bags-unmanaged.ad[bs] \ bc-containers-bags.ad[bs] TESTABLE += bag_test TEST_SRC += bag_test.ad[bs] bag_test_support.ad[bs] bag_test: force ADA_SOURCE += \ bc-containers-collections-bounded.ad[bs] \ bc-containers-collections-dynamic.ad[bs] \ bc-containers-collections-unbounded.ad[bs] \ bc-containers-collections-unmanaged.ad[bs] \ bc-containers-collections.ad[bs] TESTABLE += collection_test TEST_SRC += collection_test.ad[bs] collection_test_support.ad[bs] collection_test: force ADA_SOURCE += \ bc-containers-deques-bounded.ad[bs] \ bc-containers-deques-dynamic.ad[bs] \ bc-containers-deques-unbounded.ad[bs] \ bc-containers-deques-unmanaged.ad[bs] \ bc-containers-deques.ad[bs] TESTABLE += deque_test TEST_SRC += deque_test.ad[bs] deque_test_support.ad[bs] deque_test: force ADA_SOURCE += \ bc-graphs.ad[bs] \ bc-graphs-directed.ad[bs] \ bc-graphs-undirected.ad[bs] TESTABLE += graph_test TEST_SRC += graph_test.ad[bs] graph_test_support.ad[bs] graph_test: force ADA_SOURCE += \ bc-containers-lists-double.ad[bs] \ bc-containers-lists-single.ad[bs] \ bc-containers-lists.ad[bs] TESTABLE += list_test TEST_SRC += list_test.ad[bs] list_test_support.ad[bs] list_test: force ADA_SOURCE += \ bc-containers-maps-bounded.ad[bs] \ bc-containers-maps-dynamic.ad[bs] \ bc-containers-maps-unbounded.ad[bs] \ bc-containers-maps-unmanaged.ad[bs] \ bc-containers-maps.ad[bs] TESTABLE += map_test TEST_SRC += map_test.ad[bs] map_test_support.ad[bs] chunks.ad[bs] map_test: force ADA_SOURCE += \ bc-containers-collections-ordered-bounded.ad[bs] \ bc-containers-collections-ordered-dynamic.ad[bs] \ bc-containers-collections-ordered-unbounded.ad[bs] \ bc-containers-collections-ordered-unmanaged.ad[bs] \ bc-containers-collections-ordered.ad[bs] TESTABLE += ordered_collection_test TEST_SRC += ordered_collection_test.ad[bs] ordered_collection_test_support.ad[bs] ordered_collection_test: force ADA_SOURCE += \ bc-containers-queues-ordered.ad[bs] \ bc-containers-queues-ordered-bounded.ad[bs] \ bc-containers-queues-ordered-dynamic.ad[bs] \ bc-containers-queues-ordered-unbounded.ad[bs] \ bc-containers-queues-ordered-unmanaged.ad[bs] TESTABLE += ordered_queue_test TEST_SRC += ordered_queue_test.ad[bs] ordered_queue_test_support.ad[bs] ordered_queue_test: force ADA_SOURCE += \ bc-containers-queues-bounded.ad[bs] \ bc-containers-queues-dynamic.ad[bs] \ bc-containers-queues-unbounded.ad[bs] \ bc-containers-queues-unmanaged.ad[bs] \ bc-containers-queues.ad[bs] TESTABLE += queue_test TEST_SRC += queue_test.ad[bs] queue_test_support.ad[bs] queue_test: force ADA_SOURCE += \ bc-containers-rings.ad[bs] \ bc-containers-rings-bounded.ad[bs] \ bc-containers-rings-dynamic.ad[bs] \ bc-containers-rings-unbounded.ad[bs] \ bc-containers-rings-unmanaged.ad[bs] TESTABLE += ring_test TEST_SRC += ring_test.ad[bs] ring_test_support.ad[bs] ring_test: force ADA_SOURCE += \ bc-containers-sets-bounded.ad[bs] \ bc-containers-sets-dynamic.ad[bs] \ bc-containers-sets-unbounded.ad[bs] \ bc-containers-sets-unmanaged.ad[bs] \ bc-containers-sets.ad[bs] TESTABLE += set_test TEST_SRC += set_test.ad[bs] set_test_support.ad[bs] set_test: force ADA_SOURCE += \ bc-smart.ad[bs] bc-support-smart_pointers.ad[bs] TESTABLE += smart_test TEST_SRC += smart_test.ad[bs] smart_test_support.ad[bs] smart_test: force ADA_SOURCE += \ bc-containers-quicksort.ad[bs] \ bc-containers-shellsort.ad[bs] TESTABLE += sort_test TEST_SRC += sort_test.adb sort_test: force ADA_SOURCE += \ bc-containers-stacks-bounded.ad[bs] \ bc-containers-stacks-dynamic.ad[bs] \ bc-containers-stacks-unbounded.ad[bs] \ bc-containers-stacks-unmanaged.ad[bs] \ bc-containers-stacks.ad[bs] TESTABLE += stack_test TEST_SRC += stack_test.ad[bs] stack_test_support.ad[bs] stack_test: force TESTABLE += stream_test TEST_SRC += stream_test.ad[bs] stream_test_support.ad[bs] \ stream_test_support-tc[bdu].ad[bs] stream_test: force ADA_SOURCE += \ bc-containers-trees-avl.ad[bs] \ bc-containers-trees-avl-print.ad[bs] \ bc-containers-trees-avl-validate.ad[bs] \ bc-containers-trees-binary.ad[bs] \ bc-containers-trees-binary-in_order.ad[bs] \ bc-containers-trees-binary-post_order.ad[bs] \ bc-containers-trees-binary-pre_order.ad[bs] \ bc-containers-trees-multiway.ad[bs] \ bc-containers-trees-multiway-post_order.ad[bs] \ bc-containers-trees-multiway-pre_order.ad[bs] \ bc-containers-trees.ad[bs] TESTABLE += tree_test TEST_SRC += tree_test.ad[bs] tree_test_support.ad[bs] tree_test: force testable: $(TESTABLE) ######## # Demos DEMO_SRC = global_heap.ad[bs] DEMOS += ada_units DEMO_SRC += ada_units.ad[bs] ada_unit_support.ad[bs] ada_units: force DEMOS += configuration_demo DEMO_SRC += configuration_demo.ad[bs] configuration_demo_support.ad[bs] configuration_demo: force DEMOS += lists_traversal DEMO_SRC += lists_for_traversal.ad[bs] lists_traversal.ad[bs] lists_traversal: force DEMOS += ordering_test DEMO_SRC += ordering_support.ad[bs] ordering_test.ad[bs] ordering_test: force DEMOS += storage DEMO_SRC += storage.ad[bs] storage: force DEMOS += test_synchronization DEMO_SRC += test_synchronization.ad[bs] test_synchronization: force DEMOS += time_lists DEMO_SRC += time_lists.ad[bs] lists_for_timing.ad[bs] time_lists: force DEMOS += time_queues DEMO_SRC += time_queues.ad[bs] queues_for_timing.ad[bs] time_queues: force DEMOS += unmanaged_storage DEMO_SRC += unmanaged_storage.ad[bs] unmanaged_storage: force DEMOS += user_map DEMO_SRC += user_map.ad[bs] user_map_support.ad[bs] user_map: force DEMOS += user_set DEMO_SRC += user_set.ad[bs] user_set_support.ad[bs] user_set: force DEMOS += word_count DEMO_SRC += bcwords.ada word_count: bcwords.ada gnatchop -r -w bcwords.ada gnatmake $(GNATMAKE_FLAGS) $@ demos: $(DEMOS) clean:: rm -f $(DEMOS) ############################ # Distribution construction # Create the current date, in the form yyyymmdd. This certainly works in Linux. DATE = $(shell date +%Y%m%d)$(SUBRELEASE) DISTRIBUTION_FILES = \ bc-$(DATE).tgz \ bc-$(DATE).zip \ bc-$(DATE).src \ bc-html-$(DATE).zip \ COPYING dist: $(DISTRIBUTION_FILES) -@rm -rf distribution mkdir distribution (cd distribution; \ ln -s $(HOME)/exported-booch-components download; \ ln -s $(HOME)/wavefront-booch-components wavefront; \ ln -s ../contrib) cp -p $(DISTRIBUTION_FILES) distribution/wavefront/ cp -p README distribution/download/ cp -p WAVEFRONT-README distribution/wavefront/README cp -p COPYING html/*.{html,gif,jpg,png} html/x.ada \ html/coldframe-hash.{tgz,zip} distribution/ SOURCE = makefile COPYING README $(ADA_SOURCE) bc-$(DATE): force -rm -rf $@ mkdir $@ tar cf - $(SOURCE) | (cd $@; tar xvf -) mkdir $@/test cp makefile-test $@/test/makefile tar cf - $(TEST_SRC) | (cd $@/test; tar xvf -) mkdir $@/demo cp makefile-demo $@/demo/makefile tar cf - $(DEMO_SRC) | (cd $@/demo; tar xvf -) bc-$(DATE).tgz: bc-$(DATE) tar zcvf $@ $ $@ bc-html-$(DATE).zip: force (cd html; zip ../$@ x.ada *.gif *.jpg *.html coldframe-hash.{tgz,zip}) .PHONY: force