# Modifiable Variables
CC=gcc
CFLAGS=-Wall -g -pipe -pthread
LDFLAGS=-Wl,--as-needed -lpthread -lrt
PREFIX=/usr/local
BINDIR=$(PREFIX)/bin
LIBDIR=$(PREFIX)/lib

# Fixed Variables
OBJ=main.o common.o judge.o tle.o procmon.o
EXEC_LIST=sctjudge
LIB_LIST=

ifdef LINUX
	CFLAGS+=-DHAVE_LINUX_EXTENSIONS
	LDFLAGS+=-lcap
endif

.PHONY: all clean install remove uninstall deinstall
all: $(EXEC_LIST) $(LIB_LIST)
sctjudge: $(OBJ)
	$(CC) $(CFLAGS) $(OBJ) -o sctjudge $(LDFLAGS)
clean:
	rm -f $(OBJ) $(EXEC_LIST) $(LIB_LIST)

install:
	mkdir -p $(BINDIR) $(LIBDIR)
	for i in $(EXEC_LIST); do install -m 755 $$i $(BINDIR); done
	for i in $(LIB_LIST); do install -m 755 $$i $(LIBDIR); done
ifdef LINUX
	setcap cap_sys_chroot,cap_setuid,cap_setgid,cap_kill+ep \
		$(BINDIR)/sctjudge
else
	chmod u+s $(BINDIR)/sctjudge
endif

uninstall deinstall: remove
remove:
	for i in $(EXEC_LIST); do rm -f $(BINDIR)/$$i; done
	for i in $(LIB_LIST); do rm -f $(LIBDIR)/$$i; done
