From 22c3ddd313bc5120077cd6aaf1660c01ab65fbb6 Mon Sep 17 00:00:00 2001 From: Pherring04 Date: Thu, 13 Feb 2025 10:47:34 -0600 Subject: [PATCH] S_overrides fix --- bin/trick-ify | 13 +++-- share/trick/makefiles/trickify.mk | 6 ++- share/trick/pymods/trick/build_trickify.py | 12 +++-- .../trick/build_trickify_S_source_hh.py | 6 +-- .../pymods/trick/build_trickify_obj_list.py | 6 +-- .../pymods/trick/build_trickify_src_list.py | 6 +-- .../java/trick/trickify/TrickifyFrame.java | 49 ++++++++++++++----- 7 files changed, 62 insertions(+), 36 deletions(-) diff --git a/bin/trick-ify b/bin/trick-ify index 514ce6ef9..83b7e98ac 100755 --- a/bin/trick-ify +++ b/bin/trick-ify @@ -21,6 +21,7 @@ $no_source_build = 0 ; # Arg $no_clean_obj = 0 ; # Don't rebuild trickify_obj_list $no_clean_src = 0 ; # Don't rebuild trickify_src_list $no_clean_s_source = 0 ; # Don't rebuild S_source.hh +$s_overrides = "" ; # Directory containing S_override make files GetOptions ( @@ -38,7 +39,8 @@ GetOptions "n=s" => \$name, # Set the library name "b=s" => \$build_type, # Set library build type "v" => \$debug, # Verbose, print debug info - "trick_home=s" => \$trick_home # Set trick home directory + "trick_home=s" => \$trick_home, # Set trick home directory + "s_overrides=s" => \$s_overrides # Directory containing S_override make files ) ; $full_build = !$no_source_build ; @@ -83,6 +85,7 @@ $ENV{'TRICKIFY_CXX_FLAGS'} = "$source_dir_args -I $trick_home" . "/include" ; $ENV{'TRICKIFY_OBJECT_NAME'} = "$name.$build_type" ; $ENV{'TRICKIFY_SOURCE'} = "$source_dir" ; $ENV{'TRICKIFY_HEADER'} = "$header_dir" ; +$ENV{'TRICKIFY_S_OVERRIDES'} = "$s_overrides" ; if ( $build_type eq o ) { $ENV{'TRICKIFY_BUILD_TYPE'} = PLO ; @@ -134,15 +137,15 @@ if ($full_build) foreach $src (@src_files) { $file = $src ; - if($file =~ /\S*(\Q.c\E)$/) + if($file =~ /\S\w*(\Q.c\E)$/) { $file =~ s/\Q.c\E$// ; - $cmd = "gcc $source_make_args -I $trick_home" . "/include -c $src -o $file.o" ; + $cmd = "gcc $source_make_args -I $trick_home -I $trick_home" . "/include -I $header_dir -c $src -o $file.o" ; } else { - $file =~ s/\Q.cpp\E$// ; - $cmd = "g++ $source_make_args -I $trick_home" . "/include -c $src -o $file.o" ; + $file =~ s/\Q.\E\w*$// ; + $cmd = "g++ $source_make_args -I $trick_home -I $trick_home" . "/include -I $header_dir -c $src -o $file.o" ; } if($debug) { diff --git a/share/trick/makefiles/trickify.mk b/share/trick/makefiles/trickify.mk index 6be2dd4ba..839f8a2de 100644 --- a/share/trick/makefiles/trickify.mk +++ b/share/trick/makefiles/trickify.mk @@ -88,6 +88,10 @@ # For more information, see: # https://nasa.github.io/trick/documentation/building_a_simulation/Trickified-Project-Libraries +MY_HOME := $(dir $(lastword $(MAKEFILE_LIST))) + +include $(TRICKIFY_S_OVERRIDES) + ifndef TRICKIFY_CXX_FLAGS $(error TRICKIFY_CXX_FLAGS must be set) endif @@ -100,7 +104,7 @@ TRICKIFY_OBJECT_NAME ?= trickified.o TRICKIFY_PYTHON_DIR ?= python TRICKIFY_PYTHON_DIR := $(abspath $(TRICKIFY_PYTHON_DIR)) -include $(dir $(lastword $(MAKEFILE_LIST)))Makefile.common +include $(MY_HOME)Makefile.common BUILD_DIR := $(dir $(MAKE_OUT)) PY_LINK_LIST := $(BUILD_DIR)trickify_py_link_list diff --git a/share/trick/pymods/trick/build_trickify.py b/share/trick/pymods/trick/build_trickify.py index 897b5932c..7d809864e 100644 --- a/share/trick/pymods/trick/build_trickify.py +++ b/share/trick/pymods/trick/build_trickify.py @@ -1,13 +1,17 @@ from pathlib import Path import os -def_header_ext = ["h", "hh", "hpp", "H", "hxx", "h++"] +def_header_ext = [".h", "hh", "hpp", "H", "hxx", "h++"] def_src_ext = ["cpp", "c"] def find_files_by_extension(loc, ext): - path = Path(loc) - files = list(path.rglob(f'*.{ext}')) - return files + file_list = [] + for root, dirs, files in os.walk(loc): + for f in files: + if f.endswith(ext): + file_list.append(os.path.join(root, f)) + print(file_list) + return file_list def build_S_source(): loc = "" diff --git a/share/trick/pymods/trick/build_trickify_S_source_hh.py b/share/trick/pymods/trick/build_trickify_S_source_hh.py index fb9316b61..a92b59768 100644 --- a/share/trick/pymods/trick/build_trickify_S_source_hh.py +++ b/share/trick/pymods/trick/build_trickify_S_source_hh.py @@ -1,10 +1,6 @@ import os -path = "" -if "TRICK_HOME" in os.environ: - path = os.getenv("TRICK_HOME") -path += "/share/trick/pymods/trick/build_trickify.py" - +path = os.path.dirname(os.path.abspath(__file__)) + "/build_trickify.py" exec(open(path).read()) build_S_source() diff --git a/share/trick/pymods/trick/build_trickify_obj_list.py b/share/trick/pymods/trick/build_trickify_obj_list.py index 6a878671b..4066cf2e2 100644 --- a/share/trick/pymods/trick/build_trickify_obj_list.py +++ b/share/trick/pymods/trick/build_trickify_obj_list.py @@ -1,10 +1,6 @@ import os -path = "" -if "TRICK_HOME" in os.environ: - path = os.getenv("TRICK_HOME") -path += "/share/trick/pymods/trick/build_trickify.py" - +path = os.path.dirname(os.path.abspath(__file__)) + "/build_trickify.py" exec(open(path).read()) build_obj_list() diff --git a/share/trick/pymods/trick/build_trickify_src_list.py b/share/trick/pymods/trick/build_trickify_src_list.py index f79903be1..d3a9466ae 100644 --- a/share/trick/pymods/trick/build_trickify_src_list.py +++ b/share/trick/pymods/trick/build_trickify_src_list.py @@ -1,10 +1,6 @@ import os -path = "" -if "TRICK_HOME" in os.environ: - path = os.getenv("TRICK_HOME") -path += "/share/trick/pymods/trick/build_trickify.py" - +path = os.path.dirname(os.path.abspath(__file__)) + "/build_trickify.py" exec(open(path).read()) build_src_list() diff --git a/trick_source/java/src/main/java/trick/trickify/TrickifyFrame.java b/trick_source/java/src/main/java/trick/trickify/TrickifyFrame.java index 049550c75..63c002cb1 100644 --- a/trick_source/java/src/main/java/trick/trickify/TrickifyFrame.java +++ b/trick_source/java/src/main/java/trick/trickify/TrickifyFrame.java @@ -9,7 +9,7 @@ public class TrickifyFrame { - private String defaultDirectory; + private String trick_home; private JFrame mainFrame; private int mainFrameWidth = 1000; @@ -22,6 +22,7 @@ public class TrickifyFrame private DirSelect trickify_path_dirs; private DirSelect source_make_dirs; private DirSelect log_dirs; + private DirSelect s_overrides_dirs; private LabeledTextField name_field; private LabeledTextField trickify_args_field; private LabeledTextField source_make_args_field; @@ -43,16 +44,23 @@ public class TrickifyFrame private JButton runButton; private JButton exportButton; - public ArrayList getTrickifyCmd() + public ArrayList getTrickifyCmd(boolean useQuotes) { ArrayList cmdLine = new ArrayList(); - cmdLine.add("trick-ify"); + cmdLine.add(trick_home + "/bin/trick-ify"); String src_dirs_txt = src_dirs.getDirs().trim(); if(!src_dirs_txt.equals("")) { cmdLine.add("-d"); - cmdLine.add(src_dirs_txt); + if(useQuotes) + { + cmdLine.add("\"" + src_dirs_txt + "\""); + } + else + { + cmdLine.add(src_dirs_txt); + } } String trick_home_dirs_txt = trick_home_dirs.getDirs().trim(); @@ -96,6 +104,13 @@ public ArrayList getTrickifyCmd() { lib_name = build_path_dirs_txt; } + + String s_overrides_dirs_txt = s_overrides_dirs.getDirs().trim(); + if(!s_overrides_dirs_txt.equals("")) + { + cmdLine.add("--s_overrides"); + cmdLine.add(s_overrides_dirs_txt); + } String name_field_txt = name_field.getText().trim(); if(!name_field_txt.equals("")) @@ -167,7 +182,7 @@ private void update_checkbox_pos() void trickify() { - ArrayList cmd = getTrickifyCmd(); + ArrayList cmd = getTrickifyCmd(false); String[] cmdLine = new String[cmd.size()]; cmdLine = cmd.toArray(cmdLine); System.out.println("Executing: " + String.join(" ", cmd)); @@ -186,7 +201,8 @@ void trickify() PrintWriter logfile = new PrintWriter(log_dirs_path + System.getProperty("file.separator") + "trickify.log", "UTF-8"); logfile.println(output); logfile.close(); - + + System.out.println("Your technological distinctiveness has been trickified."); } catch (IOException e) { @@ -197,6 +213,7 @@ void trickify() TrickifyFrame() { String s = System.getProperty("file.separator"); + trick_home = new File(TrickifyFrame.class.getProtectionDomain().getCodeSource().getLocation().getPath()).getParentFile().getParentFile().getParentFile().getParentFile().getParentFile().getAbsolutePath(); mainFrame = new JFrame(); @@ -220,7 +237,7 @@ void trickify() trick_home_dirs = new DirSelect(); trick_home_dirs.setLabel("Trick Home Directory"); - trick_home_dirs.setDirs(System.getenv("TRICK_HOME")); + trick_home_dirs.setDirs(trick_home); trick_home_dirs.setButtonText("Choose"); trick_home_dirs.setPosition(fields_x, fields_relative_offset); fields_relative_offset += fields_offset; @@ -230,7 +247,7 @@ void trickify() trickify_path_dirs = new DirSelect(); trickify_path_dirs.setLabel("Trickify Makefile"); - trickify_path_dirs.setDirs(System.getenv("TRICK_HOME") + s + "share" + s + "trick" + s + "makefiles" + s + "trickify.mk"); + trickify_path_dirs.setDirs(trick_home + s + "share" + s + "trick" + s + "makefiles" + s + "trickify.mk"); trickify_path_dirs.setButtonText("Choose"); trickify_path_dirs.setPosition(fields_x, fields_relative_offset); fields_relative_offset += fields_offset; @@ -263,6 +280,16 @@ void trickify() source_make_args_field.setToolTipText("Arguments to provide to the above make file."); source_make_args_field.addToPanel(mainPanel); + s_overrides_dirs = new DirSelect(); + s_overrides_dirs.setLabel("S_overrides"); + s_overrides_dirs.setButtonText("Choose"); + s_overrides_dirs.setPosition(fields_x, fields_relative_offset); + fields_relative_offset += fields_offset; + s_overrides_dirs.allowMultiple(false); + s_overrides_dirs.selectFile(true); + s_overrides_dirs.setToolTipText("S_overrides to incorporate"); + s_overrides_dirs.addToPanel(mainPanel); + build_path_dirs = new DirSelect(); build_path_dirs.setLabel("Build Path"); build_path_dirs.setDirs(System.getProperty("user.dir")); @@ -288,7 +315,7 @@ void trickify() log_dirs.setPosition(fields_x, fields_relative_offset); fields_relative_offset += fields_offset; log_dirs.allowMultiple(false); - trickify_path_dirs.selectFile(false); + log_dirs.selectFile(false); log_dirs.setToolTipText("Where to drop the log file."); log_dirs.addToPanel(mainPanel); @@ -402,12 +429,12 @@ public void actionPerformed(ActionEvent e) exportButton = new JButton(); exportButton.setBounds(600, mainFrameHeight-30, 150, 20); - exportButton.setText("Export"); + exportButton.setText("Print"); exportButton.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { - System.out.println(String.join(" ", getTrickifyCmd())); + System.out.println(String.join(" ", getTrickifyCmd(true))); } } ); mainPanel.add(exportButton);