[ros-diffs] [hyperion] 41368: modified Makefile added tools/rbuild/backend/mingw/compilers added tools/rbuild/backend/mingw/compilers/gcc.mak added tools/rbuild/backend/mingw/compilers/msc.mak added tools/rbuild/backend/mingw/linkers added tools/rbuild/backend/mingw/linkers/ld.mak added tools/rbuild/backend/mingw/linkers/mslink.mak modified tools/rbuild/backend/mingw/mingw.cpp modified tools/rbuild/backend/mingw/modulehandler.cpp modified tools/rbuild/backend/mingw/rules.mak modified tools/rbuild/rbuild.h Moved linker and compiler rules in separate files Renamed compiler rules to more generic names New compiler rules for dependencies and preprocessor modes Rules for Microsoft C/C++ Compiler Linker rule file stubs modified tools/rbuild/module.cpp modified tools/rbuild/project.cpp All elements now support "compilerset" and "linkerset" conditional attributes

hyperion at svn.reactos.org hyperion at svn.reactos.org
Wed Jun 10 19:56:13 CEST 2009


Author: hyperion
Date: Wed Jun 10 21:56:12 2009
New Revision: 41368

URL: http://svn.reactos.org/svn/reactos?rev=41368&view=rev
Log:
modified   Makefile
added      tools/rbuild/backend/mingw/compilers
added      tools/rbuild/backend/mingw/compilers/gcc.mak
added      tools/rbuild/backend/mingw/compilers/msc.mak
added      tools/rbuild/backend/mingw/linkers
added      tools/rbuild/backend/mingw/linkers/ld.mak
added      tools/rbuild/backend/mingw/linkers/mslink.mak
modified   tools/rbuild/backend/mingw/mingw.cpp
modified   tools/rbuild/backend/mingw/modulehandler.cpp
modified   tools/rbuild/backend/mingw/rules.mak
modified   tools/rbuild/rbuild.h
   Moved linker and compiler rules in separate files
   Renamed compiler rules to more generic names
   New compiler rules for dependencies and preprocessor modes
   Rules for Microsoft C/C++ Compiler
   Linker rule file stubs

modified   tools/rbuild/module.cpp
modified   tools/rbuild/project.cpp
   All elements now support "compilerset" and "linkerset" conditional attributes

Added:
    trunk/reactos/tools/rbuild/backend/mingw/compilers/   (with props)
    trunk/reactos/tools/rbuild/backend/mingw/compilers/gcc.mak   (with props)
    trunk/reactos/tools/rbuild/backend/mingw/compilers/msc.mak   (with props)
    trunk/reactos/tools/rbuild/backend/mingw/linkers/   (with props)
    trunk/reactos/tools/rbuild/backend/mingw/linkers/ld.mak   (with props)
    trunk/reactos/tools/rbuild/backend/mingw/linkers/mslink.mak   (with props)
Modified:
    trunk/reactos/Makefile
    trunk/reactos/tools/rbuild/backend/mingw/mingw.cpp
    trunk/reactos/tools/rbuild/backend/mingw/modulehandler.cpp
    trunk/reactos/tools/rbuild/backend/mingw/rules.mak
    trunk/reactos/tools/rbuild/module.cpp
    trunk/reactos/tools/rbuild/project.cpp
    trunk/reactos/tools/rbuild/rbuild.h

Modified: trunk/reactos/Makefile
URL: http://svn.reactos.org/svn/reactos/trunk/reactos/Makefile?rev=41368&r1=41367&r2=41368&view=diff
==============================================================================
--- trunk/reactos/Makefile [iso-8859-1] (original)
+++ trunk/reactos/Makefile [iso-8859-1] Wed Jun 10 21:56:12 2009
@@ -328,8 +328,6 @@
 dlltool = $(Q)$(PREFIX_)dlltool
 strip = $(Q)$(PREFIX_)strip
 windres = $(Q)$(PREFIX_)windres
-cl = $(Q)cl -nologo
-link = $(Q)link -nologo
 
 # Set utilities
 ifeq ($(OSTYPE),msys)

Propchange: trunk/reactos/tools/rbuild/backend/mingw/compilers/
------------------------------------------------------------------------------
--- bugtraq:logregex (added)
+++ bugtraq:logregex Wed Jun 10 21:56:12 2009
@@ -1,0 +1,2 @@
+([Ii]ssue|[Bb]ug)s? #?(\d+)(,? ?#?(\d+))*(,? ?(and |or )?#?(\d+))?
+(\d+)

Propchange: trunk/reactos/tools/rbuild/backend/mingw/compilers/
------------------------------------------------------------------------------
    bugtraq:message = See issue #%BUGID% for more details.

Propchange: trunk/reactos/tools/rbuild/backend/mingw/compilers/
------------------------------------------------------------------------------
    bugtraq:url = http://www.reactos.org/bugzilla/show_bug.cgi?id=%BUGID%

Propchange: trunk/reactos/tools/rbuild/backend/mingw/compilers/
------------------------------------------------------------------------------
    tsvn:logminsize = 10

