make/Init.gmk
author sjohanss
Fri, 13 Nov 2015 09:28:53 +0100
changeset 34135 317af749634b
parent 33051 2cb885613d7a
child 33572 b74ceb2d2d20
permissions -rw-r--r--
8139424: SIGSEGV, Problematic frame: # V [libjvm.so+0xd0c0cc] void InstanceKlass::oop_oop_iterate_oop_maps_specialized<true,oopDesc*,MarkAndPushClosure> Summary: The crash was caused by a faulty eager humongous reclaim. The reason for reclaiming a live object was that the call to cleanupHRRS was done after dirtying cards and clearing the remembered sets for the humongous object. This could lead to one or many cards being missed. Reviewed-by: tbenson, kbarrett, tschatzl
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
0
fd16c54261b3 Initial load
duke
parents:
diff changeset
     1
#
29662
78c47f0002c3 8076060: Improve make bootstrap process
ihse
parents: 28902
diff changeset
     2
# Copyright (c) 2012, 2015, Oracle and/or its affiliates. All rights reserved.
0
fd16c54261b3 Initial load
duke
parents:
diff changeset
     3
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
fd16c54261b3 Initial load
duke
parents:
diff changeset
     4
#
fd16c54261b3 Initial load
duke
parents:
diff changeset
     5
# This code is free software; you can redistribute it and/or modify it
fd16c54261b3 Initial load
duke
parents:
diff changeset
     6
# under the terms of the GNU General Public License version 2 only, as
5499
eb0b3e373167 6943119: Rebrand source copyright notices
ohair
parents: 4309
diff changeset
     7
# published by the Free Software Foundation.  Oracle designates this
0
fd16c54261b3 Initial load
duke
parents:
diff changeset
     8
# particular file as subject to the "Classpath" exception as provided
5499
eb0b3e373167 6943119: Rebrand source copyright notices
ohair
parents: 4309
diff changeset
     9
# by Oracle in the LICENSE file that accompanied this code.
0
fd16c54261b3 Initial load
duke
parents:
diff changeset
    10
#
fd16c54261b3 Initial load
duke
parents:
diff changeset
    11
# This code is distributed in the hope that it will be useful, but WITHOUT
fd16c54261b3 Initial load
duke
parents:
diff changeset
    12
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
fd16c54261b3 Initial load
duke
parents:
diff changeset
    13
# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
fd16c54261b3 Initial load
duke
parents:
diff changeset
    14
# version 2 for more details (a copy is included in the LICENSE file that
fd16c54261b3 Initial load
duke
parents:
diff changeset
    15
# accompanied this code).
fd16c54261b3 Initial load
duke
parents:
diff changeset
    16
#
fd16c54261b3 Initial load
duke
parents:
diff changeset
    17
# You should have received a copy of the GNU General Public License version
fd16c54261b3 Initial load
duke
parents:
diff changeset
    18
# 2 along with this work; if not, write to the Free Software Foundation,
fd16c54261b3 Initial load
duke
parents:
diff changeset
    19
# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
fd16c54261b3 Initial load
duke
parents:
diff changeset
    20
#
5499
eb0b3e373167 6943119: Rebrand source copyright notices
ohair
parents: 4309
diff changeset
    21
# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
eb0b3e373167 6943119: Rebrand source copyright notices
ohair
parents: 4309
diff changeset
    22
# or visit www.oracle.com if you need additional information or have any
eb0b3e373167 6943119: Rebrand source copyright notices
ohair
parents: 4309
diff changeset
    23
# questions.
0
fd16c54261b3 Initial load
duke
parents:
diff changeset
    24
#
fd16c54261b3 Initial load
duke
parents:
diff changeset
    25
29662
78c47f0002c3 8076060: Improve make bootstrap process
ihse
parents: 28902
diff changeset
    26
################################################################################
78c47f0002c3 8076060: Improve make bootstrap process
ihse
parents: 28902
diff changeset
    27
# This is the bootstrapping part of the build. This file is included from the
78c47f0002c3 8076060: Improve make bootstrap process
ihse
parents: 28902
diff changeset
    28
# top level Makefile, and is responsible for launching the Main.gmk file with
78c47f0002c3 8076060: Improve make bootstrap process
ihse
parents: 28902
diff changeset
    29
# the proper make and the proper make arguments.
78c47f0002c3 8076060: Improve make bootstrap process
ihse
parents: 28902
diff changeset
    30
################################################################################
78c47f0002c3 8076060: Improve make bootstrap process
ihse
parents: 28902
diff changeset
    31
21759
e24e22311718 8027566: Remove the old build system
ihse
parents: 19758
diff changeset
    32
# This must be the first rule
e24e22311718 8027566: Remove the old build system
ihse
parents: 19758
diff changeset
    33
default:
29662
78c47f0002c3 8076060: Improve make bootstrap process
ihse
parents: 28902
diff changeset
    34
.PHONY: default
17
bb9f330cd95a 6649672: Adjustments to OUTPUTDIR default and mkdirs to avoid empty directory clutter
ohair
parents: 16
diff changeset
    35
21759
e24e22311718 8027566: Remove the old build system
ihse
parents: 19758
diff changeset
    36
# Inclusion of this pseudo-target will cause make to execute this file
29662
78c47f0002c3 8076060: Improve make bootstrap process
ihse
parents: 28902
diff changeset
    37
# serially, regardless of -j.
21759
e24e22311718 8027566: Remove the old build system
ihse
parents: 19758
diff changeset
    38
.NOTPARALLEL:
9618
83db8167c9f6 7043700: Regression for IcedTea builds
ohair
parents: 9309
diff changeset
    39
29788
b581a3d9db41 8076465: New Init.gmk needs improvements
ihse
parents: 29663
diff changeset
    40
ifeq ($(HAS_SPEC),)
29662
78c47f0002c3 8076060: Improve make bootstrap process
ihse
parents: 28902
diff changeset
    41
  ##############################################################################
29788
b581a3d9db41 8076465: New Init.gmk needs improvements
ihse
parents: 29663
diff changeset
    42
  # This is the default mode. We have not been recursively called with a SPEC.
29662
78c47f0002c3 8076060: Improve make bootstrap process
ihse
parents: 28902
diff changeset
    43
  ##############################################################################
78c47f0002c3 8076060: Improve make bootstrap process
ihse
parents: 28902
diff changeset
    44
29788
b581a3d9db41 8076465: New Init.gmk needs improvements
ihse
parents: 29663
diff changeset
    45
  # Include our helper functions.
b581a3d9db41 8076465: New Init.gmk needs improvements
ihse
parents: 29663
diff changeset
    46
  include $(topdir)/make/InitSupport.gmk
8441
30f5ad688d4a 7021753: Add a build times report
ohrstrom
parents: 7876
diff changeset
    47
29788
b581a3d9db41 8076465: New Init.gmk needs improvements
ihse
parents: 29663
diff changeset
    48
  # Here are "global" targets, i.e. targets that can be executed without having
b581a3d9db41 8076465: New Init.gmk needs improvements
ihse
parents: 29663
diff changeset
    49
  # a configuration. This will define ALL_GLOBAL_TARGETS.
b581a3d9db41 8076465: New Init.gmk needs improvements
ihse
parents: 29663
diff changeset
    50
  include $(topdir)/make/Help.gmk
29662
78c47f0002c3 8076060: Improve make bootstrap process
ihse
parents: 28902
diff changeset
    51
