ide: tweak compiler config support for specifying output file extensions.
[sdk] / ide / src / IDESettings.ec
index bf7f56b..53191c2 100644 (file)
@@ -416,8 +416,12 @@ private:
                ccfg.arCommand = arDefaultCommand;
             if(!ccfg.objectFileExt || !ccfg.objectFileExt[0])
                ccfg.objectFileExt = objectDefaultFileExt;
-            /*if(!ccfg.outputFileExt || !ccfg.outputFileExt[0])
-               ccfg.outputFileExt = outputDefaultFileExt;*/
+            /*if(!ccfg.staticLibFileExt || !ccfg.staticLibFileExt[0])
+               ccfg.staticLibFileExt = staticLibDefaultFileExt;*/
+            /*if(!ccfg.sharedLibFileExt || !ccfg.sharedLibFileExt[0])
+               ccfg.sharedLibFileExt = sharedLibDefaultFileExt;*/
+            /*if(!ccfg.executableFileExt || !ccfg.executableFileExt[0])
+               ccfg.executableFileExt = outputDefaultFileExt;*/
             incref ccfg;
          }
       }
@@ -517,6 +521,21 @@ public:
       isset { return language != null; }
    }
 
+   property Array<NamedString> findInFileFileFilters
+   {
+      set
+      {
+         findInFileFileFilters.Free();
+         if(value)
+         {
+            delete findInFileFileFilters;
+            findInFileFileFilters = value;
+         }
+      }
+      get { return findInFileFileFilters; }
+      isset { return findInFileFileFilters.count != 0; }
+   }
+
 private:
    char * docDir;
    char * ideFileDialogLocation;
@@ -526,6 +545,7 @@ private:
    char * compilerConfigsDir;
    char * defaultCompiler;
    String language;
+   Array<NamedString> findInFileFileFilters { };
 
    CompilerConfig GetCompilerConfig(const String compilerName)
    {
@@ -565,6 +585,8 @@ private:
       delete ideFileDialogLocation;
       delete ideProjectFileDialogLocation;
       delete displayDriver;
+
+      if(findInFileFileFilters) findInFileFileFilters.Free();
    }
 
    void ForcePathSeparatorStyle(bool unixStyle)
@@ -915,17 +937,30 @@ public:
       get { return ldCommand; }
       isset { return ldCommand && ldCommand[0]; }
    }
+   bool noStripTarget;
    property const char * objectFileExt
    {
       set { delete objectFileExt; if(value && value[0]) objectFileExt = CopyString(value); }
       get { return objectFileExt && objectFileExt[0] ? objectFileExt : objectDefaultFileExt ; }
       isset { return objectFileExt && objectFileExt[0] && strcmp(objectFileExt, objectDefaultFileExt); }
    }
-   property const char * outputFileExt
+   property const char * staticLibFileExt
+   {
+      set { delete staticLibFileExt; if(value && value[0]) staticLibFileExt = CopyString(value); }
+      get { return staticLibFileExt; }
+      isset { return staticLibFileExt && staticLibFileExt[0]; }
+   }
+   property const char * sharedLibFileExt
+   {
+      set { delete sharedLibFileExt; if(value && value[0]) sharedLibFileExt = CopyString(value); }
+      get { return sharedLibFileExt; }
+      isset { return sharedLibFileExt && sharedLibFileExt[0]; }
+   }
+   property const char * executableFileExt
    {
-      set { delete outputFileExt; if(value && value[0]) outputFileExt = CopyString(value); }
-      get { return outputFileExt; }
-      isset { return outputFileExt && outputFileExt[0]; }
+      set { delete executableFileExt; if(value && value[0]) executableFileExt = CopyString(value); }
+      get { return executableFileExt; }
+      isset { return executableFileExt && executableFileExt[0]; }
    }
    property const char * executableLauncher
    {
@@ -1096,6 +1131,23 @@ public:
       get { return executableLauncher; }
       isset { return false; }
    }
+   property const char * outputFileExt
+   {
+      set { delete executableFileExt; if(value && value[0]) executableFileExt = CopyString(value); }
+      get { return executableFileExt; }
+      isset { return false; }
+   }
+   // utility
+   property bool hasDocumentOutput
+   {
+      get
+      {
+         bool result = executableFileExt && executableFileExt[0] &&
+               (!strcmpi(executableFileExt, "htm") || !strcmpi(executableFileExt, "html"));
+         return result;
+      }
+      isset { return false; }
+   }
 private:
    Array<String> includeDirs { };
    Array<String> libraryDirs { };
@@ -1120,7 +1172,9 @@ private:
    char * ldCommand;
    char * arCommand;
    char * objectFileExt;
-   char * outputFileExt;
+   char * staticLibFileExt;
+   char * sharedLibFileExt;
+   char * executableFileExt;
    char * executableLauncher;
    char * distccHosts;
    char * gnuToolchainPrefix;
@@ -1144,7 +1198,9 @@ private:
       delete ldCommand;
       delete arCommand;
       delete objectFileExt;
-      delete outputFileExt;
+      delete staticLibFileExt;
+      delete sharedLibFileExt;
+      delete executableFileExt;
       delete makeCommand;
       delete executableLauncher;
       delete distccHosts;
@@ -1181,8 +1237,11 @@ public:
          cxxCommand,
          arCommand,
          ldCommand,
+         noStripTarget,
          objectFileExt,
-         outputFileExt,
+         staticLibFileExt,
+         sharedLibFileExt,
+         executableFileExt,
          executableLauncher,
          ccacheEnabled,
          distccEnabled,