#
# src/Makefile
#	Makefile
#
# by: Joan Gimeno
#
# This is the makefile that generates the objects
SRCDIR	=.
INCDIR	=include
LIB	=../lib

CC 	= gcc
CFLAGS 	=-Wall -Werror -O2 -fopenmp -DDEBUG -I$(INCDIR)
LFLAGS	=-lm -fopenmp

FILES_L = libpic

FILES_C = load.c save.c utils.c \
	permutation.c LU_matrix.c \
	householder.c QR_matrix.c \
	linear_solve.c \
	newton.c pic.c \
	qr.c

FILES_O = $(subst .c,.o,$(FILES_C))


.SUFFIXES: .c .o .a .exe
%.o: %.c Makefile
	$(CC) $(CFLAGS) -c $< -o $@

%.a: $(FILES_O)
	-ar -rcs $(LIB)/$@ $(FILES_O)
	-ranlib $(LIB)/$@

%.so: $(FILES_O)
	-ld -o $(LIB)/$@ $(FILES_O) -shared
	#$(CC) -shared -o $@ $(FILES_O)
	#mv $@ ../lib

# Default target executed when no arguments are given to make.
.PHONY: default_target
default_target: all

.PHONY: all
all: lib

.PHONY: src
src: $(FILES_O)

.PHONY: lib
lib: 
	-mkdir -p $(LIB)
	-make $(FILES_L).a

.PHONY: clean
clean:
	-rm -f $(FILES_O)

.PHONY: cleanobj
cleanobj:
	-rm -f $(FILES_O)

.PHONY: cleanlib
cleanlib:
	-rm -f $(LIB)/$(FILES_L).a

# Help Target
.PHONY: help
help:
	@echo "The following are some of the valid targets for this Makefile:"
	@echo "... all (the default if no target is provided)"
	@echo "... src"
	@echo "... lib"
	@echo "... clean"
	@echo "... cleanobj"
	@echo "... cleanlib"

# gprof ./system
# gprof ./system | less