29788
b581a3d9db41 8076465: New Init.gmk needs improvements
ihse
parents: 29663
diff changeset
    52
  # Targets provided by Init.gmk.
32715
4d558a41a1ec 8136695: Automatic build comparison with COMPARE_BUILD
ihse
parents: 32461
diff changeset
    53
  ALL_INIT_TARGETS := print-modules print-targets print-configuration \
4d558a41a1ec 8136695: Automatic build comparison with COMPARE_BUILD
ihse
parents: 32461
diff changeset
    54
      reconfigure pre-compare-build post-compare-build
25854
98ce0879ab4c 8054834: Modular Source Code
chegar
parents: 22031
diff changeset
    55
29662
78c47f0002c3 8076060: Improve make bootstrap process
ihse
parents: 28902
diff changeset
    56
  # CALLED_TARGETS is the list of targets that the user provided,
78c47f0002c3 8076060: Improve make bootstrap process
ihse
parents: 28902
diff changeset
    57
  # or "default" if unspecified.
78c47f0002c3 8076060: Improve make bootstrap process
ihse
parents: 28902
diff changeset
    58
  CALLED_TARGETS := $(if $(MAKECMDGOALS), $(MAKECMDGOALS), default)
29788
b581a3d9db41 8076465: New Init.gmk needs improvements
ihse
parents: 29663
diff changeset
    59
b581a3d9db41 8076465: New Init.gmk needs improvements
ihse
parents: 29663
diff changeset
    60
  # Extract non-global targets that require a spec file.
b581a3d9db41 8076465: New Init.gmk needs improvements
ihse
parents: 29663
diff changeset
    61
  CALLED_SPEC_TARGETS := $(filter-out $(ALL_GLOBAL_TARGETS), $(CALLED_TARGETS))
b581a3d9db41 8076465: New Init.gmk needs improvements
ihse
parents: 29663
diff changeset
    62
b581a3d9db41 8076465: New Init.gmk needs improvements
ihse
parents: 29663
diff changeset
    63
  # If we have only global targets, or if we are called with -qp (assuming an
b581a3d9db41 8076465: New Init.gmk needs improvements
ihse
parents: 29663
diff changeset
    64
  # external part, e.g. bash completion, is trying to understand our targets),
b581a3d9db41 8076465: New Init.gmk needs improvements
ihse
parents: 29663
diff changeset
    65
  # we will skip SPEC location and the sanity checks.
b581a3d9db41 8076465: New Init.gmk needs improvements
ihse
parents: 29663
diff changeset
    66
  ifeq ($(CALLED_SPEC_TARGETS), )
b581a3d9db41 8076465: New Init.gmk needs improvements
ihse
parents: 29663
diff changeset
    67
    ONLY_GLOBAL_TARGETS := true
b581a3d9db41 8076465: New Init.gmk needs improvements
ihse
parents: 29663
diff changeset
    68
  endif
b581a3d9db41 8076465: New Init.gmk needs improvements
ihse
parents: 29663
diff changeset
    69
  ifneq ($(findstring qp, $(MAKEFLAGS)),)
b581a3d9db41 8076465: New Init.gmk needs improvements
ihse
parents: 29663
diff changeset
    70
    ONLY_GLOBAL_TARGETS := true
b581a3d9db41 8076465: New Init.gmk needs improvements
ihse
parents: 29663
diff changeset
    71
  endif
b581a3d9db41 8076465: New Init.gmk needs improvements
ihse
parents: 29663
diff changeset
    72
b581a3d9db41 8076465: New Init.gmk needs improvements
ihse
parents: 29663
diff changeset
    73
  ifeq ($(ONLY_GLOBAL_TARGETS), true)
b581a3d9db41 8076465: New Init.gmk needs improvements
ihse
parents: 29663
diff changeset
    74
    ############################################################################
b581a3d9db41 8076465: New Init.gmk needs improvements
ihse
parents: 29663
diff changeset
    75
    # We have only global targets, or are called with -pq.
b581a3d9db41 8076465: New Init.gmk needs improvements
ihse
parents: 29663
diff changeset
    76
    ############################################################################
b581a3d9db41 8076465: New Init.gmk needs improvements
ihse
parents: 29663
diff changeset
    77
b581a3d9db41 8076465: New Init.gmk needs improvements
ihse
parents: 29663
diff changeset
    78
    ifeq ($(wildcard $(SPEC)), )
b581a3d9db41 8076465: New Init.gmk needs improvements
ihse
parents: 29663
diff changeset
    79
      # If we have no SPEC provided, we will just make a "best effort" target list.
b581a3d9db41 8076465: New Init.gmk needs improvements
ihse
parents: 29663
diff changeset
    80
      # First try to grab any available pre-existing main-targets.gmk.