Added: trunk/reactos/tools/rbuild/backend/mingw/compilers/gcc.mak
URL: http://svn.reactos.org/svn/reactos/trunk/reactos/tools/rbuild/backend/mingw/compilers/gcc.mak?rev=41368&view=auto
==============================================================================
--- trunk/reactos/tools/rbuild/backend/mingw/compilers/gcc.mak (added)
+++ trunk/reactos/tools/rbuild/backend/mingw/compilers/gcc.mak [iso-8859-1] Wed Jun 10 21:56:12 2009
@@ -1,0 +1,156 @@
+CFLAG_WERROR:=-Werror
+CFLAG_CRTDLL:=-D_DLL -D__USE_CRTIMP
+
+CXXFLAG_WERROR:=-Werror
+CXXFLAG_CRTDLL:=-D_DLL -D__USE_CRTIMP
+
+CPPFLAG_WERROR:=-Werror
+CPPFLAG_UNICODE:=-DUNICODE -D_UNICODE
+
+# FIXME: disabled until RosBE stops sucking
+# BUILTIN_CPPFLAGS+= -nostdinc
+BUILTIN_CFLAGS+= -fno-optimize-sibling-calls
+BUILTIN_CXXFLAGS+= -fno-optimize-sibling-calls
+
+#(module, source, dependencies, cflags, output)
+define RBUILD_DEPENDS
+
+$(5): $(2) $(3) | ${call RBUILD_dir,$(2)}
+	$$(ECHO_DEPENDS)
+	$${gcc} -xc -MF $$@ $(4) -M -MP -MT $$@ $$<
+
+endef
+
+#(module, source, dependencies, cflags, output)
+define RBUILD_CXX_DEPENDS
+
+$(5): $(2) $(3) | ${call RBUILD_dir,$(2)}
+	$$(ECHO_DEPENDS)
+	$${gpp} -MF $$@ $(4) -M -MP -MT $$@ $$<
+
+endef
+
+#(module, source, dependencies, cflags, output)
+define RBUILD_CPP
+
+$(5): $(2) $(3) | ${call RBUILD_dir,$(2)}
+	$$(ECHO_CPP)
+	$${gcc} -xc -E $(4) $$< > $$@
+
+endef
+
+#(module, source, dependencies, cflags, output)
+define RBUILD_CXX_CPP
+
+$(5): $(2) $(3) | ${call RBUILD_dir,$(2)}
+	$$(ECHO_CPP)
+	$${gpp} -E $(4) $$< > $$@
+
+endef
+
+#(module, source, dependencies, cflags, output)
+define RBUILD_CC
+
+$(2): $${$(1)_precondition}
+
+ifeq ($(ROS_BUILDDEPS),full)
+
+${call RBUILD_DEPENDS,$(1),$(2),,${call RBUILD_cflags,$(1),$(4)},$(5).d}
+-include $(5).d
+
+$(5): $(2) $(5).d $(3) | ${call RBUILD_dir,$(5)}
+	$$(ECHO_CC)
+	$${gcc} -o $$@ ${call RBUILD_cflags,$(1),$(4)} -c $$<
+
+else
+
+$(5): $(2) $(3) | ${call RBUILD_dir,$(5)}
+	$$(ECHO_CC)
+	$${gcc} -o $$@ ${call RBUILD_cflags,$(1),$(4)} -c $$<
+
+endif
+
+endef
+
+#(module, source, dependencies, cflags, output)
+define RBUILD_CXX
+
+$(2): $${$(1)_precondition}
+
+ifeq ($(ROS_BUILDDEPS),full)
+
+${call RBUILD_CXX_DEPENDS,$(1),$(2),,${call RBUILD_cxxflags,$(1),$(4)},$(5).d}
+-include $(5).d
+
+$(5): $(2) $(5).d $(3) | ${call RBUILD_dir,$(5)}
+	$$(ECHO_CC)
+	$${gpp} -o $$@ ${call RBUILD_cxxflags,$(1),$(4)} -c $$<
+
+else
+
+$(5): $(2) $(3) | ${call RBUILD_dir,$(5)}
+	$$(ECHO_CC)
+	$${gpp} -o $$@ ${call RBUILD_cxxflags,$(1),$(4)} -c $$<
+
+endif
+
+endef
+
+#(module, source, dependencies, cflags)
+RBUILD_CC_RULE=${call RBUILD_CC,$(1),$(2),$(3),$(4),${call RBUILD_intermediate_path_unique,$(1),$(2)}.o}
+RBUILD_CXX_RULE=${call RBUILD_CXX,$(1),$(2),$(3),$(4),${call RBUILD_intermediate_path_unique,$(1),$(2)}.o}
+
+#(module, source, dependencies, cflags)
+define RBUILD_CC_PCH_RULE
+
+$(2): $${$(1)_precondition}
+
+ifeq ($$(ROS_BUILDDEPS),full)
+
+${call RBUILD_intermediate_dir,$(2)}$$(SEP).gch_$(1)$$(SEP)$(notdir $(2)).gch.d: $(2) | ${call RBUILD_intermediate_dir,$(2)}
+	$$(ECHO_DEPENDS)
+	$${gcc} -MF $$@ ${call RBUILD_cflags,$(1),$(4)} -x c-header -M -MP -MT $$@ $$<
+
+-include $$(intermediate_dir)$$(SEP).gch_$$(module_name)$$(SEP)$(notdir $(2)).gch.d
+
+${call RBUILD_intermediate_dir,$(2)}$$(SEP).gch_$(1)$$(SEP)$(notdir $(2)).gch: $(2) ${call RBUILD_intermediate_dir,$(2)}$$(SEP).gch_$(1)$$(SEP)$(notdir $(2)).gch.d $(3) | ${call RBUILD_intermediate_dir,$(2)}$$(SEP).gch_$(1)
+	$$(ECHO_PCH)
+	$${gcc} -MF $$@ ${call RBUILD_cflags,$(1),$(4)} -x c-header -M -MP -MT $$@ $$<
+
+else
+
+${call RBUILD_intermediate_dir,$(2)}$$(SEP).gch_$(1)$$(SEP)$(notdir $(2)).gch: $(2) $(3) | ${call RBUILD_intermediate_dir,$(2)}$$(SEP).gch_$(1)
+	$$(ECHO_PCH)
+	$${gcc} -MF $$@ ${call RBUILD_cflags,$(1),$(4)} -x c-header -M -MP -MT $$@ $$<
+
+endif
+
+endef
+
+#(module, source, dependencies, cflags)
+define RBUILD_CXX_PCH_RULE
+
+$(2): $${$(1)_precondition}
+
+ifeq ($$(ROS_BUILDDEPS),full)
+
+${call RBUILD_intermediate_dir,$(2)}$$(SEP).gch_$(1)$$(SEP)$(notdir $(2)).gch.d: $(2) | ${call RBUILD_intermediate_dir,$(2)}
+	$$(ECHO_DEPENDS)
+	$${gpp} -MF $$@ ${call RBUILD_cxxflags,$(1),$(4)} -x c++-header -M -MP -MT $$@ $$<
+
+-include $$(intermediate_dir)$$(SEP).gch_$$(module_name)$$(SEP)$(notdir $(2)).gch.d
+
+${call RBUILD_intermediate_dir,$(2)}$$(SEP).gch_$(1)$$(SEP)$(notdir $(2)).gch: $(2) ${call RBUILD_intermediate_dir,$(2)}$$(SEP).gch_$(1)$$(SEP)$(notdir $(2)).gch.d $(3) | ${call RBUILD_intermediate_dir,$(2)}$$(SEP).gch_$(1)
+	$$(ECHO_PCH)
+	$${gpp} -MF $$@ ${call RBUILD_cxxflags,$(1),$(4)} -x c++-header -M -MP -MT $$@ $$<
+
+else
+
+${call RBUILD_intermediate_dir,$(2)}$$(SEP).gch_$(1)$$(SEP)$(notdir $(2)).gch: $(2) $(3) | ${call RBUILD_intermediate_dir,$(2)}$$(SEP).gch_$(1)
+	$$(ECHO_PCH)
+	$${gpp} -MF $$@ ${call RBUILD_cxxflags,$(1),$(4)} -x c++-header -M -MP -MT $$@ $$<
+
+endif
+
+endef
+

