mirror of
https://github.com/reactos/reactos.git
synced 2025-04-26 08:30:21 +00:00
Begin moving rules out of modulehandler.cpp and into makefile include rules.mak, where they will be more readable and manageable. Currently implemented: target C compiler and target C++ compiler rules. Please do a clean build if possible. Testing with unusual output paths appreciated
Supersedes r39111, with the following amendments: added tools/rbuild/backend/mingw/rules.mak The wrong function was being used to calculate the path of generated files: implement the right function, and use it svn path=/trunk/; revision=39120
This commit is contained in:
parent
8e354bfb10
commit
3384aa2e05
3 changed files with 73 additions and 20 deletions
|
@ -519,6 +519,8 @@ MingwBackend::GenerateProjectLFLAGS () const
|
||||||
void
|
void
|
||||||
MingwBackend::GenerateGlobalVariables () const
|
MingwBackend::GenerateGlobalVariables () const
|
||||||
{
|
{
|
||||||
|
fputs ( "include tools$(SEP)rbuild$(SEP)backend$(SEP)mingw$(SEP)rules.mak\n", fMakefile );
|
||||||
|
|
||||||
if ( configuration.Dependencies == FullDependencies )
|
if ( configuration.Dependencies == FullDependencies )
|
||||||
{
|
{
|
||||||
fprintf ( fMakefile,
|
fprintf ( fMakefile,
|
||||||
|
|
|
@ -1239,16 +1239,7 @@ Rule widlTlbRule ( "$(source): ${$(module_name)_precondition}\n"
|
||||||
"\t$(ECHO_WIDL)\n"
|
"\t$(ECHO_WIDL)\n"
|
||||||
"\t$(Q)$(WIDL_TARGET) $($(module_name)_WIDLFLAGS) -t -T $(intermediate_path_noext).tlb $(source)\n",
|
"\t$(Q)$(WIDL_TARGET) $($(module_name)_WIDLFLAGS) -t -T $(intermediate_path_noext).tlb $(source)\n",
|
||||||
"$(intermediate_dir)$(SEP)", NULL );
|
"$(intermediate_dir)$(SEP)", NULL );
|
||||||
Rule gccRule ( "$(source): ${$(module_name)_precondition}\n"
|
Rule gccRule ( "$(eval $(call RBUILD_GCC_RULE,$(module_name),$(source),$(dependencies),$(compiler_flags)))\n",
|
||||||
"ifeq ($(ROS_BUILDDEPS),full)\n"
|
|
||||||
"$(intermediate_path_unique).o.d: $(source) | $(intermediate_dir)\n"
|
|
||||||
"\t$(ECHO_DEPENDS)\n"
|
|
||||||
"\t${gcc} -MF $@ $($(module_name)_CFLAGS)$(compiler_flags) -M -MP -MT $@ $<\n"
|
|
||||||
"-include $(intermediate_path_unique).o.d\n"
|
|
||||||
"endif\n"
|
|
||||||
"$(intermediate_path_unique).o: $(source)$(if $(subst _full,,_$(ROS_BUILDDEPS)),, $(intermediate_path_unique).o.d) $(dependencies) | $(intermediate_dir)\n"
|
|
||||||
"\t$(ECHO_CC)\n"
|
|
||||||
"\t${gcc} -o $@ $($(module_name)_CFLAGS)$(compiler_flags) -c $<\n",
|
|
||||||
"$(intermediate_path_unique).o",
|
"$(intermediate_path_unique).o",
|
||||||
"$(intermediate_path_unique).o.d", NULL );
|
"$(intermediate_path_unique).o.d", NULL );
|
||||||
Rule gccHostRule ( "$(source): ${$(module_name)_precondition}\n"
|
Rule gccHostRule ( "$(source): ${$(module_name)_precondition}\n"
|
||||||
|
@ -1256,16 +1247,7 @@ Rule gccHostRule ( "$(source): ${$(module_name)_precondition}\n"
|
||||||
"\t$(ECHO_HOSTCC)\n"
|
"\t$(ECHO_HOSTCC)\n"
|
||||||
"\t${host_gcc} -o $@ $($(module_name)_CFLAGS)$(compiler_flags) -c $<\n",
|
"\t${host_gcc} -o $@ $($(module_name)_CFLAGS)$(compiler_flags) -c $<\n",
|
||||||
"$(intermediate_path_unique).o", NULL );
|
"$(intermediate_path_unique).o", NULL );
|
||||||
Rule gppRule ( "$(source): ${$(module_name)_precondition}\n"
|
Rule gppRule ( "$(eval $(call RBUILD_GPP_RULE,$(module_name),$(source),$(dependencies),$(compiler_flags)))\n",
|
||||||
"ifeq ($(ROS_BUILDDEPS),full)\n"
|
|
||||||
"$(intermediate_path_unique).o.d: $(source) | $(intermediate_dir)\n"
|
|
||||||
"\t$(ECHO_DEPENDS)\n"
|
|
||||||
"\t${gpp} -MF $@ $($(module_name)_CXXFLAGS)$(compiler_flags) -M -MP -MT $@ $<\n"
|
|
||||||
"-include $(intermediate_path_unique).o.d\n"
|
|
||||||
"endif\n"
|
|
||||||
"$(intermediate_path_unique).o: $(source)$(if $(subst _full,,_$(ROS_BUILDDEPS)),, $(intermediate_path_unique).o.d) $(dependencies) | $(intermediate_dir)\n"
|
|
||||||
"\t$(ECHO_CC)\n"
|
|
||||||
"\t${gpp} -o $@ $($(module_name)_CXXFLAGS)$(compiler_flags) -c $<\n",
|
|
||||||
"$(intermediate_path_unique).o",
|
"$(intermediate_path_unique).o",
|
||||||
"$(intermediate_path_unique).o.d", NULL );
|
"$(intermediate_path_unique).o.d", NULL );
|
||||||
Rule gppHostRule ( "$(source): ${$(module_name)_precondition}\n"
|
Rule gppHostRule ( "$(source): ${$(module_name)_precondition}\n"
|
||||||
|
|
69
reactos/tools/rbuild/backend/mingw/rules.mak
Normal file
69
reactos/tools/rbuild/backend/mingw/rules.mak
Normal file
|
@ -0,0 +1,69 @@
|
||||||
|
RBUILD_fullpath=${subst <<<,,${subst $(SEP)<<<,,${subst /,$(SEP),${subst \\,$(SEP),$(1)}}<<<}}
|
||||||
|
|
||||||
|
RBUILD_compress_prefix=${subst >>>,,${subst >>>$($(2)),$$($(2)),>>>$(1)}}
|
||||||
|
RBUILD_compress_prefixes=${call RBUILD_compress_prefix,${call RBUILD_compress_prefix,${call RBUILD_compress_prefix,${call RBUILD_compress_prefix,${call RBUILD_compress_prefix,$(1),INTERMEDIATE},OUTPUT},CDOUTPUT},TEMPORARY},INSTALL}
|
||||||
|
|
||||||
|
RBUILD_strip_prefix=${subst >>>,,${subst >>>$($(2)),,>>>$(1)}}
|
||||||
|
RBUILD_strip_prefixes=${subst >>>,,${subst >>>$(SEP),,>>>${call RBUILD_strip_prefix,${call RBUILD_strip_prefix,${call RBUILD_strip_prefix,${call RBUILD_strip_prefix,${call RBUILD_strip_prefix,$(1),INTERMEDIATE},OUTPUT},CDOUTPUT},TEMPORARY},INSTALL}}}
|
||||||
|
|
||||||
|
#(module, source)
|
||||||
|
RBUILD_intermediate_path_unique=${call RBUILD_intermediate_dir,$(2)}$(SEP)$(basename $(notdir $(2)))_$(1)
|
||||||
|
|
||||||
|
#(source)
|
||||||
|
RBUILD_intermediate_dir=${call RBUILD_fullpath,$(value INTERMEDIATE)$(SEP)$(dir ${call RBUILD_strip_prefixes,$(1)})}
|
||||||
|
|
||||||
|
#(module, source, dependencies, cflags)
|
||||||
|
define RBUILD_GCC_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)
|
||||||
|
$${gcc} -MF $$@ $$($(1)_CFLAGS) $(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)
|
||||||
|
$${gcc} -o $$@ $$($(1)_CFLAGS) $(4) -c $$<
|
||||||
|
|
||||||
|
else
|
||||||
|
|
||||||
|
${call RBUILD_intermediate_path_unique,$(1),$(2)}.o: $(2) $(3) | ${call RBUILD_intermediate_dir,$(2)}
|
||||||
|
$$(ECHO_CC)
|
||||||
|
$${gcc} -o $$@ $$($(1)_CFLAGS) $(4) -c $$<
|
||||||
|
|
||||||
|
endif
|
||||||
|
|
||||||
|
endef
|
||||||
|
|
||||||
|
#(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 $$@ $$($(1)_CXXFLAGS) $(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 $$@ $$($(1)_CXXFLAGS) $(4) -c $$<
|
||||||
|
|
||||||
|
else
|
||||||
|
|
||||||
|
${call RBUILD_intermediate_path_unique,$(1),$(2)}.o: $(2) $(3) | ${call RBUILD_intermediate_dir,$(2)}
|
||||||
|
$$(ECHO_CC)
|
||||||
|
$${gpp} -o $$@ $$($(1)_CXXFLAGS) $(4) -c $$<
|
||||||
|
|
||||||
|
endif
|
||||||
|
|
||||||
|
endef
|
||||||
|
|
||||||
|
# EOF
|
Loading…
Reference in a new issue