# created by É. Canot -- IPR/CNRS -- Jun 2019

#-------------------------------------------------------------------------------
# METIS Makefile for compiling on Unix systems (for GNU make only)
#-------------------------------------------------------------------------------

C = $(CC) $(CC_FLAGS) -I./Include

#-------------------------------------------------------------------------------
# METIS modules
#-------------------------------------------------------------------------------

GKLIB = b64.o blas.o csr.o error.o evaluate.o fkvkselect.o fs.o getopt.o \
        gkregex.o gk_graph.o htable.o io.o itemsets.o mcore.o memory.o omp.o \
        pdb.o pqueue.o random.o rw.o seq.o sort.o string.o timers.o \
        tokenizer.o gk_util.o

GKLIB_INC = GKlib/gk_arch.h GKlib/gk_defs.h GKlib/gk_externs.h \
            GKlib/gk_getopt.h GKlib/GKlib.h GKlib/gk_macros.h \
            GKlib/gk_mkblas.h GKlib/gk_mkmemory.h GKlib/gk_mkpqueue2.h \
            GKlib/gk_mkpqueue.h GKlib/gk_mkrandom.h GKlib/gk_mksort.h \
            GKlib/gk_mkutils.h GKlib/gk_proto.h GKlib/gkregex.h \
            GKlib/gk_struct.h GKlib/gk_types.h GKlib/ms_inttypes.h \
            GKlib/ms_stat.h GKlib/ms_stdint.h

LIBMETIS = auxapi.o balance.o bucketsort.o checkgraph.o coarsen.o compress.o \
	   contig.o debug.o fm.o fortran.o frename.o gklib.o graph.o \
	   initpart.o kmetis.o kwayfm.o kwayrefine.o mcutil.o mesh.o \
	   meshpart.o minconn.o mincover.o mmd.o ometis.o options.o \
	   parmetis.o pmetis.o refine.o separator.o sfm.o srefine.o stat.o \
	   timing.o util.o wspace.o

LIBMETIS_INC = libmetis/defs.h libmetis/gklib_defs.h libmetis/gklib_rename.h \
               libmetis/macros.h libmetis/metislib.h libmetis/proto.h \
               libmetis/rename.h libmetis/stdheaders.h libmetis/struct.h

METIS = $(GKLIB) $(LIBMETIS)

#-------------------------------------------------------------------------------

OBJS = $(addprefix ../obj/, $(METIS))

all : $(OBJS)

#-------------------------------------------------------------------------------
# GKlib Module:
#-------------------------------------------------------------------------------

../obj/b64.o: GKlib/b64.c $(GKLIB_INC)
	$(C) -I./GKlib -c $< -o $@

../obj/blas.o: GKlib/blas.c $(GKLIB_INC)
	$(C) -I./GKlib -c $< -o $@

../obj/csr.o: GKlib/csr.c $(GKLIB_INC)
	$(C) -I./GKlib -c $< -o $@

../obj/error.o: GKlib/error.c $(GKLIB_INC)
	$(C) -I./GKlib -c $< -o $@

../obj/evaluate.o: GKlib/evaluate.c $(GKLIB_INC)
	$(C) -I./GKlib -c $< -o $@

../obj/fkvkselect.o: GKlib/fkvkselect.c $(GKLIB_INC)
	$(C) -I./GKlib -c $< -o $@

../obj/fs.o: GKlib/fs.c $(GKLIB_INC)
	$(C) -I./GKlib -c $< -o $@

../obj/getopt.o: GKlib/getopt.c $(GKLIB_INC)
	$(C) -I./GKlib -c $< -o $@

../obj/gkregex.o: GKlib/gkregex.c $(GKLIB_INC)
	$(C) -I./GKlib -c $< -o $@

../obj/gk_graph.o: GKlib/gk_graph.c $(GKLIB_INC)
	$(C) -I./GKlib -c $< -o $@

../obj/htable.o: GKlib/htable.c $(GKLIB_INC)
	$(C) -I./GKlib -c $< -o $@

../obj/io.o: GKlib/io.c $(GKLIB_INC)
	$(C) -I./GKlib -c $< -o $@

../obj/itemsets.o: GKlib/itemsets.c $(GKLIB_INC)
	$(C) -I./GKlib -c $< -o $@

../obj/mcore.o: GKlib/mcore.c $(GKLIB_INC)
	$(C) -I./GKlib -c $< -o $@

../obj/memory.o: GKlib/memory.c $(GKLIB_INC)
	$(C) -I./GKlib -c $< -o $@

../obj/omp.o: GKlib/omp.c $(GKLIB_INC)
	$(C) -I./GKlib -c $< -o $@

../obj/pdb.o: GKlib/pdb.c $(GKLIB_INC)
	$(C) -I./GKlib -c $< -o $@

../obj/pqueue.o: GKlib/pqueue.c $(GKLIB_INC)
	$(C) -I./GKlib -c $< -o $@

../obj/random.o: GKlib/random.c $(GKLIB_INC)
	$(C) -I./GKlib -c $< -o $@

../obj/rw.o: GKlib/rw.c $(GKLIB_INC)
	$(C) -I./GKlib -c $< -o $@

../obj/seq.o: GKlib/seq.c $(GKLIB_INC)
	$(C) -I./GKlib -c $< -o $@

../obj/sort.o: GKlib/sort.c $(GKLIB_INC)
	$(C) -I./GKlib -c $< -o $@

../obj/string.o: GKlib/string.c $(GKLIB_INC)
	$(C) -I./GKlib -c $< -o $@

../obj/timers.o: GKlib/timers.c $(GKLIB_INC)
	$(C) -I./GKlib -c $< -o $@

../obj/tokenizer.o: GKlib/tokenizer.c $(GKLIB_INC)
	$(C) -I./GKlib -c $< -o $@

../obj/gk_util.o: GKlib/gk_util.c $(GKLIB_INC)
	$(C) -I./GKlib -c $< -o $@

#-------------------------------------------------------------------------------
# libmetis Module:
#-------------------------------------------------------------------------------

../obj/auxapi.o: libmetis/auxapi.c $(LIBMETIS_INC)
	$(C) -I./libmetis -I./GKlib -c $< -o $@

../obj/balance.o: libmetis/balance.c $(LIBMETIS_INC)
	$(C) -I./libmetis -I./GKlib -c $< -o $@

../obj/bucketsort.o: libmetis/bucketsort.c $(LIBMETIS_INC)
	$(C) -I./libmetis -I./GKlib -c $< -o $@

../obj/checkgraph.o: libmetis/checkgraph.c $(LIBMETIS_INC)
	$(C) -I./libmetis -I./GKlib -c $< -o $@

../obj/coarsen.o: libmetis/coarsen.c $(LIBMETIS_INC)
	$(C) -I./libmetis -I./GKlib -c $< -o $@

../obj/compress.o: libmetis/compress.c $(LIBMETIS_INC)
	$(C) -I./libmetis -I./GKlib -c $< -o $@

../obj/contig.o: libmetis/contig.c $(LIBMETIS_INC)
	$(C) -I./libmetis -I./GKlib -c $< -o $@

../obj/debug.o: libmetis/debug.c $(LIBMETIS_INC)
	$(C) -I./libmetis -I./GKlib -c $< -o $@

../obj/fm.o: libmetis/fm.c $(LIBMETIS_INC)
	$(C) -I./libmetis -I./GKlib -c $< -o $@

../obj/fortran.o: libmetis/fortran.c $(LIBMETIS_INC)
	$(C) -I./libmetis -I./GKlib -c $< -o $@

../obj/frename.o: libmetis/frename.c $(LIBMETIS_INC)
	$(C) -I./libmetis -I./GKlib -c $< -o $@

../obj/gklib.o: libmetis/gklib.c $(LIBMETIS_INC)
	$(C) -I./libmetis -I./GKlib -c $< -o $@

../obj/graph.o: libmetis/graph.c $(LIBMETIS_INC)
	$(C) -I./libmetis -I./GKlib -c $< -o $@

../obj/initpart.o: libmetis/initpart.c $(LIBMETIS_INC)
	$(C) -I./libmetis -I./GKlib -c $< -o $@

../obj/kmetis.o: libmetis/kmetis.c $(LIBMETIS_INC)
	$(C) -I./libmetis -I./GKlib -c $< -o $@

../obj/kwayfm.o: libmetis/kwayfm.c $(LIBMETIS_INC)
	$(C) -I./libmetis -I./GKlib -c $< -o $@

../obj/kwayrefine.o: libmetis/kwayrefine.c $(LIBMETIS_INC)
	$(C) -I./libmetis -I./GKlib -c $< -o $@

../obj/mcutil.o: libmetis/mcutil.c $(LIBMETIS_INC)
	$(C) -I./libmetis -I./GKlib -c $< -o $@

../obj/mesh.o: libmetis/mesh.c $(LIBMETIS_INC)
	$(C) -I./libmetis -I./GKlib -c $< -o $@

../obj/meshpart.o: libmetis/meshpart.c $(LIBMETIS_INC)
	$(C) -I./libmetis -I./GKlib -c $< -o $@

../obj/minconn.o: libmetis/minconn.c $(LIBMETIS_INC)
	$(C) -I./libmetis -I./GKlib -c $< -o $@

../obj/mincover.o: libmetis/mincover.c $(LIBMETIS_INC)
	$(C) -I./libmetis -I./GKlib -c $< -o $@

../obj/mmd.o: libmetis/mmd.c $(LIBMETIS_INC)
	$(C) -I./libmetis -I./GKlib -c $< -o $@

../obj/ometis.o: libmetis/ometis.c $(LIBMETIS_INC)
	$(C) -I./libmetis -I./GKlib -c $< -o $@

../obj/options.o: libmetis/options.c $(LIBMETIS_INC)
	$(C) -I./libmetis -I./GKlib -c $< -o $@

../obj/parmetis.o: libmetis/parmetis.c $(LIBMETIS_INC)
	$(C) -I./libmetis -I./GKlib -c $< -o $@

../obj/pmetis.o: libmetis/pmetis.c $(LIBMETIS_INC)
	$(C) -I./libmetis -I./GKlib -c $< -o $@

../obj/refine.o: libmetis/refine.c $(LIBMETIS_INC)
	$(C) -I./libmetis -I./GKlib -c $< -o $@

../obj/separator.o: libmetis/separator.c $(LIBMETIS_INC)
	$(C) -I./libmetis -I./GKlib -c $< -o $@

../obj/sfm.o: libmetis/sfm.c $(LIBMETIS_INC)
	$(C) -I./libmetis -I./GKlib -c $< -o $@

../obj/srefine.o: libmetis/srefine.c $(LIBMETIS_INC)
	$(C) -I./libmetis -I./GKlib -c $< -o $@

../obj/stat.o: libmetis/stat.c $(LIBMETIS_INC)
	$(C) -I./libmetis -I./GKlib -c $< -o $@

../obj/timing.o: libmetis/timing.c $(LIBMETIS_INC)
	$(C) -I./libmetis -I./GKlib -c $< -o $@

../obj/util.o: libmetis/util.c $(LIBMETIS_INC)
	$(C) -I./libmetis -I./GKlib -c $< -o $@

../obj/wspace.o: libmetis/wspace.c $(LIBMETIS_INC)
	$(C) -I./libmetis -I./GKlib -c $< -o $@

