#!/bin/sh ############################################################################ # # Makefile to compile and link a C++ application to # Cantera. # ############################################################################# # addition to suffixes .SUFFIXES : .d # the name of the executable program to be created PROG_NAME = surfaceSolver # the object files to be linked together. List those generated from Fortran # and from C/C++ separately OBJS = surfaceSolver.o # additional flags to be passed to the linker. If your program # requires other external libraries, put them here LINK_OPTIONS = @EXTRA_LINK@ ############################################################################# # Check to see whether we are in the msvc++ environment os_is_win = @OS_IS_WIN@ # Fortran libraries ifeq (@build_with_f2c@, 0) FORT_LIBS = @FLIBS@ else FORT_LIBS = endif # the C++ compiler CXX = @CXX@ # C++ compile flags CXX_FLAGS = @CXXFLAGS@ # Ending C++ linking libraries LCXX_END_LIBS = @LCXX_END_LIBS@ # the directory where the Cantera libraries are located CANTERA_LIBDIR=@buildlib@ CANTERA_LIB_DEP=$(CANTERA_LIBDIR)/libctbase.a \ $(CANTERA_LIBDIR)/libctmath.a \ $(CANTERA_LIBDIR)/libctnumerics.a \ $(CANTERA_LIBDIR)/libthermo.a \ $(CANTERA_LIBDIR)/libtransport.a \ $(CANTERA_LIBDIR)/libkinetics.a \ $(CANTERA_LIBDIR)/libequil.a \ $(CANTERA_LIBDIR)/libVCSnonideal.a \ $(CANTERA_LIBDIR)/libzeroD.a \ $(CANTERA_LIBDIR)/liboneD.a \ $(CANTERA_LIBDIR)/libconverters.a # required Cantera libraries CANTERA_LIBS = @LOCAL_LIBS@ -lctcxx # the directory where Cantera include files may be found. CANTERA_INCDIR=@ctroot@/build/include/cantera # flags passed to the C++ compiler/linker for the linking step LCXX_FLAGS = -L$(CANTERA_LIBDIR) @LOCAL_LIB_DIRS@ @CXXFLAGS@ # How to compile C++ source files to object files .cpp.o: Interface.h $(CXX) -c $< -I$(CANTERA_INCDIR) @CXX_INCLUDES@ $(CXX_FLAGS) # How to compile the dependency file .cpp.d: @CXX_DEPENDS@ -I$(CANTERA_INCDIR) $(CXX_FLAGS) $*.cpp > $*.d # List of dependency files to be created DEPENDS=$(OBJS:.o=.d) surfaceSolver2.d # Program Name PROGRAM = $(PROG_NAME)$(EXE_EXT) # all rule makes a single program all: $(PROGRAM) surfaceSolver2 .depends # Rule to make the program $(PROGRAM): $(OBJS) $(CANTERA_LIB_DEP) $(CXX) -o $(PROGRAM) $(OBJS) $(LCXX_FLAGS) $(LINK_OPTIONS) \ $(CANTERA_LIBS) @LIBS@ $(FORT_LIBS) \ $(LCXX_END_LIBS) surfaceSolver2: surfaceSolver2.o $(CANTERA_LIB_DEP) $(CXX) -o surfaceSolver2 surfaceSolver2.o $(LCXX_FLAGS) $(LINK_OPTIONS) \ $(CANTERA_LIBS) @LIBS@ $(FORT_LIBS) \ $(LCXX_END_LIBS) # Add an additional target for stability: $(OBJS) surfaceSolver2.o : $(CANTERA_LIBDIR)/libctbase.a $(CANTERA_LIBDIR)/libthermo.a $(OBJS) surfaceSolver2.o : Makefile # depends target depends: $(RM) *.d .depends @MAKE@ .depends .depends: $(DEPENDS) cat *.d > .depends # Do the test -> For the windows vc++ environment, we have to skip checking on # whether the program is uptodate, because we don't utilize make # in that environment to build programs. test: ifeq ($(os_is_win), 1) else @ @MAKE@ -s $(PROGRAM) endif @ ./runtest @ ./runtest2 # clean target -> clean up clean: $(RM) $(OBJS) $(PROGRAM) $(DEPENDS) .depends surfaceSolver2 *.o ../../bin/rm_cvsignore (if test -d SunWS_cache ; then \ $(RM) -rf SunWS_cache ; \ fi ) ifeq ($(wildcard .depends), .depends) include .depends endif