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=4... ============================================================================== --- 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?rev... ============================================================================== --- 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?re... ============================================================================== --- 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=4... ============================================================================== --- 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;