Makefile for ART-linux

とりあえず機能の修正。
make - odawaraの「はてな de メモ」
上を参考にして作ってみた。

#
#	Makefile for ART linux program
#
TARGET = ART_cart_test

C_FLAGS += -Wall -O2
COMPILE.c = gcc $(C_FLAGS) -c
LINK.c = gcc $(LD_FLAGS)

DBGTARGET = debug/$(TARGET)d
RELTARGET = release/$(TARGET)

INCLUDE = -I/root/prog/art_headers
ART_SYSCALL = /usr/lib/art_syscalls.o

DBGCFLAGS = -g -D__DEBUG
RELCFLAGS = -fno-strict-aliasing

PTHREAD = -lpthread
MATH = -lm

SOURCES = $(wildcard *.c)
HEADERS = $(wildcard *.h)

DBGOBJFILES = $(SOURCES:%.c=debug/%.o)
RELOBJFILES = $(SOURCES:%.c=release/%.o)

.PHONY: clean debug release

all:	debug release
	
release: $(RELTARGET)

debug: $(DBGTARGET)

$(RELTARGET):	$(RELOBJFILES)	
	$(LINK.c) $(C_FLAGS) -o $@ $^ $(ART_SYSCALL) $(PTHREAD)

$(DBGTARGET):	$(DBGOBJFILES)
	$(LINK.c) $(C_FLAGS) -o $@ $^ $(ART_SYSCALL) $(PTHREAD)

$(RELOBJFILES): release/%.o: %.c $(HEADERS)
	@mkdir -p release
	$(COMPILE.c) $(RELCFLAGS) $(PTHREAD) $(ART_SYSCALL) $< 
	@mv ./*.o ./release

$(DBGOBJFILES): debug/%.o: %.c $(HEADERS)
	@mkdir -p debug
	$(COMPILE.c) $(DBGCFLAGS) $(PTHREAD) $(ART_SYSCALL) $< 
	@mv ./*.o ./debug

clean:
	rm -rf release debug *~ *.d *.o