Propchange: trunk/reactos/tools/rbuild/backend/mingw/compilers/gcc.mak
------------------------------------------------------------------------------
    svn:eol-style = native

Added: trunk/reactos/tools/rbuild/backend/mingw/compilers/msc.mak
URL: http://svn.reactos.org/svn/reactos/trunk/reactos/tools/rbuild/backend/mingw/compilers/msc.mak?rev=41368&view=auto
==============================================================================
--- trunk/reactos/tools/rbuild/backend/mingw/compilers/msc.mak (added)
+++ trunk/reactos/tools/rbuild/backend/mingw/compilers/msc.mak [iso-8859-1] Wed Jun 10 21:56:12 2009
@@ -1,0 +1,94 @@
+CFLAGS+= $(_CL_)
+_CL_=
+
+CINCLUDES:=$(INCLUDE) $(CINCLUDES)
+INCLUDE=
+
+CFLAG_WERROR:=/WX
+CFLAG_CRTDLL:=/D_DLL /D__USE_CRTIMP /MD
+
+CXXFLAG_WERROR:=/WX
+CXXFLAG_CRTDLL:=/D_DLL /D__USE_CRTIMP /MD
+
+CPPFLAG_WERROR:=/WX
+CPPFLAG_UNICODE:=/DUNICODE /D_UNICODE
+
+BUILTIN_CPPFLAGS+= /X
+
+cl=$$(Q)$$(RBUILD_HELPER_TARGET) "RBUILD_CL_" "$(notdir $<<)" cl /nologo
+
+#(module, source, dependencies, cflags, output)
+#TODO
+RBUILD_CL_DEPENDS=$$(error Full dependencies are not implemented for Microsoft C/C++ Compiler yet)
+RBUILD_DEPENDS=${call RBUILD_CL_DEPENDS,$(1),$(2),$(3),$(4) /TC,$(5)}
+RBUILD_CXX_DEPENDS=${call RBUILD_CL_DEPENDS,$(1),$(2),$(3),$(4) /TP,$(5)}
+
+#(module, source, dependencies, cflags, output)
+define RBUILD_CL_CPP
+
+$(5): $(2) $(3) $$(RBUILD_HELPER_TARGET) | ${call RBUILD_dir,$(2)}
+	$$(ECHO_CPP)
+	$${cl} /E $(4) $$< > $$@
+
+endef
+
+RBUILD_CPP=${call RBUILD_CL_CPP,$(1),$(2),$(3),$(4) /TC,$(5)}
+RBUILD_CXX_CPP=${call RBUILD_CL_CPP,$(1),$(2),$(3),$(4) /TPP,$(5)}
+
+#(module, source, dependencies, cflags, output)
+define RBUILD_CC
+
+$(2): $${$(1)_precondition}
+
+ifeq ($(ROS_BUILDDEPS),full)
+
+${call RBUILD_DEPENDS,$(1),$(2),,${call RBUILD_cflags,$(1),$(4)},$(5).d}
+-include $(5).d
+
+$(5): $(2) $(5).d $(3) $$(RBUILD_HELPER_TARGET) | ${call RBUILD_dir,$(5)}
+	$$(ECHO_CC)
+	$${cl} /TC /Fo$$@ ${call RBUILD_cflags,$(1),$(4)} /c $$<
+
+else
+
+$(5): $(2) $(3) $$(RBUILD_HELPER_TARGET) | ${call RBUILD_dir,$(5)}
+	$$(ECHO_CC)
+	$${cl} /TC /Fo$$@ ${call RBUILD_cflags,$(1),$(4)} /c $$<
+
+endif
+
+endef
+
+#(module, source, dependencies, cflags, output)
+define RBUILD_CXX
+
+$(2): $${$(1)_precondition}
+
+ifeq ($(ROS_BUILDDEPS),full)
+
+${call RBUILD_CXX_DEPENDS,$(1),$(2),,${call RBUILD_cflags,$(1),$(4)},$(5).d}
+-include $(5).d
+
+$(5): $(2) $(5).d $(3) $$(RBUILD_HELPER_TARGET) | ${call RBUILD_dir,$(5)}
+	$$(ECHO_CC)
+	$${cl} /TP /Fo$$@ ${call RBUILD_cxxflags,$(1),$(4)} /c $$<
+
+else
+
+$(5): $(2) $(3) $$(RBUILD_HELPER_TARGET) | ${call RBUILD_dir,$(5)}
+	$$(ECHO_CC)
+	$${cl} /TP /Fo$$@ ${call RBUILD_cxxflags,$(1),$(4)} /c $$<
+
+endef
+
+#(module, source, dependencies, cflags)
+RBUILD_CC_RULE=${call RBUILD_CC,$(1),$(2),$(3),$(4),${call RBUILD_intermediate_path_unique,$(1),$(2)}.o}
+RBUILD_CXX_RULE=${call RBUILD_CXX,$(1),$(2),$(3),$(4),${call RBUILD_intermediate_path_unique,$(1),$(2)}.o}
+
+#(module, source, dependencies, cflags)
+#TODO
+RBUILD_CC_PCH_RULE=$$(error Precompiled headers are not implemented for Microsoft C/C++ Compiler yet)
+
+#(module, source, dependencies, cflags)
+#TODO
+RBUILD_CXX_PCH_RULE=$$(error Precompiled headers are not implemented for Microsoft C/C++ Compiler yet)

Propchange: trunk/reactos/tools/rbuild/backend/mingw/compilers/msc.mak
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: trunk/reactos/tools/rbuild/backend/mingw/linkers/
------------------------------------------------------------------------------
--- bugtraq:logregex (added)
+++ bugtraq:logregex Wed Jun 10 21:56:12 2009
@@ -1,0 +1,2 @@
+([Ii]ssue|[Bb]ug)s? #?(\d+)(,? ?#?(\d+))*(,? ?(and |or )?#?(\d+))?
+(\d+)

Propchange: trunk/reactos/tools/rbuild/backend/mingw/linkers/
------------------------------------------------------------------------------
    bugtraq:message = See issue #%BUGID% for more details.

