diff --git a/reactos/ReactOS-generic.rbuild b/reactos/ReactOS-generic.rbuild
index 38310d6149e..4a1cc76e3e8 100644
--- a/reactos/ReactOS-generic.rbuild
+++ b/reactos/ReactOS-generic.rbuild
@@ -121,5 +121,5 @@
- -Wno-non-virtual-dtor
+ -Wno-non-virtual-dtor
diff --git a/reactos/ReactOS-i386.rbuild b/reactos/ReactOS-i386.rbuild
index e9c5bfee979..9505cee899f 100644
--- a/reactos/ReactOS-i386.rbuild
+++ b/reactos/ReactOS-i386.rbuild
@@ -19,30 +19,64 @@
-
- -Os
- -ftracer
- -momit-leaf-frame-pointer
-
-
- -Os
-
-
- -O1
-
-
- -O2
-
-
- -O3
-
+
+
+ -Os
+ -ftracer
+ -momit-leaf-frame-pointer
+
+
+ -Os
+
+
+ -O1
+
+
+ -O2
+
+
+ -O3
+
- -mpreferred-stack-boundary=2
- -fno-strict-aliasing
- -Wno-strict-aliasing
- -Wpointer-arith
- -Wno-multichar
-
- -disable-stdcall-fixup
+ -mpreferred-stack-boundary=2
+ -fno-strict-aliasing
+ -Wno-strict-aliasing
+ -Wpointer-arith
+ -Wno-multichar
+
+
+
+
+
+ /O1
+
+
+ /O2
+
+
+ /Ox /GS-
+ /Ot
+
+
+ /Ox /GS-
+ /Os
+
+
+ /Ox /GS-
+ /Os
+ /Ob2
+ /GF
+ /Gy
+
+
+ /GS-
+ /Zl
+ /Zi
+ /Wall
+
+
+
+ -disable-stdcall-fixup
+
diff --git a/reactos/tools/rbuild/backend/mingw/mingw.cpp b/reactos/tools/rbuild/backend/mingw/mingw.cpp
index 1e15dacea2f..30409918449 100644
--- a/reactos/tools/rbuild/backend/mingw/mingw.cpp
+++ b/reactos/tools/rbuild/backend/mingw/mingw.cpp
@@ -453,39 +453,42 @@ MingwBackend::GenerateGlobalVariables () const
GenerateGlobalProperties ( "=", ProjectNode.non_if_data );
- fprintf ( fMakefile, "PROJECT_CFLAGS += -Wall\n" );
- fprintf ( fMakefile, "PROJECT_CXXFLAGS += -Wall\n" );
- fprintf ( fMakefile, "ifneq ($(OARCH),)\n" );
- fprintf ( fMakefile, "PROJECT_CFLAGS += -march=$(OARCH)\n" );
- fprintf ( fMakefile, "PROJECT_CXXFLAGS += -march=$(OARCH)\n" );
- fprintf ( fMakefile, "endif\n" );
- fprintf ( fMakefile, "ifneq ($(TUNE),)\n" );
- fprintf ( fMakefile, "PROJECT_CFLAGS += -mtune=$(TUNE)\n" );
- fprintf ( fMakefile, "PROJECT_CXXFLAGS += -mtune=$(TUNE)\n" );
- fprintf ( fMakefile, "endif\n" );
+ if ( ProjectNode.configuration.Compiler == GnuGcc )
+ {
+ fprintf ( fMakefile, "PROJECT_CFLAGS += -Wall\n" );
+ fprintf ( fMakefile, "PROJECT_CXXFLAGS += -Wall\n" );
+ fprintf ( fMakefile, "ifneq ($(OARCH),)\n" );
+ fprintf ( fMakefile, "PROJECT_CFLAGS += -march=$(OARCH)\n" );
+ fprintf ( fMakefile, "PROJECT_CXXFLAGS += -march=$(OARCH)\n" );
+ fprintf ( fMakefile, "endif\n" );
+ fprintf ( fMakefile, "ifneq ($(TUNE),)\n" );
+ fprintf ( fMakefile, "PROJECT_CFLAGS += -mtune=$(TUNE)\n" );
+ fprintf ( fMakefile, "PROJECT_CXXFLAGS += -mtune=$(TUNE)\n" );
+ fprintf ( fMakefile, "endif\n" );
- fprintf ( fMakefile, "PROJECT_CFLAGS += -g%s\n", Environment::GetArch() == "amd64" ? "dwarf-2" : "stabs+" );
- fprintf ( fMakefile, "PROJECT_CXXFLAGS += -g%s\n", Environment::GetArch() == "amd64" ? "dwarf-2" : "stabs+" );
- fprintf ( fMakefile, "PROJECT_ASFLAGS += -g%s\n", Environment::GetArch() == "amd64" ? "dwarf-2" : "stabs+" );
+ fprintf ( fMakefile, "PROJECT_CFLAGS += -g%s\n", Environment::GetArch() == "amd64" ? "dwarf-2" : "stabs+" );
+ fprintf ( fMakefile, "PROJECT_CXXFLAGS += -g%s\n", Environment::GetArch() == "amd64" ? "dwarf-2" : "stabs+" );
+ fprintf ( fMakefile, "PROJECT_ASFLAGS += -g%s\n", Environment::GetArch() == "amd64" ? "dwarf-2" : "stabs+" );
+
+ if ( usePipe )
+ {
+ fprintf ( fMakefile, "PROJECT_CFLAGS += -pipe\n" );
+ fprintf ( fMakefile, "PROJECT_CXXFLAGS += -pipe\n" );
+ fprintf ( fMakefile, "PROJECT_ASFLAGS += -pipe\n" );
+ }
+
+ // Because RosBE gcc is built to suck
+ fputs ( "BUILTIN_HOST_CINCLUDES+= $(HOST_CFLAGS)\n", fMakefile );
+ fputs ( "BUILTIN_HOST_CPPINCLUDES+= $(HOST_CFLAGS)\n", fMakefile );
+ fputs ( "BUILTIN_HOST_CXXINCLUDES+= $(HOST_CPPFLAGS)\n", fMakefile );
+
+ // Would be nice to have our own C++ runtime
+ fputs ( "BUILTIN_CXXINCLUDES+= $(TARGET_CPPFLAGS)\n", fMakefile );
+ }
MingwModuleHandler::GenerateParameters ( "PROJECT", "+=", ProjectNode.non_if_data );
MingwModuleHandler::GenerateParameters ( "PROJECT_HOST", "+=", ProjectNode.host_non_if_data );
- if ( usePipe )
- {
- fprintf ( fMakefile, "PROJECT_CFLAGS += -pipe\n" );
- fprintf ( fMakefile, "PROJECT_CXXFLAGS += -pipe\n" );
- fprintf ( fMakefile, "PROJECT_ASFLAGS += -pipe\n" );
- }
-
- // Because RosBE gcc is built to suck
- fputs ( "BUILTIN_HOST_CINCLUDES+= $(HOST_CFLAGS)\n", fMakefile );
- fputs ( "BUILTIN_HOST_CPPINCLUDES+= $(HOST_CFLAGS)\n", fMakefile );
- fputs ( "BUILTIN_HOST_CXXINCLUDES+= $(HOST_CPPFLAGS)\n", fMakefile );
-
- // Would be nice to have our own C++ runtime
- fputs ( "BUILTIN_CXXINCLUDES+= $(TARGET_CPPFLAGS)\n", fMakefile );
-
// TODO: linker flags
fprintf ( fMakefile, "PROJECT_LFLAGS := '$(shell ${TARGET_CC} -print-libgcc-file-name)' %s\n", GenerateProjectLFLAGS ().c_str () );
fprintf ( fMakefile, "PROJECT_LPPFLAGS := '$(shell ${TARGET_CPP} -print-file-name=libstdc++.a)' '$(shell ${TARGET_CPP} -print-file-name=libgcc.a)' '$(shell ${TARGET_CPP} -print-file-name=libmingw32.a)' '$(shell ${TARGET_CPP} -print-file-name=libmingwex.a)' '$(shell ${TARGET_CPP} -print-file-name=libcoldname.a)'\n" );
@@ -771,6 +774,7 @@ MingwBackend::DetectCompiler ()
}
else if ( ProjectNode.configuration.Compiler == MicrosoftC )
{
+ compilerCommand = "cl";
detectedCompiler = DetectMicrosoftCompiler ( compilerVersion, mscPath );
supportedCompiler = true; // TODO
}
@@ -1015,6 +1019,7 @@ MingwBackend::DetectBinutils ()
}
else if ( ProjectNode.configuration.Linker == MicrosoftLink )
{
+ compilerCommand = "link";
detectedBinutils = DetectMicrosoftLinker ( binutilsVersion, mslinkPath );
supportedBinutils = true; // TODO
}
@@ -1094,6 +1099,8 @@ MingwBackend::DetectPipeSupport ()
else
printf ( "not detected\n" );
}
+ else
+ usePipe = false;
}
void