HOME = /cs/musser/public.html/gsd GC_DIR = $(HOME)/gc6.6 #BOOST_ROOT = $(HOME)/boost_1_33_1 BOOST_ROOT = /software/boost-1.32.0-0/pkg SWIG_DIR = $(HOME)/swig-1.3.29 # MLC = ocamlc # MLC_OUT = cmo # ML_LIB = cma # MLC_FLAGS = -g MLC = ocamlopt MLC_OUT = cmx ML_LIB = cmxa MLC_FLAGS = LEX = ocamllex YACC = ocamlyacc LEXSOURCES = lexer.mll YACCSOURCES = parser.mly MLHEADERS = parser.mli LSOURCES = $(LEXSOURCES:.mll=.ml) YSOURCES = $(YACCSOURCES:.mly=.ml) MLSOURCES = list_set.ml support.ml \ union_find.ml \ prim.ml \ cpp_ast.ml \ g_ast.ml \ $(YSOURCES) $(LSOURCES) g2str.ml \ parser_misc.ml \ lower_fun.ml \ cpp2str.ml \ congruence_closure.ml \ type_check.ml \ g.ml #lower_poly.ml \ # lower_lambda.ml fwd_decl.ml topo_sort.ml lower_misc.ml g.ml MLOBJECTS = $(MLSOURCES:.ml=.$(MLC_OUT)) MLHDROBJ = $(MLHEADERS:.mli=.cmi) STL_TESTS = \ test/advance0.g \ test/distance0.g \ test/for_each.g \ test/find.g \ test/find_if.g \ test/adjacent_find.g \ test/count.g \ test/find_subsequence.g \ test/find_last_subsequence.g \ test/find_last_subsequence1.g \ test/find_n_consecutive.g \ test/mismatch.g \ test/copy.g \ test/swap_ranges.g \ test/reverse.g \ test/rotate.g \ test/inplace_merge.g \ \ test/slist0.g \ test/vector0.g\ test/vector1.g TESTS = test/add.g \ test/mult.g \ test/ops.g \ test/var.g \ test/var1.g \ test/var2.g \ test/var3.g \ test/var4.g \ test/pass_by_value.g \ test/destructor.g \ \ test/destructor1.g \ test/class0.g \ test/poly_class2.g \ test/poly_fun.g \ test/poly_fun2.g \ test/poly_fun3.g \ test/poly_fun4.g \ test/lambda.g \ test/struct0.g \ test/struct1.g \ test/struct2.g \ \ test/struct.g \ test/fun.g \ test/fun2.g \ test/funptr.g \ test/hi_fun.g \ test/hi_fun2.g \ test/poly_hi_fun.g \ test/poly_hi_fun2.g \ test/poly_hi_fun3.g \ test/poly_hi_fun4.g \ test/poly_hi_fun5.g \ test/poly_hi_fun6.g \ \ test/poly_copy.g \ test/factorial.g \ test/even_odd.g \ test/cast.g \ test/string0.g \ test/string1.g \ test/hello_world.g \ test/string_cvt.g \ test/init_rvalue.g \ test/overload0.g \ test/overload1.g \ \ test/overload2.g \ test/apply_global.g \ test/many_constr.g \ test/union0.g \ test/union1.g \ test/union2.g \ test/union3.g \ test/union4.g \ test/if-expr.g \ test/operator0.g \ \ test/operator1.g \ test/array0.g \ test/array1.g \ test/array2.g \ test/poly_struct.g \ test/poly_struct2.g \ test/poly_struct3.g \ test/poly_struct4.g \ test/poly_struct5.g \ test/poly_struct6.g \ test/poly_fun_struct.g \ \ test/linked_list.g \ test/linked_list2.g \ test/poly_union0.g \ test/model0.g \ test/model1.g \ test/concept0.g \ test/concept0b.g \ test/isalpha.g \ test/atoi.g \ test/str.g \ \ test/refinement0.g \ test/destructor2.g \ test/refinement1.g \ test/refinement2.g \ test/same-type.g \ test/assoc_type0.g \ test/assoc_type1.g \ test/accumulate.g \ test/poly_constr.g \ test/poly_ptr_fun.g \ \ test/model2.g \ test/poly_class.g \ test/model3.g \ test/model4.g \ test/model7.g \ test/assign0.g \ test/assign1.g \ test/assign2.g \ test/assign3.g \ test/assign4.g \ test/delete0.g \ \ test/delete1.g \ test/placement_new.g \ test/default_concept_op0.g \ test/apples.g \ test/implicit_inst1.g \ test/implicit_inst2.g \ test/first_class_poly1.g \ test/concept_add.g \ test/power.g \ \ ${STL_TESTS}\ NON_COMPILING_TESTS = \ test/placement_new0.g \ test/placement_new2.g \ EXTRA_TESTS = \ test/explicit_inst.g \ test/implicit_inst3.g \ test/model5.g \ test/model6.g \ test/stable_sort_error.g\ # suppose to fail BGL = bgl/property_map_concepts.g \ bgl/graph_concepts.g \ bgl/queue_concepts.g \ bgl/simple_adjacency_list.g \ bgl/adjacency_list_advanced.g \ bgl/adjacency_list_advanced.g \ bgl/queue.g \ bgl/breadth_first_search.g \ bgl/dijkstra.g \ bgl/vector_as_graph.g \ BGL_TESTS = \ bgl/adjacency_list_test.g \ bgl/queue_test.g \ bgl/breadth_first_search_test.g \ bgl/dijkstra_test.g \ STL = stl/basic_concepts.g \ stl/iterator_concepts.g \ stl/pair.g \ stl/basic_models.g \ stl/iterator_functions.g \ stl/basic_algo_impl.g \ stl/basic_algorithms.g \ stl/iterator_models.g \ stl/reverse_iterator.g \ stl/sequence_queries.g \ stl/sequence_mutation.g \ stl/sorting.g \ stl/slist.g \ stl/list.g \ stl/numeric.g \ stl/vector.g \ FUTURE_TESTS = SHOULD_FAIL = test/assoc_type2.g test/return_copy.g .SUFFIXES: .ml .mll .mly .mli .cmo .cmx .cmi .g .c .cpp .o .exe .prof .ok TESTS_CPP = $(TESTS:.g=.cpp) TESTS_OBJ = $(TESTS_CPP:.cpp=.o) TESTS_EXE = $(TESTS_OBJ:.o=.exe) TESTS_OK = $(TESTS_EXE:.exe=.ok) STL_TESTS_CPP = $(STL_TESTS:.g=.cpp) STL_TESTS_OBJ = $(STL_TESTS_CPP:.cpp=.o) STL_TESTS_EXE = $(STL_TESTS_OBJ:.o=.exe) STL_TESTS_OK = $(STL_TESTS_EXE:.exe=.ok) STL_CPP = $(STL:.g=.cpp) STL_OBJ = $(STL_CPP:.cpp=.o) BGL_CPP = $(BGL:.g=.cpp) BGL_OBJ = $(BGL_CPP:.cpp=.o) CC = gcc3 CXX = g++3 CFLAGS = -I$(GC_DIR)/include -g -DDEBUG -DGC_DEBUG CPPFLAGS = -I./ -I$(BOOST_ROOT) -I$(GC_DIR)/include -g # -DDEBUG -DGC_DEBUG SRC_PROF = $(MLSOURCES:.ml=.prof) G_INCLUDES = -I ./stl -I ./bgl .g.cpp: m4 -s $*.g > $*.tmp ./g ${G_INCLUDES} --swig $(SWIG_DIR) $*.tmp # vim -e -s -u $(HOME)/.vimrc '+normal 1G=G' '+w!' '+q' $*.cpp .ml.$(MLC_OUT): $(MLC) $(MLC_FLAGS) -c $< .mli.cmi: $(MLC) -c $< .mll.ml: $(LEX) $< .mly.ml: $(YACC) -v $< .mly.mli: $(YACC) -v $< #.c.o: # $(CC) $(CFLAGS) -c $< -o $*.o .cpp.o: $(CXX) $(CPPFLAGS) -c $< -o $*.o %.exe: %.o libgslib.a libgc.a $(CXX) -L. $< -o $@ -lgslib -lgc .exe.ok: if ( $*.exe ); then touch $*.ok; else touch $*.bad; false; fi .ml.prof: ocamlprof $< > $*.prof default: g g_stdlib.o stl tests OCAMLLIB = `$(MLC) -where` test_union_find: test_union_find.ml $(MLC) $(MLC_FLAGS) -g -o test_union_find $(OCAMLLIB)/unix.$(ML_LIB) $(MLOBJECTS) g: $(MLOBJECTS) $(MLC) $(MLC_FLAGS) -o g $(OCAMLLIB)/unix.$(ML_LIB) $(OCAMLLIB)/str.$(ML_LIB) $(MLOBJECTS) lexer.cmx: lexer.ml parser.cmi: parser.mli parser.$(MLC_OUT): support.$(MLC_OUT) parser.cmi parser.ml prof: $(SRC_PROF) libgc.a: $(GC_DIR)/gc.a cp $< $@ ranlib $@ libgslib.a: g_stdlib.o $(STL_OBJ) ar -r $@ $^ ranlib $@ parse_tests: $(TESTS_CPP) #$(STL_OBJ) tests: g g_stdlib.o g_stdio.o $(TESTS_OK) stltests: g g_stdlib.o g_stdio.o $(STL_TESTS_OK) stl: g $(STL_OBJ) bgl: g $(BGL_OBJ) rmtests: rm -rf $(TESTS_CPP) $(TESTS_OBJ) $(TESTS_EXE) clean: rm -rf g *.o *.cmo *.cmx *.mli d *.cmi parser.ml lexer.ml *~ *.output tmp.i tmp_wrap.g stlclean: rm -rf $(STL_CPP) $(STL_OBJ) stl/*.tmp stl/*.fwd stl/*.cpp bglclean: rm -rf $(BGL_CPP) $(BGL_OBJ) bgl/*.tmp bgl/*.fwd bgl/*.o bgl/*.cpp bgl/*.exe testclean: rm -rf $(TESTS_CPP) $(TESTS_OBJ) $(TESTS_EXE) $(TESTS_OK) test/*.tmp test/*.bad test/*.fwd stltestclean: rm -rf $(STL_TESTS_CPP) $(STL_TESTS_OBJ) $(STL_TESTS_EXE) $(STL_TESTS_OK) test/*.tmp test/*.bad test/*.fwd squeaky: clean stlclean bglclean testclean bgl/queue_test.exe: bgl/queue_test.o bgl/queue.o g_stdlib.o $(CXX) g_stdlib.o $(STL_OBJ) $(GC_DIR)/gc.a bgl/queue.o bgl/queue_test.o $< -o $*.exe bgl/adjacency_list_test.exe: bgl/adjacency_list_test.o g_stdlib.o $(STL_OBJ) $(BGL_OBJ) $(CXX) g_stdlib.o $(STL_OBJ) $(BGL_OBJ) $(GC_DIR)/gc.a bgl/adjacency_list_test.o -o $*.exe bgl/breadth_first_search_test.exe: bgl/breadth_first_search_test.o $(STL_OBJ) $(BGL_OBJ) g_stdlib.o $(CXX) g_stdlib.o $(STL_OBJ) $(BGL_OBJ) $(GC_DIR)/gc.a bgl/breadth_first_search_test.o -o $*.exe