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;