# -*- coding: utf-8 -*-
#Compiler
MKOCTFILE?=mkoctfile
#Common warning flags for C and C++
FLAGSCOMW=-Wall -Wextra -Wshadow -Wcast-qual -Wcast-align -Wwrite-strings
#Common optimization flags for C and C++
FLAGSCOMO=-O2 -funroll-loops -fno-common -fshort-enums
#Flags for C
CFLAGS=-std=c99 -pedantic $(FLAGSCOMW) -Wconversion -Wmissing-prototypes
CFLAGS+=-Wstrict-prototypes -Wnested-externs $(FLAGSCOMO)
#Flags for C++
CXXFLAGS=$(FLAGSCOMW) $(FLAGSCOMO)
#Export flags for compilers and linker
export CFLAGS CXXFLAGS

.PHONY: all
all: compile

.PHONY: compile
compile:
	$(MKOCTFILE) -c -I. calctopo.c -o calctopo.o
	$(MKOCTFILE) -c -I. compilador.c -o compilador.o
	$(MKOCTFILE) -c -I. dpeuckera.c -o dpeuckera.o
	$(MKOCTFILE) -c -I. dpeuckere.c -o dpeuckere.o
	$(MKOCTFILE) -c -I. dpeuckerp.c -o dpeuckerp.o
	$(MKOCTFILE) -c -I. dpeucker.c -o dpeucker.o
	$(MKOCTFILE) -c -I. errores.c -o errores.o
	$(MKOCTFILE) -c -I. eucli.c -o eucli.o
	$(MKOCTFILE) -c -I. fgeneral.c -o fgeneral.o
	$(MKOCTFILE) -c -I. geocnan.c -o geocnan.o
	$(MKOCTFILE) -c -I. geocomp.c -o geocomp.o
	$(MKOCTFILE) -c -I. -DCOLUMN_MAJOR_ORDER_MATVEC posmatvec.c -o posmatvec.o
	$(MKOCTFILE) -c -I. -DCALCULO_PRODUCTO_MULT mate.c -o mate.o
	$(MKOCTFILE) -c -I. arco.c -o arco.o
	$(MKOCTFILE) -c -I. greiner.c -o greiner.o
	$(MKOCTFILE) -c -I. polig.c -o polig.o
	$(MKOCTFILE) -c -I. polil.c -o polil.o
	$(MKOCTFILE) -c -I. ptopol.c -o ptopol.o
	$(MKOCTFILE) -c -I. recpolil.c -o recpolil.o
	$(MKOCTFILE) -c -I. segmento.c -o segmento.o
	$(MKOCTFILE) -c -I. ventorno.c -o ventorno.o
	$(MKOCTFILE) -c -I. proyecaux.c -o proyecaux.o
	$(MKOCTFILE) -s -I. _oc_polybool.cc *.o

.PHONY: clean
clean:
	rm -rf *.o *~

.PHONY: cleanall
cleanall:
	rm -rf *~ *.o *.oct
