Kaydet (Commit) 4d1bdd7a authored tarafından Jan Holesovsky's avatar Jan Holesovsky

Use cl.exe's -showIncludes to generate dependency files.

üst 56c47100
#!/usr/bin/env perl
#
# filter-showIncludes.pl depfile.d objfile.o orginal.cxx
#
# Create dependency information from the output of cl.exe's showInclude. It
# needs additional information - the output name to which to write, objfile
# that depends on the includes, and the original file name.
#
# It also consolidates the file names to a canonical form, and filters out
# duplicates.
#
# LGPL v3 / GPL v3 / MPL 1.1
#
# Original author: Jan Holesovsky <kendy@suse.cz>
my $outfile = $ARGV[0];
my $objfile = $ARGV[1];
my $srcfile = $ARGV[2];
if ( !defined $outfile || !defined $objfile || !defined $srcfile ) {
die "Not enough parameters to create dependencies.";
}
open( OUT, "> $outfile" ) or die "Cannot open $outfile for writing.";
print OUT "$objfile: \\\n $srcfile";
my %seen;
my $first_line = 1;
while ( <STDIN> ) {
if ( /^Note: including file:/ ) {
s/^Note: including file:\s*//;
s/\r$//;
chomp;
s/\\/\//g;
# X: -> /cygdrive/x/
s/^(.):/\/cygdrive\/\l\1/;
s/ /\\ /g;
if ( !defined $seen{$_} ) {
$seen{$_} = 1;
print OUT " \\\n $_";
}
}
else {
# skip the first line, it always just duplicates what is being
# compiled
print unless ( $first_line );
}
$first_line = 0;
}
print OUT "\n";
close( OUT ) or die "Cannot close $outfile.";
# vim: shiftwidth=4 softtabstop=4 expandtab:
...@@ -213,6 +213,16 @@ endif ...@@ -213,6 +213,16 @@ endif
gb_COMPILERNOOPTFLAGS := -Od gb_COMPILERNOOPTFLAGS := -Od
ifeq ($(gb_FULLDEPS),$(true))
gb_COMPILERDEPFLAGS := -showIncludes
define gb_create_deps
| $(GBUILDDIR)/filter-showIncludes.pl $(2) $(1) $(3)
endef
else
gb_COMPILERDEPFLAGS :=
define gb_create_deps
endef
endif
# Helper class # Helper class
gb_Helper_SRCDIR_NATIVE := $(shell cygpath -m $(SRCDIR) | $(gb_AWK) -- '{ print tolower(substr($$0,1,1)) substr($$0,2) }') gb_Helper_SRCDIR_NATIVE := $(shell cygpath -m $(SRCDIR) | $(gb_AWK) -- '{ print tolower(substr($$0,1,1)) substr($$0,2) }')
...@@ -241,27 +251,6 @@ endef ...@@ -241,27 +251,6 @@ endef
# CObject class # CObject class
ifeq ($(gb_FULLDEPS),$(true))
define gb_CObject__command_deponcompile
$(call gb_Helper_abbreviate_dirs_native,\
$(OUTDIR)/bin/makedepend$(gb_Executable_EXT) \
$(filter-out -DPRECOMPILED_HEADERS,$(4)) $(5) \
-I$(dir $(3)) \
$(filter-out -I$(COMPATH)% %/pch -I$(JAVA_HOME),$(6)) \
$(3) \
-f - \
| $(gb_AWK) -f $(GBUILDDIR)/processdeps.awk \
-v OBJECTFILE=$(1) \
-v OUTDIR=$(OUTDIR)/ \
-v WORKDIR=$(WORKDIR)/ \
-v SRCDIR=$(SRCDIR)/ \
-v REPODIR=$(REPODIR)/ \
> $(call gb_CObject_get_dep_target,$(2)))
endef
else
CObject__command_deponcompile =
endif
define gb_CObject__command define gb_CObject__command
$(call gb_Output_announce,$(2),$(true),C ,3) $(call gb_Output_announce,$(2),$(true),C ,3)
$(call gb_Helper_abbreviate_dirs_native,\ $(call gb_Helper_abbreviate_dirs_native,\
...@@ -270,37 +259,16 @@ $(call gb_Helper_abbreviate_dirs_native,\ ...@@ -270,37 +259,16 @@ $(call gb_Helper_abbreviate_dirs_native,\
$(gb_CC) \ $(gb_CC) \
$(DEFS) $(CFLAGS) -Fd$(PDBFILE) \ $(DEFS) $(CFLAGS) -Fd$(PDBFILE) \
$(PCHFLAGS) \ $(PCHFLAGS) \
$(gb_COMPILERDEPFLAGS) \
-I$(realpath $(dir $(3))) \ -I$(realpath $(dir $(3))) \
$(INCLUDE) \ $(INCLUDE) \
-c $(realpath $(3)) \ -c $(realpath $(3)) \
-Fo$(1)) -Fo$(1)) $(call gb_create_deps,$(1),$(call gb_CObject_get_dep_target,$(2)),$(realpath $(3)))
$(call gb_CObject__command_deponcompile,$(1),$(2),$(3),$(DEFS),$(CFLAGS),$(INCLUDE))
endef endef
# CxxObject class # CxxObject class
ifeq ($(gb_FULLDEPS),$(true))
define gb_CxxObject__command_deponcompile
$(call gb_Helper_abbreviate_dirs_native,\
$(OUTDIR)/bin/makedepend$(gb_Executable_EXT) \
$(filter-out -DPRECOMPILED_HEADERS,$(4)) $(5) \
-I$(dir $(3)) \
$(filter-out -I$(COMPATH)% %/pch -I$(JAVA_HOME),$(6)) \
$(3) \
-f - \
| $(gb_AWK) -f $(GBUILDDIR)/processdeps.awk \
-v OBJECTFILE=$(1) \
-v OUTDIR=$(OUTDIR)/ \
-v WORKDIR=$(WORKDIR)/ \
-v SRCDIR=$(SRCDIR)/ \
-v REPODIR=$(REPODIR)/ \
> $(call gb_CxxObject_get_dep_target,$(2)))
endef
else
gb_CxxObject__command_deponcompile =
endif
define gb_CxxObject__command define gb_CxxObject__command
$(call gb_Output_announce,$(2),$(true),CXX,3) $(call gb_Output_announce,$(2),$(true),CXX,3)
$(call gb_Helper_abbreviate_dirs_native,\ $(call gb_Helper_abbreviate_dirs_native,\
...@@ -309,11 +277,11 @@ $(call gb_Helper_abbreviate_dirs_native,\ ...@@ -309,11 +277,11 @@ $(call gb_Helper_abbreviate_dirs_native,\
$(gb_CXX) \ $(gb_CXX) \
$(DEFS) $(CXXFLAGS) -Fd$(PDBFILE)\ $(DEFS) $(CXXFLAGS) -Fd$(PDBFILE)\
$(PCHFLAGS) \ $(PCHFLAGS) \
$(gb_COMPILERDEPFLAGS) \
-I$(realpath $(dir $(3))) \ -I$(realpath $(dir $(3))) \
$(INCLUDE_STL) $(INCLUDE) \ $(INCLUDE_STL) $(INCLUDE) \
-c $(realpath $(3)) \ -c $(realpath $(3)) \
-Fo$(1)) -Fo$(1)) $(call gb_create_deps,$(1),$(call gb_CxxObject_get_dep_target,$(2)),$(realpath $(3)))
$(call gb_CxxObject__command_deponcompile,$(1),$(2),$(3),$(DEFS),$(CFLAGS),$(INCLUDE))
endef endef
...@@ -322,28 +290,6 @@ endef ...@@ -322,28 +290,6 @@ endef
gb_PrecompiledHeader_get_enableflags = -Yu$(1).hxx \ gb_PrecompiledHeader_get_enableflags = -Yu$(1).hxx \
-Fp$(call gb_PrecompiledHeader_get_target,$(1)) -Fp$(call gb_PrecompiledHeader_get_target,$(1))
ifeq ($(gb_FULLDEPS),$(true))
define gb_PrecompiledHeader__command_deponcompile
$(call gb_Helper_abbreviate_dirs_native,\
$(OUTDIR)/bin/makedepend$(gb_Executable_EXT) \
$(4) $(5) \
-I$(dir $(3)) \
$(filter-out -I$(COMPATH)% -I$(JAVA_HOME),$(6)) \
$(3) \
-f - \
| $(gb_AWK) -f $(GBUILDDIR)/processdeps.awk \
-v OBJECTFILE=$(1) \
-v OUTDIR=$(OUTDIR)/ \
-v WORKDIR=$(WORKDIR)/ \
-v SRCDIR=$(SRCDIR)/ \
-v REPODIR=$(REPODIR)/ \
> $(call gb_PrecompiledHeader_get_dep_target,$(2)))
endef
else
gb_PrecompiledHeader__command_deponcompile =
endif
define gb_PrecompiledHeader__command define gb_PrecompiledHeader__command
$(call gb_Output_announce,$(2),$(true),PCH,1) $(call gb_Output_announce,$(2),$(true),PCH,1)
$(call gb_Helper_abbreviate_dirs_native,\ $(call gb_Helper_abbreviate_dirs_native,\
...@@ -351,11 +297,11 @@ $(call gb_Helper_abbreviate_dirs_native,\ ...@@ -351,11 +297,11 @@ $(call gb_Helper_abbreviate_dirs_native,\
unset INCLUDE && \ unset INCLUDE && \
$(gb_CXX) \ $(gb_CXX) \
$(4) $(5) -Fd$(PDBFILE) \ $(4) $(5) -Fd$(PDBFILE) \
$(gb_COMPILERDEPFLAGS) \
-I$(realpath $(dir $(3))) \ -I$(realpath $(dir $(3))) \
$(6) \ $(6) \
-c $(realpath $(3)) \ -c $(realpath $(3)) \
-Yc$(notdir $(patsubst %.cxx,%.hxx,$(3))) -Fp$(1) -Fo$(1).obj) -Yc$(notdir $(patsubst %.cxx,%.hxx,$(3))) -Fp$(1) -Fo$(1).obj) $(call gb_create_deps,$(1),$(call gb_PrecompiledHeader_get_dep_target,$(2)),$(realpath $(3)))
$(call gb_PrecompiledHeader__command_deponcompile,$(1),$(2),$(3),$(4),$(5),$(6))
endef endef
# NoexPrecompiledHeader class # NoexPrecompiledHeader class
...@@ -363,28 +309,6 @@ endef ...@@ -363,28 +309,6 @@ endef
gb_NoexPrecompiledHeader_get_enableflags = -Yu$(1).hxx \ gb_NoexPrecompiledHeader_get_enableflags = -Yu$(1).hxx \
-Fp$(call gb_NoexPrecompiledHeader_get_target,$(1)) -Fp$(call gb_NoexPrecompiledHeader_get_target,$(1))
ifeq ($(gb_FULLDEPS),$(true))
define gb_NoexPrecompiledHeader__command_deponcompile
$(call gb_Helper_abbreviate_dirs_native,\
$(OUTDIR)/bin/makedepend$(gb_Executable_EXT) \
$(4) $(5) \
-I$(dir $(3)) \
$(filter-out -I$(COMPATH)% -I$(JAVA_HOME),$(6)) \
$(3) \
-f - \
| $(gb_AWK) -f $(GBUILDDIR)/processdeps.awk \
-v OBJECTFILE=$(1) \
-v OUTDIR=$(OUTDIR)/ \
-v WORKDIR=$(WORKDIR)/ \
-v SRCDIR=$(SRCDIR)/ \
-v REPODIR=$(REPODIR)/ \
> $(call gb_NoexPrecompiledHeader_get_dep_target,$(2)))
endef
else
gb_NoexPrecompiledHeader__command_deponcompile =
endif
define gb_NoexPrecompiledHeader__command define gb_NoexPrecompiledHeader__command
$(call gb_Output_announce,$(2),$(true),PCH,1) $(call gb_Output_announce,$(2),$(true),PCH,1)
$(call gb_Helper_abbreviate_dirs_native,\ $(call gb_Helper_abbreviate_dirs_native,\
...@@ -392,11 +316,11 @@ $(call gb_Helper_abbreviate_dirs_native,\ ...@@ -392,11 +316,11 @@ $(call gb_Helper_abbreviate_dirs_native,\
unset INCLUDE && \ unset INCLUDE && \
$(gb_CXX) \ $(gb_CXX) \
$(4) $(5) -Fd$(PDBFILE) \ $(4) $(5) -Fd$(PDBFILE) \
$(gb_COMPILERDEPFLAGS) \
-I$(realpath $(dir $(3))) \ -I$(realpath $(dir $(3))) \
$(6) \ $(6) \
-c $(realpath $(3)) \ -c $(realpath $(3)) \
-Yc$(notdir $(patsubst %.cxx,%.hxx,$(3))) -Fp$(1) -Fo$(1).obj) -Yc$(notdir $(patsubst %.cxx,%.hxx,$(3))) -Fp$(1) -Fo$(1).obj) $(call gb_create_deps,$(1),$(call gb_NoexPrecompiledHeader,$(2)),$(realpath $(3)))
$(call gb_NoexPrecompiledHeader__command_deponcompile,$(1),$(2),$(3),$(4),$(5),$(6))
endef endef
......
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