diff inst/generate_makefile.m @ 68:4ef8dbafcdfc

New octave script for creation of function on the fly
author gedeone-octave <marco.vassallo@outlook.com>
date Sat, 27 Jul 2013 17:21:03 +0200
parents
children 5a4371f45fc4
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/inst/generate_makefile.m	Sat Jul 27 17:21:03 2013 +0200
@@ -0,0 +1,60 @@
+
+function output = generate_makefile (ufl_name, path)
+
+STRING ="\n\
+DIR = @@PATH@@\n\
+CPPFLAGS=\n\
+LIBS= -ldolfin\n\
+MKOCTFILE = mkoctfile\n\
+FFC = ffc\n\
+\n\
+OCTFILES = fem_fs_@@UFL_NAME@@.oct fem_rhs_@@UFL_NAME@@.oct fem_lhs_@@UFL_NAME@@.oct\n\
+\n\
+all : $(OCTFILES)\n\
+fs : fem_fs_@@UFL_NAME@@.oct\n\
+rhs : fem_rhs_@@UFL_NAME@@.oct\n\
+lhs : fem_lhs_@@UFL_NAME@@.oct\n\
+\n\
+fem_fs_@@UFL_NAME@@.o: fem_fs_@@UFL_NAME@@.cc\n\
+	$(MKOCTFILE) -I$(DIR) -I. $(CPPFLAGS) $(LDFLAGS) $< -c $@\n\
+\n\
+fem_fs_@@UFL_NAME@@.oct: @@UFL_NAME@@.h fem_fs_@@UFL_NAME@@.o\n\
+	$(MKOCTFILE) -s fem_fs_@@UFL_NAME@@.o $(DIR)fem_init_env.o $(LDFLAGS) $(LIBS) -o $@\n\
+\n\
+fem_rhs_@@UFL_NAME@@.o: fem_rhs_@@UFL_NAME@@.cc\n\
+	$(MKOCTFILE) -I$(DIR) -I. $(LDFLAGS) $(CPPFLAGS) $< -c $@\n\
+\n\
+fem_rhs_@@UFL_NAME@@.oct: @@UFL_NAME@@.h fem_rhs_@@UFL_NAME@@.o\n\
+	$(MKOCTFILE) -s fem_rhs_@@UFL_NAME@@.o $(DIR)fem_init_env.o $(LDFLAGS) $(LIBS) -o $@\n\
+\n\
+fem_lhs_@@UFL_NAME@@.o: fem_lhs_@@UFL_NAME@@.cc\n\
+	$(MKOCTFILE) -I$(DIR) -I. $(LDFLAGS) $(CPPFLAGS) $< -c $@\n\
+\n\
+fem_lhs_@@UFL_NAME@@.oct: @@UFL_NAME@@.h fem_lhs_@@UFL_NAME@@.o\n\
+	$(MKOCTFILE) -s fem_lhs_@@UFL_NAME@@.o $(DIR)fem_init_env.o $(LDFLAGS) $(LIBS) -o $@\n\
+\n\
+@@UFL_NAME@@.h: @@UFL_NAME@@.ufl\n\
+	$(FFC) -l dolfin @@UFL_NAME@@.ufl\n\
+\n\
+.PHONY: clean\n\
+\n\
+clean:\n\
+	 rm -f fem_fs_@@UFL_NAME@@.o fem_fs_@@UFL_NAME@@.cc @@UFL_NAME@@.h\n\
+	 rm -f fem_rhs_@@UFL_NAME@@.o fem_rhs_@@UFL_NAME@@.cc\n\
+	 rm -f fem_lhs_@@UFL_NAME@@.o fem_lhs_@@UFL_NAME@@.cc\n\
+	 rm -f Makefile_@@UFL_NAME@@\n\
+";
+
+STRING =  strrep (STRING, "@@UFL_NAME@@", ufl_name);
+STRING =  strrep (STRING, "@@PATH@@", path);
+
+fid = fopen (sprintf ("Makefile_%s", ufl_name), 'w');
+if (fid >= 0)
+  fputs (fid, STRING);
+  output = fclose (fid);
+else
+  error ("cannot open file");
+  output = 1;
+endif
+
+endfunction