# Copyright (C) 2005, 2009 International Business Machines and others.
# All Rights Reserved.
# This file is distributed under the Common Public License.

# $Id: Makefile.in 1428 2009-04-18 00:41:05Z andreasw $

# Directory to the sources for the (example) problem definition files
SRCDIR = .


# Compiler and options
CXX = mpicxx
CXXFLAGS = -pipe -Wall -O2 -march=i586 -mtune=i686 -I/usr/include/parmetis -I/usr/lib/openmpi/include  

# Archiver for C++ object files (e.g., needed to build a library on AIX to
# avoid multiply defined symbols for templates)
CXXAR = ar cru

# additional C++ Compiler options for linking
CXXLINKFLAGS =  -Wl,--rpath -Wl,/usr/lib

# Directory with header files
IPOPTINCDIR = /usr/include/coin

# Directory with libipopt.a
IPOPTLIBDIR = /usr/lib
exec_prefix = /usr
prefix = /usr

# Libraries necessary to link with IPOPT
IPOPTLIBS = -L$(IPOPTLIBDIR) -lipopt -lcmumps -ldmumps -lsmumps -lzmumps -lmumps_common -lpord  -lparmetis -lmetis -llapack -llapack_atlas -lf77blas -lblas -llapack -llapack_atlas -lf77blas -lblas -lm -lcmumps -ldmumps -lsmumps -lzmumps -lmumps_common -lpord -lesmumps -lscotcherr -lscotch -lparmetis -lmetis -lscalapack_LINUX-0 -L/usr/src/RPM/BUILD/ipopt-3.7.0 -lblacs -llapack -llapack_atlas -lf77blas -lblas -L/usr/lib/openmpi/lib -lmpi_cxx -lmpi_f77 -lmpi -Wl,-R/usr/lib/openmpi/lib -ldl  -L/usr/src/RPM/BUILD/ipopt-3.7.0 -L/usr/lib/openmpi/lib -L/usr/lib/gcc/i586-alt-linux/4.4.1 -L/usr/lib/gcc/i586-alt-linux/4.4.1/../../.. -lcmumps -ldmumps -lsmumps -lzmumps -lmumps_common -lpord -lesmumps -lscotcherr -lscotch -lparmetis -lmetis -lscalapack_LINUX-0 -lblacs -llapack -llapack_atlas -lf77blas -lblas -lmpi_cxx -lmpi_f77 -lmpi -R/usr/lib/openmpi/lib -Rpath=/usr/lib/openmpi/lib -lopen-rte -lopen-pal -ldl -lnsl -lutil -lgfortranbegin -lgfortran -lm -lpthread

# Necessary Include dirs (we use the CYGPATH_W variables to allow
# compilation with Windows compilers)
INCL =  -I`$(CYGPATH_W) $(IPOPTINCDIR)`

# Name of the executable
EXE = solve_problem

# List of all object files
MAINOBJ =  solve_problem.o

# List of all object files
LIBOBJS =  \
	MittelmannDistCntrlNeumA.o \
        MittelmannDistCntrlNeumB.o \
        MittelmannDistCntrlDiri.o \
        MittelmannBndryCntrlDiri.o \
        MittelmannBndryCntrlDiri3D.o \
        MittelmannBndryCntrlDiri3D_27.o \
        MittelmannBndryCntrlDiri3Dsin.o \
        MittelmannBndryCntrlNeum.o \
        LuksanVlcek1.o \
        LuksanVlcek2.o \
        LuksanVlcek3.o \
        LuksanVlcek4.o \
        LuksanVlcek5.o \
        LuksanVlcek6.o \
        LuksanVlcek7.o \
        RegisteredTNLP.o


LIB = libscalexamples.a

LIBS = $(LIB) $(IPOPTLIBS)

all: $(EXE)

# Dependencies
LuksanVlcek1.o : LuksanVlcek1.hpp
LuksanVlcek2.o : LuksanVlcek2.hpp
LuksanVlcek3.o : LuksanVlcek3.hpp
LuksanVlcek4.o : LuksanVlcek4.hpp
LuksanVlcek5.o : LuksanVlcek5.hpp
LuksanVlcek6.o : LuksanVlcek6.hpp
LuksanVlcek7.o : LuksanVlcek7.hpp
MittelmannDistCntrlNeumA.o: MittelmannDistCntrlNeumA.hpp
MittelmannDistCntrlNeumB.o: MittelmannDistCntrlNeumB.hpp
MittelmannDistCntrlDiri.o: MittelmannDistCntrlDiri.hpp
MittelmannBndryCntrlDiri.o: MittelmannBndryCntrlDiri.hpp
MittelmannBndryCntrlDiri3D.o: MittelmannBndryCntrlDiri3D.hpp
MittelmannBndryCntrlDiri3D_27.o: MittelmannBndryCntrlDiri3D_27.hpp
MittelmannBndryCntrlDiri3Dsin.o: MittelmannBndryCntrlDiri3Dsin.hpp
MittelmannBndryCntrlNeum.o: MittelmannBndryCntrlNeum.hpp

solve_problem.o: \
	LuksanVlcek1.hpp \
	LuksanVlcek2.hpp \
	LuksanVlcek3.hpp \
	LuksanVlcek4.hpp \
	LuksanVlcek5.hpp \
	LuksanVlcek6.hpp \
	LuksanVlcek7.hpp \
	MittelmannDistCntrlNeumA.hpp \
	MittelmannDistCntrlNeumB.hpp \
	MittelmannDistCntrlDiri.hpp \
	MittelmannBndryCntrlDiri.hpp \
	MittelmannBndryCntrlDiri3D.hpp \
	MittelmannBndryCntrlDiri3D_27.hpp \
	MittelmannBndryCntrlDiri3Dsin.hpp \
	MittelmannBndryCntrlNeum.hpp \
	MittelmannParaCntrl.hpp

# The following is necessary under cygwin, if native compilers are used
CYGPATH_W = echo

.SUFFIXES: .cpp .c .o .obj

$(EXE): $(MAINOBJ) $(LIB)
	$(CXX) $(CXXFLAGS) $(CXXLINKFLAGS) -o $@ $(MAINOBJ) $(LIBS)

$(LIB): $(LIBOBJS)
	$(CXXAR) $(LIB) $(LIBOBJS)

clean:
	rm -rf $(EXE) $(MAINOBJ) $(LIBOBJS) $(LIB)

.cpp.o:
	$(CXX) $(CXXFLAGS) $(INCL) -c -o $@ `test -f '$<' || echo '$(SRCDIR)/'`$<


.cpp.obj:
	$(CXX) $(CXXFLAGS) $(INCL) -c -o $@ `if test -f '$<'; then $(CYGPATH_W) '$<'; else $(CYGPATH_W) '$(SRCDIR)/$<'; fi`
