* Rbuild, our build system, has served us well so far, but its usefulness has since...
[reactos.git] / reactos / tools / rbuild / backend / msvc / propsmaker.cpp
diff --git a/reactos/tools/rbuild/backend/msvc/propsmaker.cpp b/reactos/tools/rbuild/backend/msvc/propsmaker.cpp
deleted file mode 100644 (file)
index 70f2427..0000000
+++ /dev/null
@@ -1,195 +0,0 @@
-#ifdef _MSC_VER
-#pragma warning ( disable : 4786 )
-#endif//_MSC_VER
-
-#include <string>
-#include <vector>
-#include <set>
-#include <algorithm>
-#include <fstream>
-#include <iostream>
-
-#include <stdio.h>
-
-#include "msvc.h"
-
-using std::string;
-using std::vector;
-using std::set;
-
-typedef set<string> StringSet;
-
-#ifdef OUT
-#undef OUT
-#endif//OUT
-
-
-PropsMaker::PropsMaker (Project* ProjectNode,
-                                               std::string filename_props,
-                                               std::vector<MSVCConfiguration*> configurations)
-{
-       m_ProjectNode = ProjectNode;
-       m_configurations = configurations;
-
-       OUT = fopen ( filename_props.c_str(), "wb" );
-
-       if ( !OUT )
-       {
-               printf ( "Could not create file '%s'.\n", filename_props.c_str() );
-       }
-}
-
-PropsMaker::~PropsMaker ( )
-{
-       fclose ( OUT );
-}
-
-void 
-PropsMaker::_generate_header()
-{
-       fprintf ( OUT, "<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n");
-       fprintf ( OUT, "<Project ");
-       fprintf ( OUT, "DefaultTargets=\"Build\" ");
-       fprintf ( OUT, "ToolsVersion=\"4.0\" ");
-       fprintf ( OUT, "xmlns=\"http://schemas.microsoft.com/developer/msbuild/2003\">\r\n");
-}
-
-void 
-PropsMaker::_generate_footer()
-{
-       fprintf ( OUT, "</Project>\r\n");
-}
-
-void 
-PropsMaker::_generate_macro(std::string Name, std::string Value)
-{
-       fprintf ( OUT, "\t\t<%s>%s</%s>\r\n", Name.c_str(), Value.c_str(), Name.c_str());
-}
-
-void 
-PropsMaker::_generate_global_includes(bool debug, bool use_ros_headers)
-{
-       fprintf ( OUT, "\t\t<globalIncludes>");
-
-       const IfableData& data = m_ProjectNode->non_if_data;
-       //const vector<File*>& files = data.files;
-       size_t i;
-       const vector<Include*>& incs = data.includes;
-       for ( i = 0; i < incs.size(); i++ )
-       {
-               if ((incs[i]->directory->relative_path == "include\\crt" ||
-                    incs[i]->directory->relative_path == "include\\ddk" ||
-                    incs[i]->directory->relative_path == "include\\GL" ||
-                    incs[i]->directory->relative_path == "include\\psdk") &&
-                        ! use_ros_headers)
-               {
-                       continue;
-               }
-
-               if(incs[i]->directory->directory == SourceDirectory)
-                       fprintf ( OUT, "\"$(RootSrcDir)\\");
-               else if (incs[i]->directory->directory == IntermediateDirectory)
-                       fprintf ( OUT, "\"$(RootIntDir)\\");
-               else if (incs[i]->directory->directory == OutputDirectory)
-                       fprintf ( OUT, "\"$(RootOutDir)\\");
-               else
-                       continue;
-
-               fprintf ( OUT, "%s\" ; ", incs[i]->directory->relative_path.c_str());
-       }
-
-       fprintf ( OUT, "\"$(RootIntDir)\\include\" ; ");
-       fprintf ( OUT, "\"$(RootIntDir)\\include\\reactos\" ; ");
-
-       if ( !use_ros_headers )
-       {
-               // Add WDK or PSDK paths, if user provides them
-               if (getenv ( "BASEDIR" ) != NULL)
-               {
-                       string WdkBase = getenv ( "BASEDIR" );
-                       fprintf ( OUT, "\"%s\\inc\\api\" ; ", WdkBase.c_str());
-                       fprintf ( OUT, "\"%s\\inc\\crt\" ; ", WdkBase.c_str());
-                       fprintf ( OUT, "\"%s\\inc\\ddk\" ; ", WdkBase.c_str());
-               }
-       }
-       fprintf ( OUT, "\t</globalIncludes>\r\n");
-}
-
-void 
-PropsMaker::_generate_global_definitions(bool debug, bool use_ros_headers)
-{
-       fprintf ( OUT, "\t\t<globalDefines>");
-
-       // Always add _CRT_SECURE_NO_WARNINGS to disable warnings about not
-       // using the safe functions introduced in MSVC8.
-       fprintf ( OUT, "_CRT_SECURE_NO_WARNINGS ; ") ;
-
-       if ( debug )
-       {
-               fprintf ( OUT, "_DEBUG ; ");
-       }
-
-       if ( !use_ros_headers )
-       {
-               // this is a define in MinGW w32api, but not Microsoft's headers
-               fprintf ( OUT, "STDCALL=__stdcall ; ");
-       }
-
-       const IfableData& data = m_ProjectNode->non_if_data;
-       const vector<Define*>& defs = data.defines;
-       size_t i;
-
-       for ( i = 0; i < defs.size(); i++ )
-       {
-               if ( defs[i]->backend != "" && defs[i]->backend != "msvc" )
-                       continue;
-
-               if ( defs[i]->value != "" )
-                       fprintf ( OUT, "%s=%s ; ",defs[i]->name.c_str(), defs[i]->value.c_str());
-               else
-                       fprintf ( OUT, "%s ; ", defs[i]->name.c_str());
-       }
-
-       fprintf ( OUT, "\t</globalDefines>\r\n");
-}
-
-void 
-PropsMaker::_generate_props ( std::string solution_version, std::string studio_version )
-{
-
-       string srcdir = Environment::GetSourcePath();
-       string intdir = Environment::GetIntermediatePath ();
-       string outdir = Environment::GetOutputPath ();
-       string rosbedir = Environment::GetVariable("_ROSBE_BASEDIR");
-
-       if ( intdir == "obj-i386" )
-               intdir = srcdir + "\\obj-i386"; /* append relative dir from project dir */
-
-       if ( outdir == "output-i386" )
-               outdir = srcdir + "\\output-i386";
-
-       _generate_header();
-
-       fprintf ( OUT, "\t<PropertyGroup Label=\"UserMacros\">\r\n");
-       _generate_macro("RootSrcDir", srcdir);
-       _generate_macro("RootOutDir", outdir);
-       _generate_macro("RootIntDir", intdir);
-       _generate_macro("Tools", "$(RootOutDir)\\tools");
-       _generate_macro("RosBE", rosbedir);
-       fprintf ( OUT, "\t</PropertyGroup>\r\n");
-
-       for ( size_t icfg = 0; icfg < m_configurations.size(); icfg++ )
-       {
-               MSVCConfiguration* cfg = m_configurations[icfg];
-
-               if(cfg->optimization == RosBuild)
-                       continue;
-
-               fprintf ( OUT, "\t<PropertyGroup Condition=\"'$(Configuration)'=='%s'\">\r\n", cfg->name.c_str() );
-               _generate_global_includes(cfg->optimization == Debug, cfg->headers == ReactOSHeaders);
-           _generate_global_definitions(cfg->optimization == Debug, cfg->headers == ReactOSHeaders);
-               fprintf ( OUT, "\t</PropertyGroup>\r\n");
-       }
-
-       _generate_footer();
-}