# Makefile for the GAP package kbmag.
#
# Generated from Makefile.in by ./configure; requires GNU make.
# All executables are put into $(BINDIR).

GAPPATH = /usr/lib64/gap
GAPARCH = riscv64-suse-linux-gnu-default64-kv11
GAP ?= $(GAPPATH)/gap
GAP_ARGS = -q --quitonbreak --packagedirs $(abspath .)

LIBDIR = standalone/lib
SRCDIR = standalone/src
OBJDIR = obj
BINDIR = bin/$(GAPARCH)

CC ?= gcc
CFLAGS ?= -O2 -g

EXTRA_CFLAGS += -Wall -Wextra
EXTRA_CFLAGS += -Wno-char-subscripts -Wno-unused-parameter -Wno-sign-compare

ALL_CFLAGS = $(CFLAGS) $(EXTRA_CFLAGS) -I$(LIBDIR) -MMD -MP

# the fsa library, and one program per source file in $(SRCDIR)
LIBOBJS = $(patsubst $(LIBDIR)/%.c,$(OBJDIR)/lib/%.o,$(wildcard $(LIBDIR)/*.c))
PROGS = $(patsubst $(SRCDIR)/%.c,%,$(wildcard $(SRCDIR)/*.c))
SCRIPTS = autcos autgroup gpsubwa

all: $(addprefix $(BINDIR)/,$(PROGS) $(SCRIPTS))

$(addprefix $(BINDIR)/,$(PROGS)): $(BINDIR)/%: $(OBJDIR)/src/%.o $(OBJDIR)/libfsa.a | $(BINDIR)
	$(CC) $(EXTRA_CFLAGS) $(LDFLAGS) -o $@ $^

$(addprefix $(BINDIR)/,$(SCRIPTS)): $(BINDIR)/%: $(SRCDIR)/% | $(BINDIR)
	cp $< $@
	chmod +x $@

$(OBJDIR)/libfsa.a: $(LIBOBJS)
	$(AR) cr $@ $^
	if which ranlib > /dev/null 2> /dev/null; then ranlib $@; fi

$(OBJDIR)/lib/%.o: $(LIBDIR)/%.c | $(OBJDIR)/lib
	$(CC) $(ALL_CFLAGS) -c -o $@ $<

$(OBJDIR)/src/%.o: $(SRCDIR)/%.c | $(OBJDIR)/src
	$(CC) $(ALL_CFLAGS) -c -o $@ $<

$(BINDIR) $(OBJDIR)/lib $(OBJDIR)/src:
	mkdir -p $@

-include $(wildcard $(OBJDIR)/*/*.d)

#
# other targets
#
doc:
	$(GAP) $(GAP_ARGS) makedoc.g

html:
	NOPDF=1 $(GAP) $(GAP_ARGS) makedoc.g

check test:
	$(GAP) $(GAP_ARGS) tst/testall.g

# exercises the programs that the GAP interface never calls
check-standalone: all
	cd standalone/kb_data; ../../$(BINDIR)/kbprog nilp2; rm nilp2.*
	# k36 used to abort silently, without producing output - see issue #34
	cd standalone/kb_data; ../../$(BINDIR)/kbprog -silent k36; \
		test -f k36.kbprog; rm k36.*
	cd standalone/ag_data; ../../$(BINDIR)/autgroup 235; \
		../../$(BINDIR)/fsacount 235.wa; rm 235.*
	cd standalone/subgp_data; ../../$(BINDIR)/autcos -p ab2; \
		../../$(BINDIR)/fsacount ab2.cos.wa; \
		../../$(BINDIR)/autgroup -silent ab2; ../../$(BINDIR)/gpsubwa ab2; \
		rm -f ab2.[dgw]* ab2.sub.* ab2.suc* ab2.cos* ab2.*.ec

run:
	$(GAP) $(GAP_ARGS) -c 'LoadPackage("kbmag");'

clean:
	rm -rf $(OBJDIR)

distclean: clean
	rm -rf bin
	rm -f Makefile

Makefile: configure Makefile.in $(GAPPATH)/sysinfo.gap
	./configure $(GAPPATH)

.PHONY: all check test check-standalone clean distclean doc html run
