diff --git a/src/main/java/avatartranslator/toexecutable/AVATAR2CPOSIX.java b/src/main/java/avatartranslator/toexecutable/AVATAR2CPOSIX.java index a3c99b3f09cc88809c7b26b49850f5d328106748..1a70657bab72a4ee0d3c55f376622686fefcdff2 100755 --- a/src/main/java/avatartranslator/toexecutable/AVATAR2CPOSIX.java +++ b/src/main/java/avatartranslator/toexecutable/AVATAR2CPOSIX.java @@ -104,7 +104,12 @@ public class AVATAR2CPOSIX { public void saveInFiles(String path) throws FileException { TraceManager.addDev("Generating files"); - + if (!FileUtils.checkAndCreateAVATARDir(path)) + throw new FileException("ERROR: Executable code directory cannot be created."); + File src_dir = new File(path + GENERATED_PATH); + if (!src_dir.exists()) { + src_dir.mkdir(); + } if (mainFile != null) { TraceManager.addDev("Generating main files in " + path + mainFile.getName() + ".h"); FileUtils.saveFile(path + GENERATED_PATH + mainFile.getName() + ".h", Conversion.indentString(mainFile.getHeaderCode(), 2)); diff --git a/src/main/java/common/SpecConfigTTool.java b/src/main/java/common/SpecConfigTTool.java index 0a8a770e0cf041f2e250c4d9ce12e628ee92e14f..47c20568885d0a618d9b9493baae9a1a6efcf51c 100644 --- a/src/main/java/common/SpecConfigTTool.java +++ b/src/main/java/common/SpecConfigTTool.java @@ -5,14 +5,28 @@ public class SpecConfigTTool { public static String SystemCCodeCompileCommand=""; public static String SystemCCodeExecuteCommand=""; public static String SystemCCodeInteractiveExecuteCommand=""; + public static String CCodeDirectory=""; + public static String ProVerifCodeDirectory=""; + + public static String AVATARExecutableCodeDirectory=""; + public static String AVATARExecutableCodeCompileCommand=""; + public static String AVATARExecutableCodeExecuteCommand=""; + public static void loadConfiguration() { SystemCCodeDirectory = ConfigurationTTool.SystemCCodeDirectory; SystemCCodeCompileCommand = ConfigurationTTool.SystemCCodeCompileCommand; SystemCCodeExecuteCommand = ConfigurationTTool.SystemCCodeExecuteCommand; SystemCCodeInteractiveExecuteCommand = ConfigurationTTool.SystemCCodeInteractiveExecuteCommand; + CCodeDirectory = ConfigurationTTool.CCodeDirectory; + + ProVerifCodeDirectory = ConfigurationTTool.ProVerifCodeDirectory; + + AVATARExecutableCodeDirectory = ConfigurationTTool.AVATARExecutableCodeDirectory; + AVATARExecutableCodeCompileCommand = ConfigurationTTool.AVATARExecutableCodeCompileCommand; + AVATARExecutableCodeExecuteCommand = ConfigurationTTool.AVATARExecutableCodeExecuteCommand; } } diff --git a/src/main/java/myutil/FileUtils.java b/src/main/java/myutil/FileUtils.java index 31b6698745976242eb40fe9121ca8f76abeff774..312a5ecd16d541f0d4ec2d8b1441d858b803a473 100755 --- a/src/main/java/myutil/FileUtils.java +++ b/src/main/java/myutil/FileUtils.java @@ -45,6 +45,7 @@ import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.FilenameFilter; +import java.io.IOException; import common.ConfigurationTTool; @@ -89,6 +90,13 @@ public class FileUtils extends org.apache.commons.io.FileUtils{ return new File(path).isDirectory(); } + /** + * Check and create the directory for c++ code generation in DIPLODOCUS + * @author Fabien Tessier + * @param s directory path + * @return true if there's no error, false if the directory cannot be created + * @throws FileException + */ public static boolean checkAndCreateDir(String s) throws FileException { File f = new File(s); try { @@ -99,10 +107,10 @@ public class FileUtils extends org.apache.commons.io.FileUtils{ File make = new File(ConfigurationTTool.SystemCCodeDirectory + "Makefile"); File defs = new File(ConfigurationTTool.SystemCCodeDirectory + "Makefile.defs"); File src = new File(ConfigurationTTool.SystemCCodeDirectory + "src_simulator"); - File dir = new File(s); - FileUtils.copyFileToDirectory(make, dir, false); - FileUtils.copyFileToDirectory(defs, dir, false); - FileUtils.copyDirectoryToDirectory(src, dir); + + FileUtils.copyFileToDirectory(make, f, false); + FileUtils.copyFileToDirectory(defs, f, false); + FileUtils.copyDirectoryToDirectory(src, f); } return true; } catch (Exception e) { @@ -110,6 +118,38 @@ public class FileUtils extends org.apache.commons.io.FileUtils{ } } + /** + * Check and create the directory for c code generation in AVATAR + * @author Fabien Tessier + * @param s directory path + * @return true if there's no error, false if the directory cannot be created + * @throws FileException + */ + public static boolean checkAndCreateAVATARDir(String s) throws FileException { + File f = new File(s); + try { + if (!f.exists()) + if(!f.mkdir()) + return false; + if (!s.equals(ConfigurationTTool.AVATARExecutableCodeDirectory)) { + File make = new File(ConfigurationTTool.AVATARExecutableCodeDirectory + "Makefile"); + File defs = new File(ConfigurationTTool.AVATARExecutableCodeDirectory + "Makefile.defs"); + File soclib = new File(ConfigurationTTool.AVATARExecutableCodeDirectory + "Makefile.forsoclib"); + File src = new File(ConfigurationTTool.AVATARExecutableCodeDirectory + "src"); + + FileUtils.copyFileToDirectory(make, f); + FileUtils.copyFileToDirectory(defs, f); + FileUtils.copyFileToDirectory(soclib, f); + FileUtils.copyDirectoryToDirectory(src, f); + } + return true; + } + catch (IOException e) { + throw new FileException(e.getMessage()); + } + + } + public static boolean checkFileForSave(File file) throws FileException { // boolean ok = true; // String pb = ""; diff --git a/src/main/java/ui/MainGUI.java b/src/main/java/ui/MainGUI.java index 09bb4e54d3ca53bac7ea5b26a669ad3adb7ba41a..5003a67b5e0b26ccb7b86fd5ef37f9198c1a8d01 100644 --- a/src/main/java/ui/MainGUI.java +++ b/src/main/java/ui/MainGUI.java @@ -2332,10 +2332,15 @@ public class MainGUI implements ActionListener, WindowListener, KeyListener, Pe public void setDirConfig() { SpecConfigTTool.SystemCCodeDirectory = dir.getAbsolutePath() + "/c++_code/"; SpecConfigTTool.CCodeDirectory = dir.getAbsolutePath() + "/c_code/"; + SpecConfigTTool.ProVerifCodeDirectory = dir.getAbsolutePath() + "/proverif/"; + SpecConfigTTool.AVATARExecutableCodeDirectory = dir.getAbsolutePath() + "/AVATAR_executablecode/"; + SpecConfigTTool.SystemCCodeCompileCommand = ConfigurationTTool.SystemCCodeCompileCommand.replace(ConfigurationTTool.SystemCCodeDirectory, SpecConfigTTool.SystemCCodeDirectory); SpecConfigTTool.SystemCCodeExecuteCommand = ConfigurationTTool.SystemCCodeExecuteCommand.replace(ConfigurationTTool.SystemCCodeDirectory, SpecConfigTTool.SystemCCodeDirectory); SpecConfigTTool.SystemCCodeInteractiveExecuteCommand = ConfigurationTTool.SystemCCodeInteractiveExecuteCommand.replace(ConfigurationTTool.SystemCCodeDirectory, SpecConfigTTool.SystemCCodeDirectory); + SpecConfigTTool.AVATARExecutableCodeExecuteCommand = ConfigurationTTool.AVATARExecutableCodeExecuteCommand.replace(ConfigurationTTool.AVATARExecutableCodeDirectory, SpecConfigTTool.AVATARExecutableCodeDirectory); + SpecConfigTTool.AVATARExecutableCodeCompileCommand = ConfigurationTTool.AVATARExecutableCodeCompileCommand.replace(ConfigurationTTool.AVATARExecutableCodeDirectory, SpecConfigTTool.AVATARExecutableCodeDirectory); } public void setBasicConfig() { @@ -4247,7 +4252,7 @@ public class MainGUI implements ActionListener, WindowListener, KeyListener, Pe adp = (AvatarDesignPanel) tp; limit=false; } - JDialogProverifVerification jgen = new JDialogProverifVerification(frame, this, "Security verification with ProVerif", ConfigurationTTool.ProVerifVerifierHost, ConfigurationTTool.ProVerifCodeDirectory, ConfigurationTTool.ProVerifVerifierPath, adp,limit); + JDialogProverifVerification jgen = new JDialogProverifVerification(frame, this, "Security verification with ProVerif", ConfigurationTTool.ProVerifVerifierHost, SpecConfigTTool.ProVerifCodeDirectory, ConfigurationTTool.ProVerifVerifierPath, adp,limit); // jgen.setSize(500, 450); GraphicLib.centerOnParent(jgen, 500, 450); jgen.setVisible(true); @@ -4274,7 +4279,7 @@ public class MainGUI implements ActionListener, WindowListener, KeyListener, Pe public void avatarExecutableCodeGeneration() { TraceManager.addDev("Avatar code generation"); - JDialogAvatarExecutableCodeGeneration jgen = new JDialogAvatarExecutableCodeGeneration(frame, this, "Executable Code generation, compilation and execution", ConfigurationTTool.AVATARExecutableCodeHost, ConfigurationTTool.AVATARExecutableCodeDirectory, ConfigurationTTool.AVATARExecutableCodeCompileCommand, ConfigurationTTool.AVATARExecutableCodeExecuteCommand, ConfigurationTTool.AVATARExecutableSoclibCodeCompileCommand, ConfigurationTTool.AVATARExecutableSoclibCodeExecuteCommand, ConfigurationTTool.AVATARExecutableSoclibTraceFile); + JDialogAvatarExecutableCodeGeneration jgen = new JDialogAvatarExecutableCodeGeneration(frame, this, "Executable Code generation, compilation and execution", ConfigurationTTool.AVATARExecutableCodeHost, SpecConfigTTool.AVATARExecutableCodeDirectory, SpecConfigTTool.AVATARExecutableCodeCompileCommand, SpecConfigTTool.AVATARExecutableCodeExecuteCommand, ConfigurationTTool.AVATARExecutableSoclibCodeCompileCommand, ConfigurationTTool.AVATARExecutableSoclibCodeExecuteCommand, ConfigurationTTool.AVATARExecutableSoclibTraceFile); // jgen.setSize(500, 450); GraphicLib.centerOnParent(jgen, 500, 450); jgen.setVisible(true); diff --git a/src/main/java/ui/window/JDialogAvatarExecutableCodeGeneration.java b/src/main/java/ui/window/JDialogAvatarExecutableCodeGeneration.java index 0b3222f149788f59a2b66fffbf2e053418e7cd04..4525077f5425699bb1f8385a089851e336dc6267 100644 --- a/src/main/java/ui/window/JDialogAvatarExecutableCodeGeneration.java +++ b/src/main/java/ui/window/JDialogAvatarExecutableCodeGeneration.java @@ -151,15 +151,12 @@ public class JDialogAvatarExecutableCodeGeneration extends javax.swing.JFrame im f = _f; mgui = _mgui; - if (pathCode == null) { - pathCode = _pathCode; - } - if (pathCompiler == null) - pathCompiler = _pathCompiler; + pathCode = _pathCode; + + pathCompiler = _pathCompiler; - if (pathExecute == null) - pathExecute = _pathExecute; + pathExecute = _pathExecute; if (pathCompileSoclib == null) { pathCompileSoclib = _pathCompilerSoclib; diff --git a/src/main/java/ui/window/JDialogProverifVerification.java b/src/main/java/ui/window/JDialogProverifVerification.java index 7b950da9452b121f345f408e6b8375ca7175b7d9..9a1ba9621e2cfda260c6db5688ffae432b18c6d2 100644 --- a/src/main/java/ui/window/JDialogProverifVerification.java +++ b/src/main/java/ui/window/JDialogProverifVerification.java @@ -164,9 +164,8 @@ public class JDialogProverifVerification extends JDialog implements ActionListen this.adp = adp; this.pvoa = null; this.limit=lim; - if (pathCode == null) { - pathCode = _pathCode; - } + + pathCode = _pathCode; if (pathExecute == null) pathExecute = _pathExecute; @@ -439,6 +438,8 @@ public class JDialogProverifVerification extends JDialog implements ActionListen } testFile = new File(pathCode); + if (!testFile.exists()) + testFile.mkdirs(); if (testFile.isDirectory()){ pathCode += File.separator;