Propchange: trunk/reactos/tools/rbuild/backend/mingw/linkers/
------------------------------------------------------------------------------
    bugtraq:url = http://www.reactos.org/bugzilla/show_bug.cgi?id=%BUGID%

Propchange: trunk/reactos/tools/rbuild/backend/mingw/linkers/
------------------------------------------------------------------------------
    tsvn:logminsize = 10

Added: trunk/reactos/tools/rbuild/backend/mingw/linkers/ld.mak
URL: http://svn.reactos.org/svn/reactos/trunk/reactos/tools/rbuild/backend/mingw/linkers/ld.mak?rev=41368&view=auto
==============================================================================
--- trunk/reactos/tools/rbuild/backend/mingw/linkers/ld.mak (added)
+++ trunk/reactos/tools/rbuild/backend/mingw/linkers/ld.mak [iso-8859-1] Wed Jun 10 21:56:12 2009
@@ -1,0 +1,1 @@
+# TODO

Propchange: trunk/reactos/tools/rbuild/backend/mingw/linkers/ld.mak
------------------------------------------------------------------------------
    svn:eol-style = native

Added: trunk/reactos/tools/rbuild/backend/mingw/linkers/mslink.mak
URL: http://svn.reactos.org/svn/reactos/trunk/reactos/tools/rbuild/backend/mingw/linkers/mslink.mak?rev=41368&view=auto
==============================================================================
--- trunk/reactos/tools/rbuild/backend/mingw/linkers/mslink.mak (added)
+++ trunk/reactos/tools/rbuild/backend/mingw/linkers/mslink.mak [iso-8859-1] Wed Jun 10 21:56:12 2009
@@ -1,0 +1,1 @@
+# TODO

Propchange: trunk/reactos/tools/rbuild/backend/mingw/linkers/mslink.mak
------------------------------------------------------------------------------
    svn:eol-style = native

