diff --git a/reactos/Makefile b/reactos/Makefile
index d702845c1a5..c97582c697c 100644
--- a/reactos/Makefile
+++ b/reactos/Makefile
@@ -35,7 +35,6 @@
#
# ROS_RBUILDFLAGS
# Pass parameters to rbuild.
-#
.PHONY: all
.PHONY: clean
diff --git a/reactos/drivers/dd/null/null.xml b/reactos/drivers/dd/null/null.xml
index 6a0dc172893..310cdbd4e96 100644
--- a/reactos/drivers/dd/null/null.xml
+++ b/reactos/drivers/dd/null/null.xml
@@ -1,9 +1,9 @@
.
+ pseh
ntoskrnl
hal
- pseh
null.c
null.rc
diff --git a/reactos/drivers/fs/vfat/vfatfs.xml b/reactos/drivers/fs/vfat/vfatfs.xml
index 97bfb26a424..12aef38f53d 100644
--- a/reactos/drivers/fs/vfat/vfatfs.xml
+++ b/reactos/drivers/fs/vfat/vfatfs.xml
@@ -2,6 +2,7 @@
.
+ -lgcc
ntoskrnl
hal
blockdev.c
diff --git a/reactos/drivers/lib/bzip2/bzip2.xml b/reactos/drivers/lib/bzip2/bzip2.xml
index 4e7936b12c5..fbec0f4210d 100644
--- a/reactos/drivers/lib/bzip2/bzip2.xml
+++ b/reactos/drivers/lib/bzip2/bzip2.xml
@@ -3,6 +3,7 @@
+ -lgcc
ntoskrnl
hal
bzlib.c
diff --git a/reactos/drivers/net/afd/afd.xml b/reactos/drivers/net/afd/afd.xml
index a76d846a06b..629e93d291a 100644
--- a/reactos/drivers/net/afd/afd.xml
+++ b/reactos/drivers/net/afd/afd.xml
@@ -2,11 +2,11 @@
include
include/afd
+ pseh
ntoskrnl
hal
- pseh
- afd.h
+ afd.h
bind.c
diff --git a/reactos/drivers/storage/disk/disk.xml b/reactos/drivers/storage/disk/disk.xml
index 5cf36f359ed..285d009688a 100644
--- a/reactos/drivers/storage/disk/disk.xml
+++ b/reactos/drivers/storage/disk/disk.xml
@@ -1,5 +1,6 @@
+ -lgcc
ntoskrnl
hal
class2
diff --git a/reactos/subsys/win32k/win32k.xml b/reactos/subsys/win32k/win32k.xml
index 89f227d61f7..c0523debaa4 100644
--- a/reactos/subsys/win32k/win32k.xml
+++ b/reactos/subsys/win32k/win32k.xml
@@ -9,10 +9,10 @@
0x0501
0x600
+ pseh
rosrtl
ntoskrnl
hal
- pseh
freetype
w32k.h
diff --git a/reactos/tools/rbuild/backend/mingw/modulehandler.cpp b/reactos/tools/rbuild/backend/mingw/modulehandler.cpp
index 0f14cd8c447..11e9bb07722 100644
--- a/reactos/tools/rbuild/backend/mingw/modulehandler.cpp
+++ b/reactos/tools/rbuild/backend/mingw/modulehandler.cpp
@@ -1511,6 +1511,15 @@ MingwModuleHandler::GenerateOtherMacros ()
nasmflags.c_str () );
}
+ string linkerflags = TypeSpecificLinkerFlags();
+ if ( linkerflags.size() > 0 )
+ {
+ fprintf ( fMakefile,
+ "%s += %s\n\n",
+ linkerflagsMacro.c_str (),
+ linkerflags.c_str () );
+ }
+
fprintf ( fMakefile, "\n\n" );
// future references to the macros will be to get their values
diff --git a/reactos/tools/rbuild/backend/mingw/modulehandler.h b/reactos/tools/rbuild/backend/mingw/modulehandler.h
index fe80ae71cc6..35b1ee6c721 100644
--- a/reactos/tools/rbuild/backend/mingw/modulehandler.h
+++ b/reactos/tools/rbuild/backend/mingw/modulehandler.h
@@ -49,6 +49,7 @@ public:
virtual void Process () = 0;
virtual std::string TypeSpecificCFlags() { return ""; }
virtual std::string TypeSpecificNasmFlags() { return ""; }
+ virtual std::string TypeSpecificLinkerFlags() { return ""; }
void GenerateInvocations () const;
void GenerateCleanTarget () const;
static bool ReferenceObjects ( const Module& module );
@@ -196,6 +197,7 @@ public:
MingwKernelModuleHandler ( const Module& module );
virtual HostType DefaultHost() { return HostFalse; }
virtual void Process ();
+ std::string TypeSpecificCFlags() { return "-D_SEH_NO_NATIVE_NLG"; }
private:
void GenerateKernelModuleTarget ();
};
@@ -229,6 +231,8 @@ public:
MingwKernelModeDLLModuleHandler ( const Module& module );
virtual HostType DefaultHost() { return HostFalse; }
virtual void Process ();
+ std::string TypeSpecificCFlags() { return "-D_SEH_NO_NATIVE_NLG"; }
+ std::string TypeSpecificLinkerFlags() { return "-nostartfiles -nostdlib"; }
private:
void GenerateKernelModeDLLModuleTarget ();
};
@@ -240,7 +244,8 @@ public:
MingwKernelModeDriverModuleHandler ( const Module& module );
virtual HostType DefaultHost() { return HostFalse; }
virtual void Process ();
- std::string TypeSpecificCFlags() { return "-D__NTDRIVER__"; }
+ std::string TypeSpecificCFlags() { return "-D__NTDRIVER__ -D_SEH_NO_NATIVE_NLG"; }
+ std::string TypeSpecificLinkerFlags() { return "-nostartfiles -nostdlib"; }
private:
void GenerateKernelModeDriverModuleTarget ();
};
@@ -252,6 +257,8 @@ public:
MingwNativeDLLModuleHandler ( const Module& module );
virtual HostType DefaultHost() { return HostFalse; }
virtual void Process ();
+ std::string TypeSpecificCFlags() { return "-D_SEH_NO_NATIVE_NLG"; }
+ std::string TypeSpecificLinkerFlags() { return "-nostartfiles -nostdlib"; }
private:
void GenerateNativeDLLModuleTarget ();
};
@@ -263,7 +270,8 @@ public:
MingwNativeCUIModuleHandler ( const Module& module );
virtual HostType DefaultHost() { return HostFalse; }
virtual void Process ();
- std::string TypeSpecificCFlags() { return "-D__NTAPP__"; }
+ std::string TypeSpecificCFlags() { return "-D__NTAPP__ -D_SEH_NO_NATIVE_NLG"; }
+ std::string TypeSpecificLinkerFlags() { return "-nostartfiles -nostdlib"; }
private:
void GenerateNativeCUIModuleTarget ();
};
@@ -309,6 +317,7 @@ public:
MingwBootLoaderModuleHandler ( const Module& module );
virtual HostType DefaultHost() { return HostFalse; }
virtual void Process ();
+ std::string TypeSpecificLinkerFlags() { return "-nostartfiles -nostdlib"; }
private:
void GenerateBootLoaderModuleTarget ();
};