TARGET=pc
DESTDIR?=
PREFIX?=/usr/local
BIN=${DESTDIR}${PREFIX}/bin
MAN=${DESTDIR}${PREFIX}/share/man/man1
CFLAGS?=-g -O2
CFLAGS+=-D_DEFAULT_SOURCE -Iinclude -Wall -Wno-missing-braces -Wno-parentheses -Wno-incompatible-pointer-types
LDFLAGS?=-lm

OBJS=\
	libc/dofmt.o\
	libc/fltfmt.o\
	libc/fmt.o\
	libc/fmtfd.o\
	libc/fmtfdflush.o\
	libc/fmtprint.o\
	libc/fmtrune.o\
	libc/fmtvprint.o\
	libc/fprint.o\
	libc/genrandom.o\
	libc/mallocz.o\
	libc/nan64.o\
	libc/print.o\
	libc/rune.o\
	libc/sprint.o\
	libc/strtod.o\
	libc/sysfatal.o\
	libc/u16.o\
	libc/u32.o\
	libc/u64.o\
	libc/utflen.o\
	libc/vfprint.o\
	libc/vsnprint.o\
	libmp/betomp.o\
	libmp/mpadd.o\
	libmp/mpaux.o\
	libmp/mpcmp.o\
	libmp/mpdigdiv.o\
	libmp/mpdiv.o\
	libmp/mpexp.o\
	libmp/mpextendedgcd.o\
	libmp/mpfmt.o\
	libmp/mpleft.o\
	libmp/mplogic.o\
	libmp/mpmod.o\
	libmp/mpmodop.o\
	libmp/mpmul.o\
	libmp/mpnrand.o\
	libmp/mprand.o\
	libmp/mpright.o\
	libmp/mpsub.o\
	libmp/mptobe.o\
	libmp/mptober.o\
	libmp/mptoi.o\
	libmp/mptoui.o\
	libmp/mptov.o\
	libmp/mpvecadd.o\
	libmp/mpveccmp.o\
	libmp/mpvecdigmuladd.o\
	libmp/mpvecsub.o\
	libmp/mpvectscmp.o\
	libmp/strtomp.o\
	${TARGET}.o\

.PHONY: all default install uninstall clean

all: default

default: ${TARGET}

install: ${TARGET}
	install -d ${BIN}
	install -m 755 ${TARGET} ${BIN}
	install -d ${MAN}
	install -m 644 ${TARGET}.1 ${MAN}

uninstall:
	rm -f ${BIN}/${TARGET} ${MAN}/${TARGET}.1

clean:
	rm -f ${TARGET} ${OBJS} ${TARGET}.c

${TARGET}: ${OBJS}
	${CC} -o $@ ${OBJS} ${LDFLAGS}

pc.c: pc.y
	yacc -o $@ $<

.SUFFIXES: .c .o
.c.o:
	${CC} -o $@ -c $< ${CFLAGS}
