MKOCTFILE ?= mkoctfile
OCTAVE    ?= octave
SED       ?= /scratch/build/release/mxe-octave-w64/usr/bin/sed

HDF5_CPPFLAGS = -I/include
HDF5_LIBS     = -lhdf5
PKG_CPPFLAGS  = -DGALOIS_DISP_PRIVATES -DHAVE_CONFIG_H

OCT_FILES = \
  __errcore__.oct \
  __gfweight__.oct \
  cyclgen.oct \
  cyclpoly.oct \
  genqamdemod.oct \
  gf.oct \
  isprimitive.oct \
  primpoly.oct \
  syndtable.oct

GF_OBJECTS = \
  galois-def.o \
  galois.o \
  galoisfield.o \
  gf.o \
  op-gm-gm.o \
  op-gm-m.o \
  op-gm-s.o \
  op-m-gm.o \
  op-s-gm.o \
  ov-galois.o

GF_HEADERS = \
  galois-def.h \
  galois-ops.h \
  galois.h \
  galoisfield.h \
  ov-galois.h

OCT_SOURCES = $(patsubst %.oct,%.cc,$(OCT_FILES))

all: $(OCT_FILES)

%.o: %.cc
	$(MKOCTFILE) $(PKG_CPPFLAGS) -c $< -o $@

%.oct: %.cc
	$(MKOCTFILE) $(PKG_CPPFLAGS) $< -o $@

gf.oct: $(GF_OBJECTS)
	$(MKOCTFILE) $^ $(HDF5_LIBS) -o $@

ov-galois.o: PKG_CPPFLAGS += $(HDF5_CPPFLAGS)

$(GF_OBJECTS): $(GF_HEADERS)

PKG_ADD PKG_DEL: $(OCT_SOURCES)
	$(SED) -n -e 's/.*$@: \(.*\)/\1/p' $^ > $@-t
	mv $@-t $@

clean:
	-rm -f *.o *.oct PKG_*

distclean: clean
	-rm -f Makefile config.h config.log config.status oct-alt-includes.h

maintainer-clean: distclean
	-rm -rf autom4te.cache configure config.h.in aclocal.m4

.PHONY: all clean distclean maintainer-clean
