# Makefile ( n source file 1 execute file version )
# 2002/12/ 4

# {̃Rgɏ]ďCĉB
# $(HOGEHOGE) Ƃ̂̓}Ni̕ϐjŁA
# HOGEHOGE=... Œ`ꂽeɓWJĉ߂܂B
# s̃^uɂ͈Ӗ܂̂ŁAXy[XɕϊȂŉB
# ł΁AŏIIɓ{Rg͍폜ĉB

#	 pbP[Wst@Cɏ
PACKAGE	= Saccubus
#	 \[Xt@Cׂ
SRCS	= Launcher.c
#	 wb_t@Cׂ
HEADS	= 
OBJS	= $(SRCS:.c=.o) $(PACKAGE)_res.o

#	 pbP[WɊ܂߂t@Cׂ
FILES	= Makefile $(HEADS) $(SRCS)
VER	= `date +%Y%m%d`


### command and flags ###
# uncomment when debugging
#DEBUG	= -ggdb -pg # -lefence
RELEASE = -s

# common (*.o)
LD	= gcc
#LDFLAGS = -g $(DEBUG) $(RELEASE)
LDFLAGS	= $(DEBUG) $(RELEASE)
LDLIBS	= -lm -lmingw32 -mwindows

# C (*.c)
CC	= gcc
#CFLAGS	= -g -O3 -Wall $(DEBUG) $(RELEASE)
CFLAGS	= -Os -Wall $(DEBUG) $(RELEASE)
CPPFLAGS= -I.

# C++ (*.cc)
CXX	= g++
CXXFLAGS= -g -O3 -Wall $(DEBUG)

# Fortran77 (*.f)
FC	= f77
FFLAGS	= -Wall $(DEBUG)

# Pascal (*.p)
PC	= pc
PFLAGS	= -Wall $(DEBUG)

# etc
SHELL	= /bin/sh
RM	= rm -f
PROF	= gprof


### rules ###

.SUFFIXES:
.SUFFIXES: .o .c .cc .f .p

all: $(PACKAGE)

$(PACKAGE): $(OBJS)
	$(LD) $(LDFLAGS) $(OBJS) -o $@ $(LDLIBS)

$(OBJS): $(HEADS) Makefile

.c.o:
	$(CC) $(CFLAGS) $(CPPFLAGS) -c $< -o $@
.cc.o:
	$(CXX) $(CXXFLAGS) $(CPPFLAGS) -c $< -o $@
.f.o:
	$(FC) $(FFLAGS) -c $< -o $@
.p.o:
	$(PC) $(PFLAGS) $(CPPFLAGS) -c $< -o $@

$(PACKAGE)_res.o: $(PACKAGE).rc
	windres -i $(PACKAGE).rc -o $(PACKAGE)_res.o

### useful commands ###

clean:
	$(RM) $(PACKAGE) $(OBJS)
	$(RM) core gmon.out *~ #*#

tar:
	@echo $(PACKAGE)-$(VER) > .package
	@$(RM) -r `cat .package`
	@mkdir `cat .package`
	@ln $(FILES) `cat .package`
	tar cvf - `cat .package` | gzip -9 > `cat .package`.tar.gz
	@$(RM) -r `cat .package` .package

zip:
	zip -9 $(PACKAGE)-$(VER).zip $(FILES)


prof: run
	$(PROF) $(PACKAGE) | less

run: all
#	 Tvf[^Ŏs悤ɏ
#	    $(PACKAGE) ͎st@CɓWJ
#	    s̓^uiXy[Xł͂Ȃj
	./$(PACKAGE) < sample-data | less