Modified: trunk/reactos/tools/rbuild/backend/mingw/mingw.cpp
URL: http://svn.reactos.org/svn/reactos/trunk/reactos/tools/rbuild/backend/mingw/mingw.cpp?rev=41368&r1=41367&r2=41368&view=diff
==============================================================================
--- trunk/reactos/tools/rbuild/backend/mingw/mingw.cpp [iso-8859-1] (original)
+++ trunk/reactos/tools/rbuild/backend/mingw/mingw.cpp [iso-8859-1] Wed Jun 10 21:56:12 2009
@@ -423,6 +423,8 @@
 MingwBackend::GenerateGlobalVariables () const
 {
 	fputs ( "include tools$(SEP)rbuild$(SEP)backend$(SEP)mingw$(SEP)rules.mak\n", fMakefile );
+	fprintf ( fMakefile, "include tools$(SEP)rbuild$(SEP)backend$(SEP)mingw$(SEP)linkers$(SEP)%s.mak\n", ProjectNode.GetLinkerSet ().c_str () );
+	fprintf ( fMakefile, "include tools$(SEP)rbuild$(SEP)backend$(SEP)mingw$(SEP)compilers$(SEP)%s.mak\n", ProjectNode.GetCompilerSet ().c_str () );
 
 	if ( configuration.Dependencies == FullDependencies )
 	{

Modified: trunk/reactos/tools/rbuild/backend/mingw/modulehandler.cpp
URL: http://svn.reactos.org/svn/reactos/trunk/reactos/tools/rbuild/backend/mingw/modulehandler.cpp?rev=41368&r1=41367&r2=41368&view=diff
==============================================================================
--- trunk/reactos/tools/rbuild/backend/mingw/modulehandler.cpp [iso-8859-1] (original)
+++ trunk/reactos/tools/rbuild/backend/mingw/modulehandler.cpp [iso-8859-1] Wed Jun 10 21:56:12 2009
@@ -1080,12 +1080,12 @@
 Rule gasRule ( "$(eval $(call RBUILD_GAS_RULE,$(module_name),$(source),$(dependencies),$(compiler_flags)))\n",
                "$(intermediate_path_unique).o",
                "$(intermediate_path_unique).o.d", NULL );
-Rule gccRule ( "$(eval $(call RBUILD_GCC_RULE,$(module_name),$(source),$(dependencies),$(compiler_flags)))\n",
+Rule gccRule ( "$(eval $(call RBUILD_CC_RULE,$(module_name),$(source),$(dependencies),$(compiler_flags)))\n",
                "$(intermediate_path_unique).o",
                "$(intermediate_path_unique).o.d", NULL );
 Rule gccHostRule ( "$(eval $(call RBUILD_HOST_GCC_RULE,$(module_name),$(source),$(dependencies),$(compiler_flags)))\n",
                    "$(intermediate_path_unique).o", NULL );
-Rule gppRule ( "$(eval $(call RBUILD_GPP_RULE,$(module_name),$(source),$(dependencies),$(compiler_flags)))\n",
+Rule gppRule ( "$(eval $(call RBUILD_CXX_RULE,$(module_name),$(source),$(dependencies),$(compiler_flags)))\n",
                "$(intermediate_path_unique).o",
                "$(intermediate_path_unique).o.d", NULL );
 Rule gppHostRule ( "$(eval $(call RBUILD_HOST_GPP_RULE,$(module_name),$(source),$(dependencies),$(compiler_flags)))\n",
@@ -1116,11 +1116,11 @@
                        "$(intermediate_path_noext).o", NULL );
 Rule widlTlbRule ( "$(eval $(call RBUILD_WIDL_TLB_RULE,$(module_name),$(source),$(dependencies),$(compiler_flags)))\n",
                    "$(intermediate_dir)$(SEP)", NULL );
-Rule pchRule ( "$(eval $(call RBUILD_GCC_PCH_RULE,$(module_name),$(source),$(dependencies),$(compiler_flags)))\n",
+Rule pchRule ( "$(eval $(call RBUILD_CC_PCH_RULE,$(module_name),$(source),$(dependencies),$(compiler_flags)))\n",
 			   "$(intermediate_dir)$(SEP).gch_$(module_name)$(SEP)$(source_name).gch",
 			   "$(intermediate_dir)$(SEP).gch_$(module_name)$(SEP)$(source_name).gch.d",
 			   "$(intermediate_dir)$(SEP).gch_$(module_name)$(SEP)", NULL );
-Rule pchCxxRule ( "$(eval $(call RBUILD_GPP_PCH_RULE,$(module_name),$(source),$(dependencies),$(compiler_flags)))\n",
+Rule pchCxxRule ( "$(eval $(call RBUILD_CXX_PCH_RULE,$(module_name),$(source),$(dependencies),$(compiler_flags)))\n",
 			      "$(intermediate_dir)$(SEP).gch_$(module_name)$(SEP)$(source_name).gch",
 			      "$(intermediate_dir)$(SEP).gch_$(module_name)$(SEP)$(source_name).gch.d",
 			      "$(intermediate_dir)$(SEP).gch_$(module_name)$(SEP)", NULL );

Modified: trunk/reactos/tools/rbuild/backend/mingw/rules.mak
URL: http://svn.reactos.org/svn/reactos/trunk/reactos/tools/rbuild/backend/mingw/rules.mak?rev=41368&r1=41367&r2=41368&view=diff
==============================================================================
--- trunk/reactos/tools/rbuild/backend/mingw/rules.mak [iso-8859-1] (original)
+++ trunk/reactos/tools/rbuild/backend/mingw/rules.mak [iso-8859-1] Wed Jun 10 21:56:12 2009
@@ -96,54 +96,14 @@
 RBUILD_host_cflags=${call RBUILD_compiler_flags_with_cpp,$(1),$(2),$(3),C,HOST_}
 RBUILD_host_cxxflags=${call RBUILD_compiler_flags_with_cpp,$(1),$(2),$(3),CXX,HOST_}
 
-CFLAG_WERROR:=-Werror
-CFLAG_CRTDLL:=-D_DLL -D__USE_CRTIMP
-
-CXXFLAG_WERROR:=-Werror
-CXXFLAG_CRTDLL:=-D_DLL -D__USE_CRTIMP
-
-CPPFLAG_WERROR:=-Werror
-CPPFLAG_UNICODE:=-DUNICODE -D_UNICODE
-
 RCFLAG_UNICODE:=-DUNICODE -D_UNICODE
 
 BUILTIN_ASDEFINES+= -D__ASM__
-# FIXME: disabled until RosBE stops sucking
-# BUILTIN_CPPFLAGS+= -nostdinc
-BUILTIN_CFLAGS+= -fno-optimize-sibling-calls
-BUILTIN_CXXFLAGS+= -fno-optimize-sibling-calls
 BUILTIN_RCFLAGS+= --nostdinc
 BUILTIN_RCDEFINES+= -DRC_INVOKED
 BUILTIN_NASMFLAGS+= -f win32
 
 #(module, source, dependencies, cflags, output)
-define RBUILD_GCC
-
-$(2): $${$(1)_precondition}
-
-ifeq ($(ROS_BUILDDEPS),full)
-
-$(5).d: $(2) | ${call RBUILD_dir,$(5)}
-	$$(ECHO_DEPENDS)
-	$${gcc} -MF $$@ ${call RBUILD_cflags,$(1),$(4)} -M -MP -MT $$@ $$<
-
--include $(5).d
-
-$(5): $(2) $(5).d $(3) | ${call RBUILD_dir,$(5)}
-	$$(ECHO_CC)
-	$${gcc} -o $$@ ${call RBUILD_cflags,$(1),$(4)} -c $$<
-
-else
-
-$(5): $(2) $(3) | ${call RBUILD_dir,$(5)}
-	$$(ECHO_CC)
-	$${gcc} -o $$@ ${call RBUILD_cflags,$(1),$(4)} -c $$<
-
-endif
-
-endef
-
-#(module, source, dependencies, cflags, output)
 define RBUILD_GAS
 
 $(2): $${$(1)_precondition}
@@ -170,118 +130,8 @@
 
 endef
 
-#(module, source, dependencies, cflags, output)
-define RBUILD_GPP
-
-$(2): $${$(1)_precondition}
-
-ifeq ($(ROS_BUILDDEPS),full)
-
-$(5).d: $(2) | ${call RBUILD_dir,$(5)}
-	$$(ECHO_DEPENDS)
-	$${gpp} -MF $$@ ${call RBUILD_cxxflags,$(1),$(4)} -M -MP -MT $$@ $$<
-
--include $(5).d
-
-$(5): $(2) $(5).d $(3) | ${call RBUILD_dir,$(5)}
-	$$(ECHO_CC)
-	$${gpp} -o $$@ ${call RBUILD_cxxflags,$(1),$(4)} -c $$<
-
-else
-
-$(5): $(2) $(3) | ${call RBUILD_dir,$(5)}
-	$$(ECHO_CC)
-	$${gpp} -o $$@ ${call RBUILD_cxxflags,$(1),$(4)} -c $$<
-
-endif
-
-endef
-
-#(module, source, dependencies, cflags)
-RBUILD_GCC_RULE=${call RBUILD_GCC,$(1),$(2),$(3),$(4),${call RBUILD_intermediate_path_unique,$(1),$(2)}.o}
-RBUILD_GPP_RULE=${call RBUILD_GPP,$(1),$(2),$(3),$(4),${call RBUILD_intermediate_path_unique,$(1),$(2)}.o}
+#(module, source, dependencies, cflags)
 RBUILD_GAS_RULE=${call RBUILD_GAS,$(1),$(2),$(3),$(4),${call RBUILD_intermediate_path_unique,$(1),$(2)}.o}
-
-#(module, source, dependencies, cflags)
-define RBUILD_GPP_RULE
-
-$(2): $${$(1)_precondition}
-
-ifeq ($(ROS_BUILDDEPS),full)
-
-${call RBUILD_intermediate_path_unique,$(1),$(2)}.o.d: $(2) | ${call RBUILD_intermediate_dir,$(2)}
-	$$(ECHO_DEPENDS)
-	$${gpp} -MF $$@ ${call RBUILD_cxxflags,$(1),$(4)} -M -MP -MT $$@ $$<
-
--include ${call RBUILD_intermediate_path_unique,$(1),$(2)}.o.d
-
-${call RBUILD_intermediate_path_unique,$(1),$(2)}.o: $(2) ${call RBUILD_intermediate_path_unique,$(1),$(2)}.o.d $(3) | ${call RBUILD_intermediate_dir,$(2)}
-	$$(ECHO_CC)
-	$${gpp} -o $$@ ${call RBUILD_cxxflags,$(1),$(4)} -c $$<
-
-else
-
-${call RBUILD_intermediate_path_unique,$(1),$(2)}.o: $(2) $(3) | ${call RBUILD_intermediate_dir,$(2)}
-	$$(ECHO_CC)
-	$${gpp} -o $$@ ${call RBUILD_cxxflags,$(1),$(4)} -c $$<
-
-endif
-
-endef
-
-#(module, source, dependencies, cflags)
-define RBUILD_GCC_PCH_RULE
-
-$(2): $${$(1)_precondition}
-
-ifeq ($$(ROS_BUILDDEPS),full)
-
-${call RBUILD_intermediate_dir,$(2)}$$(SEP).gch_$(1)$$(SEP)$(notdir $(2)).gch.d: $(2) | ${call RBUILD_intermediate_dir,$(2)}
-	$$(ECHO_DEPENDS)
-	$${gcc} -MF $$@ ${call RBUILD_cflags,$(1),$(4)} -x c-header -M -MP -MT $$@ $$<
-
--include $$(intermediate_dir)$$(SEP).gch_$$(module_name)$$(SEP)$(notdir $(2)).gch.d
-
-${call RBUILD_intermediate_dir,$(2)}$$(SEP).gch_$(1)$$(SEP)$(notdir $(2)).gch: $(2) ${call RBUILD_intermediate_dir,$(2)}$$(SEP).gch_$(1)$$(SEP)$(notdir $(2)).gch.d $(3) | ${call RBUILD_intermediate_dir,$(2)}$$(SEP).gch_$(1)
-	$$(ECHO_PCH)
-	$${gcc} -MF $$@ ${call RBUILD_cflags,$(1),$(4)} -x c-header -M -MP -MT $$@ $$<
-
-else
-
-${call RBUILD_intermediate_dir,$(2)}$$(SEP).gch_$(1)$$(SEP)$(notdir $(2)).gch: $(2) $(3) | ${call RBUILD_intermediate_dir,$(2)}$$(SEP).gch_$(1)
-	$$(ECHO_PCH)
-	$${gcc} -MF $$@ ${call RBUILD_cflags,$(1),$(4)} -x c-header -M -MP -MT $$@ $$<
-
-endif
-
-endef
-
-#(module, source, dependencies, cflags)
-define RBUILD_GPP_PCH_RULE
-
-$(2): $${$(1)_precondition}
-
-ifeq ($$(ROS_BUILDDEPS),full)
-
-${call RBUILD_intermediate_dir,$(2)}$$(SEP).gch_$(1)$$(SEP)$(notdir $(2)).gch.d: $(2) | ${call RBUILD_intermediate_dir,$(2)}
-	$$(ECHO_DEPENDS)
-	$${gpp} -MF $$@ ${call RBUILD_cxxflags,$(1),$(4)} -x c++-header -M -MP -MT $$@ $$<
-
--include $$(intermediate_dir)$$(SEP).gch_$$(module_name)$$(SEP)$(notdir $(2)).gch.d
-
-${call RBUILD_intermediate_dir,$(2)}$$(SEP).gch_$(1)$$(SEP)$(notdir $(2)).gch: $(2) ${call RBUILD_intermediate_dir,$(2)}$$(SEP).gch_$(1)$$(SEP)$(notdir $(2)).gch.d $(3) | ${call RBUILD_intermediate_dir,$(2)}$$(SEP).gch_$(1)
-	$$(ECHO_PCH)
-	$${gpp} -MF $$@ ${call RBUILD_cxxflags,$(1),$(4)} -x c++-header -M -MP -MT $$@ $$<
-
-else
-
-${call RBUILD_intermediate_dir,$(2)}$$(SEP).gch_$(1)$$(SEP)$(notdir $(2)).gch: $(2) $(3) | ${call RBUILD_intermediate_dir,$(2)}$$(SEP).gch_$(1)
-	$$(ECHO_PCH)
-	$${gpp} -MF $$@ ${call RBUILD_cxxflags,$(1),$(4)} -x c++-header -M -MP -MT $$@ $$<
-
-endif
-
-endef
 
 #(module, source, dependencies, cflags, output)
 define RBUILD_NASM
@@ -319,27 +169,20 @@
 
 ifeq ($$(ROS_BUILDDEPS),full)
 
-${call RBUILD_intermediate_path_unique,$(1),$(2)}.spec.d: $(2) | ${call RBUILD_intermediate_dir,$(2)}
-	$$(ECHO_DEPENDS)
-	$${gcc} -xc -MF $$@ ${call RBUILD_spec_pp_flags,$(1),$(4)} -M -MP -MT $$@ $$<
-
+${call RBUILD_DEPENDS,$(1),$(2),,${call RBUILD_spec_pp_flags,$(1),$(4)},${call RBUILD_intermediate_path_unique,$(1),$(2)}.spec.d}
 -include ${call RBUILD_intermediate_path_unique,$(1),$(2)}.spec.d
 
-${call RBUILD_intermediate_path_unique,$(1),$(2)}.spec: $(2) ${call RBUILD_intermediate_path_unique,$(1),$(2)}.spec.d $(3) | ${call RBUILD_intermediate_dir,$(2)}
-	$$(ECHO_CPP)
-	$${gcc} -xc -E ${call RBUILD_spec_pp_flags,$(1),$(4)} $$< > $$@
+${call RBUILD_CPP,$(1),$(2),${call RBUILD_intermediate_path_unique,$(1),$(2)}.spec.d $(3),${call RBUILD_spec_pp_flags,$(1),$(4)},${call RBUILD_intermediate_path_unique,$(1),$(2)}.spec}
 
 else
 
-${call RBUILD_intermediate_path_unique,$(1),$(2)}.spec: $(2) $(3) | ${call RBUILD_intermediate_dir,$(2)}
-	$$(ECHO_CPP)
-	$${gcc} -xc -E ${call RBUILD_spec_pp_flags,$(1),$(4)} $$< > $$@
+${call RBUILD_CPP,$(1),$(2),$(3),${call RBUILD_spec_pp_flags,$(1),$(4)},${call RBUILD_intermediate_path_unique,$(1),$(2)}.spec}
 
 endif
 
 ${call RBUILD_WINEBUILD_DEF,$(1),${call RBUILD_intermediate_path_unique,$(1),$(2)}.spec,,$(4),$(5),${call RBUILD_intermediate_path_unique,$(1),$(2)}.auto.def}
 ${call RBUILD_WINEBUILD_STUBS,$(1),${call RBUILD_intermediate_path_unique,$(1),$(2)}.spec,,$(4),$(5),${call RBUILD_intermediate_path_unique,$(1),$(2)}.stubs.c}
-${call RBUILD_GCC,$(1),${call RBUILD_intermediate_path_unique,$(1),$(2)}.stubs.c,,,${call RBUILD_intermediate_path_unique,$(1),$(2)}.stubs.o}
+${call RBUILD_CC,$(1),${call RBUILD_intermediate_path_unique,$(1),$(2)}.stubs.c,,,${call RBUILD_intermediate_path_unique,$(1),$(2)}.stubs.o}
 
 endef
 
@@ -348,7 +191,7 @@
 
 ${call RBUILD_WINEBUILD_DEF,$(1),$(2),$(3),$(4),$(5),${call RBUILD_intermediate_path_unique,$(1),$(2)}.auto.def}
 ${call RBUILD_WINEBUILD_STUBS,$(1),$(2),$(3),$(4),$(5),${call RBUILD_intermediate_path_unique,$(1),$(2)}.stubs.c}
-${call RBUILD_GCC,$(1),${call RBUILD_intermediate_path_unique,$(1),$(2)}.stubs.c,,,${call RBUILD_intermediate_path_unique,$(1),$(2)}.stubs.o}
+${call RBUILD_CC,$(1),${call RBUILD_intermediate_path_unique,$(1),$(2)}.stubs.c,,,${call RBUILD_intermediate_path_unique,$(1),$(2)}.stubs.o}
 
 endef
 
@@ -360,10 +203,7 @@
 
 ifeq ($$(ROS_BUILDDEPS),full)
 
-${call RBUILD_intermediate_path_unique,$(1),$(2)}.res.d: $(2) | ${call RBUILD_intermediate_dir,$(2)} $$(TEMPORARY)
-	$$(ECHO_DEPENDS)
-	$${gcc} -xc -MF $$@ ${call RBUILD_rc_pp_flags,$(1),$(4)} -M -MP -MT $$@ $$<
-
+${call RBUILD_DEPENDS,$(1),$(2),,${call RBUILD_rc_pp_flags,$(1),$(4)},${call RBUILD_intermediate_path_unique,$(1),$(2)}.res.d}
 -include ${call RBUILD_intermediate_path_unique,$(1),$(2)}.coff.d
 
 ${call RBUILD_intermediate_path_unique,$(1),$(2)}.res: $(2) ${call RBUILD_intermediate_path_unique,$(1),$(2)}.res.d $(3) $$(WRC_TARGET) | ${call RBUILD_intermediate_dir,$(2)}
@@ -407,7 +247,7 @@
 	$$(ECHO_WIDL)
 	$$(Q)$$(WIDL_TARGET) ${call RBUILD_midlflags,$(1),$(4),-I${call RBUILD_dir,$(2)}} -h -H ${call RBUILD_intermediate_path_noext,$(2)}_c.h -c -C ${call RBUILD_intermediate_path_noext,$(2)}_c.c $(2)
 
-${call RBUILD_GCC,$(1),${call RBUILD_intermediate_path_noext,$(2)}_c.c,,-fno-unit-at-a-time,${call RBUILD_intermediate_path_noext,$(2)}_c.o}
+${call RBUILD_CC,$(1),${call RBUILD_intermediate_path_noext,$(2)}_c.c,,-fno-unit-at-a-time,${call RBUILD_intermediate_path_noext,$(2)}_c.o}
 
 endef
 
@@ -420,7 +260,7 @@
 	$$(ECHO_WIDL)
 	$$(Q)$$(WIDL_TARGET) ${call RBUILD_midlflags,$(1),$(4),-I${call RBUILD_dir,$(2)}} -h -H ${call RBUILD_intermediate_path_noext,$(2)}_s.h -s -S ${call RBUILD_intermediate_path_noext,$(2)}_s.c $(2)
 
-${call RBUILD_GCC,$(1),${call RBUILD_intermediate_path_noext,$(2)}_s.c,,-fno-unit-at-a-time,${call RBUILD_intermediate_path_noext,$(2)}_s.o}
+${call RBUILD_CC,$(1),${call RBUILD_intermediate_path_noext,$(2)}_s.c,,-fno-unit-at-a-time,${call RBUILD_intermediate_path_noext,$(2)}_s.o}
 
 endef
 
@@ -433,7 +273,7 @@
 	$$(ECHO_WIDL)
 	$$(Q)$$(WIDL_TARGET) ${call RBUILD_midlflags,$(1),$(4),-I${call RBUILD_dir,$(2)}} -h -H ${call RBUILD_intermediate_path_noext,$(2)}_p.h -p -P ${call RBUILD_intermediate_path_noext,$(2)}_p.c $(2)
 
-${call RBUILD_GCC,$(1),${call RBUILD_intermediate_path_noext,$(2)}_p.c,,-fno-unit-at-a-time,${call RBUILD_intermediate_path_noext,$(2)}_p.o}
+${call RBUILD_CC,$(1),${call RBUILD_intermediate_path_noext,$(2)}_p.c,,-fno-unit-at-a-time,${call RBUILD_intermediate_path_noext,$(2)}_p.o}
 
 endef
 
@@ -446,7 +286,7 @@
 	$$(ECHO_WIDL)
 	$$(Q)$$(WIDL_TARGET) ${call RBUILD_midlflags,$(1),$(4),-I${call RBUILD_dir,$(2)}} -u -U $$@ $$<
 
-${call RBUILD_GCC,$(1),${call RBUILD_intermediate_path_noext,$(2)}_i.c,,-fno-unit-at-a-time,${call RBUILD_intermediate_path_noext,$(2)}_i.o}
+${call RBUILD_CC,$(1),${call RBUILD_intermediate_path_noext,$(2)}_i.c,,-fno-unit-at-a-time,${call RBUILD_intermediate_path_noext,$(2)}_i.o}
 
 endef
 
@@ -458,7 +298,7 @@
 	$$(ECHO_WIDL)
 	$$(Q)$$(WIDL_TARGET) ${call RBUILD_midlflags,$(1),$(4)} --dlldata-only --dlldata=$(2) $(5)
 
-${call RBUILD_GCC,$(1),$(2),,,${call RBUILD_intermediate_path_noext,$(2)}.o}
+${call RBUILD_CC,$(1),$(2),,,${call RBUILD_intermediate_path_noext,$(2)}.o}
 
 endef
 

Modified: trunk/reactos/tools/rbuild/module.cpp
URL: http://svn.reactos.org/svn/reactos/trunk/reactos/tools/rbuild/module.cpp?rev=41368&r1=41367&r2=41368&view=diff
==============================================================================
--- trunk/reactos/tools/rbuild/module.cpp [iso-8859-1] (original)
+++ trunk/reactos/tools/rbuild/module.cpp [iso-8859-1] Wed Jun 10 21:56:12 2009
@@ -601,6 +601,48 @@
 	                           const string& relative_path,
                                ParseContext& parseContext )
 {
+	const XMLAttribute* att;
+
+	att = e.GetAttribute ( "compilerset", false );
+
+	if ( att )
+	{
+		CompilerSet compilerSet;
+
+		if ( att->value == "msc" )
+			compilerSet = MicrosoftC;
+		else if ( att->value == "gcc" )
+			compilerSet = GnuGcc;
+		else
+			throw InvalidAttributeValueException (
+				e.location,
+				"compilerset",
+				att->value );
+
+		if ( compilerSet != project.configuration.Compiler )
+			return;
+	}
+
+	att = e.GetAttribute ( "linkerset", false );
+
+	if ( att )
+	{
+		LinkerSet linkerSet;
+
+		if ( att->value == "mslink" )
+			linkerSet = MicrosoftLink;
+		else if ( att->value == "ld" )
+			linkerSet = GnuLd;
+		else
+			throw InvalidAttributeValueException (
+				e.location,
+				"linkerset",
+				att->value );
+
+		if ( linkerSet != project.configuration.Linker )
+			return;
+	}
+
 	CompilationUnit* pOldCompilationUnit = parseContext.compilationUnit;
 	bool subs_invalid = false;
 	string subpath ( relative_path );

Modified: trunk/reactos/tools/rbuild/project.cpp
URL: http://svn.reactos.org/svn/reactos/trunk/reactos/tools/rbuild/project.cpp?rev=41368&r1=41367&r2=41368&view=diff
==============================================================================
--- trunk/reactos/tools/rbuild/project.cpp [iso-8859-1] (original)
+++ trunk/reactos/tools/rbuild/project.cpp [iso-8859-1] Wed Jun 10 21:56:12 2009
@@ -330,6 +330,48 @@
                                 const string& path,
                                 ParseContext& parseContext )
 {
+	const XMLAttribute* att;
+
+	att = e.GetAttribute ( "compilerset", false );
+
+	if ( att )
+	{
+		CompilerSet compilerSet;
+
+		if ( att->value == "msc" )
+			compilerSet = MicrosoftC;
+		else if ( att->value == "gcc" )
+			compilerSet = GnuGcc;
+		else
+			throw InvalidAttributeValueException (
+				e.location,
+				"compilerset",
+				att->value );
+
+		if ( compilerSet != configuration.Compiler )
+			return;
+	}
+
+	att = e.GetAttribute ( "linkerset", false );
+
+	if ( att )
+	{
+		LinkerSet linkerSet;
+
+		if ( att->value == "mslink" )
+			linkerSet = MicrosoftLink;
+		else if ( att->value == "ld" )
+			linkerSet = GnuLd;
+		else
+			throw InvalidAttributeValueException (
+				e.location,
+				"linkerset",
+				att->value );
+
+		if ( linkerSet != configuration.Linker )
+			return;
+	}
+
 	bool subs_invalid = false;
 
 	string subpath(path);
@@ -475,3 +517,25 @@
 {
 	return xmlfile;
 }
+
+std::string
+Project::GetCompilerSet () const
+{
+	switch ( configuration.Compiler )
+	{
+	case GnuGcc: return "gcc";
+	case MicrosoftC: return "msc";
+	default: assert ( false );
+	}
+}
+
+std::string
+Project::GetLinkerSet () const
+{
+	switch ( configuration.Linker )
+	{
+	case GnuLd: return "ld";
+	case MicrosoftLink: return "mslink";
+	default: assert ( false );
+	}
+}

Modified: trunk/reactos/tools/rbuild/rbuild.h
URL: http://svn.reactos.org/svn/reactos/trunk/reactos/tools/rbuild/rbuild.h?rev=41368&r1=41367&r2=41368&view=diff
==============================================================================
--- trunk/reactos/tools/rbuild/rbuild.h [iso-8859-1] (original)
+++ trunk/reactos/tools/rbuild/rbuild.h [iso-8859-1] Wed Jun 10 21:56:12 2009
@@ -274,6 +274,8 @@
 	const std::string& GetProjectFilename () const;
 	std::string ResolveProperties ( const std::string& s ) const;
 	const Property* LookupProperty ( const std::string& name ) const;
+	std::string GetCompilerSet () const;
+	std::string GetLinkerSet () const;
 private:
 	std::string ResolveNextProperty ( const std::string& s ) const;
 	void ReadXml ();
@@ -443,23 +445,37 @@
 	                           bool default_value = false );
 };
 
+class ToolsetDirective
+{
+private:
+	bool enabled;
+
+protected:
+	void ParseToolsets ( const Project& project, const XMLElement& node );
+
+public:
+	bool IsEnabled () const;
+};
+
 class CompilerDirective
 {
 private:
 	std::bitset<CompilerTypesCount> compilersSet;
-
-public:
+	bool enabled;
+
+protected:
+	void ParseCompilers ( const XMLElement& node, const std::string& defaultValue );
+
+public:
+	CompilerDirective (): enabled ( true ) { }
 	void SetCompiler ( CompilerType compiler );
 	void UnsetCompiler ( CompilerType compiler );
 	void SetAllCompilers ();
 	void UnsetAllCompilers ();
-
-	void ParseCompilers ( const XMLElement& node, const std::string& defaultValue );
-
 	bool IsCompilerSet ( CompilerType compiler ) const;
 };
 
-class Include: public CompilerDirective
+class Include: public CompilerDirective, public ToolsetDirective
 {
 public:
 	FileLocation *directory;
@@ -483,7 +499,7 @@
 };
 
 
-class Define: public CompilerDirective
+class Define: public CompilerDirective, public ToolsetDirective
 {
 public:
 	const Project& project;
@@ -647,7 +663,7 @@
 };
 
 
-class CompilerFlag: public CompilerDirective
+class CompilerFlag: public CompilerDirective, public ToolsetDirective
 {
 public:
 	const Project& project;
@@ -667,7 +683,7 @@
 };
 
 
-class LinkerFlag
+class LinkerFlag: public ToolsetDirective
 {
 public:
 	const Project& project;



More information about the Ros-diffs mailing list