#!/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 = runDiamond # the object files to be linked together. List those generated from Fortran # and from C/C++ separately OBJS = runDiamond.o # Location of the current build. Will assume that tests are run # in the source directory tree location src_dir_tree = 1 # 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 FORT_LIBS = @FLIBS@ # the C++ compiler CXX = @CXX@ # C++ compile flags ifeq ($(src_dir_tree), 1) CXX_FLAGS = -DSRCDIRTREE @CXXFLAGS@ else CXX_FLAGS = @CXXFLAGS@ endif # Ending C++ linking libraries LCXX_END_LIBS = @LCXX_END_LIBS@ # the directory where the Cantera libraries are located CANTERA_LIBDIR=@buildlib@ # required Cantera libraries CANTERA_LIBS = @LOCAL_LIBS@ -lctcxx # the directory where Cantera include files may be found. ifeq ($(src_dir_tree), 1) CANTERA_INCDIR=../../../Cantera/src else CANTERA_INCDIR=@ctroot@/build/include/cantera endif # 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 .@CXX_EXT@.@OBJ_EXT@: Interface.h $(CXX) -c $< -I$(CANTERA_INCDIR) $(CXX_FLAGS) # How to compile the dependency file .cpp.d: g++ -MM -I$(CANTERA_INCDIR) $(CXX_FLAGS) $*.cpp > $*.d # List of dependency files to be created DEPENDS=$(OBJS:.o=.d) # Program Name PROGRAM = $(PROG_NAME)$(EXE_EXT) # all rule makes a single program all: $(PROGRAM) # Rule to make the program $(PROGRAM): $(OBJS) $(CANTERA_LIBDIR)/libcantera.a $(CXX) -o $(PROGRAM) $(OBJS) $(LCXX_FLAGS) $(LINK_OPTIONS) \ $(CANTERA_LIBS) @LIBS@ $(FORT_LIBS) \ $(LCXX_END_LIBS) # 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@ $(PROGRAM) endif ./runtest # clean target -> clean up clean: $(RM) $(OBJS) $(PROGRAM) $(DEPENDS) .depends diamond.xml ../../../bin/rm_cvsignore (if test -d SunWS_cache ; then \ $(RM) -rf SunWS_cache ; \ fi )