# HG changeset patch # User erikj # Date 1367502999 -7200 # Node ID e1a929afcfc492470d50be0b6b0e8dc77d3760b9 # Parent e404d321abc6a6f54f6200b7ba8f9f4c76588b50 8011687: Support correct dependencies from header files on windows and solaris Reviewed-by: tbell diff -r e404d321abc6 -r e1a929afcfc4 common/autoconf/generated-configure.sh --- a/common/autoconf/generated-configure.sh Thu May 02 15:46:38 2013 +0200 +++ b/common/autoconf/generated-configure.sh Thu May 02 15:56:39 2013 +0200 @@ -681,6 +681,7 @@ STATIC_LIBRARY SHARED_LIBRARY OBJ_SUFFIX +COMPILER_NAME LIPO ac_ct_OBJDUMP OBJDUMP @@ -3774,7 +3775,7 @@ #CUSTOM_AUTOCONF_INCLUDE # Do not change or remove the following line, it is needed for consistency checks: -DATE_WHEN_GENERATED=1367502345 +DATE_WHEN_GENERATED=1367502949 ############################################################################### # @@ -28805,6 +28806,7 @@ + # The (cross) compiler is now configured, we can now test capabilities # of the target platform. diff -r e404d321abc6 -r e1a929afcfc4 common/autoconf/spec.gmk.in --- a/common/autoconf/spec.gmk.in Thu May 02 15:46:38 2013 +0200 +++ b/common/autoconf/spec.gmk.in Thu May 02 15:56:39 2013 +0200 @@ -300,6 +300,7 @@ # CC is gcc and others behaving reasonably similar. # CL is cl.exe only. COMPILER_TYPE:=@COMPILER_TYPE@ +COMPILER_NAME:=@COMPILER_NAME@ COMPILER_SUPPORTS_TARGET_BITS_FLAG=@COMPILER_SUPPORTS_TARGET_BITS_FLAG@ diff -r e404d321abc6 -r e1a929afcfc4 common/autoconf/toolchain.m4 --- a/common/autoconf/toolchain.m4 Thu May 02 15:46:38 2013 +0200 +++ b/common/autoconf/toolchain.m4 Thu May 02 15:56:39 2013 +0200 @@ -573,6 +573,7 @@ fi fi +AC_SUBST(COMPILER_NAME) AC_SUBST(OBJ_SUFFIX) AC_SUBST(SHARED_LIBRARY) AC_SUBST(STATIC_LIBRARY) diff -r e404d321abc6 -r e1a929afcfc4 common/makefiles/NativeCompilation.gmk --- a/common/makefiles/NativeCompilation.gmk Thu May 02 15:46:38 2013 +0200 +++ b/common/makefiles/NativeCompilation.gmk Thu May 02 15:56:39 2013 +0200 @@ -95,10 +95,28 @@ $$($1_$2_OBJ) : $2 ifeq ($(COMPILER_TYPE),CC) $$(call COMPILING_MSG,$2,$$($1_TARGET)) + # The Sun studio compiler doesn't output the full path to the object file in the + # generated deps files. Fixing it with sed. If compiling assembly, don't try this. + ifeq ($(COMPILER_NAME)$$(filter %.s,$2),ossc) + $$($1_$2_COMP) $$($1_$2_FLAGS) $$($1_$2_DEP_FLAG) $$($1_$2_DEP).tmp $(CC_OUT_OPTION)$$($1_$2_OBJ) $2 + $(SED) 's|^$$(@F):|$$@:|' $$($1_$2_DEP).tmp > $$($1_$2_DEP) + else $$($1_$2_COMP) $$($1_$2_FLAGS) $$($1_$2_DEP_FLAG) $$($1_$2_DEP) $(CC_OUT_OPTION)$$($1_$2_OBJ) $2 endif + endif + # The Visual Studio compiler lacks a feature for generating make dependencies, but by + # setting -showIncludes, all included files are printed. These are filtered out and + # parsed into make dependences. ifeq ($(COMPILER_TYPE),CL) - $$($1_$2_COMP) $$($1_$2_FLAGS) $$($1_$2_DEBUG_OUT_FLAGS) $(CC_OUT_OPTION)$$($1_$2_OBJ) $2 + $$($1_$2_COMP) $$($1_$2_FLAGS) -showIncludes $$($1_$2_DEBUG_OUT_FLAGS) $(CC_OUT_OPTION)$$($1_$2_OBJ) $2 | $(TEE) $$($1_$2_DEP).raw | $(GREP) -v "^Note: including file:" + ($(ECHO) $$@: \\ \ + && $(SED) -e '/^Note: including file:/!d' \ + -e 's|Note: including file: *||' \ + -e 's|\\|/|g' \ + -e 's|^\([a-zA-Z]\):|/cygdrive/\1|g' \ + -e '/$(subst /,\/,$(TOPDIR))/!d' \ + -e 's|$$$$| \\|g' \ + $$($1_$2_DEP).raw) > $$($1_$2_DEP) endif endif endef