#!make

default: prgs
DEBUG=1
ALBERTA_VERSION=2.0
ALBERTA_DEBUG=1

# Compiler options
include ../../Make.opt

########################################################################
#   DFLAGS: DIM, DIM_OF_WORLD                                          #
########################################################################
DIM = 2
DIM_OF_WORLD = 2
NEIGH_IN_EL = 0
ifndef USE_NETCDF
USE_NCDF = 1
endif
#fuer DX, change here if not installed. Construction serves my local purposes.
########################################################################
#	get installation details				       #
########################################################################
include ../../AlbertaNum/Makefile.PATHS
ifeq ($(ALBERTA_VERSION), 2.0)
  include $(prefix_mf)/Makefile.alberta
# alberta 1 kompatibilitt
  DFLAGS += -DDIM=$(DIM) -DALBERTA_VER=2
else
  include $(ALBERTA_INCLUDE_PATH)/Makefile.alberta
endif
########################################################################
#netcdf support
ifdef USE_NCDF
LDFLAGS += $(NCDFFLAGS)
endif
DFLAGS += -DDIM=$(DIM) -DUSE_NCDF=$(USE_NCDF)
#  modify default settings -- always use CXX
#LINK = $(LIBTOOL) --mode=link --tag=$(CC) g++ $(CFLAGS) $(LDFLAGS) -o $@
LD = g++
%.o: %.c
	$(CXX) $(DFLAGS) $(CPPFLAGS) $(CXXFLAGS) -I$(ALBERTA_INCLUDE_PATH) \
	 -I$(NUM_INCLUDE_PATH)  -I$(DX_INCLUDE_PATH) -c $<
%.o: %.cc
	$(CXX) $(DFLAGS) $(CPPFLAGS) $(CXXFLAGS) -I$(ALBERTA_INCLUDE_PATH) \
	 -I$(NUM_INCLUDE_PATH) -I$(DX_INCLUDE_PATH)  -c $<

estimator.o: estimator.c
	$(CC) $(DFLAGS) $(CPPFLAGS) $(CXXFLAGS) -I$(ALBERTA_INCLUDE_PATH) \
	 -I$(NUM_INCLUDE_PATH)  -I$(DX_INCLUDE_PATH) -c $<
########################################################################
#   set virtual path                                                   #
########################################################################
VPATH = ../Common
########################################################################
#NUM_OFILES =	$(NUM_OBJ_PATH)/build_stat.o\
#		$(NUM_OBJ_PATH)/build_diff.o\
#		$(NUM_OBJ_PATH)/traverse.o \
#		$(NUM_OBJ_PATH)/prototype_fem_elfunc.o \
#		$(NUM_OBJ_PATH)/est.o \
#		$(NUM_OBJ_PATH)/error_c.o   \
#		$(NUM_OBJ_PATH)/ellipt_est.o \
#		$(NUM_OBJ_PATH)/parab_est.o \
#		$(NUM_OBJ_PATH)/sys_est.o \
#		$(NUM_OBJ_PATH)/fem_base.o \
#		$(NUM_OBJ_PATH)/adapt.o $(NUM_OBJ_PATH)/operator_parts.o \
#	        $(NUM_OBJ_PATH)/alloc.o \
#	        $(NUM_OBJ_PATH)/msg.o \
#	        $(NUM_OBJ_PATH)/master.o

ANUMLIBS = -L../../AlbertaNum/2d -lAlbertaNum2d

ifdef USE_NCDF
DX_OFILES   =  $(DX_OBJ_PATH)/dxexport.o 
endif

.PHONY: all prgs objs clean objs_num

prgs: numlibs objs demoheat obj_heat 

objs: demographics.o demoheat.o heat_problem.o heat.o obj_heat.o

all: prgs objs

realclean:
	make -C $(NUM_OBJ_PATH) clean
	make -C $(DX_OBJ_PATH) clean
	make clean

rebuild:
	make -C $(NUM_OBJ_PATH) clean
	make -C $(DX_OBJ_PATH) clean
	make clean
	make


numlibs: 
	make -C $(NUM_OBJ_PATH) libs

clean:
	rm -f *.o

demoheat: demoheat.o demographics.o estimator.o  $(DX_OFILES)
	$(LINK) $^ $(LIBS)

#wie erreiche ich sinnvoll abhaengigkeit von AlbertaNum2d?
obj_heat: obj_heat.o heat.o heat_problem.o demographics.o  $(DX_OFILES)
	$(LINK)  $^ $(ANUMLIBS) $(LIBS) 

ifdef USE_NCDF
$(DX_OFILES):  dxobjs

dxobjs:
	make -C $(DX_OBJ_PATH) objs
endif
########################################################################
# semi-automatically generated by g++ -MM			       #
########################################################################
