+/* $Id: YapiMakefileVisitor.java 1 2010-02-24 13:03:05Z haidw $ */
+package dol.visitor.yapi;
+
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.io.OutputStream;
+import java.io.PrintStream;
+import java.util.Vector;
+
+import dol.datamodel.pn.Process;
+import dol.datamodel.pn.ProcessNetwork;
+import dol.visitor.PNVisitor;
+
+/**
+ *
+ */
+public class YapiMakefileVisitor extends PNVisitor {
+
+ /**
+ *
+ */
+ public YapiMakefileVisitor(String dir) {
+ _dir = dir;
+ }
+
+ /**
+ *
+ */
+ public void visitComponent(ProcessNetwork pn) {
+ try {
+ String filename = _dir + _delimiter + "Makefile";
+ OutputStream file = new FileOutputStream(filename);
+ PrintStream ps = new PrintStream(file);
+ ps.println("YAPI = /lib/yapi");
+ ps.println("INCLUDES = -I$(YAPI)/include -Iwrappers -Ilib -Iprocesses -I.");
+ ps.println("LIBS = $(YAPI)/lib/libyapi.a");
+ ps.println("CXX = g++");
+ ps.println("CXXFLAGS = -g -Wall -O $(INCLUDES)");
+ ps.println("OBJS = application.o \\");
+ Vector<String> processList = new Vector<String>();
+ for (Process p : pn.getProcessList()) {
+ String basename = p.getBasename();
+ if (!processList.contains(basename)) {
+ processList.add(basename);
+ ps.println(" wrappers/" + p.getBasename()
+ + "_wrapper.o \\");
+ }
+ }
+ ps.println(" lib/dolSupport.o \\");
+ ps.println(" lib/ProcessWrapper.o \\");
+ ps.println(" lib/main.o");
+ ps.println();
+ ps.println("EXE = ./sc_application");
+ ps.println();
+ ps.println("all : $(EXE)");
+ ps.println();
+ ps.println("test : $(EXE)");
+ ps.println("\t@$(EXE)");
+ ps.println();
+ ps.println("$(EXE) : $(OBJS)");
+ ps.println("\t$(CXX) $(LDFLAGS) $(OBJS) $(LIBS) -o $(EXE)");
+ ps.println();
+ ps.println("clean : ;");
+ ps.println("\trm -rf $(OBJS) $(EXE)");
+ }
+ catch (IOException e) {
+ System.out.println(" Yapi Makefile Visitor: exception " +
+ "occured: " + e.getMessage());
+ e.printStackTrace();
+ }
+ }
+
+ protected String _dir = null;
+ protected String _name = "sc_application";
+}
+