Commit a2441774 authored by sbc@chromium.org's avatar sbc@chromium.org

add dependancy generatation to generated Makefiles

This is implemented by passing -MMD to gcc and then including the
generated .d files in the Makefile.

BUG=139161
TEST=
NOTRY=true

Review URL: https://chromiumcodereview.appspot.com/10821050

git-svn-id: svn://svn.chromium.org/chrome/trunk/src@148640 0039d316-1c4b-4281-b951-d872f2087c98
parent 1c76dc3c
......@@ -27,7 +27,7 @@ import getos
SUPPORTED_HOSTS = ['win']
def ErrorExit(text):
sys.stderr.write(text + '\n')
ErrorMsgFunc(text)
sys.exit(1)
......@@ -159,6 +159,7 @@ def GenerateCompile(target, tool, arch, srcs):
compile_rule = GetBuildRule(tool, 'CXX')
rules += Replace(compile_rule, replace)
object_sets.append('$(%s)' % replace['<OBJS>'])
return (' '.join(object_sets), rules)
......@@ -213,11 +214,11 @@ def GenerateRules(desc, tools):
targs, nmf_rule = GenerateNMF(main, tc)
rules += nmf_rule
all_targets.append(targs)
rules += '\n.PHONY : clean\nclean:\n\t$(RM) ' + ' '.join(clean)
rules += '\n.PHONY : clean\nclean:\n\t$(RM) $(DEPFILES) ' + ' '.join(clean)
rules += '\n\n-include $(DEPFILES)'
return ' '.join(all_targets), rules
def GenerateTargets(desc, tools):
targets = []
rules = ''
......@@ -257,7 +258,6 @@ def GenerateReplacements(desc, tools):
}
# 'KEY' : ( <TYPE>, [Accepted Values], <Required?>)
DSC_FORMAT = {
'TOOLS' : (list, ['newlib', 'glibc', 'pnacl', 'win'], True),
......@@ -541,6 +541,9 @@ def main(argv):
if options.host:
toolchains.append(platform)
if not args:
ErrorExit('Please specify one or more projects to generate Makefiles for.')
# By default support newlib and glibc
if not toolchains:
toolchains = ['newlib', 'glibc']
......
......@@ -12,7 +12,7 @@ NEWLIB_CC?=$(TC_PATH)/$(OSNAME)_x86_newlib/bin/i686-nacl-gcc -c
NEWLIB_CXX?=$(TC_PATH)/$(OSNAME)_x86_newlib/bin/i686-nacl-g++ -c -std=gnu++98
NEWLIB_LINK?=$(TC_PATH)/$(OSNAME)_x86_newlib/bin/i686-nacl-g++ -Wl,-as-needed
NEWLIB_DUMP?=$(TC_PATH)/$(OSNAME)_x86_newlib/x86_64-nacl/bin/objdump
NEWLIB_CCFLAGS?=-O0 -g -pthread $(NACL_WARNINGS)
NEWLIB_CCFLAGS?=-O0 -MMD -g -pthread $(NACL_WARNINGS)
NEWLIB_LDFLAGS?=-g -pthread
"""
......@@ -23,7 +23,7 @@ GLIBC_LINK?=$(TC_PATH)/$(OSNAME)_x86_glibc/bin/i686-nacl-g++ -Wl,-as-needed
GLIBC_DUMP?=$(TC_PATH)/$(OSNAME)_x86_glibc/x86_64-nacl/bin/objdump
GLIBC_PATHS:=-L $(TC_PATH)/$(OSNAME)_x86_glibc/x86_64-nacl/lib32
GLIBC_PATHS+=-L $(TC_PATH)/$(OSNAME)_x86_glibc/x86_64-nacl/lib
GLIBC_CCFLAGS?=-O0 -g -pthread $(NACL_WARNINGS)
GLIBC_CCFLAGS?=-O0 -MMD -g -pthread $(NACL_WARNINGS)
GLIBC_LDFLAGS?=-g -pthread
"""
......@@ -33,7 +33,7 @@ PNACL_CXX?=$(TC_PATH)/$(OSNAME)_x86_pnacl/newlib/bin/pnacl-clang++ -c -std=gnu++
PNACL_LINK?=$(TC_PATH)/$(OSNAME)_x86_pnacl/newlib/bin/pnacl-clang++
PNACL_DUMP?=$(TC_PATH)/$(OSNAME)_x86_pnacl/newlib/bin/objdump
PNACL_CCFLAGS?=-O0 -g -pthread $(NACL_WARNINGS)
PNACL_LDFLAGS?=-g -pthread
PNACL_CCFLAGS?=-O0 -MMD -g -pthread $(NACL_WARNINGS)
TRANSLATE:=$(TC_PATH)/$(OSNAME)_x86_pnacl/newlib/bin/pnacl-translate
"""
......@@ -51,12 +51,14 @@ WIN_LDFLAGS=/LIBPATH:$(NACL_SDK_ROOT)/lib/win_x86_32_host
#
NACL_CC_RULE = """
<OBJS>:=$(patsubst %.<ext>, <tc>/%_<ARCH>.o,$(<PROJ>_<EXT>))
DEPFILES+=$(<OBJS>:.o=.d)
$(<OBJS>) : <tc>/%_<ARCH>.o : %.<ext> $(THIS_MAKE) | <tc>
<TAB>$(<CC>) -o $@ $< <MACH> $(<PROJ>_<EXT>FLAGS) -DTCNAME=<tc> $(<TC>_CCFLAGS) <DEFLIST>
"""
SO_CC_RULE = """
<OBJS>:=$(patsubst %.<ext>, <tc>/%_<ARCH>.o,$(<PROJ>_<EXT>))
DEPFILES+=$(<OBJS>:.o=.d)
$(<OBJS>) : <tc>/%_<ARCH>.o : %.<ext> $(THIS_MAKE) | <tc>
<TAB>$(<CC>) -o $@ $< <MACH> -fPIC $(<PROJ>_<EXT>FLAGS) -DTCNAME=<tc> $(<TC>_CCFLAGS) <DEFLIST>
"""
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment