# Copyright (c) 2009-2011 Centro Svizzero di Calcolo Scientifico (CSCS)
# Licensed under the GPLv2.
# NAMES
TARGETS = test-reservation reserve-all-free-nodes
OBJS    = cmdline.o my_system.o

# PROGRAMS
CC = gcc
RM = rm -vf

# PATHS
INCDIR = ../../include
LIBDIR = ../..
HEADERS= $(wildcard $(INCDIR)/*.h)
BASILIB= $(LIBDIR)/libalps/libalps.a
SDBLIB = $(LIBDIR)/libsdb/libsdb.a

# FLAGS
CFLAGS = -I. -I$(INCDIR) -Wall -Werror #-pedantic
CFLAGS += -g
CFLAGS += $(shell mysql_config --cflags)
LDLIBS = -lexpat $(shell mysql_config --libs) $(BASILIB) $(SDBLIB)

# suffix rules
%.o : %.c cmdline.h $(BASILIB) $(SDBLIB)
	$(CC) $(CFLAGS) -c $< -o $@

all: $(TARGETS) 
	@echo "use one of '$(MAKE) test' or $(patsubst %,\"./%\",$^)"

test: test-reservation
	@./$< --help;echo
	./$< --user $(USER) -n 4 -d 2 
	@echo -e "\nThe following may fail because it requires nodes 16..19:"
	./$< --user $(USER) -n 4 -N 1 -l 16-19 --batch=1234.test
	./test-reservation -u $(USER) -n 7 -N 1 -l 20-21 --nodes 22 -l 16-19 -b 5678.9

reserve-all-free-nodes: reserve-all-free-nodes.c my_system.o
	$(CC) $(CFLAGS) $^ $(LDLIBS) -o $@

test-reservation: test-reservation.c $(OBJS)
	$(CC) $(CFLAGS) $^ $(LDLIBS) -o $@

main.c: cmdline.h $(INCDIR)/basil_alps.h

cmdline.h cmdline.c: arguments.ggo
	gengetopt < $<

$(BASILIB): $(wildcard $(@D)/*.c) $(HEADERS)
	$(MAKE) -C $(@D) clean $(@F)

$(SDBLIB): $(wildcard $(@D)/*.c) $(HEADERS)
	$(MAKE) -C $(@D) clean $(@F)

.PHONY: clean all

tags: $(wildcard *.c $(LIBDIR)/lib*/*.c) $(HEADERS)
	ctags $^ > $@

clean:
	@$(RM) *.o *~ ? core a.out tags *.orig *.rej
	@$(RM) $(TARGETS)

distclean: clean
	@$(RM) cmdline.c cmdline.h
