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=…
==============================================================================
--- 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…
==============================================================================
--- 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…
==============================================================================
--- 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…
==============================================================================
--- 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…
==============================================================================
--- 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…
==============================================================================
--- 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…
==============================================================================
--- 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…
==============================================================================
--- 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?re…
==============================================================================
--- 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?r…
==============================================================================
--- 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=…
==============================================================================
--- 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;