# this makefile will be used for  build Insel user blocks from inselVSeit

sourcesF := $(wildcard ../src/*.f)
sourcesF90 := $(wildcard ../src/*.f90)
sourcesC := $(wildcard ../src/*.cpp)
objectsF := $(patsubst %.f,%.o,$(sourcesF))
objectsF90 := $(patsubst %.f90,%.o,$(sourcesF90))
objectsC := $(patsubst %.cpp,%.o,$(sourcesC))
objects := $(patsubst ../src%,.%,$(objectsF)) $(patsubst ../src%,.%,$(objectsF90)) $(patsubst ../src%,.%,$(objectsC))

MODULE = inselUB
EXTENSION =
CP = ln -sf
ARCHITECTURE = 'Linux'
PROCESSOR = 'x64'
EXTENSION = .so
BUILDING_PATH = ${HOME}/Documents/insel.work/inselUB/resources/
MODULE = libInselUB
FC = g++
CC = g++
L = g++
FCFLAGS = -finit-local-zero -g -Og -c -m64 -fPIC  -Wall -fno-automatic -fno-underscoring -fdefault-real-8 -fdefault-double-8 -fmessage-length=0 -std=legacy -Wno-intrinsic-shadow
CCFLAGS = -g -Og -m64 -c  -Wall -fmessage-length=0 -fPIC
LFLAGS = -g -Og -lInselTools -ldl -m64 -shared -o$(BUILDING_PATH)$(MODULE)$(EXTENSION)
RM = rm -f

all:
	@echo 'Compile $(MODULE) for $(ARCHITECTURE) $(PROCESSOR)'
    ifneq ($(sourcesF),)
			@$(FC) $(FCFLAGS) $(sourcesF)
			@echo Fortran user blocks compiled.
    endif
    ifneq ($(sourcesF90),)
			@$(FC) $(FCFLAGS) $(sourcesF90)
			@echo Fortran90 user blocks compiled.
    endif
    ifneq ($(sourcesC),)
			@$(CC) $(CCFLAGS) $(sourcesC)
			@echo C user blocks compiled.
    endif
	@$(L) $(LFLAGS) $(objects) $(LDL)
	@echo $(MODULE) completed.
	@$(RM) *.o
clean:
	@$(RM) *.o
	@$(RM) $(BUILDING_PATH)$(MODULE)$(EXTENSION)
