+-include config.mak
-DIRS = adt common debug ident ir tr tv
-INCDIRS = $(DIRS:%=-I../ir/%) -I../include
+FIRM_CFLAGS ?= `pkg-config --cflags libfirm`
+FIRM_LIBS ?= `pkg-config --libs libfirm`
-LIBDIRS=-L.. -L/usr/public/lib/gmp/
-LIBS=-lfirm -lgmp -lm
+CC ?= gcc
-%.o: %.c
- gcc -c $(INCDIRS) $<
+CPPFLAGS += $(FIRM_CFLAGS)
+CFLAGS += -Wall -W -Wstrict-prototypes -Wmissing-prototypes -Werror -pedantic
+CFLAGS += -O0 -g3
+LFLAGS += $(FIRM_LIBS)
-all: empty const_eval_example \
- if_example if_else_example if_while_example cond_example \
- call_str_example memory_example array-stack_example \
- array-heap_example oo_program_example irr_cf_example \
- irr_loop_example dead_block_example
+SOURCES = $(wildcard *.c)
+GOALS = $(basename $(SOURCES))
-clean:
- rm -f \
- empty.o empty \
- const_eval_example.o const_eval_example \
- if_example.o if_example \
- if_else_example.o if_else_example \
- if_while_example.o if_while_example \
- cond_example.o cond_example \
- call_str_example.o call_str_example \
- memory_example.o memory_example \
- array-stack_example.o array-stack_example \
- array-heap_example.o array-heap_example \
- oo_program_example.o oo_program_example \
- irr_cf_example.o irr_cf_example \
- irr_loop_example.o irr_loop_example \
- dead_block_example.o dead_block_example \
- *.vcg core
-
-realclean: clean
-
-run:
- ./empty; \
- const_eval_example \
- if_example; \
- if_else_example \
- if_while_example; \
- cond_example \
- call_str_example; \
- memory_example \
- array-stack_example; \
- array-heap_example; \
- oo_program_example; \
- irr_cf_example; \
- irr_loop_example; \
- dead_block_example;
-
-empty: empty.o
- gcc -o empty empty.o $(LIBDIRS) $(LIBS)
-
-const_eval_example: const_eval_example.o
- gcc -o const_eval_example const_eval_example.o $(LIBDIRS) $(LIBS)
-
-if_example: if_example.o
- gcc -o if_example if_example.o $(LIBDIRS) $(LIBS)
-
-if_else_example: if_else_example.o
- gcc -o if_else_example if_else_example.o $(LIBDIRS) $(LIBS)
-
-if_while_example: if_while_example.o
- gcc -o if_while_example if_while_example.o $(LIBDIRS) $(LIBS)
+.PHONY: all
-cond_example: cond_example.o
- gcc -o cond_example cond_example.o $(LIBDIRS) $(LIBS)
+all: $(GOALS)
-call_str_example: call_str_example.o
- gcc -o call_str_example call_str_example.o $(LIBDIRS) $(LIBS)
+%: %.c
+ $(CC) $(CPPFLAGS) $(CFLAGS) -o $@ $< $(LFLAGS)
+ strip $@
-memory_example: memory_example.o
- gcc -o memory_example memory_example.o $(LIBDIRS) $(LIBS)
-
-array-stack_example: array-stack_example.o
- gcc -o array-stack_example array-stack_example.o $(LIBDIRS) $(LIBS)
-
-array-heap_example: array-heap_example.o
- gcc -o array-heap_example array-heap_example.o $(LIBDIRS) $(LIBS)
-
-oo_program_example: oo_program_example.o
- gcc -o oo_program_example oo_program_example.o $(LIBDIRS) $(LIBS)
-
-irr_cf_example: irr_cf_example.o
- gcc -o irr_cf_example irr_cf_example.o $(LIBDIRS) $(LIBS)
-
-irr_loop_example: irr_loop_example.o
- gcc -o irr_loop_example irr_loop_example.o $(LIBDIRS) $(LIBS)
-
-dead_block_example: dead_block_example.o
- gcc -o dead_block_example dead_block_example.o $(LIBDIRS) $(LIBS)
+clean:
+ rm -f $(GOALS)