diff --git a/reactos/ReactOS-generic.rbuild b/reactos/ReactOS-generic.rbuild
index aac9b87f39b..ec0ef2f04d3 100644
--- a/reactos/ReactOS-generic.rbuild
+++ b/reactos/ReactOS-generic.rbuild
@@ -119,4 +119,5 @@
+ -Wno-non-virtual-dtor
diff --git a/reactos/base/shell/explorer/explorer.rbuild b/reactos/base/shell/explorer/explorer.rbuild
index 61ecefe26f5..bdbcf3ad67d 100644
--- a/reactos/base/shell/explorer/explorer.rbuild
+++ b/reactos/base/shell/explorer/explorer.rbuild
@@ -2,7 +2,6 @@
- -Wno-non-virtual-dtor
.
diff --git a/reactos/dll/directx/dxdiagn/container.c b/reactos/dll/directx/dxdiagn/container.c
index e7e9bd37604..392a32de77e 100644
--- a/reactos/dll/directx/dxdiagn/container.c
+++ b/reactos/dll/directx/dxdiagn/container.c
@@ -150,7 +150,7 @@ HRESULT WINAPI IDxDiagContainerImpl_GetChildContainer(PDXDIAGCONTAINER iface, LP
hr = IDxDiagContainerImpl_GetChildContainerInternal(pContainer, tmp, &pContainer);
if (!SUCCEEDED(hr) || NULL == pContainer)
goto on_error;
- *cur++; /* go after '.' (just replaced by \0) */
+ cur++; /* go after '.' (just replaced by \0) */
tmp = cur;
cur = strchrW(tmp, '.');
}
diff --git a/reactos/dll/directx/wine/d3d8/device.c b/reactos/dll/directx/wine/d3d8/device.c
index 976d7dd31c5..16c2e5231d8 100644
--- a/reactos/dll/directx/wine/d3d8/device.c
+++ b/reactos/dll/directx/wine/d3d8/device.c
@@ -1817,7 +1817,7 @@ static HRESULT WINAPI IDirect3DDevice8Impl_GetVertexShaderFunction(LPDIRECT3DDEV
}
shader = This->shader_handles[pVertexShader - (VS_HIGHESTFIXEDFXF + 1)];
- hr = IWineD3DVertexShader_GetFunction(shader->wineD3DVertexShader, pData, pSizeOfData);
+ hr = IWineD3DVertexShader_GetFunction(shader->wineD3DVertexShader, pData, (UINT*)pSizeOfData);
LeaveCriticalSection(&d3d8_cs);
return hr;
}
@@ -2024,7 +2024,7 @@ static HRESULT WINAPI IDirect3DDevice8Impl_GetPixelShaderFunction(LPDIRECT3DDEVI
}
shader = This->shader_handles[pPixelShader - (VS_HIGHESTFIXEDFXF + 1)];
- hr = IWineD3DPixelShader_GetFunction(shader->wineD3DPixelShader, pData, pSizeOfData);
+ hr = IWineD3DPixelShader_GetFunction(shader->wineD3DPixelShader, pData, (UINT*)pSizeOfData);
LeaveCriticalSection(&d3d8_cs);
return hr;
}
diff --git a/reactos/dll/directx/wine/d3d9/device.c b/reactos/dll/directx/wine/d3d9/device.c
index 8aab2307819..5932f3b509b 100644
--- a/reactos/dll/directx/wine/d3d9/device.c
+++ b/reactos/dll/directx/wine/d3d9/device.c
@@ -277,11 +277,11 @@ static HRESULT WINAPI reset_enum_callback(IWineD3DResource *resource, void *data
surface_desc.Type = &type;
surface_desc.Usage = &dummy_dword;
surface_desc.Pool = &pool;
- surface_desc.Size = &dummy_dword;
- surface_desc.MultiSampleType = &dummy_dword;
+ surface_desc.Size = (UINT*)&dummy_dword;
+ surface_desc.MultiSampleType = (WINED3DMULTISAMPLE_TYPE *)&dummy_dword;
surface_desc.MultiSampleQuality = &dummy_dword;
- surface_desc.Width = &dummy_dword;
- surface_desc.Height = &dummy_dword;
+ surface_desc.Width = (UINT*)&dummy_dword;
+ surface_desc.Height = (UINT*)&dummy_dword;
IWineD3DSurface_GetDesc((IWineD3DSurface *) resource, &surface_desc);
break;
@@ -291,10 +291,10 @@ static HRESULT WINAPI reset_enum_callback(IWineD3DResource *resource, void *data
volume_desc.Type = &type;
volume_desc.Usage = &dummy_dword;
volume_desc.Pool = &pool;
- volume_desc.Size = &dummy_dword;
- volume_desc.Width = &dummy_dword;
- volume_desc.Height = &dummy_dword;
- volume_desc.Depth = &dummy_dword;
+ volume_desc.Size = (UINT*)&dummy_dword;
+ volume_desc.Width = (UINT*)&dummy_dword;
+ volume_desc.Height = (UINT*)&dummy_dword;
+ volume_desc.Depth = (UINT*)&dummy_dword;
IWineD3DVolume_GetDesc((IWineD3DVolume *) resource, &volume_desc);
break;
diff --git a/reactos/dll/win32/comdlg32/printdlg.c b/reactos/dll/win32/comdlg32/printdlg.c
index 808a33c7417..47cf3fbbe4e 100644
--- a/reactos/dll/win32/comdlg32/printdlg.c
+++ b/reactos/dll/win32/comdlg32/printdlg.c
@@ -1047,12 +1047,12 @@ BOOL PRINTDLG_ChangePrinterA(HWND hDlg, char *name,
{
if(dpiX == Resolutions[i])
IsDefault = TRUE;
- sprintf(buf, "%d dpi", Resolutions[i]);
+ sprintf(buf, "%d dpi", (int)Resolutions[i]);
} else
{
if(dpiX == Resolutions[i] && dpiY == Resolutions[i+1])
IsDefault = TRUE;
- sprintf(buf, "%d dpi x %d dpi", Resolutions[i], Resolutions[i+1]);
+ sprintf(buf, "%d dpi x %d dpi", (int)Resolutions[i], (int)Resolutions[i+1]);
}
Index = SendMessageA(hQuality, CB_ADDSTRING, 0, (LPARAM)buf);
@@ -2471,15 +2471,15 @@ static void
_c_size2strA(PageSetupDataA *pda,DWORD size,LPSTR strout) {
strcpy(strout,"");
if (pda->dlga->Flags & PSD_INHUNDREDTHSOFMILLIMETERS) {
- sprintf(strout,"%d",(size)/100);
+ sprintf(strout,"%d",(int)(size)/100);
return;
}
if (pda->dlga->Flags & PSD_INTHOUSANDTHSOFINCHES) {
- sprintf(strout,"%din",(size)/1000);
+ sprintf(strout,"%din",(int)(size)/1000);
return;
}
pda->dlga->Flags |= PSD_INHUNDREDTHSOFMILLIMETERS;
- sprintf(strout,"%d",(size)/100);
+ sprintf(strout,"%d",(int)(size)/100);
return;
}
static void
diff --git a/reactos/dll/win32/crypt32/chain.c b/reactos/dll/win32/crypt32/chain.c
index 77032ac2d44..839c7eb9860 100644
--- a/reactos/dll/win32/crypt32/chain.c
+++ b/reactos/dll/win32/crypt32/chain.c
@@ -205,9 +205,8 @@ static HCERTCHAINENGINE CRYPT_GetDefaultChainEngine(void)
config.cbSize = sizeof(config);
CertCreateCertificateChainEngine(&config, &engine);
- InterlockedCompareExchangePointer(&CRYPT_defaultChainEngine, engine,
- NULL);
- if (CRYPT_defaultChainEngine != engine)
+ HCERTCHAINENGINE Original = (HCERTCHAINENGINE)InterlockedCompareExchangePointer(&CRYPT_defaultChainEngine, engine, NULL);
+ if (CRYPT_defaultChainEngine == Original || CRYPT_defaultChainEngine != engine)
CertFreeCertificateChainEngine(engine);
}
return CRYPT_defaultChainEngine;
diff --git a/reactos/dll/win32/crypt32/main.c b/reactos/dll/win32/crypt32/main.c
index 922dd1955a7..0337cba1114 100644
--- a/reactos/dll/win32/crypt32/main.c
+++ b/reactos/dll/win32/crypt32/main.c
@@ -64,9 +64,9 @@ HCRYPTPROV CRYPT_GetDefaultProvider(void)
CryptAcquireContextW(&prov, NULL, MS_ENHANCED_PROV_W, PROV_RSA_FULL,
CRYPT_VERIFYCONTEXT);
- InterlockedCompareExchangePointer((PVOID *)&hDefProv, (PVOID)prov,
- NULL);
- if (hDefProv != prov)
+ HCRYPTPROV Original = (HCRYPTPROV)InterlockedCompareExchangePointer((PVOID *)&hDefProv, (PVOID)prov,
+ NULL);//ugly hax to satisfy GCC
+ if (Original == hDefProv || hDefProv != prov)
CryptReleaseContext(prov, 0);
}
return hDefProv;
diff --git a/reactos/dll/win32/crypt32/oid.c b/reactos/dll/win32/crypt32/oid.c
index 5a71c74b0bd..7367caa7378 100644
--- a/reactos/dll/win32/crypt32/oid.c
+++ b/reactos/dll/win32/crypt32/oid.c
@@ -157,7 +157,7 @@ static char *CRYPT_GetKeyName(DWORD dwEncodingType, LPCSTR pszFuncName,
LPCSTR pszOID)
{
static const char szEncodingTypeFmt[] =
- "Software\\Microsoft\\Cryptography\\OID\\EncodingType %d\\%s\\%s";
+ "Software\\Microsoft\\Cryptography\\OID\\EncodingType %u\\%s\\%s";
UINT len;
char numericOID[7]; /* enough for "#65535" */
const char *oid;
@@ -185,7 +185,7 @@ static char *CRYPT_GetKeyName(DWORD dwEncodingType, LPCSTR pszFuncName,
szKey = CryptMemAlloc(len);
if (szKey)
sprintf(szKey, szEncodingTypeFmt,
- GET_CERT_ENCODING_TYPE(dwEncodingType), pszFuncName, oid);
+ (unsigned int)GET_CERT_ENCODING_TYPE(dwEncodingType), pszFuncName, oid);
return szKey;
}
diff --git a/reactos/dll/win32/crypt32/protectdata.c b/reactos/dll/win32/crypt32/protectdata.c
index d3e0034909c..1c61546c685 100644
--- a/reactos/dll/win32/crypt32/protectdata.c
+++ b/reactos/dll/win32/crypt32/protectdata.c
@@ -404,7 +404,7 @@ BOOL unserialize(const DATA_BLOB *pSerial, struct protect_data_t *pInfo)
}
/* cipher_alg */
- if (!unserialize_dword(ptr,&index,size,&pInfo->cipher_alg))
+ if (!unserialize_dword(ptr,&index,size,(DWORD*)&pInfo->cipher_alg))
{
ERR("reading cipher_alg failed!\n");
return FALSE;
@@ -433,7 +433,7 @@ BOOL unserialize(const DATA_BLOB *pSerial, struct protect_data_t *pInfo)
}
/* hash_alg */
- if (!unserialize_dword(ptr,&index,size,&pInfo->hash_alg))
+ if (!unserialize_dword(ptr,&index,size,(DWORD*)&pInfo->hash_alg))
{
ERR("reading hash_alg failed!\n");
return FALSE;
diff --git a/reactos/dll/win32/crypt32/rootstore.c b/reactos/dll/win32/crypt32/rootstore.c
index ba907305ea8..f7c3402f702 100644
--- a/reactos/dll/win32/crypt32/rootstore.c
+++ b/reactos/dll/win32/crypt32/rootstore.c
@@ -314,7 +314,7 @@ static BOOL import_certs_from_path(LPCSTR path, HCERTSTORE store,
static BOOL import_certs_from_dir(LPCSTR path, HCERTSTORE store)
{
BOOL ret = FALSE;
- DIR *dir;
+ //DIR *dir;
TRACE("(%s, %p)\n", debugstr_a(path), store);
/* UNIX functions = bad for reactos
@@ -752,9 +752,9 @@ PWINECRYPT_CERTSTORE CRYPT_RootOpenStore(HCRYPTPROV hCryptProv, DWORD dwFlags)
{
HCERTSTORE root = create_root_store();
- InterlockedCompareExchangePointer((PVOID *)&CRYPT_rootStore, root,
+ HCERTSTORE Original = (HCERTSTORE)InterlockedCompareExchangePointer((PVOID *)&CRYPT_rootStore, root,
NULL);
- if (CRYPT_rootStore != root)
+ if (CRYPT_rootStore == Original || CRYPT_rootStore != root)
CertCloseStore(root, 0);
}
CertDuplicateStore(CRYPT_rootStore);
diff --git a/reactos/dll/win32/dbghelp/pe_module.c b/reactos/dll/win32/dbghelp/pe_module.c
index 283962cb367..a1ce66cec6a 100644
--- a/reactos/dll/win32/dbghelp/pe_module.c
+++ b/reactos/dll/win32/dbghelp/pe_module.c
@@ -270,7 +270,7 @@ static BOOL pe_load_export_debug_info(const struct process* pcs,
for (j = 0; j < exports->NumberOfNames; j++)
if ((ordinals[j] == i) && names[j]) break;
if (j < exports->NumberOfNames) continue;
- snprintf(buffer, sizeof(buffer), "%d", i + exports->Base);
+ snprintf(buffer, sizeof(buffer), "%u", (unsigned int)(i + exports->Base));
symt_new_public(module, NULL, buffer, base + (DWORD)functions[i], 1,
TRUE /* FIXME */, TRUE /* FIXME */);
}
diff --git a/reactos/dll/win32/fusion/assembly.c b/reactos/dll/win32/fusion/assembly.c
index 75ca048053c..1126758cc15 100644
--- a/reactos/dll/win32/fusion/assembly.c
+++ b/reactos/dll/win32/fusion/assembly.c
@@ -812,7 +812,7 @@ HRESULT assembly_get_version(ASSEMBLY *assembly, LPSTR *version)
goto done;
}
- if (!VerQueryValueA(verdata, "\\", (LPVOID *)&ffi, &size))
+ if (!VerQueryValueA(verdata, "\\", (LPVOID *)&ffi, (PUINT)&size))
{
hr = HRESULT_FROM_WIN32(GetLastError());
goto done;
diff --git a/reactos/dll/win32/gdiplus/font.c b/reactos/dll/win32/gdiplus/font.c
index 210ebfff3c7..832d9ef4e92 100644
--- a/reactos/dll/win32/gdiplus/font.c
+++ b/reactos/dll/win32/gdiplus/font.c
@@ -486,7 +486,7 @@ static BOOL find_installed_font(const WCHAR *name, NEWTEXTMETRICW *ntm)
HDC hdc = GetDC(0);
BOOL ret = FALSE;
- if(!EnumFontFamiliesW(hdc, name, is_font_installed_proc, (LPARAM)ntm))
+ if(!EnumFontFamiliesW(hdc, name, (FONTENUMPROCW)is_font_installed_proc, (LPARAM)ntm))
ret = TRUE;
ReleaseDC(0, hdc);
diff --git a/reactos/dll/win32/gdiplus/image.c b/reactos/dll/win32/gdiplus/image.c
index bcdc64f7738..97314c2148f 100644
--- a/reactos/dll/win32/gdiplus/image.c
+++ b/reactos/dll/win32/gdiplus/image.c
@@ -244,7 +244,7 @@ GpStatus WINGDIPAPI GdipCloneImage(GpImage *image, GpImage **cloneImage)
{
IStream* stream;
HRESULT hr;
- INT size;
+ LONG size;
TRACE("%p, %p\n", image, cloneImage);
@@ -1060,7 +1060,7 @@ GpStatus WINGDIPAPI GdipSaveImageToStream(GpImage *image, IStream* stream,
encode_image_func* encode_image;
LPVOID output;
unsigned int output_size;
- unsigned int dummy;
+ ULONG dummy;
int i;
old_hbmp = 0;
diff --git a/reactos/dll/win32/glu32/glu32.rbuild b/reactos/dll/win32/glu32/glu32.rbuild
index 4668301fc52..d52231d6647 100644
--- a/reactos/dll/win32/glu32/glu32.rbuild
+++ b/reactos/dll/win32/glu32/glu32.rbuild
@@ -9,7 +9,6 @@
- -Wno-non-virtual-dtor
ntdll
opengl32
kernel32
diff --git a/reactos/dll/win32/icmp/icmp_main.c b/reactos/dll/win32/icmp/icmp_main.c
index 3d7af0c65f3..a20d47a7ec3 100644
--- a/reactos/dll/win32/icmp/icmp_main.c
+++ b/reactos/dll/win32/icmp/icmp_main.c
@@ -201,7 +201,7 @@ DWORD WINAPI IcmpSendEcho(
)
{
icmp_t* icp=(icmp_t*)IcmpHandle;
- unsigned char* reqbuf;
+ char* reqbuf;
int reqsize;
struct icmp_echo_reply* ier;
@@ -214,7 +214,7 @@ DWORD WINAPI IcmpSendEcho(
struct timeval timeout;
DWORD send_time,recv_time;
struct sockaddr_in addr;
- unsigned int addrlen;
+ int addrlen;
unsigned short id,seq,cksum;
int res;
@@ -257,7 +257,7 @@ DWORD WINAPI IcmpSendEcho(
if (RequestOptions!=NULL) {
int val;
if (icp->default_opts.OptionsSize==IP_OPTS_UNKNOWN) {
- unsigned int len;
+ int len;
/* Before we mess with the options, get the default values */
len=sizeof(val);
getsockopt(icp->sid,IPPROTO_IP,IP_TTL,(char *)&val,&len);
diff --git a/reactos/dll/win32/kernel32/kernel32.rbuild b/reactos/dll/win32/kernel32/kernel32.rbuild
index 963ccf36e47..521c50f9b44 100644
--- a/reactos/dll/win32/kernel32/kernel32.rbuild
+++ b/reactos/dll/win32/kernel32/kernel32.rbuild
@@ -125,7 +125,6 @@
-fno-exceptions
-fno-rtti
- -Wno-non-virtual-dtor
icustubs.cpp
diff --git a/reactos/drivers/wdm/audio/backpln/portcls/portcls.rbuild b/reactos/drivers/wdm/audio/backpln/portcls/portcls.rbuild
index 45b93f06eb1..8ac58408ee8 100644
--- a/reactos/drivers/wdm/audio/backpln/portcls/portcls.rbuild
+++ b/reactos/drivers/wdm/audio/backpln/portcls/portcls.rbuild
@@ -7,7 +7,6 @@
-fno-exceptions
-fno-rtti
-->
- -Wno-non-virtual-dtor
diff --git a/reactos/tools/rbuild/backend/mingw/mingw.cpp b/reactos/tools/rbuild/backend/mingw/mingw.cpp
index 10afa360bb8..5a20a2ac52a 100644
--- a/reactos/tools/rbuild/backend/mingw/mingw.cpp
+++ b/reactos/tools/rbuild/backend/mingw/mingw.cpp
@@ -392,7 +392,7 @@ MingwBackend::GenerateProjectCFlagsMacro ( const char* assignmentOperation,
if ( data.includes.size () > 0 )
fprintf (
fMakefile,
- "PROJECT_CFLAGS %s %s\n",
+ "PROJECT_CINCLUDES %s %s\n",
assignmentOperation,
MingwModuleHandler::GenerateGccIncludeParametersFromVector ( data.includes ).c_str ());
@@ -529,15 +529,16 @@ MingwBackend::GenerateGlobalVariables () const
GenerateGlobalCFlagsAndProperties ( "=", ProjectNode.non_if_data );
GenerateProjectGccOptions ( "=", ProjectNode.non_if_data );
- fprintf ( fMakefile, "PROJECT_RCFLAGS := $(PROJECT_CFLAGS) $(PROJECT_CDEFINES)\n" );
- fprintf ( fMakefile, "PROJECT_WIDLFLAGS := $(PROJECT_CFLAGS) $(PROJECT_CDEFINES)\n" );
+ fprintf ( fMakefile, "PROJECT_RCFLAGS := $(PROJECT_CINCLUDES) $(PROJECT_CDEFINES)\n" );
+ fprintf ( fMakefile, "PROJECT_WIDLFLAGS := $(PROJECT_CINCLUDES) $(PROJECT_CDEFINES)\n" );
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)'\n" );
- fprintf ( fMakefile, "PROJECT_CFLAGS += -Wall\n" );
+ fprintf ( fMakefile, "PROJECT_GCCOPTIONS += -Wall\n" );
fprintf ( fMakefile, "ifneq ($(OARCH),)\n" );
- fprintf ( fMakefile, "PROJECT_CFLAGS += -march=$(OARCH)\n" );
+ fprintf ( fMakefile, "PROJECT_GCCOPTIONS += -march=$(OARCH)\n" );
fprintf ( fMakefile, "endif\n" );
- fprintf ( fMakefile, "PROJECT_CFLAGS += $(PROJECT_GCCOPTIONS)\n" );
+ fprintf ( fMakefile, "PROJECT_CFLAGS = $(PROJECT_GCCOPTIONS) $(PROJECT_GCC_CFLAGS)\n" );
+ fprintf ( fMakefile, "PROJECT_CXXFLAGS = $(PROJECT_GCCOPTIONS) $(PROJECT_GCC_CXXFLAGS)\n" );
fprintf ( fMakefile, "\n" );
}
diff --git a/reactos/tools/rbuild/backend/mingw/modulehandler.cpp b/reactos/tools/rbuild/backend/mingw/modulehandler.cpp
index 471b74b0854..95af81cc57e 100644
--- a/reactos/tools/rbuild/backend/mingw/modulehandler.cpp
+++ b/reactos/tools/rbuild/backend/mingw/modulehandler.cpp
@@ -752,7 +752,7 @@ MingwModuleHandler::GenerateMacros (
{
fprintf ( fMakefile, "# MACROS\n" );
GenerateMacro ( assignmentOperation,
- cflagsMacro,
+ commonflagsMacro,
data,
&used_defs,
true );
@@ -1118,7 +1118,7 @@ Rule widlProxyRule ( "$(source): ${$(module_name)_precondition}\n"
"\t$(Q)$(WIDL_TARGET) $($(module_name)_WIDLFLAGS) -h -H $(INTERMEDIATE)$(SEP)$(source_dir)$(SEP)$(source_name_noext)_p.h -p -P $(INTERMEDIATE)$(SEP)$(source_dir)$(SEP)$(source_name_noext)_p.c $(source)\n"
"$(INTERMEDIATE)$(SEP)$(source_dir)$(SEP)$(source_name_noext)_p.o: $(INTERMEDIATE)$(SEP)$(source_dir)$(SEP)$(source_name_noext)_p.c $(INTERMEDIATE)$(SEP)$(source_dir)$(SEP)$(source_name_noext)_p.h$(dependencies) | $(INTERMEDIATE)$(SEP)$(source_dir)\n"
"\t$(ECHO_CC)\n"
- "\t${gcc} -o $@ $($(module_name)_CFLAGS)$(compiler_flags) -c $<\n",
+ "\t${gcc} -o $@ $($(module_name)_CFLAGS)$(compiler_flags) -fno-unit-at-a-time -c $<\n",
"$(INTERMEDIATE)$(SEP)$(source_dir)$(SEP)$(source_name_noext)_p.h",
"$(INTERMEDIATE)$(SEP)$(source_dir)$(SEP)$(source_name_noext)_p.c",
"$(INTERMEDIATE)$(SEP)$(source_dir)$(SEP)$(source_name_noext)_p.o",
@@ -1141,12 +1141,12 @@ Rule gccHostRule ( "$(source): ${$(module_name)_precondition}\n"
Rule gppRule ( "$(source): ${$(module_name)_precondition}\n"
"$(INTERMEDIATE)$(SEP)$(source_dir)$(SEP)$(source_name_noext)_$(module_name).o: $(source)$(dependencies) | $(INTERMEDIATE)$(SEP)$(source_dir)\n"
"\t$(ECHO_CC)\n"
- "\t${gpp} -o $@ $($(module_name)_CFLAGS)$(compiler_flags) -c $<\n",
+ "\t${gpp} -o $@ $($(module_name)_CXXFLAGS)$(compiler_flags) -c $<\n",
"$(INTERMEDIATE)$(SEP)$(source_dir)$(SEP)$(source_name_noext)_$(module_name).o", NULL );
Rule gppHostRule ( "$(source): ${$(module_name)_precondition}\n"
"$(INTERMEDIATE)$(SEP)$(source_dir)$(SEP)$(source_name_noext)_$(module_name).o: $(source)$(dependencies) | $(INTERMEDIATE)$(SEP)$(source_dir)\n"
"\t$(ECHO_CC)\n"
- "\t${host_gpp} -o $@ $($(module_name)_CFLAGS)$(compiler_flags) -c $<\n",
+ "\t${host_gpp} -o $@ $($(module_name)_CXXFLAGS)$(compiler_flags) -c $<\n",
"$(INTERMEDIATE)$(SEP)$(source_dir)$(SEP)$(source_name_noext)_$(module_name).o", NULL );
Rule emptyRule ( "", NULL );
@@ -1658,7 +1658,7 @@ MingwModuleHandler::GenerateObjectFileTargets ()
"\t%s -o %s %s %s -g %s\n\n",
module.cplusplus ? cppc.c_str() : cc.c_str(),
backend->GetFullName ( *pchFilename ).c_str(),
- cflagsMacro.c_str(),
+ module.cplusplus ? cxxflagsMacro.c_str() : cflagsMacro.c_str(),
GenerateCompilerParametersFromVector ( module.non_if_data.compilerFlags, module.cplusplus ? CompilerTypeCPP : CompilerTypeCC ).c_str(),
backend->GetFullName ( baseHeaderFile ).c_str() );
delete pchFilename;
@@ -1711,13 +1711,6 @@ MingwModuleHandler::GenerateArchiveTarget ()
return archiveFilename;
}
-string
-MingwModuleHandler::GetCFlagsMacro () const
-{
- return ssprintf ( "$(%s_CFLAGS)",
- module.name.c_str () );
-}
-
/*static*/ string
MingwModuleHandler::GetObjectsMacro ( const Module& module )
{
@@ -1847,7 +1840,9 @@ MingwModuleHandler::GenerateOtherMacros ()
fprintf ( fMakefile, "# OTHER MACROS\n" );
+ commonflagsMacro = ssprintf ("%s_COMMONFLAGS", module.name.c_str ());
cflagsMacro = ssprintf ("%s_CFLAGS", module.name.c_str ());
+ cxxflagsMacro = ssprintf ("%s_CXXFLAGS", module.name.c_str ());
nasmflagsMacro = ssprintf ("%s_NASMFLAGS", module.name.c_str ());
windresflagsMacro = ssprintf ("%s_RCFLAGS", module.name.c_str ());
widlflagsMacro = ssprintf ("%s_WIDLFLAGS", module.name.c_str ());
@@ -1890,10 +1885,10 @@ MingwModuleHandler::GenerateOtherMacros ()
fprintf ( fMakefile, "\n" );
}
- string globalCflags = "";
+ string globalCflags = " ";
+ globalCflags += ssprintf ("$(%s)", commonflagsMacro.c_str ());
if ( ModuleHandlerInformations[module.type].DefaultHost == HostFalse )
{
- globalCflags += " $(PROJECT_CFLAGS)";
if ( module.dynamicCRT )
globalCflags += " -D_DLL -D__USE_CRTIMP";
}
@@ -1926,14 +1921,20 @@ MingwModuleHandler::GenerateOtherMacros ()
// (TODO: Move to version-specific once this bug is fixed in GCC)
globalCflags += " -fno-optimize-sibling-calls";
- fprintf (
- fMakefile,
- "%s +=%s\n",
- cflagsMacro.c_str (),
- globalCflags.c_str () );
-
if ( ModuleHandlerInformations[module.type].DefaultHost == HostFalse )
{
+ fprintf (
+ fMakefile,
+ "%s +=%s\n",
+ cflagsMacro.c_str (),
+ (" $(PROJECT_CFLAGS)" + globalCflags).c_str () );
+
+ fprintf (
+ fMakefile,
+ "%s +=%s\n",
+ cxxflagsMacro.c_str (),
+ (" $(PROJECT_CXXFLAGS)" + globalCflags).c_str () );
+
fprintf (
fMakefile,
"%s += $(PROJECT_RCFLAGS)\n",
@@ -1953,6 +1954,18 @@ MingwModuleHandler::GenerateOtherMacros ()
}
else
{
+ fprintf (
+ fMakefile,
+ "%s +=%s\n",
+ cflagsMacro.c_str (),
+ globalCflags.c_str () );
+
+ fprintf (
+ fMakefile,
+ "%s +=%s\n",
+ cxxflagsMacro.c_str (),
+ globalCflags.c_str () );
+
fprintf (
fMakefile,
"%s_LFLAGS += $(HOST_LFLAGS)\n",
@@ -1972,6 +1985,10 @@ MingwModuleHandler::GenerateOtherMacros ()
"%s += %s\n\n",
cflagsMacro.c_str (),
cflags );
+ fprintf ( fMakefile,
+ "%s += %s\n\n",
+ cxxflagsMacro.c_str (),
+ cflags );
}
const char* nasmflags = ModuleHandlerInformations[module.type].nasmflags;
@@ -1997,12 +2014,17 @@ MingwModuleHandler::GenerateOtherMacros ()
fprintf ( fMakefile,
"%s += -Wno-main\n\n",
cflagsMacro.c_str () );
+ fprintf ( fMakefile,
+ "%s += -Wno-main\n\n",
+ cxxflagsMacro.c_str () );
}
fprintf ( fMakefile, "\n\n" );
// future references to the macros will be to get their values
+ commonflagsMacro = ssprintf ("$(%s)", commonflagsMacro.c_str ());
cflagsMacro = ssprintf ("$(%s)", cflagsMacro.c_str ());
+ cxxflagsMacro = ssprintf ("$(%s)", cxxflagsMacro.c_str ());
nasmflagsMacro = ssprintf ("$(%s)", nasmflagsMacro.c_str ());
widlflagsMacro = ssprintf ("$(%s)", widlflagsMacro.c_str ());
}
diff --git a/reactos/tools/rbuild/backend/mingw/modulehandler.h b/reactos/tools/rbuild/backend/mingw/modulehandler.h
index 9c8895ec598..83210bcdc26 100644
--- a/reactos/tools/rbuild/backend/mingw/modulehandler.h
+++ b/reactos/tools/rbuild/backend/mingw/modulehandler.h
@@ -98,7 +98,6 @@ protected:
const Module& module ) const;
std::string GetPreconditionDependenciesName () const;
- std::string GetCFlagsMacro () const;
static std::string GetObjectsMacro ( const Module& );
std::string GetLinkingDependenciesMacro () const;
std::string GetLibsMacro () const;
@@ -172,7 +171,9 @@ private:
public:
const Module& module;
string_list clean_files;
+ std::string commonflagsMacro;
std::string cflagsMacro;
+ std::string cxxflagsMacro;
std::string nasmflagsMacro;
std::string windresflagsMacro;
std::string widlflagsMacro;