Author Topic: suggestion: add "Download" button into Compiler Framework"  (Read 81083 times)

Offline dmoore

  • Developer
  • Lives here!
  • *****
  • Posts: 1576
Re: suggestion: add "Download" button into Compiler Framework"
« Reply #15 on: December 15, 2012, 03:27:15 pm »
Wasn't sure what the rationale was for commands only and whether it was a conscious decision that it should not be "runnable"
Well the issue here is: What to run? There is no executable produced or alike. So it will need some tweaking - currently C::B would report that the executable has not been built yet. Note that pre- and post-build steps actually should work. So what exactly would you "run"?

If it is an interpreted language, it would be the command to run the main module. No "build" is required but there might some deployment steps that could be put in the pure/post build commands.

Offline MortenMacFly

  • Administrator
  • Lives here!
  • *****
  • Posts: 9699
Re: suggestion: add "Download" button into Compiler Framework"
« Reply #16 on: December 16, 2012, 07:41:15 am »
If it is an interpreted language, it would be the command to run the main module. No "build" is required but there might some deployment steps that could be put in the pure/post build commands.
And what would be the difference to a pre-/ post-build step in the commands only target? (Sorry to maybe sound dumb - but I still don't see the advantage and seem missing the obvious...?!)
Compiler logging: Settings->Compiler & Debugger->tab "Other"->Compiler logging="Full command line"
C::B Manual: https://www.codeblocks.org/docs/main_codeblocks_en.html
C::B FAQ: https://wiki.codeblocks.org/index.php?title=FAQ

Offline dmoore

  • Developer
  • Lives here!
  • *****
  • Posts: 1576
Re: suggestion: add "Download" button into Compiler Framework"
« Reply #17 on: December 16, 2012, 04:17:04 pm »
If it is an interpreted language, it would be the command to run the main module. No "build" is required but there might some deployment steps that could be put in the pure/post build commands.
And what would be the difference to a pre-/ post-build step in the commands only target? (Sorry to maybe sound dumb - but I still don't see the advantage and seem missing the obvious...?!)

My idea is that interpreted (or any other non-compiled) projects be able to use the build framework like compiled projects. Seems a little odd that you would have to press build to run the project right? I can see cases where you would want to define both build and run.The build steps would only need to be run if there are changes to sources (e.g. resources might need to be repackages into zip files). The run command should run the main module. I have several small projects that could take advantage of this.

Offline MortenMacFly

  • Administrator
  • Lives here!
  • *****
  • Posts: 9699
Re: suggestion: add "Download" button into Compiler Framework"
« Reply #18 on: December 16, 2012, 06:48:58 pm »
My idea is that interpreted (or any other non-compiled) projects be able to use the build framework like compiled projects.
Oh - OK. But doesn't this require even more changes? Like adopting the build framework?
Compiler logging: Settings->Compiler & Debugger->tab "Other"->Compiler logging="Full command line"
C::B Manual: https://www.codeblocks.org/docs/main_codeblocks_en.html
C::B FAQ: https://wiki.codeblocks.org/index.php?title=FAQ

Offline Alpha

  • Developer
  • Lives here!
  • *****
  • Posts: 1513
Re: suggestion: add "Download" button into Compiler Framework"
« Reply #19 on: December 16, 2012, 08:43:14 pm »
Assuming I understand the idea being discussed, the following would be the core of the necessary changes (I think):
Code
Index: src/plugins/compilergcc/compilergcc.cpp
===================================================================
--- src/plugins/compilergcc/compilergcc.cpp (revision 8684)
+++ src/plugins/compilergcc/compilergcc.cpp (working copy)
@@ -1880,9 +1880,15 @@
     else
     {
         // commands-only target?
-        cbMessageBox(_("You can't \"run\" a commands-only target..."));
-        m_pProject->SetCurrentlyCompilingTarget(0);
-        return -1;
+        if (target->GetHostApplication().IsEmpty())
+        {
+            cbMessageBox(_("You must select a host application to \"run\" a commands-only target..."));
+            m_pProject->SetCurrentlyCompilingTarget(0);
+            return -1;
+        }
+        Manager::Get()->GetMacrosManager()->ReplaceEnvVars(hostapStr);
+        command << hostapStr << strSPACE;
+        command << target->GetExecutionParameters();
     }
 
     wxString script = command;
@@ -1903,7 +1909,7 @@
         cmd << command;
 
     Manager::Get()->GetLogManager()->Log(_("Checking for existence: ") + f.GetFullPath(), m_PageIndex);
-    if (!wxFileExists(f.GetFullPath()))
+    if ( (target->GetTargetType() != ttCommandsOnly) && !wxFileExists(f.GetFullPath()) )
     {
         int ret = cbMessageBox(_("It seems that this project has not been built yet.\n"
                                 "Do you want to build it now?"),
(Note: this code was very quickly stuck together; do not commit without changing/fixing/polishing.)

Offline MortenMacFly

  • Administrator
  • Lives here!
  • *****
  • Posts: 9699
Re: suggestion: add "Download" button into Compiler Framework"
« Reply #20 on: December 16, 2012, 10:03:47 pm »
Assuming I understand the idea being discussed, the following would be the core of the necessary changes (I think):
Well if thats what dmoore means its OK with me. But I assumed he means even more: Like calling a certain pre-compiler in the build stage... but I might think too complicated...
Compiler logging: Settings->Compiler & Debugger->tab "Other"->Compiler logging="Full command line"
C::B Manual: https://www.codeblocks.org/docs/main_codeblocks_en.html
C::B FAQ: https://wiki.codeblocks.org/index.php?title=FAQ

Offline dmoore

  • Developer
  • Lives here!
  • *****
  • Posts: 1576
Re: suggestion: add "Download" button into Compiler Framework"
« Reply #21 on: December 17, 2012, 02:36:58 am »
For now, Alpha's patch is good enough for me  :) (I haven't tested yet)

I would need to think about what else, if anything, is really needed.

Offline MortenMacFly

  • Administrator
  • Lives here!
  • *****
  • Posts: 9699
Re: suggestion: add "Download" button into Compiler Framework"
« Reply #22 on: December 17, 2012, 03:14:27 pm »
For now, Alpha's patch is good enough for me  :) (I haven't tested yet)
OK, nice - well that is easy, indeed.

(Note: this code was very quickly stuck together; do not commit without changing/fixing/polishing.)
Put it to the queue once ready...
Compiler logging: Settings->Compiler & Debugger->tab "Other"->Compiler logging="Full command line"
C::B Manual: https://www.codeblocks.org/docs/main_codeblocks_en.html
C::B FAQ: https://wiki.codeblocks.org/index.php?title=FAQ

Offline Alpha

  • Developer
  • Lives here!
  • *****
  • Posts: 1513
Re: suggestion: add "Download" button into Compiler Framework"
« Reply #23 on: December 17, 2012, 04:47:38 pm »
Put it to the queue once ready...
Okay; will do after I finish testing.

Offline dmoore

  • Developer
  • Lives here!
  • *****
  • Posts: 1576
Re: suggestion: add "Download" button into Compiler Framework"
« Reply #24 on: December 17, 2012, 06:21:17 pm »
A couple of suggested tweaks:

Code
Index: src/plugins/compilergcc/compilergcc.cpp
===================================================================
--- src/plugins/compilergcc/compilergcc.cpp (revision 8685)
+++ src/plugins/compilergcc/compilergcc.cpp (working copy)
@@ -1880,9 +1880,16 @@
     else
     {
         // commands-only target?
-        cbMessageBox(_("You can't \"run\" a commands-only target..."));
-        m_pProject->SetCurrentlyCompilingTarget(0);
-        return -1;
+        if (target->GetHostApplication().IsEmpty())
+        {
+            cbMessageBox(_("You must select a host application to \"run\" a commands-only target..."));
+            m_pProject->SetCurrentlyCompilingTarget(0);
+            return -1;
+        }
+        command << hostapStr << strSPACE;
+        command << target->GetExecutionParameters();
+        Manager::Get()->GetMacrosManager()->ReplaceMacros(command, target);
+        Manager::Get()->GetMacrosManager()->ReplaceEnvVars(command);
     }
 
     wxString script = command;
@@ -1903,12 +1910,12 @@
         cmd << command;
 
     Manager::Get()->GetLogManager()->Log(_("Checking for existence: ") + f.GetFullPath(), m_PageIndex);
-    if (!wxFileExists(f.GetFullPath()))
-    {
+    if ( (target->GetTargetType() != ttCommandsOnly) && !wxFileExists(f.GetFullPath()) )
+     {
         int ret = cbMessageBox(_("It seems that this project has not been built yet.\n"
-                                "Do you want to build it now?"),
-                                _("Information"),
-                                wxYES_NO | wxCANCEL | wxICON_QUESTION);
+                                 "Do you want to build it now?"),
+                               _("Information"),
+                               wxYES_NO | wxCANCEL | wxICON_QUESTION);
         switch (ret)
         {
             case wxID_YES:

Should also do something about the linker message and maybe remove (disable) the irrelevant build options tabs.
« Last Edit: December 17, 2012, 07:34:48 pm by dmoore »

Offline dmoore

  • Developer
  • Lives here!
  • *****
  • Posts: 1576
Re: suggestion: add "Download" button into Compiler Framework"
« Reply #25 on: December 18, 2012, 01:25:44 pm »
@Alpha: awesome  8) thanks