#
# makefile
#
# required GNU make

PROJECT=Gauche-readline-$(shell date +%Y%m%d)

prefix = /usr/local
bindir = $(prefix)/bin

GOSH      = $(bindir)/gosh
G_CONFIG  = $(bindir)/gauche-config
G_INSTALL = $(bindir)/gauche-install

CC       = $(shell $(G_CONFIG) --cc)
LD       = $(shell $(G_CONFIG) --cc)
CFLAGS   = $(shell $(G_CONFIG) --default-cflags) $(shell $(G_CONFIG) --so-cflags)
CPPFLAGS = $(shell $(G_CONFIG) -I)
LDFLAGS  = -lreadline $(shell $(G_CONFIG) -L) $(shell $(G_CONFIG) -l)

SOEXT    = $(shell $(G_CONFIG) --so-suffix)

MODULE   = readline.$(SOEXT)

GENERATED = readlinelib.c readline_head.c readline_tail.c \
	    readlinelib.o readline_head.o readline_tail.o \
	    readline.o \
	    $(MODULE)

.PHONY: all target install clean test run dist

all: target

target: $(MODULE)

%.o: %.c
	$(CC) $(CFLAGS) $(CPPFLAGS) -c $< -o $@

%.c: %.stub
	$(GOSH) genstub $<

readline_head.c readline_tail.c:
	$(G_CONFIG) --fixup-extension readline

$(MODULE): readline_head.o readline.o readlinelib.o readline_tail.o
	$(LD) -shared -o $@ $^ $(LDFLAGS)

clean:
	rm -f $(GENERATED)

install:
	$(G_INSTALL) -T $(shell $(G_CONFIG) --sitearchdir) -m 644 $(MODULE)
	$(G_INSTALL) -T $(shell $(G_CONFIG) --sitelibdir)  -m 644 readline.scm
	$(G_INSTALL) --shebang=$(bindir)/gosh -m 755 gosh-rl.scm $(bindir)/gosh-rl

uninstall:
	rm -f $(shell $(G_CONFIG) --sitearchdir)/$(MODULE)
	rm -f $(shell $(G_CONFIG) --sitelibdir)/readline.scm
	rm -f $(bindir)/gosh-rl

test: target
	$(GOSH) -I. test.scm

run: target
	$(GOSH) -I. gosh-rl.scm

dist:
	rm -fr $(PROJECT)
	mkdir  $(PROJECT)
	cp -a Makefile ChangeLog readline.scm readline.c readlinelib.stub gosh-rl.scm README README.j test.scm $(PROJECT)/
	tar -cvf $(PROJECT).tar $(PROJECT)/
	gzip -9f $(PROJECT).tar

# end