b581a3d9db41 8076465: New Init.gmk needs improvements
ihse
parents: 29663
diff changeset
    81
      main_targets_file := $(firstword $(wildcard $(build_dir)/*/make-support/main-targets.gmk))
b581a3d9db41 8076465: New Init.gmk needs improvements
ihse
parents: 29663
diff changeset
    82
      ifneq ($(main_targets_file), )
b581a3d9db41 8076465: New Init.gmk needs improvements
ihse
parents: 29663
diff changeset
    83
        # Extract the SPEC that corresponds to this main-targets.gmk file.
b581a3d9db41 8076465: New Init.gmk needs improvements
ihse
parents: 29663
diff changeset
    84
        SPEC := $(patsubst %/make-support/main-targets.gmk, %/spec.gmk, $(main_targets_file))
b581a3d9db41 8076465: New Init.gmk needs improvements
ihse
parents: 29663
diff changeset
    85
      else
b581a3d9db41 8076465: New Init.gmk needs improvements
ihse
parents: 29663
diff changeset
    86
        # None found, pick an arbitrary SPEC for which to generate a file
b581a3d9db41 8076465: New Init.gmk needs improvements
ihse
parents: 29663
diff changeset
    87
        SPEC := $(firstword $(all_spec_files))
b581a3d9db41 8076465: New Init.gmk needs improvements
ihse
parents: 29663
diff changeset
    88
      endif
b581a3d9db41 8076465: New Init.gmk needs improvements
ihse
parents: 29663
diff changeset
    89
    endif
b581a3d9db41 8076465: New Init.gmk needs improvements
ihse
parents: 29663
diff changeset
    90
b581a3d9db41 8076465: New Init.gmk needs improvements
ihse
parents: 29663
diff changeset
    91
    ifneq ($(wildcard $(SPEC)), )
b581a3d9db41 8076465: New Init.gmk needs improvements
ihse
parents: 29663
diff changeset
    92
      $(eval $(call DefineMainTargets, LAZY, $(SPEC)))
b581a3d9db41 8076465: New Init.gmk needs improvements
ihse
parents: 29663
diff changeset
    93
    else
b581a3d9db41 8076465: New Init.gmk needs improvements
ihse
parents: 29663
diff changeset
    94
      # If we have no configurations we can not provide any main targets.
b581a3d9db41 8076465: New Init.gmk needs improvements
ihse
parents: 29663
diff changeset
    95
      ALL_MAIN_TARGETS :=
b581a3d9db41 8076465: New Init.gmk needs improvements
ihse
parents: 29663
diff changeset
    96
    endif
b581a3d9db41 8076465: New Init.gmk needs improvements
ihse
parents: 29663
diff changeset
    97
b581a3d9db41 8076465: New Init.gmk needs improvements
ihse
parents: 29663
diff changeset
    98
    ALL_TARGETS := $(sort $(ALL_GLOBAL_TARGETS) $(ALL_MAIN_TARGETS) $(ALL_INIT_TARGETS))
b581a3d9db41 8076465: New Init.gmk needs improvements
ihse
parents: 29663
diff changeset
    99
b581a3d9db41 8076465: New Init.gmk needs improvements
ihse
parents: 29663
diff changeset
   100
    # Just list all our targets.
b581a3d9db41 8076465: New Init.gmk needs improvements
ihse
parents: 29663
diff changeset
   101
    $(ALL_TARGETS):
b581a3d9db41 8076465: New Init.gmk needs improvements
ihse
parents: 29663
diff changeset
   102
b581a3d9db41 8076465: New Init.gmk needs improvements
ihse
parents: 29663
diff changeset
   103
    .PHONY: $(ALL_TARGETS)
b581a3d9db41 8076465: New Init.gmk needs improvements
ihse
parents: 29663
diff changeset
   104
b581a3d9db41 8076465: New Init.gmk needs improvements
ihse
parents: 29663
diff changeset
   105
  else
b581a3d9db41 8076465: New Init.gmk needs improvements
ihse
parents: 29663
diff changeset
   106
    ############################################################################
b581a3d9db41 8076465: New Init.gmk needs improvements
ihse
parents: 29663
diff changeset
   107
    # This is the normal case, we have been called from the command line by the
b581a3d9db41 8076465: New Init.gmk needs improvements
ihse
parents: 29663
diff changeset
   108
    # user and we need to call ourself back with a proper SPEC.
b581a3d9db41 8076465: New Init.gmk needs improvements
ihse
parents: 29663
diff changeset
   109
    # We have at least one non-global target, so we need to find a spec file.
b581a3d9db41 8076465: New Init.gmk needs improvements
ihse
parents: 29663
diff changeset
   110
    ############################################################################
b581a3d9db41 8076465: New Init.gmk needs improvements
ihse
parents: 29663
diff changeset
   111
b581a3d9db41 8076465: New Init.gmk needs improvements
ihse
parents: 29663
diff changeset
   112
    # Basic checks on environment and command line.
b581a3d9db41 8076465: New Init.gmk needs improvements
ihse
parents: 29663
diff changeset
   113
    $(eval $(call CheckControlVariables))
b581a3d9db41 8076465: New Init.gmk needs improvements
ihse
parents: 29663
diff changeset
   114
    $(eval $(call CheckDeprecatedEnvironment))
b581a3d9db41 8076465: New Init.gmk needs improvements
ihse
parents: 29663
diff changeset
   115
    $(eval $(call CheckInvalidMakeFlags))
b581a3d9db41 8076465: New Init.gmk needs improvements
ihse
parents: 29663
diff changeset
   116
b581a3d9db41 8076465: New Init.gmk needs improvements
ihse
parents: 29663
diff changeset
   117
    # Check that CONF_CHECK is valid.
b581a3d9db41 8076465: New Init.gmk needs improvements
ihse
parents: 29663
diff changeset
   118
    $(eval $(call ParseConfCheckOption))
b581a3d9db41 8076465: New Init.gmk needs improvements
ihse
parents: 29663
diff changeset
   119
b581a3d9db41 8076465: New Init.gmk needs improvements
ihse
parents: 29663
diff changeset
   120
    # Check that the LOG given is valid, and set LOG_LEVEL, LOG_NOFILE and MAKE_LOG_FLAGS.
b581a3d9db41 8076465: New Init.gmk needs improvements
ihse
parents: 29663
diff changeset
   121
    $(eval $(call ParseLogLevel))
b581a3d9db41 8076465: New Init.gmk needs improvements
ihse
parents: 29663
diff changeset
   122
b581a3d9db41 8076465: New Init.gmk needs improvements
ihse
parents: 29663
diff changeset
   123
    # After this SPECS contain 1..N spec files (otherwise ParseConfAndSpec fails).
29662
78c47f0002c3 8076060: Improve make bootstrap process
ihse
parents: 28902
diff changeset
   124
    $(eval $(call ParseConfAndSpec))
25854
98ce0879ab4c 8054834: Modular Source Code
chegar
parents: 22031
diff changeset
   125
29788
b581a3d9db41 8076465: New Init.gmk needs improvements
ihse
parents: 29663
diff changeset
   126
    # Extract main targets from Main.gmk using the spec(s) provided. In theory,
b581a3d9db41 8076465: New Init.gmk needs improvements
ihse
parents: 29663
diff changeset
   127
    # with multiple specs, we should find the intersection of targets provided
b581a3d9db41 8076465: New Init.gmk needs improvements
ihse
parents: 29663
diff changeset
   128
    # by all specs, but we approximate this by an arbitrary spec from the list.
b581a3d9db41 8076465: New Init.gmk needs improvements
ihse
parents: 29663
diff changeset
   129
    # This will setup ALL_MAIN_TARGETS.
b581a3d9db41 8076465: New Init.gmk needs improvements
ihse
parents: 29663
diff changeset
   130
    $(eval $(call DefineMainTargets, FORCE, $(firstword $(SPECS))))
b581a3d9db41 8076465: New Init.gmk needs improvements
ihse
parents: 29663
diff changeset
   131
b581a3d9db41 8076465: New Init.gmk needs improvements
ihse
parents: 29663
diff changeset
   132
    # Separate called targets depending on type.
29662
78c47f0002c3 8076060: Improve make bootstrap process
ihse
parents: 28902
diff changeset
   133
    INIT_TARGETS := $(filter $(ALL_INIT_TARGETS), $(CALLED_SPEC_TARGETS))
29788
b581a3d9db41 8076465: New Init.gmk needs improvements
ihse
parents: 29663
diff changeset
   134
    MAIN_TARGETS := $(filter $(ALL_MAIN_TARGETS), $(CALLED_SPEC_TARGETS))
b581a3d9db41 8076465: New Init.gmk needs improvements
ihse
parents: 29663
diff changeset
   135
    SEQUENTIAL_TARGETS := $(filter dist-clean clean%, $(MAIN_TARGETS))
b581a3d9db41 8076465: New Init.gmk needs improvements
ihse
parents: 29663
diff changeset
   136
    PARALLEL_TARGETS := $(filter-out $(SEQUENTIAL_TARGETS), $(MAIN_TARGETS))
874
638ddad10e12 6728161: Add SKIP_BOOT_CYCLE feature to create boot jdk and use it during build
ohair
parents: 668
diff changeset
   137
29662
78c47f0002c3 8076060: Improve make bootstrap process
ihse
parents: 28902
diff changeset
   138
    # The spec files depend on the autoconf source code. This check makes sure
78c47f0002c3 8076060: Improve make bootstrap process
ihse
parents: 28902
diff changeset
   139
    # the configuration is up to date after changes to configure.
33051
2cb885613d7a 8140277: Configuration out-of-date check should also check closed sources
ihse
parents: 32920
diff changeset
   140
    CUSTOM_CONFIG_DIR ?= $(topdir)/closed/autoconf
2cb885613d7a 8140277: Configuration out-of-date check should also check closed sources
ihse
parents: 32920
diff changeset
   141
2cb885613d7a 8140277: Configuration out-of-date check should also check closed sources
ihse
parents: 32920
diff changeset
   142
    $(SPECS): $(wildcard $(topdir)/common/autoconf/*) $(wildcard $(CUSTOM_CONFIG_DIR)/*)
29662
78c47f0002c3 8076060: Improve make bootstrap process
ihse
parents: 28902
diff changeset
   143
        ifeq ($(CONF_CHECK), fail)
78c47f0002c3 8076060: Improve make bootstrap process
ihse
parents: 28902
diff changeset
   144
	  @echo "Error: The configuration is not up to date for '$(lastword $(subst /, , $(dir $@)))'."
78c47f0002c3 8076060: Improve make bootstrap process
ihse
parents: 28902
diff changeset
   145
	  $(call PrintConfCheckFailed)
78c47f0002c3 8076060: Improve make bootstrap process
ihse
parents: 28902
diff changeset
   146
	  @exit 2
78c47f0002c3 8076060: Improve make bootstrap process
ihse
parents: 28902
diff changeset
   147
        else ifeq ($(CONF_CHECK), auto)
78c47f0002c3 8076060: Improve make bootstrap process
ihse
parents: 28902
diff changeset
   148
	  @echo "Note: The configuration is not up to date for '$(lastword $(subst /, , $(dir $@)))'."
78c47f0002c3 8076060: Improve make bootstrap process
ihse
parents: 28902
diff changeset
   149
	  @( cd $(topdir) && \
29788
b581a3d9db41 8076465: New Init.gmk needs improvements
ihse
parents: 29663
diff changeset
   150
	      $(MAKE) $(MFLAGS) $(MAKE_LOG_FLAGS) -r -R -f $(topdir)/make/Init.gmk \
b581a3d9db41 8076465: New Init.gmk needs improvements
ihse
parents: 29663
diff changeset
   151
	      SPEC=$@ HAS_SPEC=true ACTUAL_TOPDIR=$(topdir) \
29662
78c47f0002c3 8076060: Improve make bootstrap process
ihse
parents: 28902
diff changeset
   152
	      reconfigure )
78c47f0002c3 8076060: Improve make bootstrap process
ihse
parents: 28902
diff changeset
   153
        else ifeq ($(CONF_CHECK), ignore)
78c47f0002c3 8076060: Improve make bootstrap process
ihse
parents: 28902
diff changeset
   154
          # Do nothing
26398
ca1f84f97e20 8057537: Serialize reconfigure and fix make clean-foo foo
erikj
parents: 26128
diff changeset
   155
        endif
25854
98ce0879ab4c 8054834: Modular Source Code
chegar
parents: 22031
diff changeset
   156
29788
b581a3d9db41 8076465: New Init.gmk needs improvements
ihse
parents: 29663
diff changeset
   157
    # Unless reconfigure is explicitely called, let all main targets depend on
b581a3d9db41 8076465: New Init.gmk needs improvements
ihse
parents: 29663
diff changeset
   158
    # the spec files to be up to date.
b581a3d9db41 8076465: New Init.gmk needs improvements
ihse
parents: 29663
diff changeset
   159
    ifeq ($(findstring reconfigure, $(INIT_TARGETS)), )
b581a3d9db41 8076465: New Init.gmk needs improvements
ihse
parents: 29663
diff changeset
   160
      $(MAIN_TARGETS): $(SPECS)
29662
78c47f0002c3 8076060: Improve make bootstrap process
ihse
parents: 28902
diff changeset
   161
    endif
874
638ddad10e12 6728161: Add SKIP_BOOT_CYCLE feature to create boot jdk and use it during build
ohair
parents: 668
diff changeset
   162
29788
b581a3d9db41 8076465: New Init.gmk needs improvements
ihse
parents: 29663
diff changeset
   163
    make-info:
b581a3d9db41 8076465: New Init.gmk needs improvements
ihse
parents: 29663
diff changeset
   164
        ifneq ($(findstring $(LOG_LEVEL),info debug trace),)
b581a3d9db41 8076465: New Init.gmk needs improvements
ihse
parents: 29663
diff changeset
   165
	  $(info Running make as '$(strip $(MAKE) $(MFLAGS) \
b581a3d9db41 8076465: New Init.gmk needs improvements
ihse
parents: 29663
diff changeset
   166
	      $(COMMAND_LINE_VARIABLES) $(MAKECMDGOALS))')
b581a3d9db41 8076465: New Init.gmk needs improvements
ihse
parents: 29663
diff changeset
   167
        endif
b581a3d9db41 8076465: New Init.gmk needs improvements
ihse
parents: 29663
diff changeset
   168
32715
4d558a41a1ec 8136695: Automatic build comparison with COMPARE_BUILD
ihse
parents: 32461
diff changeset
   169
    MAKE_INIT_WITH_SPEC_ARGUMENTS := ACTUAL_TOPDIR=$(topdir) \
4d558a41a1ec 8136695: Automatic build comparison with COMPARE_BUILD
ihse
parents: 32461
diff changeset
   170
        USER_MAKE_VARS="$(USER_MAKE_VARS)" MAKE_LOG_FLAGS=$(MAKE_LOG_FLAGS) \
4d558a41a1ec 8136695: Automatic build comparison with COMPARE_BUILD
ihse
parents: 32461
diff changeset
   171
        LOG_LEVEL=$(LOG_LEVEL) LOG_NOFILE=$(LOG_NOFILE) \
4d558a41a1ec 8136695: Automatic build comparison with COMPARE_BUILD
ihse
parents: 32461
diff changeset
   172
        INIT_TARGETS="$(INIT_TARGETS)" \
4d558a41a1ec 8136695: Automatic build comparison with COMPARE_BUILD
ihse
parents: 32461
diff changeset
   173
        SEQUENTIAL_TARGETS="$(SEQUENTIAL_TARGETS)" \
4d558a41a1ec 8136695: Automatic build comparison with COMPARE_BUILD
ihse
parents: 32461
diff changeset
   174
        PARALLEL_TARGETS="$(PARALLEL_TARGETS)"
4d558a41a1ec 8136695: Automatic build comparison with COMPARE_BUILD
ihse
parents: 32461
diff changeset
   175
29788
b581a3d9db41 8076465: New Init.gmk needs improvements
ihse
parents: 29663
diff changeset
   176
    # Now the init and main targets will be called, once for each SPEC. The
b581a3d9db41 8076465: New Init.gmk needs improvements
ihse
parents: 29663
diff changeset
   177
    # recipe will be run once for every target specified, but we only want to
b581a3d9db41 8076465: New Init.gmk needs improvements
ihse
parents: 29663
diff changeset
   178
    # execute the recipe a single time, hence the TARGET_DONE with a dummy
b581a3d9db41 8076465: New Init.gmk needs improvements
ihse
parents: 29663
diff changeset
   179
    # command if true.
32715
4d558a41a1ec 8136695: Automatic build comparison with COMPARE_BUILD
ihse
parents: 32461
diff changeset
   180
    # The COMPARE_BUILD part implements special support for makefile development.
29788
b581a3d9db41 8076465: New Init.gmk needs improvements
ihse
parents: 29663
diff changeset
   181
    $(ALL_INIT_TARGETS) $(ALL_MAIN_TARGETS): make-info
29662
78c47f0002c3 8076060: Improve make bootstrap process
ihse
parents: 28902
diff changeset
   182
	@$(if $(TARGET_DONE), \
78c47f0002c3 8076060: Improve make bootstrap process
ihse
parents: 28902
diff changeset
   183
	  true \
78c47f0002c3 8076060: Improve make bootstrap process
ihse
parents: 28902
diff changeset
   184
	, \
32715
4d558a41a1ec 8136695: Automatic build comparison with COMPARE_BUILD
ihse
parents: 32461
diff changeset
   185
	  ( cd $(topdir) && \
29662
78c47f0002c3 8076060: Improve make bootstrap process
ihse
parents: 28902
diff changeset
   186
	  $(foreach spec, $(SPECS), \
29788
b581a3d9db41 8076465: New Init.gmk needs improvements
ihse
parents: 29663
diff changeset
   187
	    $(MAKE) $(MFLAGS) $(MAKE_LOG_FLAGS) -r -R -j 1 -f $(topdir)/make/Init.gmk \
32715
4d558a41a1ec 8136695: Automatic build comparison with COMPARE_BUILD
ihse
parents: 32461
diff changeset
   188
	        SPEC=$(spec) HAS_SPEC=true $(MAKE_INIT_WITH_SPEC_ARGUMENTS) \
4d558a41a1ec 8136695: Automatic build comparison with COMPARE_BUILD
ihse
parents: 32461
diff changeset
   189
	        main && \
4d558a41a1ec 8136695: Automatic build comparison with COMPARE_BUILD
ihse
parents: 32461
diff changeset
   190
	    $(if $(and $(COMPARE_BUILD), $(PARALLEL_TARGETS)), \
4d558a41a1ec 8136695: Automatic build comparison with COMPARE_BUILD
ihse
parents: 32461
diff changeset
   191
	        $(MAKE) $(MFLAGS) $(MAKE_LOG_FLAGS) -r -R -f $(topdir)/make/Init.gmk \
4d558a41a1ec 8136695: Automatic build comparison with COMPARE_BUILD
ihse
parents: 32461
diff changeset
   192
	            SPEC=$(spec) HAS_SPEC=true ACTUAL_TOPDIR=$(topdir) \
4d558a41a1ec 8136695: Automatic build comparison with COMPARE_BUILD
ihse
parents: 32461
diff changeset
   193
	            COMPARE_BUILD="$(COMPARE_BUILD)" pre-compare-build && \
4d558a41a1ec 8136695: Automatic build comparison with COMPARE_BUILD
ihse
parents: 32461
diff changeset
   194
	        $(MAKE) $(MFLAGS) $(MAKE_LOG_FLAGS) -r -R -j 1 -f $(topdir)/make/Init.gmk \
4d558a41a1ec 8136695: Automatic build comparison with COMPARE_BUILD
ihse
parents: 32461
diff changeset
   195
	            SPEC=$(spec) HAS_SPEC=true $(MAKE_INIT_WITH_SPEC_ARGUMENTS) \
4d558a41a1ec 8136695: Automatic build comparison with COMPARE_BUILD
ihse
parents: 32461
diff changeset
   196
	            COMPARE_BUILD="$(COMPARE_BUILD)" main && \
4d558a41a1ec 8136695: Automatic build comparison with COMPARE_BUILD
ihse
parents: 32461
diff changeset
   197
	        $(MAKE) $(MFLAGS) $(MAKE_LOG_FLAGS) -r -R -f $(topdir)/make/Init.gmk \
4d558a41a1ec 8136695: Automatic build comparison with COMPARE_BUILD
ihse
parents: 32461
diff changeset
   198
	            SPEC=$(spec) HAS_SPEC=true ACTUAL_TOPDIR=$(topdir) \
4d558a41a1ec 8136695: Automatic build comparison with COMPARE_BUILD
ihse
parents: 32461
diff changeset
   199
	            COMPARE_BUILD="$(COMPARE_BUILD)" post-compare-build && \
4d558a41a1ec 8136695: Automatic build comparison with COMPARE_BUILD
ihse
parents: 32461
diff changeset
   200
	    ) \
4d558a41a1ec 8136695: Automatic build comparison with COMPARE_BUILD
ihse
parents: 32461
diff changeset
   201
	  ) true ) \
29662
78c47f0002c3 8076060: Improve make bootstrap process
ihse
parents: 28902
diff changeset
   202
	  $(eval TARGET_DONE=true) \
78c47f0002c3 8076060: Improve make bootstrap process
ihse
parents: 28902
diff changeset
   203
	)
78c47f0002c3 8076060: Improve make bootstrap process
ihse
parents: 28902
diff changeset
   204
78c47f0002c3 8076060: Improve make bootstrap process
ihse
parents: 28902
diff changeset
   205
    .PHONY: $(ALL_MAIN_TARGETS) $(ALL_INIT_TARGETS)
0
fd16c54261b3 Initial load
duke
parents:
diff changeset
   206
29788
b581a3d9db41 8076465: New Init.gmk needs improvements
ihse
parents: 29663
diff changeset
   207
  endif # $(ONLY_GLOBAL_TARGETS)!=true
29662
78c47f0002c3 8076060: Improve make bootstrap process
ihse
parents: 28902
diff changeset
   208
78c47f0002c3 8076060: Improve make bootstrap process
ihse
parents: 28902
diff changeset
   209
else # HAS_SPEC=true
78c47f0002c3 8076060: Improve make bootstrap process
ihse
parents: 28902
diff changeset
   210
78c47f0002c3 8076060: Improve make bootstrap process
ihse
parents: 28902
diff changeset
   211
  ##############################################################################
78c47f0002c3 8076060: Improve make bootstrap process
ihse
parents: 28902
diff changeset
   212
  # Now we have a spec. This part provides the "main" target that acts as a
78c47f0002c3 8076060: Improve make bootstrap process
ihse
parents: 28902
diff changeset
   213
  # trampoline to call the Main.gmk with the value of $(MAKE) found in the spec
78c47f0002c3 8076060: Improve make bootstrap process
ihse
parents: 28902
diff changeset
   214
  # file.
78c47f0002c3 8076060: Improve make bootstrap process
ihse
parents: 28902
diff changeset
   215
  ##############################################################################
78c47f0002c3 8076060: Improve make bootstrap process
ihse
parents: 28902
diff changeset
   216
29788
b581a3d9db41 8076465: New Init.gmk needs improvements
ihse
parents: 29663
diff changeset
   217
  include $(SPEC)
b581a3d9db41 8076465: New Init.gmk needs improvements
ihse
parents: 29663
diff changeset
   218
b581a3d9db41 8076465: New Init.gmk needs improvements
ihse
parents: 29663
diff changeset
   219
  # Our helper functions.
b581a3d9db41 8076465: New Init.gmk needs improvements
ihse
parents: 29663
diff changeset
   220
  include $(TOPDIR)/make/InitSupport.gmk
b581a3d9db41 8076465: New Init.gmk needs improvements
ihse
parents: 29663
diff changeset
   221
b581a3d9db41 8076465: New Init.gmk needs improvements
ihse
parents: 29663
diff changeset
   222
  # Verify that the spec file we included seems okay.
b581a3d9db41 8076465: New Init.gmk needs improvements
ihse
parents: 29663
diff changeset
   223
  $(eval $(call CheckSpecSanity))
b581a3d9db41 8076465: New Init.gmk needs improvements
ihse
parents: 29663
diff changeset
   224
32715
4d558a41a1ec 8136695: Automatic build comparison with COMPARE_BUILD
ihse
parents: 32461
diff changeset
   225
  # Parse COMPARE_BUILD (for makefile development)
4d558a41a1ec 8136695: Automatic build comparison with COMPARE_BUILD
ihse
parents: 32461
diff changeset
   226
  $(eval $(call ParseCompareBuild))
4d558a41a1ec 8136695: Automatic build comparison with COMPARE_BUILD
ihse
parents: 32461
diff changeset
   227
29662
78c47f0002c3 8076060: Improve make bootstrap process
ihse
parents: 28902
diff changeset
   228
  ifeq ($(LOG_NOFILE), true)
78c47f0002c3 8076060: Improve make bootstrap process
ihse
parents: 28902
diff changeset
   229
    # Disable log wrapper if LOG=[level,]nofile was given
78c47f0002c3 8076060: Improve make bootstrap process
ihse
parents: 28902
diff changeset
   230
    override BUILD_LOG_WRAPPER :=
78c47f0002c3 8076060: Improve make bootstrap process
ihse
parents: 28902
diff changeset
   231
  endif
78c47f0002c3 8076060: Improve make bootstrap process
ihse
parents: 28902
diff changeset
   232
78c47f0002c3 8076060: Improve make bootstrap process
ihse
parents: 28902
diff changeset
   233
  ifeq ($(OUTPUT_SYNC_SUPPORTED), true)
78c47f0002c3 8076060: Improve make bootstrap process
ihse
parents: 28902
diff changeset
   234
    OUTPUT_SYNC_FLAG := -O$(OUTPUT_SYNC)
78c47f0002c3 8076060: Improve make bootstrap process
ihse
parents: 28902
diff changeset
   235
  endif
78c47f0002c3 8076060: Improve make bootstrap process
ihse
parents: 28902
diff changeset
   236
29788
b581a3d9db41 8076465: New Init.gmk needs improvements
ihse
parents: 29663
diff changeset
   237
  ##############################################################################
b581a3d9db41 8076465: New Init.gmk needs improvements
ihse
parents: 29663
diff changeset
   238
  # Init targets
b581a3d9db41 8076465: New Init.gmk needs improvements
ihse
parents: 29663
diff changeset
   239
  ##############################################################################
b581a3d9db41 8076465: New Init.gmk needs improvements
ihse
parents: 29663
diff changeset
   240
b581a3d9db41 8076465: New Init.gmk needs improvements
ihse
parents: 29663
diff changeset
   241
  print-modules:
b581a3d9db41 8076465: New Init.gmk needs improvements
ihse
parents: 29663
diff changeset
   242
	( cd $(TOPDIR) && \
b581a3d9db41 8076465: New Init.gmk needs improvements
ihse
parents: 29663
diff changeset
   243
	    $(MAKE) $(MAKE_ARGS) -j 1 -f make/Main.gmk $(USER_MAKE_VARS) \
b581a3d9db41 8076465: New Init.gmk needs improvements
ihse
parents: 29663
diff changeset
   244
	    NO_RECIPES=true print-modules )
b581a3d9db41 8076465: New Init.gmk needs improvements
ihse
parents: 29663
diff changeset
   245
b581a3d9db41 8076465: New Init.gmk needs improvements
ihse
parents: 29663
diff changeset
   246
  print-targets:
b581a3d9db41 8076465: New Init.gmk needs improvements
ihse
parents: 29663
diff changeset
   247
	( cd $(TOPDIR) && \
b581a3d9db41 8076465: New Init.gmk needs improvements
ihse
parents: 29663
diff changeset
   248
	    $(MAKE) $(MAKE_ARGS) -j 1 -f make/Main.gmk $(USER_MAKE_VARS) \
b581a3d9db41 8076465: New Init.gmk needs improvements
ihse
parents: 29663
diff changeset
   249
	    NO_RECIPES=true print-targets )
28902
0c09b47449c8 8069064: Various improvements and fixes in build system
ihse
parents: 28286
diff changeset
   250
32461
e1cfbafc4e9c 8135180: Print configure arguments using make print-configuration
ihse
parents: 32344
diff changeset
   251
  print-configuration:
e1cfbafc4e9c 8135180: Print configure arguments using make print-configuration
ihse
parents: 32344
diff changeset
   252
	  $(ECHO) $(CONFIGURE_COMMAND_LINE)
e1cfbafc4e9c 8135180: Print configure arguments using make print-configuration
ihse
parents: 32344
diff changeset
   253
29662
78c47f0002c3 8076060: Improve make bootstrap process
ihse
parents: 28902
diff changeset
   254
  reconfigure:
78c47f0002c3 8076060: Improve make bootstrap process
ihse
parents: 28902
diff changeset
   255
        ifneq ($(CONFIGURE_COMMAND_LINE), )
78c47f0002c3 8076060: Improve make bootstrap process
ihse
parents: 28902
diff changeset
   256
	  $(ECHO) "Re-running configure using arguments '$(CONFIGURE_COMMAND_LINE)'"
78c47f0002c3 8076060: Improve make bootstrap process
ihse
parents: 28902
diff changeset
   257
        else
78c47f0002c3 8076060: Improve make bootstrap process
ihse
parents: 28902
diff changeset
   258
	  $(ECHO) "Re-running configure using default settings"
78c47f0002c3 8076060: Improve make bootstrap process
ihse
parents: 28902
diff changeset
   259
        endif
78c47f0002c3 8076060: Improve make bootstrap process
ihse
parents: 28902
diff changeset
   260
	( cd $(OUTPUT_ROOT) && PATH="$(ORIGINAL_PATH)" \
78c47f0002c3 8076060: Improve make bootstrap process
ihse
parents: 28902
diff changeset
   261
	    $(BASH) $(TOPDIR)/configure $(CONFIGURE_COMMAND_LINE) )
78c47f0002c3 8076060: Improve make bootstrap process
ihse
parents: 28902
diff changeset
   262
29788
b581a3d9db41 8076465: New Init.gmk needs improvements
ihse
parents: 29663
diff changeset
   263
  ##############################################################################
b581a3d9db41 8076465: New Init.gmk needs improvements
ihse
parents: 29663
diff changeset
   264
  # The main target, for delegating into Main.gmk
b581a3d9db41 8076465: New Init.gmk needs improvements
ihse
parents: 29663
diff changeset
   265
  ##############################################################################
29662
78c47f0002c3 8076060: Improve make bootstrap process
ihse
parents: 28902
diff changeset
   266
32715
4d558a41a1ec 8136695: Automatic build comparison with COMPARE_BUILD
ihse
parents: 32461
diff changeset
   267
  MAIN_TARGETS := $(SEQUENTIAL_TARGETS) $(PARALLEL_TARGETS) $(COMPARE_BUILD_MAKE)
29788
b581a3d9db41 8076465: New Init.gmk needs improvements
ihse
parents: 29663
diff changeset
   268
  TARGET_DESCRIPTION := target$(if $(word 2, $(MAIN_TARGETS)),s) \
b581a3d9db41 8076465: New Init.gmk needs improvements
ihse
parents: 29663
diff changeset
   269
      '$(strip $(MAIN_TARGETS))' in configuration '$(CONF_NAME)'
29662
78c47f0002c3 8076060: Improve make bootstrap process
ihse
parents: 28902
diff changeset
   270
78c47f0002c3 8076060: Improve make bootstrap process
ihse
parents: 28902
diff changeset
   271
  # MAKEOVERRIDES is automatically set and propagated by Make to sub-Make calls.
78c47f0002c3 8076060: Improve make bootstrap process
ihse
parents: 28902
diff changeset
   272
  # We need to clear it of the init-specific variables. The user-specified
78c47f0002c3 8076060: Improve make bootstrap process
ihse
parents: 28902
diff changeset
   273
  # variables are explicitely propagated using $(USER_MAKE_VARS).
78c47f0002c3 8076060: Improve make bootstrap process
ihse
parents: 28902
diff changeset
   274
  main: MAKEOVERRIDES :=
0
fd16c54261b3 Initial load
duke
parents:
diff changeset
   275
29788
b581a3d9db41 8076465: New Init.gmk needs improvements
ihse
parents: 29663
diff changeset
   276
  main: $(INIT_TARGETS)
b581a3d9db41 8076465: New Init.gmk needs improvements
ihse
parents: 29663
diff changeset
   277
        ifneq ($(SEQUENTIAL_TARGETS)$(PARALLEL_TARGETS), )
b581a3d9db41 8076465: New Init.gmk needs improvements
ihse
parents: 29663
diff changeset
   278
	  $(call RotateLogFiles)
32344
0b288e0efcfa 8062618: Create a build failure summary at end of build log
ihse
parents: 30415
diff changeset
   279
	  $(call PrepareFailureLogs)
29788
b581a3d9db41 8076465: New Init.gmk needs improvements
ihse
parents: 29663
diff changeset
   280
	  $(BUILD_LOG_WRAPPER) $(PRINTF) "Building $(TARGET_DESCRIPTION)\n"
b581a3d9db41 8076465: New Init.gmk needs improvements
ihse
parents: 29663
diff changeset
   281
          ifneq ($(SEQUENTIAL_TARGETS), )
b581a3d9db41 8076465: New Init.gmk needs improvements
ihse
parents: 29663
diff changeset
   282
            # Don't touch build output dir since we might be cleaning. That
b581a3d9db41 8076465: New Init.gmk needs improvements
ihse
parents: 29663
diff changeset
   283
            # means no log wrapper.
b581a3d9db41 8076465: New Init.gmk needs improvements
ihse
parents: 29663
diff changeset
   284
	    ( cd $(TOPDIR) && \
b581a3d9db41 8076465: New Init.gmk needs improvements
ihse
parents: 29663
diff changeset
   285
	        $(MAKE) $(MAKE_ARGS) -j 1 -f make/Main.gmk $(USER_MAKE_VARS) \
b581a3d9db41 8076465: New Init.gmk needs improvements
ihse
parents: 29663
diff changeset
   286
	        $(SEQUENTIAL_TARGETS) )
b581a3d9db41 8076465: New Init.gmk needs improvements
ihse
parents: 29663
diff changeset
   287
          endif
b581a3d9db41 8076465: New Init.gmk needs improvements
ihse
parents: 29663
diff changeset
   288
          ifneq ($(PARALLEL_TARGETS), )
b581a3d9db41 8076465: New Init.gmk needs improvements
ihse
parents: 29663
diff changeset
   289
	    $(call StartGlobalTimer)
b581a3d9db41 8076465: New Init.gmk needs improvements
ihse
parents: 29663
diff changeset
   290
	    $(call PrepareSmartJavac)
b581a3d9db41 8076465: New Init.gmk needs improvements
ihse
parents: 29663
diff changeset
   291
	    ( cd $(TOPDIR) && \
32920
5bea8a04f0a5 8138864: Build with nice to lower UI impact
ihse
parents: 32720
diff changeset
   292
	        $(BUILD_LOG_WRAPPER) $(NICE) $(MAKE) $(MAKE_ARGS) $(OUTPUT_SYNC_FLAG) \
32344
0b288e0efcfa 8062618: Create a build failure summary at end of build log
ihse
parents: 30415
diff changeset
   293
	            -j $(JOBS) -f make/Main.gmk $(USER_MAKE_VARS) \
32715
4d558a41a1ec 8136695: Automatic build comparison with COMPARE_BUILD
ihse
parents: 32461
diff changeset
   294
	            $(PARALLEL_TARGETS) $(COMPARE_BUILD_MAKE) || \
32344
0b288e0efcfa 8062618: Create a build failure summary at end of build log
ihse
parents: 30415
diff changeset
   295
	        ( exitcode=$$? && $(BUILD_LOG_WRAPPER) \
0b288e0efcfa 8062618: Create a build failure summary at end of build log
ihse
parents: 30415
diff changeset
   296
	        $(PRINTF) "\nERROR: Build failed for $(TARGET_DESCRIPTION) (exit code $$exitcode) \n" && \
0b288e0efcfa 8062618: Create a build failure summary at end of build log
ihse
parents: 30415
diff changeset
   297
	        cd $(TOPDIR) && $(MAKE) $(MAKE_ARGS) -j 1 -f make/Init.gmk \
0b288e0efcfa 8062618: Create a build failure summary at end of build log
ihse
parents: 30415
diff changeset
   298
	            HAS_SPEC=true on-failure ; \
0b288e0efcfa 8062618: Create a build failure summary at end of build log
ihse
parents: 30415
diff changeset
   299
	        exit $$exitcode ) )
29788
b581a3d9db41 8076465: New Init.gmk needs improvements
ihse
parents: 29663
diff changeset
   300
	    $(call CleanupSmartJavac)
b581a3d9db41 8076465: New Init.gmk needs improvements
ihse
parents: 29663
diff changeset
   301
	    $(call StopGlobalTimer)
b581a3d9db41 8076465: New Init.gmk needs improvements
ihse
parents: 29663
diff changeset
   302
	    $(call ReportBuildTimes)
b581a3d9db41 8076465: New Init.gmk needs improvements
ihse
parents: 29663
diff changeset
   303
          endif
b581a3d9db41 8076465: New Init.gmk needs improvements
ihse
parents: 29663
diff changeset
   304
	  $(BUILD_LOG_WRAPPER) $(PRINTF) "Finished building $(TARGET_DESCRIPTION)\n"
29662
78c47f0002c3 8076060: Improve make bootstrap process
ihse
parents: 28902
diff changeset
   305
        endif
78c47f0002c3 8076060: Improve make bootstrap process
ihse
parents: 28902
diff changeset
   306
32344
0b288e0efcfa 8062618: Create a build failure summary at end of build log
ihse
parents: 30415
diff changeset
   307
    on-failure:
0b288e0efcfa 8062618: Create a build failure summary at end of build log
ihse
parents: 30415
diff changeset
   308
        ifneq ($(wildcard $(MAKESUPPORT_OUTPUTDIR)/failure-logs/*), )
0b288e0efcfa 8062618: Create a build failure summary at end of build log
ihse
parents: 30415
diff changeset
   309
	  $(PRINTF) "=== Output from failing command(s) repeated here ===\n"
0b288e0efcfa 8062618: Create a build failure summary at end of build log
ihse
parents: 30415
diff changeset
   310
	  $(foreach logfile, $(sort $(wildcard $(MAKESUPPORT_OUTPUTDIR)/failure-logs/*)), \
0b288e0efcfa 8062618: Create a build failure summary at end of build log
ihse
parents: 30415
diff changeset
   311
	      $(PRINTF) "* For target $(notdir $(basename $(logfile))):\n" $(NEWLINE) \
0b288e0efcfa 8062618: Create a build failure summary at end of build log
ihse
parents: 30415
diff changeset
   312
	      $(CAT) $(logfile) | $(GREP) -v -e "^Note: including file:" $(NEWLINE) \
0b288e0efcfa 8062618: Create a build failure summary at end of build log
ihse
parents: 30415
diff changeset
   313
	  )
0b288e0efcfa 8062618: Create a build failure summary at end of build log
ihse
parents: 30415
diff changeset
   314
	  $(PRINTF) "=== End of repeated output ===\n"
0b288e0efcfa 8062618: Create a build failure summary at end of build log
ihse
parents: 30415
diff changeset
   315
        endif
0b288e0efcfa 8062618: Create a build failure summary at end of build log
ihse
parents: 30415
diff changeset
   316
	if $(GREP) -q "recipe for target .* failed" $(BUILD_LOG) 2> /dev/null; then  \
0b288e0efcfa 8062618: Create a build failure summary at end of build log
ihse
parents: 30415
diff changeset
   317
	  $(PRINTF) "=== Make failure sequence repeated here ===\n" ; \
0b288e0efcfa 8062618: Create a build failure summary at end of build log
ihse
parents: 30415
diff changeset
   318
	  $(GREP) "recipe for target .* failed" $(BUILD_LOG) ; \
0b288e0efcfa 8062618: Create a build failure summary at end of build log
ihse
parents: 30415
diff changeset
   319
	  $(PRINTF) "=== End of repeated output ===\n" ; \
0b288e0efcfa 8062618: Create a build failure summary at end of build log
ihse
parents: 30415
diff changeset
   320
	  $(PRINTF) "Hint: Try searching the build log for the name of the first failed target.\n" ; \
0b288e0efcfa 8062618: Create a build failure summary at end of build log
ihse
parents: 30415
diff changeset
   321
	else \
0b288e0efcfa 8062618: Create a build failure summary at end of build log
ihse
parents: 30415
diff changeset
   322
	  $(PRINTF) "No indication of failed target found.\n" ; \
0b288e0efcfa 8062618: Create a build failure summary at end of build log
ihse
parents: 30415
diff changeset
   323
	  $(PRINTF) "Hint: Try searching the build log for '] Error'.\n" ; \
0b288e0efcfa 8062618: Create a build failure summary at end of build log
ihse
parents: 30415
diff changeset
   324
	fi
0b288e0efcfa 8062618: Create a build failure summary at end of build log
ihse
parents: 30415
diff changeset
   325
	$(PRINTF) "Hint: If caused by a warning, try configure --disable-warnings-as-errors.\n\n"
0b288e0efcfa 8062618: Create a build failure summary at end of build log
ihse
parents: 30415
diff changeset
   326
32715
4d558a41a1ec 8136695: Automatic build comparison with COMPARE_BUILD
ihse
parents: 32461
diff changeset
   327
    # Support targets for COMPARE_BUILD, used for makefile development
4d558a41a1ec 8136695: Automatic build comparison with COMPARE_BUILD
ihse
parents: 32461
diff changeset
   328
    pre-compare-build:
4d558a41a1ec 8136695: Automatic build comparison with COMPARE_BUILD
ihse
parents: 32461
diff changeset
   329
	$(ECHO) "Preparing for comparison rebuild"
4d558a41a1ec 8136695: Automatic build comparison with COMPARE_BUILD
ihse
parents: 32461
diff changeset
   330
        # Apply patch, if any
4d558a41a1ec 8136695: Automatic build comparison with COMPARE_BUILD
ihse
parents: 32461
diff changeset
   331
        ifneq ($(COMPARE_BUILD_PATCH), )
4d558a41a1ec 8136695: Automatic build comparison with COMPARE_BUILD
ihse
parents: 32461
diff changeset
   332
	  $(PATCH) -p1 < $(COMPARE_BUILD_PATCH)
4d558a41a1ec 8136695: Automatic build comparison with COMPARE_BUILD
ihse
parents: 32461
diff changeset
   333
        endif
4d558a41a1ec 8136695: Automatic build comparison with COMPARE_BUILD
ihse
parents: 32461
diff changeset
   334
        # Move the first build away and re-create the output directory
4d558a41a1ec 8136695: Automatic build comparison with COMPARE_BUILD
ihse
parents: 32461
diff changeset
   335
	( cd $(TOPDIR) && \
4d558a41a1ec 8136695: Automatic build comparison with COMPARE_BUILD
ihse
parents: 32461
diff changeset
   336
	    $(MV) $(OUTPUT_ROOT) $(OUTPUT_ROOT).OLD && \
4d558a41a1ec 8136695: Automatic build comparison with COMPARE_BUILD
ihse
parents: 32461
diff changeset
   337
	    $(MKDIR) -p $(OUTPUT_ROOT) )
4d558a41a1ec 8136695: Automatic build comparison with COMPARE_BUILD
ihse
parents: 32461
diff changeset
   338
        # Re-run configure with the same arguments (and possibly some additional),
4d558a41a1ec 8136695: Automatic build comparison with COMPARE_BUILD
ihse
parents: 32461
diff changeset
   339
	# must be done after patching.
4d558a41a1ec 8136695: Automatic build comparison with COMPARE_BUILD
ihse
parents: 32461
diff changeset
   340
	( cd $(OUTPUT_ROOT) && PATH="$(ORIGINAL_PATH)" \
4d558a41a1ec 8136695: Automatic build comparison with COMPARE_BUILD
ihse
parents: 32461
diff changeset
   341
	    $(BASH) $(TOPDIR)/configure $(CONFIGURE_COMMAND_LINE) $(COMPARE_BUILD_CONF))
4d558a41a1ec 8136695: Automatic build comparison with COMPARE_BUILD
ihse
parents: 32461
diff changeset
   342
4d558a41a1ec 8136695: Automatic build comparison with COMPARE_BUILD
ihse
parents: 32461
diff changeset
   343
    post-compare-build:
4d558a41a1ec 8136695: Automatic build comparison with COMPARE_BUILD
ihse
parents: 32461
diff changeset
   344
        # Compare first and second build. Ignore any error code from compare.sh.
4d558a41a1ec 8136695: Automatic build comparison with COMPARE_BUILD
ihse
parents: 32461
diff changeset
   345
	$(ECHO) "Comparing between comparison rebuild (this/new) and baseline (other/old)"
32720
7e0e586a6817 8137014: Various improvements in build infrastructure
ihse
parents: 32715
diff changeset
   346
        ifneq ($(COMPARE_BUILD_COMP_DIR), )
7e0e586a6817 8137014: Various improvements in build infrastructure
ihse
parents: 32715
diff changeset
   347
	  +(cd $(OUTPUT_ROOT) && ./compare.sh $(COMPARE_BUILD_COMP_OPTS) -2dirs $(OUTPUT_ROOT)/$(COMPARE_BUILD_COMP_DIR) $(OUTPUT_ROOT).OLD/$(COMPARE_BUILD_COMP_DIR) || true)
7e0e586a6817 8137014: Various improvements in build infrastructure
ihse
parents: 32715
diff changeset
   348
        else
7e0e586a6817 8137014: Various improvements in build infrastructure
ihse
parents: 32715
diff changeset
   349
	  +(cd $(OUTPUT_ROOT) && ./compare.sh $(COMPARE_BUILD_COMP_OPTS) -o $(OUTPUT_ROOT).OLD || true)
7e0e586a6817 8137014: Various improvements in build infrastructure
ihse
parents: 32715
diff changeset
   350
        endif
32715
4d558a41a1ec 8136695: Automatic build comparison with COMPARE_BUILD
ihse
parents: 32461
diff changeset
   351
32344
0b288e0efcfa 8062618: Create a build failure summary at end of build log
ihse
parents: 30415
diff changeset
   352
  .PHONY: print-targets print-modules reconfigure main on-failure
29662
78c47f0002c3 8076060: Improve make bootstrap process
ihse
parents: 28902
diff changeset
   353
endif