make/InitSupport.gmk
author jcm
Fri, 05 Jul 2019 00:24:54 -0700
changeset 55604 a30c86af2eb7
parent 54739 0dcb89221c93
child 55447 95794e32352e
child 58678 9cf78a70fa4f
permissions -rw-r--r--
8226627: assert(t->singleton()) failed: must be a constant Summary: Implemented constant folding for MaxFD, MinFD. Reviewed-by: thartmann, bsrbnd, pli
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
13133
701e61c32ece 7182051: Update of latest build-infra Makefiles (missing files)
erikj
parents:
diff changeset
     1
#
54382
61616f509ef8 8221762: Improve Main.gmk/FindTests.gmk bootstrap time
erikj
parents: 53683
diff changeset
     2
# Copyright (c) 2011, 2019, Oracle and/or its affiliates. All rights reserved.
13133
701e61c32ece 7182051: Update of latest build-infra Makefiles (missing files)
erikj
parents:
diff changeset
     3
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
701e61c32ece 7182051: Update of latest build-infra Makefiles (missing files)
erikj
parents:
diff changeset
     4
#
701e61c32ece 7182051: Update of latest build-infra Makefiles (missing files)
erikj
parents:
diff changeset
     5
# This code is free software; you can redistribute it and/or modify it
701e61c32ece 7182051: Update of latest build-infra Makefiles (missing files)
erikj
parents:
diff changeset
     6
# under the terms of the GNU General Public License version 2 only, as
701e61c32ece 7182051: Update of latest build-infra Makefiles (missing files)
erikj
parents:
diff changeset
     7
# published by the Free Software Foundation.  Oracle designates this
701e61c32ece 7182051: Update of latest build-infra Makefiles (missing files)
erikj
parents:
diff changeset
     8
# particular file as subject to the "Classpath" exception as provided
701e61c32ece 7182051: Update of latest build-infra Makefiles (missing files)
erikj
parents:
diff changeset
     9
# by Oracle in the LICENSE file that accompanied this code.
701e61c32ece 7182051: Update of latest build-infra Makefiles (missing files)
erikj
parents:
diff changeset
    10
#
701e61c32ece 7182051: Update of latest build-infra Makefiles (missing files)
erikj
parents:
diff changeset
    11
# This code is distributed in the hope that it will be useful, but WITHOUT
701e61c32ece 7182051: Update of latest build-infra Makefiles (missing files)
erikj
parents:
diff changeset
    12
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
701e61c32ece 7182051: Update of latest build-infra Makefiles (missing files)
erikj
parents:
diff changeset
    13
# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
701e61c32ece 7182051: Update of latest build-infra Makefiles (missing files)
erikj
parents:
diff changeset
    14
# version 2 for more details (a copy is included in the LICENSE file that
701e61c32ece 7182051: Update of latest build-infra Makefiles (missing files)
erikj
parents:
diff changeset
    15
# accompanied this code).
701e61c32ece 7182051: Update of latest build-infra Makefiles (missing files)
erikj
parents:
diff changeset
    16
#
701e61c32ece 7182051: Update of latest build-infra Makefiles (missing files)
erikj
parents:
diff changeset
    17
# You should have received a copy of the GNU General Public License version
701e61c32ece 7182051: Update of latest build-infra Makefiles (missing files)
erikj
parents:
diff changeset
    18
# 2 along with this work; if not, write to the Free Software Foundation,
701e61c32ece 7182051: Update of latest build-infra Makefiles (missing files)
erikj
parents:
diff changeset
    19
# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
701e61c32ece 7182051: Update of latest build-infra Makefiles (missing files)
erikj
parents:
diff changeset
    20
#
701e61c32ece 7182051: Update of latest build-infra Makefiles (missing files)
erikj
parents:
diff changeset
    21
# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
701e61c32ece 7182051: Update of latest build-infra Makefiles (missing files)
erikj
parents:
diff changeset
    22
# or visit www.oracle.com if you need additional information or have any
701e61c32ece 7182051: Update of latest build-infra Makefiles (missing files)
erikj
parents:
diff changeset
    23
# questions.
701e61c32ece 7182051: Update of latest build-infra Makefiles (missing files)
erikj
parents:
diff changeset
    24
#
701e61c32ece 7182051: Update of latest build-infra Makefiles (missing files)
erikj
parents:
diff changeset
    25
29662
78c47f0002c3 8076060: Improve make bootstrap process
ihse
parents: 29156
diff changeset
    26
################################################################################
78c47f0002c3 8076060: Improve make bootstrap process
ihse
parents: 29156
diff changeset
    27
# This file contains helper functions for Init.gmk.
78c47f0002c3 8076060: Improve make bootstrap process
ihse
parents: 29156
diff changeset
    28
# It is divided in two parts, depending on if a SPEC is present or not
78c47f0002c3 8076060: Improve make bootstrap process
ihse
parents: 29156
diff changeset
    29
# (HAS_SPEC is true or not).
78c47f0002c3 8076060: Improve make bootstrap process
ihse
parents: 29156
diff changeset
    30
################################################################################
13133
701e61c32ece 7182051: Update of latest build-infra Makefiles (missing files)
erikj
parents:
diff changeset
    31
29662
78c47f0002c3 8076060: Improve make bootstrap process
ihse
parents: 29156
diff changeset
    32
ifndef _INITSUPPORT_GMK
78c47f0002c3 8076060: Improve make bootstrap process
ihse
parents: 29156
diff changeset
    33
_INITSUPPORT_GMK := 1
13133
701e61c32ece 7182051: Update of latest build-infra Makefiles (missing files)
erikj
parents:
diff changeset
    34
29662
78c47f0002c3 8076060: Improve make bootstrap process
ihse
parents: 29156
diff changeset
    35
ifeq ($(HAS_SPEC),)
44027
3a3050924db2 8176084: Developer-friendly run-test facility
ihse
parents: 43173
diff changeset
    36
50507
e5cdf2569510 8204682: Parsing for LOG=report=none is broken when combined with other keywords
ihse
parents: 49568
diff changeset
    37
  # COMMA is defined in spec.gmk, but that is not included yet
e5cdf2569510 8204682: Parsing for LOG=report=none is broken when combined with other keywords
ihse
parents: 49568
diff changeset
    38
  COMMA := ,
e5cdf2569510 8204682: Parsing for LOG=report=none is broken when combined with other keywords
ihse
parents: 49568
diff changeset
    39
44027
3a3050924db2 8176084: Developer-friendly run-test facility
ihse
parents: 43173
diff changeset
    40
  # Include the corresponding closed file, if present.
47313
eb28be8f935d 8188768: Fix interaction between make and autoconf after consolidation
ihse
parents: 47296
diff changeset
    41
  ifneq ($(CUSTOM_MAKE_DIR), )
eb28be8f935d 8188768: Fix interaction between make and autoconf after consolidation
ihse
parents: 47296
diff changeset
    42
    -include $(CUSTOM_MAKE_DIR)/InitSupport.gmk
eb28be8f935d 8188768: Fix interaction between make and autoconf after consolidation
ihse
parents: 47296
diff changeset
    43
  endif
44027
3a3050924db2 8176084: Developer-friendly run-test facility
ihse
parents: 43173
diff changeset
    44
29662
78c47f0002c3 8076060: Improve make bootstrap process
ihse
parents: 29156
diff changeset
    45
  ##############################################################################
78c47f0002c3 8076060: Improve make bootstrap process
ihse
parents: 29156
diff changeset
    46
  # Helper functions for the initial part of Init.gmk, before the spec file is
78c47f0002c3 8076060: Improve make bootstrap process
ihse
parents: 29156
diff changeset
    47
  # loaded. Most of these functions provide parsing and setting up make options
78c47f0002c3 8076060: Improve make bootstrap process
ihse
parents: 29156
diff changeset
    48
  # from the command-line.
78c47f0002c3 8076060: Improve make bootstrap process
ihse
parents: 29156
diff changeset
    49
  ##############################################################################
14111
2a82ecb35fc7 8000992: Update new build-infra makefiles
ohair
parents: 13697
diff changeset
    50
29662
78c47f0002c3 8076060: Improve make bootstrap process
ihse
parents: 29156
diff changeset
    51
  # Make control variables, handled by Init.gmk
44027
3a3050924db2 8176084: Developer-friendly run-test facility
ihse
parents: 43173
diff changeset
    52
  INIT_CONTROL_VARIABLES += LOG CONF CONF_NAME SPEC JOBS TEST_JOBS CONF_CHECK \
52595
16609197022c 8061281: Microbenchmark suite build support, directory layout and sample benchmarks
redestad
parents: 52572
diff changeset
    53
      COMPARE_BUILD JTREG GTEST MICRO TEST_OPTS TEST_VM_OPTS
14111
2a82ecb35fc7 8000992: Update new build-infra makefiles
ohair
parents: 13697
diff changeset
    54
29662
78c47f0002c3 8076060: Improve make bootstrap process
ihse
parents: 29156
diff changeset
    55
  # All known make control variables
78c47f0002c3 8076060: Improve make bootstrap process
ihse
parents: 29156
diff changeset
    56
  MAKE_CONTROL_VARIABLES := $(INIT_CONTROL_VARIABLES) TEST JDK_FILTER
14111
2a82ecb35fc7 8000992: Update new build-infra makefiles
ohair
parents: 13697
diff changeset
    57
29662
78c47f0002c3 8076060: Improve make bootstrap process
ihse
parents: 29156
diff changeset
    58
  # Define a simple reverse function.
78c47f0002c3 8076060: Improve make bootstrap process
ihse
parents: 29156
diff changeset
    59
  # Should maybe move to MakeBase.gmk, but we can't include that file now.
78c47f0002c3 8076060: Improve make bootstrap process
ihse
parents: 29156
diff changeset
    60
  reverse = \
78c47f0002c3 8076060: Improve make bootstrap process
ihse
parents: 29156
diff changeset
    61
      $(if $(strip $(1)), $(call reverse, $(wordlist 2, $(words $(1)), $(1)))) \
78c47f0002c3 8076060: Improve make bootstrap process
ihse
parents: 29156
diff changeset
    62
          $(firstword $(1))
14111
2a82ecb35fc7 8000992: Update new build-infra makefiles
ohair
parents: 13697
diff changeset
    63
29662
78c47f0002c3 8076060: Improve make bootstrap process
ihse
parents: 29156
diff changeset
    64
  # The variable MAKEOVERRIDES contains variable assignments from the command
78c47f0002c3 8076060: Improve make bootstrap process
ihse
parents: 29156
diff changeset
    65
  # line, but in reverse order to what the user entered.
32715
4d558a41a1ec 8136695: Automatic build comparison with COMPARE_BUILD
ihse
parents: 32344
diff changeset
    66
  # The '\#' <=> '\ 'dance is needed to keep values with space in them connected.
29662
78c47f0002c3 8076060: Improve make bootstrap process
ihse
parents: 29156
diff changeset
    67
  COMMAND_LINE_VARIABLES := $(subst \#,\ , $(call reverse, $(subst \ ,\#,$(MAKEOVERRIDES))))
78c47f0002c3 8076060: Improve make bootstrap process
ihse
parents: 29156
diff changeset
    68
29788
b581a3d9db41 8076465: New Init.gmk needs improvements
ihse
parents: 29663
diff changeset
    69
  # A list like FOO="val1" BAR="val2" containing all user-supplied make
b581a3d9db41 8076465: New Init.gmk needs improvements
ihse
parents: 29663
diff changeset
    70
  # variables that we should propagate.
32715
4d558a41a1ec 8136695: Automatic build comparison with COMPARE_BUILD
ihse
parents: 32344
diff changeset
    71
  # The '\#' <=> '\ 'dance is needed to keep values with space in them connected.
4d558a41a1ec 8136695: Automatic build comparison with COMPARE_BUILD
ihse
parents: 32344
diff changeset
    72
  USER_MAKE_VARS := $(subst \#,\ , $(filter-out $(addsuffix =%, $(INIT_CONTROL_VARIABLES)), \
4d558a41a1ec 8136695: Automatic build comparison with COMPARE_BUILD
ihse
parents: 32344
diff changeset
    73
      $(subst \ ,\#,$(MAKEOVERRIDES))))
14111
2a82ecb35fc7 8000992: Update new build-infra makefiles
ohair
parents: 13697
diff changeset
    74
29788
b581a3d9db41 8076465: New Init.gmk needs improvements
ihse
parents: 29663
diff changeset
    75
  # Setup information about available configurations, if any.
47346
ea082b202a23 8189263: Introduce CUSTOM_ROOT
ihse
parents: 47313
diff changeset
    76
  ifneq ($(CUSTOM_ROOT), )
ea082b202a23 8189263: Introduce CUSTOM_ROOT
ihse
parents: 47313
diff changeset
    77
    build_dir=$(CUSTOM_ROOT)/build
ea082b202a23 8189263: Introduce CUSTOM_ROOT
ihse
parents: 47313
diff changeset
    78
  else
47217
72e3ae9a25eb 8187444: Forest Consolidation: Make build work
erikj
parents: 44465
diff changeset
    79
    build_dir=$(topdir)/build
72e3ae9a25eb 8187444: Forest Consolidation: Make build work
erikj
parents: 44465
diff changeset
    80
  endif
29788
b581a3d9db41 8076465: New Init.gmk needs improvements
ihse
parents: 29663
diff changeset
    81
  all_spec_files=$(wildcard $(build_dir)/*/spec.gmk)
b581a3d9db41 8076465: New Init.gmk needs improvements
ihse
parents: 29663
diff changeset
    82
  # Extract the configuration names from the path
b581a3d9db41 8076465: New Init.gmk needs improvements
ihse
parents: 29663
diff changeset
    83
  all_confs=$(patsubst %/spec.gmk, %, $(patsubst $(build_dir)/%, %, $(all_spec_files)))
b581a3d9db41 8076465: New Init.gmk needs improvements
ihse
parents: 29663
diff changeset
    84
29662
78c47f0002c3 8076060: Improve make bootstrap process
ihse
parents: 29156
diff changeset
    85
  # Check for unknown command-line variables
78c47f0002c3 8076060: Improve make bootstrap process
ihse
parents: 29156
diff changeset
    86
  define CheckControlVariables
78c47f0002c3 8076060: Improve make bootstrap process
ihse
parents: 29156
diff changeset
    87
    command_line_variables := $$(strip $$(foreach var, \
78c47f0002c3 8076060: Improve make bootstrap process
ihse
parents: 29156
diff changeset
    88
        $$(subst \ ,_,$$(MAKEOVERRIDES)), \
78c47f0002c3 8076060: Improve make bootstrap process
ihse
parents: 29156
diff changeset
    89
        $$(firstword $$(subst =, , $$(var)))))
29788
b581a3d9db41 8076465: New Init.gmk needs improvements
ihse
parents: 29663
diff changeset
    90
    unknown_command_line_variables := $$(strip \
b581a3d9db41 8076465: New Init.gmk needs improvements
ihse
parents: 29663
diff changeset
    91
        $$(filter-out $$(MAKE_CONTROL_VARIABLES), $$(command_line_variables)))
29662
78c47f0002c3 8076060: Improve make bootstrap process
ihse
parents: 29156
diff changeset
    92
    ifneq ($$(unknown_command_line_variables), )
78c47f0002c3 8076060: Improve make bootstrap process
ihse
parents: 29156
diff changeset
    93
      $$(info Note: Command line contains non-control variables:)
78c47f0002c3 8076060: Improve make bootstrap process
ihse
parents: 29156
diff changeset
    94
      $$(foreach var, $$(unknown_command_line_variables), $$(info * $$(var)=$$($$(var))))
78c47f0002c3 8076060: Improve make bootstrap process
ihse
parents: 29156
diff changeset
    95
      $$(info Make sure it is not mistyped, and that you intend to override this variable.)
78c47f0002c3 8076060: Improve make bootstrap process
ihse
parents: 29156
diff changeset
    96
      $$(info 'make help' will list known control variables.)
78c47f0002c3 8076060: Improve make bootstrap process
ihse
parents: 29156
diff changeset
    97
      $$(info )
78c47f0002c3 8076060: Improve make bootstrap process
ihse
parents: 29156
diff changeset
    98
    endif
78c47f0002c3 8076060: Improve make bootstrap process
ihse
parents: 29156
diff changeset
    99
  endef
14111
2a82ecb35fc7 8000992: Update new build-infra makefiles
ohair
parents: 13697
diff changeset
   100
29662
78c47f0002c3 8076060: Improve make bootstrap process
ihse
parents: 29156
diff changeset
   101
  # Check for deprecated ALT_ variables
78c47f0002c3 8076060: Improve make bootstrap process
ihse
parents: 29156
diff changeset
   102
  define CheckDeprecatedEnvironment
78c47f0002c3 8076060: Improve make bootstrap process
ihse
parents: 29156
diff changeset
   103
    defined_alt_variables := $$(filter ALT_%, $$(.VARIABLES))
78c47f0002c3 8076060: Improve make bootstrap process
ihse
parents: 29156
diff changeset
   104
    ifneq ($$(defined_alt_variables), )
78c47f0002c3 8076060: Improve make bootstrap process
ihse
parents: 29156
diff changeset
   105
      $$(info Warning: You have the following ALT_ variables set:)
78c47f0002c3 8076060: Improve make bootstrap process
ihse
parents: 29156
diff changeset
   106
      $$(foreach var, $$(defined_alt_variables), $$(info * $$(var)=$$($$(var))))
78c47f0002c3 8076060: Improve make bootstrap process
ihse
parents: 29156
diff changeset
   107
      $$(info ALT_ variables are deprecated, and may result in a failed build.)
78c47f0002c3 8076060: Improve make bootstrap process
ihse
parents: 29156
diff changeset
   108
      $$(info Please clean your environment.)
78c47f0002c3 8076060: Improve make bootstrap process
ihse
parents: 29156
diff changeset
   109
      $$(info )
78c47f0002c3 8076060: Improve make bootstrap process
ihse
parents: 29156
diff changeset
   110
    endif
78c47f0002c3 8076060: Improve make bootstrap process
ihse
parents: 29156
diff changeset
   111
  endef
14111
2a82ecb35fc7 8000992: Update new build-infra makefiles
ohair
parents: 13697
diff changeset
   112
29662
78c47f0002c3 8076060: Improve make bootstrap process
ihse
parents: 29156
diff changeset
   113
  # Check for invalid make flags like -j
78c47f0002c3 8076060: Improve make bootstrap process
ihse
parents: 29156
diff changeset
   114
  define CheckInvalidMakeFlags
78c47f0002c3 8076060: Improve make bootstrap process
ihse
parents: 29156
diff changeset
   115
    # This is a trick to get this rule to execute before any other rules
78c47f0002c3 8076060: Improve make bootstrap process
ihse
parents: 29156
diff changeset
   116
    # MAKEFLAGS only indicate -j if read in a recipe (!)
78c47f0002c3 8076060: Improve make bootstrap process
ihse
parents: 29156
diff changeset
   117
    $$(topdir)/make/Init.gmk: .FORCE
78c47f0002c3 8076060: Improve make bootstrap process
ihse
parents: 29156
diff changeset
   118
	$$(if $$(findstring --jobserver, $$(MAKEFLAGS)), \
78c47f0002c3 8076060: Improve make bootstrap process
ihse
parents: 29156
diff changeset
   119
	    $$(info Error: 'make -jN' is not supported, use 'make JOBS=N') \
78c47f0002c3 8076060: Improve make bootstrap process
ihse
parents: 29156
diff changeset
   120
	    $$(error Cannot continue) \
78c47f0002c3 8076060: Improve make bootstrap process
ihse
parents: 29156
diff changeset
   121
	)
78c47f0002c3 8076060: Improve make bootstrap process
ihse
parents: 29156
diff changeset
   122
    .FORCE:
78c47f0002c3 8076060: Improve make bootstrap process
ihse
parents: 29156
diff changeset
   123
    .PHONY: .FORCE
78c47f0002c3 8076060: Improve make bootstrap process
ihse
parents: 29156
diff changeset
   124
  endef
14111
2a82ecb35fc7 8000992: Update new build-infra makefiles
ohair
parents: 13697
diff changeset
   125
29662
78c47f0002c3 8076060: Improve make bootstrap process
ihse
parents: 29156
diff changeset
   126
  # Check that the CONF_CHECK option is valid and set up handling
78c47f0002c3 8076060: Improve make bootstrap process
ihse
parents: 29156
diff changeset
   127
  define ParseConfCheckOption
78c47f0002c3 8076060: Improve make bootstrap process
ihse
parents: 29156
diff changeset
   128
    ifeq ($$(CONF_CHECK), )
78c47f0002c3 8076060: Improve make bootstrap process
ihse
parents: 29156
diff changeset
   129
      # Default behavior is fail
78c47f0002c3 8076060: Improve make bootstrap process
ihse
parents: 29156
diff changeset
   130
      CONF_CHECK := fail
78c47f0002c3 8076060: Improve make bootstrap process
ihse
parents: 29156
diff changeset
   131
    else ifneq ($$(filter-out auto fail ignore, $$(CONF_CHECK)),)
78c47f0002c3 8076060: Improve make bootstrap process
ihse
parents: 29156
diff changeset
   132
      $$(info Error: CONF_CHECK must be one of: auto, fail or ignore.)
78c47f0002c3 8076060: Improve make bootstrap process
ihse
parents: 29156
diff changeset
   133
      $$(error Cannot continue)
78c47f0002c3 8076060: Improve make bootstrap process
ihse
parents: 29156
diff changeset
   134
    endif
78c47f0002c3 8076060: Improve make bootstrap process
ihse
parents: 29156
diff changeset
   135
  endef
14111
2a82ecb35fc7 8000992: Update new build-infra makefiles
ohair
parents: 13697
diff changeset
   136
29662
78c47f0002c3 8076060: Improve make bootstrap process
ihse
parents: 29156
diff changeset
   137
  define ParseConfAndSpec
78c47f0002c3 8076060: Improve make bootstrap process
ihse
parents: 29156
diff changeset
   138
    ifneq ($$(origin SPEC), undefined)
20363
fa7663fc5d50 8001931: The new build system whitespace cleanup
ihse
parents: 16583
diff changeset
   139
      # We have been given a SPEC, check that it works out properly
29662
78c47f0002c3 8076060: Improve make bootstrap process
ihse
parents: 29156
diff changeset
   140
      ifneq ($$(origin CONF), undefined)
78c47f0002c3 8076060: Improve make bootstrap process
ihse
parents: 29156
diff changeset
   141
        # We also have a CONF argument. We can't have both.
78c47f0002c3 8076060: Improve make bootstrap process
ihse
parents: 29156
diff changeset
   142
        $$(info Error: Cannot use CONF=$$(CONF) and SPEC=$$(SPEC) at the same time. Choose one.)
78c47f0002c3 8076060: Improve make bootstrap process
ihse
parents: 29156
diff changeset
   143
        $$(error Cannot continue)
20363
fa7663fc5d50 8001931: The new build system whitespace cleanup
ihse
parents: 16583
diff changeset
   144
      endif
34491
307c28cb36c2 8136782: Introduce a build/configure wrapper
erikj
parents: 34101
diff changeset
   145
      ifneq ($$(origin CONF_NAME), undefined)
307c28cb36c2 8136782: Introduce a build/configure wrapper
erikj
parents: 34101
diff changeset
   146
        # We also have a CONF_NAME argument. We can't have both.
307c28cb36c2 8136782: Introduce a build/configure wrapper
erikj
parents: 34101
diff changeset
   147
        $$(info Error: Cannot use CONF_NAME=$$(CONF_NAME) and SPEC=$$(SPEC) at the same time. Choose one.)
307c28cb36c2 8136782: Introduce a build/configure wrapper
erikj
parents: 34101
diff changeset
   148
        $$(error Cannot continue)
307c28cb36c2 8136782: Introduce a build/configure wrapper
erikj
parents: 34101
diff changeset
   149
      endif
27595
cff167b3bfa2 8065914: Various improvements and cleanup of build system
ihse
parents: 27000
diff changeset
   150
      ifeq ($$(wildcard $$(SPEC)),)
cff167b3bfa2 8065914: Various improvements and cleanup of build system
ihse
parents: 27000
diff changeset
   151
        $$(info Error: Cannot locate spec.gmk, given by SPEC=$$(SPEC).)
29662
78c47f0002c3 8076060: Improve make bootstrap process
ihse
parents: 29156
diff changeset
   152
        $$(error Cannot continue)
27595
cff167b3bfa2 8065914: Various improvements and cleanup of build system
ihse
parents: 27000
diff changeset
   153
      endif
29662
78c47f0002c3 8076060: Improve make bootstrap process
ihse
parents: 29156
diff changeset
   154
      ifeq ($$(filter /%, $$(SPEC)),)
78c47f0002c3 8076060: Improve make bootstrap process
ihse
parents: 29156
diff changeset
   155
        # If given with relative path, make it absolute
78c47f0002c3 8076060: Improve make bootstrap process
ihse
parents: 29156
diff changeset
   156
        SPECS := $$(CURDIR)/$$(strip $$(SPEC))
78c47f0002c3 8076060: Improve make bootstrap process
ihse
parents: 29156
diff changeset
   157
      else
78c47f0002c3 8076060: Improve make bootstrap process
ihse
parents: 29156
diff changeset
   158
        SPECS := $$(SPEC)
78c47f0002c3 8076060: Improve make bootstrap process
ihse
parents: 29156
diff changeset
   159
      endif
78c47f0002c3 8076060: Improve make bootstrap process
ihse
parents: 29156
diff changeset
   160
78c47f0002c3 8076060: Improve make bootstrap process
ihse
parents: 29156
diff changeset
   161
      # For now, unset this SPEC variable.
78c47f0002c3 8076060: Improve make bootstrap process
ihse
parents: 29156
diff changeset
   162
      override SPEC :=
20363
fa7663fc5d50 8001931: The new build system whitespace cleanup
ihse
parents: 16583
diff changeset
   163
    else
29662
78c47f0002c3 8076060: Improve make bootstrap process
ihse
parents: 29156
diff changeset
   164
      # Use spec.gmk files in the build output directory
29788
b581a3d9db41 8076465: New Init.gmk needs improvements
ihse
parents: 29663
diff changeset
   165
      ifeq ($$(all_spec_files),)
47346
ea082b202a23 8189263: Introduce CUSTOM_ROOT
ihse
parents: 47313
diff changeset
   166
        ifneq ($(CUSTOM_ROOT), )
ea082b202a23 8189263: Introduce CUSTOM_ROOT
ihse
parents: 47313
diff changeset
   167
          $$(info Error: No configurations found for $$(CUSTOM_ROOT).)
ea082b202a23 8189263: Introduce CUSTOM_ROOT
ihse
parents: 47313
diff changeset
   168
        else
ea082b202a23 8189263: Introduce CUSTOM_ROOT
ihse
parents: 47313
diff changeset
   169
          $$(info Error: No configurations found for $$(topdir).)
ea082b202a23 8189263: Introduce CUSTOM_ROOT
ihse
parents: 47313
diff changeset
   170
        endif
27595
cff167b3bfa2 8065914: Various improvements and cleanup of build system
ihse
parents: 27000
diff changeset
   171
        $$(info Please run 'bash configure' to create a configuration.)
29662
78c47f0002c3 8076060: Improve make bootstrap process
ihse
parents: 29156
diff changeset
   172
        $$(info )
78c47f0002c3 8076060: Improve make bootstrap process
ihse
parents: 29156
diff changeset
   173
        $$(error Cannot continue)
20363
fa7663fc5d50 8001931: The new build system whitespace cleanup
ihse
parents: 16583
diff changeset
   174
      endif
13133
701e61c32ece 7182051: Update of latest build-infra Makefiles (missing files)
erikj
parents:
diff changeset
   175
34491
307c28cb36c2 8136782: Introduce a build/configure wrapper
erikj
parents: 34101
diff changeset
   176
      ifneq ($$(origin CONF_NAME), undefined)
307c28cb36c2 8136782: Introduce a build/configure wrapper
erikj
parents: 34101
diff changeset
   177
        ifneq ($$(origin CONF), undefined)
307c28cb36c2 8136782: Introduce a build/configure wrapper
erikj
parents: 34101
diff changeset
   178
          # We also have a CONF argument. We can't have both.
307c28cb36c2 8136782: Introduce a build/configure wrapper
erikj
parents: 34101
diff changeset
   179
          $$(info Error: Cannot use CONF=$$(CONF) and CONF_NAME=$$(CONF_NAME) at the same time. Choose one.)
307c28cb36c2 8136782: Introduce a build/configure wrapper
erikj
parents: 34101
diff changeset
   180
          $$(error Cannot continue)
307c28cb36c2 8136782: Introduce a build/configure wrapper
erikj
parents: 34101
diff changeset
   181
        endif
307c28cb36c2 8136782: Introduce a build/configure wrapper
erikj
parents: 34101
diff changeset
   182
        matching_conf := $$(strip $$(filter $$(CONF_NAME), $$(all_confs)))
307c28cb36c2 8136782: Introduce a build/configure wrapper
erikj
parents: 34101
diff changeset
   183
        ifeq ($$(matching_conf),)
307c28cb36c2 8136782: Introduce a build/configure wrapper
erikj
parents: 34101
diff changeset
   184
          $$(info Error: No configurations found matching CONF_NAME=$$(CONF_NAME).)
307c28cb36c2 8136782: Introduce a build/configure wrapper
erikj
parents: 34101
diff changeset
   185
          $$(info Available configurations in $$(build_dir):)
307c28cb36c2 8136782: Introduce a build/configure wrapper
erikj
parents: 34101
diff changeset
   186
          $$(foreach var, $$(all_confs), $$(info * $$(var)))
307c28cb36c2 8136782: Introduce a build/configure wrapper
erikj
parents: 34101
diff changeset
   187
          $$(error Cannot continue)
307c28cb36c2 8136782: Introduce a build/configure wrapper
erikj
parents: 34101
diff changeset
   188
        else ifneq ($$(words $$(matching_conf)), 1)
307c28cb36c2 8136782: Introduce a build/configure wrapper
erikj
parents: 34101
diff changeset
   189
          $$(info Error: Matching more than one configuration CONF_NAME=$$(CONF_NAME).)
307c28cb36c2 8136782: Introduce a build/configure wrapper
erikj
parents: 34101
diff changeset
   190
          $$(info Available configurations in $$(build_dir):)
307c28cb36c2 8136782: Introduce a build/configure wrapper
erikj
parents: 34101
diff changeset
   191
          $$(foreach var, $$(all_confs), $$(info * $$(var)))
307c28cb36c2 8136782: Introduce a build/configure wrapper
erikj
parents: 34101
diff changeset
   192
          $$(error Cannot continue)
307c28cb36c2 8136782: Introduce a build/configure wrapper
erikj
parents: 34101
diff changeset
   193
        else
307c28cb36c2 8136782: Introduce a build/configure wrapper
erikj
parents: 34101
diff changeset
   194
          $$(info Building configuration '$$(matching_conf)' (matching CONF_NAME=$$(CONF_NAME)))
307c28cb36c2 8136782: Introduce a build/configure wrapper
erikj
parents: 34101
diff changeset
   195
        endif
307c28cb36c2 8136782: Introduce a build/configure wrapper
erikj
parents: 34101
diff changeset
   196
        # Create a SPEC definition. This will contain the path to exactly one spec file.
307c28cb36c2 8136782: Introduce a build/configure wrapper
erikj
parents: 34101
diff changeset
   197
        SPECS := $$(build_dir)/$$(matching_conf)/spec.gmk
307c28cb36c2 8136782: Introduce a build/configure wrapper
erikj
parents: 34101
diff changeset
   198
      else ifneq ($$(origin CONF), undefined)
20363
fa7663fc5d50 8001931: The new build system whitespace cleanup
ihse
parents: 16583
diff changeset
   199
        # User have given a CONF= argument.
fa7663fc5d50 8001931: The new build system whitespace cleanup
ihse
parents: 16583
diff changeset
   200
        ifeq ($$(CONF),)
fa7663fc5d50 8001931: The new build system whitespace cleanup
ihse
parents: 16583
diff changeset
   201
          # If given CONF=, match all configurations
29662
78c47f0002c3 8076060: Improve make bootstrap process
ihse
parents: 29156
diff changeset
   202
          matching_confs := $$(strip $$(all_confs))
20363
fa7663fc5d50 8001931: The new build system whitespace cleanup
ihse
parents: 16583
diff changeset
   203
        else
fa7663fc5d50 8001931: The new build system whitespace cleanup
ihse
parents: 16583
diff changeset
   204
          # Otherwise select those that contain the given CONF string
29788
b581a3d9db41 8076465: New Init.gmk needs improvements
ihse
parents: 29663
diff changeset
   205
          matching_confs := $$(strip $$(foreach var, $$(all_confs), \
b581a3d9db41 8076465: New Init.gmk needs improvements
ihse
parents: 29663
diff changeset
   206
              $$(if $$(findstring $$(CONF), $$(var)), $$(var))))
20363
fa7663fc5d50 8001931: The new build system whitespace cleanup
ihse
parents: 16583
diff changeset
   207
        endif
fa7663fc5d50 8001931: The new build system whitespace cleanup
ihse
parents: 16583
diff changeset
   208
        ifeq ($$(matching_confs),)
27595
cff167b3bfa2 8065914: Various improvements and cleanup of build system
ihse
parents: 27000
diff changeset
   209
          $$(info Error: No configurations found matching CONF=$$(CONF).)
29662
78c47f0002c3 8076060: Improve make bootstrap process
ihse
parents: 29156
diff changeset
   210
          $$(info Available configurations in $$(build_dir):)
78c47f0002c3 8076060: Improve make bootstrap process
ihse
parents: 29156
diff changeset
   211
          $$(foreach var, $$(all_confs), $$(info * $$(var)))
78c47f0002c3 8076060: Improve make bootstrap process
ihse
parents: 29156
diff changeset
   212
          $$(error Cannot continue)
20363
fa7663fc5d50 8001931: The new build system whitespace cleanup
ihse
parents: 16583
diff changeset
   213
        else
35008
ef0cd710989f 8146403: Windows build can be faster
erikj
parents: 34594
diff changeset
   214
          # Don't repeat this output on make restarts caused by including
ef0cd710989f 8146403: Windows build can be faster
erikj
parents: 34594
diff changeset
   215
          # generated files.
ef0cd710989f 8146403: Windows build can be faster
erikj
parents: 34594
diff changeset
   216
          ifeq ($$(MAKE_RESTARTS),)
ef0cd710989f 8146403: Windows build can be faster
erikj
parents: 34594
diff changeset
   217
            ifeq ($$(words $$(matching_confs)), 1)
48057
56d3576aadd5 8146977: Move the output "Building configuration X (matching Y)" to lower log level
ihse
parents: 47956
diff changeset
   218
              ifneq ($$(findstring $$(LOG_LEVEL), info debug trace),)
56d3576aadd5 8146977: Move the output "Building configuration X (matching Y)" to lower log level
ihse
parents: 47956
diff changeset
   219
                $$(info Building configuration '$$(matching_confs)' (matching CONF=$$(CONF)))
56d3576aadd5 8146977: Move the output "Building configuration X (matching Y)" to lower log level
ihse
parents: 47956
diff changeset
   220
              endif
35008
ef0cd710989f 8146403: Windows build can be faster
erikj
parents: 34594
diff changeset
   221
            else
ef0cd710989f 8146403: Windows build can be faster
erikj
parents: 34594
diff changeset
   222
              $$(info Building these configurations (matching CONF=$$(CONF)):)
ef0cd710989f 8146403: Windows build can be faster
erikj
parents: 34594
diff changeset
   223
              $$(foreach var, $$(matching_confs), $$(info * $$(var)))
ef0cd710989f 8146403: Windows build can be faster
erikj
parents: 34594
diff changeset
   224
            endif
20363
fa7663fc5d50 8001931: The new build system whitespace cleanup
ihse
parents: 16583
diff changeset
   225
          endif
fa7663fc5d50 8001931: The new build system whitespace cleanup
ihse
parents: 16583
diff changeset
   226
        endif
14111
2a82ecb35fc7 8000992: Update new build-infra makefiles
ohair
parents: 13697
diff changeset
   227
20363
fa7663fc5d50 8001931: The new build system whitespace cleanup
ihse
parents: 16583
diff changeset
   228
        # Create a SPEC definition. This will contain the path to one or more spec.gmk files.
29662
78c47f0002c3 8076060: Improve make bootstrap process
ihse
parents: 29156
diff changeset
   229
        SPECS := $$(addsuffix /spec.gmk, $$(addprefix $$(build_dir)/, $$(matching_confs)))
20363
fa7663fc5d50 8001931: The new build system whitespace cleanup
ihse
parents: 16583
diff changeset
   230
      else
fa7663fc5d50 8001931: The new build system whitespace cleanup
ihse
parents: 16583
diff changeset
   231
        # No CONF or SPEC given, check the available configurations
29662
78c47f0002c3 8076060: Improve make bootstrap process
ihse
parents: 29156
diff changeset
   232
        ifneq ($$(words $$(all_spec_files)), 1)
27595
cff167b3bfa2 8065914: Various improvements and cleanup of build system
ihse
parents: 27000
diff changeset
   233
          $$(info Error: No CONF given, but more than one configuration found.)
29662
78c47f0002c3 8076060: Improve make bootstrap process
ihse
parents: 29156
diff changeset
   234
          $$(info Available configurations in $$(build_dir):)
78c47f0002c3 8076060: Improve make bootstrap process
ihse
parents: 29156
diff changeset
   235
          $$(foreach var, $$(all_confs), $$(info * $$(var)))
78c47f0002c3 8076060: Improve make bootstrap process
ihse
parents: 29156
diff changeset
   236
          $$(info Please retry building with CONF=<config pattern> (or SPEC=<spec file>).)
78c47f0002c3 8076060: Improve make bootstrap process
ihse
parents: 29156
diff changeset
   237
          $$(info )
78c47f0002c3 8076060: Improve make bootstrap process
ihse
parents: 29156
diff changeset
   238
          $$(error Cannot continue)
20363
fa7663fc5d50 8001931: The new build system whitespace cleanup
ihse
parents: 16583
diff changeset
   239
        endif
14111
2a82ecb35fc7 8000992: Update new build-infra makefiles
ohair
parents: 13697
diff changeset
   240
20363
fa7663fc5d50 8001931: The new build system whitespace cleanup
ihse
parents: 16583
diff changeset
   241
        # We found exactly one configuration, use it
29662
78c47f0002c3 8076060: Improve make bootstrap process
ihse
parents: 29156
diff changeset
   242
        SPECS := $$(strip $$(all_spec_files))
20363
fa7663fc5d50 8001931: The new build system whitespace cleanup
ihse
parents: 16583
diff changeset
   243
      endif
13133
701e61c32ece 7182051: Update of latest build-infra Makefiles (missing files)
erikj
parents:
diff changeset
   244
    endif
29662
78c47f0002c3 8076060: Improve make bootstrap process
ihse
parents: 29156
diff changeset
   245
  endef
29156
bd932374081c 8072842: Add support for building native JTReg tests
ihse
parents: 29060
diff changeset
   246
29788
b581a3d9db41 8076465: New Init.gmk needs improvements
ihse
parents: 29663
diff changeset
   247
  # Extract main targets from Main.gmk using the spec provided in $2.
b581a3d9db41 8076465: New Init.gmk needs improvements
ihse
parents: 29663
diff changeset
   248
  #
b581a3d9db41 8076465: New Init.gmk needs improvements
ihse
parents: 29663
diff changeset
   249
  # Param 1: FORCE = force generation of main-targets.gmk or LAZY = do not force.
b581a3d9db41 8076465: New Init.gmk needs improvements
ihse
parents: 29663
diff changeset
   250
  # Param 2: The SPEC file to use.
b581a3d9db41 8076465: New Init.gmk needs improvements
ihse
parents: 29663
diff changeset
   251
  define DefineMainTargets
b581a3d9db41 8076465: New Init.gmk needs improvements
ihse
parents: 29663
diff changeset
   252
b581a3d9db41 8076465: New Init.gmk needs improvements
ihse
parents: 29663
diff changeset
   253
    # We will start by making sure the main-targets.gmk file is removed, if
b581a3d9db41 8076465: New Init.gmk needs improvements
ihse
parents: 29663
diff changeset
   254
    # make has not been restarted. By the -include, we will trigger the
b581a3d9db41 8076465: New Init.gmk needs improvements
ihse
parents: 29663
diff changeset
   255
    # rule for generating the file (which is never there since we removed it),
b581a3d9db41 8076465: New Init.gmk needs improvements
ihse
parents: 29663
diff changeset
   256
    # thus generating it fresh, and make will restart, incrementing the restart
b581a3d9db41 8076465: New Init.gmk needs improvements
ihse
parents: 29663
diff changeset
   257
    # count.
b581a3d9db41 8076465: New Init.gmk needs improvements
ihse
parents: 29663
diff changeset
   258
    main_targets_file := $$(dir $(strip $2))make-support/main-targets.gmk
b581a3d9db41 8076465: New Init.gmk needs improvements
ihse
parents: 29663
diff changeset
   259
b581a3d9db41 8076465: New Init.gmk needs improvements
ihse
parents: 29663
diff changeset
   260
    ifeq ($$(MAKE_RESTARTS),)
b581a3d9db41 8076465: New Init.gmk needs improvements
ihse
parents: 29663
diff changeset
   261
      # Only do this if make has not been restarted, and if we do not force it.
b581a3d9db41 8076465: New Init.gmk needs improvements
ihse
parents: 29663
diff changeset
   262
      ifeq ($(strip $1), FORCE)
b581a3d9db41 8076465: New Init.gmk needs improvements
ihse
parents: 29663
diff changeset
   263
        $$(shell rm -f $$(main_targets_file))
b581a3d9db41 8076465: New Init.gmk needs improvements
ihse
parents: 29663
diff changeset
   264
      endif
b581a3d9db41 8076465: New Init.gmk needs improvements
ihse
parents: 29663
diff changeset
   265
    endif
b581a3d9db41 8076465: New Init.gmk needs improvements
ihse
parents: 29663
diff changeset
   266
b581a3d9db41 8076465: New Init.gmk needs improvements
ihse
parents: 29663
diff changeset
   267
    $$(main_targets_file):
b581a3d9db41 8076465: New Init.gmk needs improvements
ihse
parents: 29663
diff changeset
   268
	@( cd $$(topdir) && \
54382
61616f509ef8 8221762: Improve Main.gmk/FindTests.gmk bootstrap time
erikj
parents: 53683
diff changeset
   269
	$$(MAKE) $$(MAKE_LOG_FLAGS) -r -R -f $$(topdir)/make/Main.gmk \
29788
b581a3d9db41 8076465: New Init.gmk needs improvements
ihse
parents: 29663
diff changeset
   270
	    -I $$(topdir)/make/common SPEC=$(strip $2) NO_RECIPES=true \
44465
26fabd8abee9 8177770: Need more precise control on build system logging
asemenyuk
parents: 44027
diff changeset
   271
	    $$(MAKE_LOG_VARS) \
29788
b581a3d9db41 8076465: New Init.gmk needs improvements
ihse
parents: 29663
diff changeset
   272
	    create-main-targets-include )
b581a3d9db41 8076465: New Init.gmk needs improvements
ihse
parents: 29663
diff changeset
   273
b581a3d9db41 8076465: New Init.gmk needs improvements
ihse
parents: 29663
diff changeset
   274
    # Now include main-targets.gmk. This will define ALL_MAIN_TARGETS.
b581a3d9db41 8076465: New Init.gmk needs improvements
ihse
parents: 29663
diff changeset
   275
    -include $$(main_targets_file)
b581a3d9db41 8076465: New Init.gmk needs improvements
ihse
parents: 29663
diff changeset
   276
  endef
b581a3d9db41 8076465: New Init.gmk needs improvements
ihse
parents: 29663
diff changeset
   277
29662
78c47f0002c3 8076060: Improve make bootstrap process
ihse
parents: 29156
diff changeset
   278
  define PrintConfCheckFailed
78c47f0002c3 8076060: Improve make bootstrap process
ihse
parents: 29156
diff changeset
   279
	@echo ' '
78c47f0002c3 8076060: Improve make bootstrap process
ihse
parents: 29156
diff changeset
   280
	@echo "Please rerun configure! Easiest way to do this is by running"
78c47f0002c3 8076060: Improve make bootstrap process
ihse
parents: 29156
diff changeset
   281
	@echo "'make reconfigure'."
78c47f0002c3 8076060: Improve make bootstrap process
ihse
parents: 29156
diff changeset
   282
	@echo "This behavior may also be changed using CONF_CHECK=<ignore|auto>."
78c47f0002c3 8076060: Improve make bootstrap process
ihse
parents: 29156
diff changeset
   283
	@echo ' '
78c47f0002c3 8076060: Improve make bootstrap process
ihse
parents: 29156
diff changeset
   284
  endef
13697
5262b00bc10c 7197849: Update new build-infra makefiles
ohair
parents: 13133
diff changeset
   285
29662
78c47f0002c3 8076060: Improve make bootstrap process
ihse
parents: 29156
diff changeset
   286
else # $(HAS_SPEC)=true
78c47f0002c3 8076060: Improve make bootstrap process
ihse
parents: 29156
diff changeset
   287
  ##############################################################################
78c47f0002c3 8076060: Improve make bootstrap process
ihse
parents: 29156
diff changeset
   288
  # Helper functions for the 'main' target. These functions assume a single,
29788
b581a3d9db41 8076465: New Init.gmk needs improvements
ihse
parents: 29663
diff changeset
   289
  # proper and existing SPEC is included.
29662
78c47f0002c3 8076060: Improve make bootstrap process
ihse
parents: 29156
diff changeset
   290
  ##############################################################################
29156
bd932374081c 8072842: Add support for building native JTReg tests
ihse
parents: 29060
diff changeset
   291
47217
72e3ae9a25eb 8187444: Forest Consolidation: Make build work
erikj
parents: 44465
diff changeset
   292
  include $(TOPDIR)/make/common/MakeBase.gmk
27560
adc258b13e2c 8049367: Modular Run-Time Images
chegar
parents: 27000
diff changeset
   293
29662
78c47f0002c3 8076060: Improve make bootstrap process
ihse
parents: 29156
diff changeset
   294
  # Define basic logging setup
47253
92fd0e04e0e1 8187544: Replace BUILD_OUTPUT and OUTPUT_ROOT with OUTPUTDIR
ihse
parents: 47217
diff changeset
   295
  BUILD_LOG := $(OUTPUTDIR)/build.log
92fd0e04e0e1 8187544: Replace BUILD_OUTPUT and OUTPUT_ROOT with OUTPUTDIR
ihse
parents: 47217
diff changeset
   296
  BUILD_PROFILE_LOG := $(OUTPUTDIR)/build-profile.log
29662
78c47f0002c3 8076060: Improve make bootstrap process
ihse
parents: 29156
diff changeset
   297
37410
fbab762803ef 8154326: bash >(...) construct causes race conditions
erikj
parents: 35744
diff changeset
   298
  BUILD_LOG_PIPE := > >($(TEE) -a $(BUILD_LOG)) 2> >($(TEE) -a $(BUILD_LOG) >&2) && wait
54415
00fda51e28cf 8221764: Reduce make Init.gmk logging overhead
erikj
parents: 54382
diff changeset
   299
  # Use this for simple echo/printf commands that are never expected to print
00fda51e28cf 8221764: Reduce make Init.gmk logging overhead
erikj
parents: 54382
diff changeset
   300
  # to stderr.
00fda51e28cf 8221764: Reduce make Init.gmk logging overhead
erikj
parents: 54382
diff changeset
   301
  BUILD_LOG_PIPE_SIMPLE := | $(TEE) -a $(BUILD_LOG)
27560
adc258b13e2c 8049367: Modular Run-Time Images
chegar
parents: 27000
diff changeset
   302
48907
c38163717870 8198227: Fix COMPARE_BUILD after forest consolidation
ihse
parents: 48057
diff changeset
   303
  ifneq ($(CUSTOM_ROOT), )
c38163717870 8198227: Fix COMPARE_BUILD after forest consolidation
ihse
parents: 48057
diff changeset
   304
    topdir=$(CUSTOM_ROOT)
c38163717870 8198227: Fix COMPARE_BUILD after forest consolidation
ihse
parents: 48057
diff changeset
   305
  else
c38163717870 8198227: Fix COMPARE_BUILD after forest consolidation
ihse
parents: 48057
diff changeset
   306
    topdir=$(TOPDIR)
c38163717870 8198227: Fix COMPARE_BUILD after forest consolidation
ihse
parents: 48057
diff changeset
   307
  endif
c38163717870 8198227: Fix COMPARE_BUILD after forest consolidation
ihse
parents: 48057
diff changeset
   308
32715
4d558a41a1ec 8136695: Automatic build comparison with COMPARE_BUILD
ihse
parents: 32344
diff changeset
   309
  # Parse COMPARE_BUILD into COMPARE_BUILD_*
4d558a41a1ec 8136695: Automatic build comparison with COMPARE_BUILD
ihse
parents: 32344
diff changeset
   310
  # Syntax: COMPARE_BUILD=CONF=<configure options>:PATCH=<patch file>:
32720
7e0e586a6817 8137014: Various improvements in build infrastructure
ihse
parents: 32715
diff changeset
   311
  #         MAKE=<make targets>:COMP_OPTS=<compare script options>:
35744
4f5e0998b6e9 8149479: Fix compare.sh to have a clean baseline with COMPARE_BUILD
erikj
parents: 35444
diff changeset
   312
  #         COMP_DIR=<compare script base dir>|<default>:
4f5e0998b6e9 8149479: Fix compare.sh to have a clean baseline with COMPARE_BUILD
erikj
parents: 35444
diff changeset
   313
  #         FAIL=<bool>
32715
4d558a41a1ec 8136695: Automatic build comparison with COMPARE_BUILD
ihse
parents: 32344
diff changeset
   314
  # If neither CONF or PATCH is given, assume <default> means CONF if it
4d558a41a1ec 8136695: Automatic build comparison with COMPARE_BUILD
ihse
parents: 32344
diff changeset
   315
  # begins with "--", otherwise assume it means PATCH.
4d558a41a1ec 8136695: Automatic build comparison with COMPARE_BUILD
ihse
parents: 32344
diff changeset
   316
  # MAKE and COMP_OPTS can only be used with CONF and/or PATCH specified.
4d558a41a1ec 8136695: Automatic build comparison with COMPARE_BUILD
ihse
parents: 32344
diff changeset
   317
  # If any value contains "+", it will be replaced by space.
35744
4f5e0998b6e9 8149479: Fix compare.sh to have a clean baseline with COMPARE_BUILD
erikj
parents: 35444
diff changeset
   318
  # FAIL can be set to false to have the return value of compare be ignored.
32715
4d558a41a1ec 8136695: Automatic build comparison with COMPARE_BUILD
ihse
parents: 32344
diff changeset
   319
  define ParseCompareBuild
4d558a41a1ec 8136695: Automatic build comparison with COMPARE_BUILD
ihse
parents: 32344
diff changeset
   320
    ifneq ($$(COMPARE_BUILD), )
48907
c38163717870 8198227: Fix COMPARE_BUILD after forest consolidation
ihse
parents: 48057
diff changeset
   321
      COMPARE_BUILD_OUTPUTDIR := $(topdir)/build/compare-build/$(CONF_NAME)
35744
4f5e0998b6e9 8149479: Fix compare.sh to have a clean baseline with COMPARE_BUILD
erikj
parents: 35444
diff changeset
   322
      COMPARE_BUILD_FAIL := true
33572
b74ceb2d2d20 8141696: Improve COMPARE_BUILD
ihse
parents: 32720
diff changeset
   323
32715
4d558a41a1ec 8136695: Automatic build comparison with COMPARE_BUILD
ihse
parents: 32344
diff changeset
   324
      ifneq ($$(findstring :, $$(COMPARE_BUILD)), )
4d558a41a1ec 8136695: Automatic build comparison with COMPARE_BUILD
ihse
parents: 32344
diff changeset
   325
        $$(foreach part, $$(subst :, , $$(COMPARE_BUILD)), \
4d558a41a1ec 8136695: Automatic build comparison with COMPARE_BUILD
ihse
parents: 32344
diff changeset
   326
          $$(if $$(filter PATCH=%, $$(part)), \
4d558a41a1ec 8136695: Automatic build comparison with COMPARE_BUILD
ihse
parents: 32344
diff changeset
   327
            $$(eval COMPARE_BUILD_PATCH=$$(strip $$(patsubst PATCH=%, %, $$(part)))) \
4d558a41a1ec 8136695: Automatic build comparison with COMPARE_BUILD
ihse
parents: 32344
diff changeset
   328
          ) \
4d558a41a1ec 8136695: Automatic build comparison with COMPARE_BUILD
ihse
parents: 32344
diff changeset
   329
          $$(if $$(filter CONF=%, $$(part)), \
4d558a41a1ec 8136695: Automatic build comparison with COMPARE_BUILD
ihse
parents: 32344
diff changeset
   330
            $$(eval COMPARE_BUILD_CONF=$$(strip $$(subst +, , $$(patsubst CONF=%, %, $$(part))))) \
4d558a41a1ec 8136695: Automatic build comparison with COMPARE_BUILD
ihse
parents: 32344
diff changeset
   331
          ) \
4d558a41a1ec 8136695: Automatic build comparison with COMPARE_BUILD
ihse
parents: 32344
diff changeset
   332
          $$(if $$(filter MAKE=%, $$(part)), \
4d558a41a1ec 8136695: Automatic build comparison with COMPARE_BUILD
ihse
parents: 32344
diff changeset
   333
            $$(eval COMPARE_BUILD_MAKE=$$(strip $$(subst +, , $$(patsubst MAKE=%, %, $$(part))))) \
4d558a41a1ec 8136695: Automatic build comparison with COMPARE_BUILD
ihse
parents: 32344
diff changeset
   334
          ) \
4d558a41a1ec 8136695: Automatic build comparison with COMPARE_BUILD
ihse
parents: 32344
diff changeset
   335
          $$(if $$(filter COMP_OPTS=%, $$(part)), \
4d558a41a1ec 8136695: Automatic build comparison with COMPARE_BUILD
ihse
parents: 32344
diff changeset
   336
            $$(eval COMPARE_BUILD_COMP_OPTS=$$(strip $$(subst +, , $$(patsubst COMP_OPTS=%, %, $$(part))))) \
4d558a41a1ec 8136695: Automatic build comparison with COMPARE_BUILD
ihse
parents: 32344
diff changeset
   337
          ) \
32720
7e0e586a6817 8137014: Various improvements in build infrastructure
ihse
parents: 32715
diff changeset
   338
          $$(if $$(filter COMP_DIR=%, $$(part)), \
7e0e586a6817 8137014: Various improvements in build infrastructure
ihse
parents: 32715
diff changeset
   339
            $$(eval COMPARE_BUILD_COMP_DIR=$$(strip $$(subst +, , $$(patsubst COMP_DIR=%, %, $$(part))))) \
7e0e586a6817 8137014: Various improvements in build infrastructure
ihse
parents: 32715
diff changeset
   340
          ) \
35744
4f5e0998b6e9 8149479: Fix compare.sh to have a clean baseline with COMPARE_BUILD
erikj
parents: 35444
diff changeset
   341
          $$(if $$(filter FAIL=%, $$(part)), \
4f5e0998b6e9 8149479: Fix compare.sh to have a clean baseline with COMPARE_BUILD
erikj
parents: 35444
diff changeset
   342
            $$(eval COMPARE_BUILD_FAIL=$$(strip $$(subst +, , $$(patsubst FAIL=%, %, $$(part))))) \
4f5e0998b6e9 8149479: Fix compare.sh to have a clean baseline with COMPARE_BUILD
erikj
parents: 35444
diff changeset
   343
          ) \
32715
4d558a41a1ec 8136695: Automatic build comparison with COMPARE_BUILD
ihse
parents: 32344
diff changeset
   344
        )
4d558a41a1ec 8136695: Automatic build comparison with COMPARE_BUILD
ihse
parents: 32344
diff changeset
   345
      else
4d558a41a1ec 8136695: Automatic build comparison with COMPARE_BUILD
ihse
parents: 32344
diff changeset
   346
        # Separate handling for single field case, to allow for spaces in values.
4d558a41a1ec 8136695: Automatic build comparison with COMPARE_BUILD
ihse
parents: 32344
diff changeset
   347
        ifneq ($$(filter PATCH=%, $$(COMPARE_BUILD)), )
4d558a41a1ec 8136695: Automatic build comparison with COMPARE_BUILD
ihse
parents: 32344
diff changeset
   348
          COMPARE_BUILD_PATCH=$$(strip $$(patsubst PATCH=%, %, $$(COMPARE_BUILD)))
4d558a41a1ec 8136695: Automatic build comparison with COMPARE_BUILD
ihse
parents: 32344
diff changeset
   349
        else ifneq ($$(filter CONF=%, $$(COMPARE_BUILD)), )
4d558a41a1ec 8136695: Automatic build comparison with COMPARE_BUILD
ihse
parents: 32344
diff changeset
   350
          COMPARE_BUILD_CONF=$$(strip $$(subst +, , $$(patsubst CONF=%, %, $$(COMPARE_BUILD))))
4d558a41a1ec 8136695: Automatic build comparison with COMPARE_BUILD
ihse
parents: 32344
diff changeset
   351
        else ifneq ($$(filter --%, $$(COMPARE_BUILD)), )
4d558a41a1ec 8136695: Automatic build comparison with COMPARE_BUILD
ihse
parents: 32344
diff changeset
   352
          # Assume CONF if value begins with --
4d558a41a1ec 8136695: Automatic build comparison with COMPARE_BUILD
ihse
parents: 32344
diff changeset
   353
          COMPARE_BUILD_CONF=$$(strip $$(subst +, , $$(COMPARE_BUILD)))
4d558a41a1ec 8136695: Automatic build comparison with COMPARE_BUILD
ihse
parents: 32344
diff changeset
   354
        else
4d558a41a1ec 8136695: Automatic build comparison with COMPARE_BUILD
ihse
parents: 32344
diff changeset
   355
          # Otherwise assume patch file
4d558a41a1ec 8136695: Automatic build comparison with COMPARE_BUILD
ihse
parents: 32344
diff changeset
   356
          COMPARE_BUILD_PATCH=$$(strip $$(COMPARE_BUILD))
4d558a41a1ec 8136695: Automatic build comparison with COMPARE_BUILD
ihse
parents: 32344
diff changeset
   357
        endif
4d558a41a1ec 8136695: Automatic build comparison with COMPARE_BUILD
ihse
parents: 32344
diff changeset
   358
      endif
4d558a41a1ec 8136695: Automatic build comparison with COMPARE_BUILD
ihse
parents: 32344
diff changeset
   359
      ifneq ($$(COMPARE_BUILD_PATCH), )
48907
c38163717870 8198227: Fix COMPARE_BUILD after forest consolidation
ihse
parents: 48057
diff changeset
   360
        ifneq ($$(wildcard $$(topdir)/$$(COMPARE_BUILD_PATCH)), )
32715
4d558a41a1ec 8136695: Automatic build comparison with COMPARE_BUILD
ihse
parents: 32344
diff changeset
   361
          # Assume relative path, if file exists
48907
c38163717870 8198227: Fix COMPARE_BUILD after forest consolidation
ihse
parents: 48057
diff changeset
   362
          COMPARE_BUILD_PATCH := $$(wildcard $$(topdir)/$$(COMPARE_BUILD_PATCH))
32715
4d558a41a1ec 8136695: Automatic build comparison with COMPARE_BUILD
ihse
parents: 32344
diff changeset
   363
        else ifeq ($$(wildcard $$(COMPARE_BUILD_PATCH)), )
4d558a41a1ec 8136695: Automatic build comparison with COMPARE_BUILD
ihse
parents: 32344
diff changeset
   364
          $$(error Patch file $$(COMPARE_BUILD_PATCH) does not exist)
4d558a41a1ec 8136695: Automatic build comparison with COMPARE_BUILD
ihse
parents: 32344
diff changeset
   365
        endif
4d558a41a1ec 8136695: Automatic build comparison with COMPARE_BUILD
ihse
parents: 32344
diff changeset
   366
      endif
35744
4f5e0998b6e9 8149479: Fix compare.sh to have a clean baseline with COMPARE_BUILD
erikj
parents: 35444
diff changeset
   367
      ifneq ($$(COMPARE_BUILD_FAIL), true)
4f5e0998b6e9 8149479: Fix compare.sh to have a clean baseline with COMPARE_BUILD
erikj
parents: 35444
diff changeset
   368
        COMPARE_BUILD_IGNORE_RESULT := || true
4f5e0998b6e9 8149479: Fix compare.sh to have a clean baseline with COMPARE_BUILD
erikj
parents: 35444
diff changeset
   369
      endif
32715
4d558a41a1ec 8136695: Automatic build comparison with COMPARE_BUILD
ihse
parents: 32344
diff changeset
   370
    endif
4d558a41a1ec 8136695: Automatic build comparison with COMPARE_BUILD
ihse
parents: 32344
diff changeset
   371
  endef
4d558a41a1ec 8136695: Automatic build comparison with COMPARE_BUILD
ihse
parents: 32344
diff changeset
   372
33572
b74ceb2d2d20 8141696: Improve COMPARE_BUILD
ihse
parents: 32720
diff changeset
   373
  # Prepare for a comparison rebuild
b74ceb2d2d20 8141696: Improve COMPARE_BUILD
ihse
parents: 32720
diff changeset
   374
  define PrepareCompareBuild
b74ceb2d2d20 8141696: Improve COMPARE_BUILD
ihse
parents: 32720
diff changeset
   375
	$(ECHO) "Preparing for comparison rebuild"
b74ceb2d2d20 8141696: Improve COMPARE_BUILD
ihse
parents: 32720
diff changeset
   376
        # Apply patch, if any
49138
67912cbf784a 8199103: Can't use COMPARE_BUILD with PATCH from custom root
ihse
parents: 48907
diff changeset
   377
	$(if $(COMPARE_BUILD_PATCH), cd $(topdir) && $(PATCH) -p1 < $(COMPARE_BUILD_PATCH))
33572
b74ceb2d2d20 8141696: Improve COMPARE_BUILD
ihse
parents: 32720
diff changeset
   378
        # Move the first build away temporarily
48907
c38163717870 8198227: Fix COMPARE_BUILD after forest consolidation
ihse
parents: 48057
diff changeset
   379
	$(RM) -r $(topdir)/build/.compare-build-temp
c38163717870 8198227: Fix COMPARE_BUILD after forest consolidation
ihse
parents: 48057
diff changeset
   380
	$(MKDIR) -p $(topdir)/build/.compare-build-temp
c38163717870 8198227: Fix COMPARE_BUILD after forest consolidation
ihse
parents: 48057
diff changeset
   381
	$(MV) $(OUTPUTDIR) $(topdir)/build/.compare-build-temp
33572
b74ceb2d2d20 8141696: Improve COMPARE_BUILD
ihse
parents: 32720
diff changeset
   382
        # Restore an old compare-build, or create a new compare-build directory.
47253
92fd0e04e0e1 8187544: Replace BUILD_OUTPUT and OUTPUT_ROOT with OUTPUTDIR
ihse
parents: 47217
diff changeset
   383
	if test -d $(COMPARE_BUILD_OUTPUTDIR); then \
92fd0e04e0e1 8187544: Replace BUILD_OUTPUT and OUTPUT_ROOT with OUTPUTDIR
ihse
parents: 47217
diff changeset
   384
	  $(MV) $(COMPARE_BUILD_OUTPUTDIR) $(OUTPUTDIR); \
33572
b74ceb2d2d20 8141696: Improve COMPARE_BUILD
ihse
parents: 32720
diff changeset
   385
	else \
47253
92fd0e04e0e1 8187544: Replace BUILD_OUTPUT and OUTPUT_ROOT with OUTPUTDIR
ihse
parents: 47217
diff changeset
   386
	  $(MKDIR) -p $(OUTPUTDIR); \
33572
b74ceb2d2d20 8141696: Improve COMPARE_BUILD
ihse
parents: 32720
diff changeset
   387
	fi
b74ceb2d2d20 8141696: Improve COMPARE_BUILD
ihse
parents: 32720
diff changeset
   388
        # Re-run configure with the same arguments (and possibly some additional),
b74ceb2d2d20 8141696: Improve COMPARE_BUILD
ihse
parents: 32720
diff changeset
   389
        # must be done after patching.
54739
0dcb89221c93 8223335: Compare baseline builds on linux are failing
erikj
parents: 54415
diff changeset
   390
	( cd $(CONFIGURE_START_DIR) && PATH="$(ORIGINAL_PATH)" \
48907
c38163717870 8198227: Fix COMPARE_BUILD after forest consolidation
ihse
parents: 48057
diff changeset
   391
	    $(BASH) $(topdir)/configure $(CONFIGURE_COMMAND_LINE) $(COMPARE_BUILD_CONF))
33572
b74ceb2d2d20 8141696: Improve COMPARE_BUILD
ihse
parents: 32720
diff changeset
   392
  endef
b74ceb2d2d20 8141696: Improve COMPARE_BUILD
ihse
parents: 32720
diff changeset
   393
b74ceb2d2d20 8141696: Improve COMPARE_BUILD
ihse
parents: 32720
diff changeset
   394
  # Cleanup after a compare build
b74ceb2d2d20 8141696: Improve COMPARE_BUILD
ihse
parents: 32720
diff changeset
   395
  define CleanupCompareBuild
b74ceb2d2d20 8141696: Improve COMPARE_BUILD
ihse
parents: 32720
diff changeset
   396
        # If running with a COMPARE_BUILD patch, reverse-apply it
49138
67912cbf784a 8199103: Can't use COMPARE_BUILD with PATCH from custom root
ihse
parents: 48907
diff changeset
   397
	$(if $(COMPARE_BUILD_PATCH), cd $(topdir) && $(PATCH) -R -p1 < $(COMPARE_BUILD_PATCH))
33572
b74ceb2d2d20 8141696: Improve COMPARE_BUILD
ihse
parents: 32720
diff changeset
   398
        # Move this build away and restore the original build
48907
c38163717870 8198227: Fix COMPARE_BUILD after forest consolidation
ihse
parents: 48057
diff changeset
   399
	$(MKDIR) -p $(topdir)/build/compare-build
47253
92fd0e04e0e1 8187544: Replace BUILD_OUTPUT and OUTPUT_ROOT with OUTPUTDIR
ihse
parents: 47217
diff changeset
   400
	$(MV) $(OUTPUTDIR) $(COMPARE_BUILD_OUTPUTDIR)
48907
c38163717870 8198227: Fix COMPARE_BUILD after forest consolidation
ihse
parents: 48057
diff changeset
   401
	$(MV) $(topdir)/build/.compare-build-temp/$(CONF_NAME) $(OUTPUTDIR)
c38163717870 8198227: Fix COMPARE_BUILD after forest consolidation
ihse
parents: 48057
diff changeset
   402
	$(RM) -r $(topdir)/build/.compare-build-temp
33572
b74ceb2d2d20 8141696: Improve COMPARE_BUILD
ihse
parents: 32720
diff changeset
   403
  endef
b74ceb2d2d20 8141696: Improve COMPARE_BUILD
ihse
parents: 32720
diff changeset
   404
b74ceb2d2d20 8141696: Improve COMPARE_BUILD
ihse
parents: 32720
diff changeset
   405
  # Do the actual comparison of two builds
b74ceb2d2d20 8141696: Improve COMPARE_BUILD
ihse
parents: 32720
diff changeset
   406
  define CompareBuildDoComparison
b74ceb2d2d20 8141696: Improve COMPARE_BUILD
ihse
parents: 32720
diff changeset
   407
        # Compare first and second build. Ignore any error code from compare.sh.
b74ceb2d2d20 8141696: Improve COMPARE_BUILD
ihse
parents: 32720
diff changeset
   408
	$(ECHO) "Comparing between comparison rebuild (this/new) and baseline (other/old)"
b74ceb2d2d20 8141696: Improve COMPARE_BUILD
ihse
parents: 32720
diff changeset
   409
	$(if $(COMPARE_BUILD_COMP_DIR), \
47253
92fd0e04e0e1 8187544: Replace BUILD_OUTPUT and OUTPUT_ROOT with OUTPUTDIR
ihse
parents: 47217
diff changeset
   410
	  +(cd $(COMPARE_BUILD_OUTPUTDIR) && ./compare.sh $(COMPARE_BUILD_COMP_OPTS) \
92fd0e04e0e1 8187544: Replace BUILD_OUTPUT and OUTPUT_ROOT with OUTPUTDIR
ihse
parents: 47217
diff changeset
   411
	      -2dirs $(COMPARE_BUILD_OUTPUTDIR)/$(COMPARE_BUILD_COMP_DIR) \
92fd0e04e0e1 8187544: Replace BUILD_OUTPUT and OUTPUT_ROOT with OUTPUTDIR
ihse
parents: 47217
diff changeset
   412
	      $(OUTPUTDIR)/$(COMPARE_BUILD_COMP_DIR) $(COMPARE_BUILD_IGNORE_RESULT)), \
92fd0e04e0e1 8187544: Replace BUILD_OUTPUT and OUTPUT_ROOT with OUTPUTDIR
ihse
parents: 47217
diff changeset
   413
	  +(cd $(COMPARE_BUILD_OUTPUTDIR) && ./compare.sh $(COMPARE_BUILD_COMP_OPTS) \
92fd0e04e0e1 8187544: Replace BUILD_OUTPUT and OUTPUT_ROOT with OUTPUTDIR
ihse
parents: 47217
diff changeset
   414
	      -o $(OUTPUTDIR) $(COMPARE_BUILD_IGNORE_RESULT)) \
33572
b74ceb2d2d20 8141696: Improve COMPARE_BUILD
ihse
parents: 32720
diff changeset
   415
	)
b74ceb2d2d20 8141696: Improve COMPARE_BUILD
ihse
parents: 32720
diff changeset
   416
  endef
b74ceb2d2d20 8141696: Improve COMPARE_BUILD
ihse
parents: 32720
diff changeset
   417
b74ceb2d2d20 8141696: Improve COMPARE_BUILD
ihse
parents: 32720
diff changeset
   418
  define PrintFailureReports
49568
3e9cb3562d83 8201320: Allow PrintFailureReports to be turned off
ihse
parents: 49138
diff changeset
   419
	$(if $(filter none, $(LOG_REPORT)), , \
3e9cb3562d83 8201320: Allow PrintFailureReports to be turned off
ihse
parents: 49138
diff changeset
   420
	  $(if $(wildcard $(MAKESUPPORT_OUTPUTDIR)/failure-logs/*.log), \
3e9cb3562d83 8201320: Allow PrintFailureReports to be turned off
ihse
parents: 49138
diff changeset
   421
	    $(PRINTF) "\n=== Output from failing command(s) repeated here ===\n" $(NEWLINE) \
3e9cb3562d83 8201320: Allow PrintFailureReports to be turned off
ihse
parents: 49138
diff changeset
   422
	    $(foreach logfile, $(sort $(wildcard $(MAKESUPPORT_OUTPUTDIR)/failure-logs/*.log)), \
3e9cb3562d83 8201320: Allow PrintFailureReports to be turned off
ihse
parents: 49138
diff changeset
   423
	        $(PRINTF) "* For target $(notdir $(basename $(logfile))):\n" $(NEWLINE) \
3e9cb3562d83 8201320: Allow PrintFailureReports to be turned off
ihse
parents: 49138
diff changeset
   424
	        $(if $(filter all, $(LOG_REPORT)), \
3e9cb3562d83 8201320: Allow PrintFailureReports to be turned off
ihse
parents: 49138
diff changeset
   425
	          $(GREP) -v -e "^Note: including file:" <  $(logfile) || true $(NEWLINE) \
3e9cb3562d83 8201320: Allow PrintFailureReports to be turned off
ihse
parents: 49138
diff changeset
   426
	        , \
3e9cb3562d83 8201320: Allow PrintFailureReports to be turned off
ihse
parents: 49138
diff changeset
   427
	          ($(GREP) -v -e "^Note: including file:" <  $(logfile) || true) | $(HEAD) -n 12 $(NEWLINE) \
3e9cb3562d83 8201320: Allow PrintFailureReports to be turned off
ihse
parents: 49138
diff changeset
   428
	          if test `$(WC) -l < $(logfile)` -gt 12; then \
3e9cb3562d83 8201320: Allow PrintFailureReports to be turned off
ihse
parents: 49138
diff changeset
   429
	            $(ECHO) "   ... (rest of output omitted)" ; \
3e9cb3562d83 8201320: Allow PrintFailureReports to be turned off
ihse
parents: 49138
diff changeset
   430
	          fi $(NEWLINE) \
3e9cb3562d83 8201320: Allow PrintFailureReports to be turned off
ihse
parents: 49138
diff changeset
   431
	        ) \
3e9cb3562d83 8201320: Allow PrintFailureReports to be turned off
ihse
parents: 49138
diff changeset
   432
	    ) \
3e9cb3562d83 8201320: Allow PrintFailureReports to be turned off
ihse
parents: 49138
diff changeset
   433
	    $(PRINTF) "\n* All command lines available in $(MAKESUPPORT_OUTPUTDIR)/failure-logs.\n" $(NEWLINE) \
3e9cb3562d83 8201320: Allow PrintFailureReports to be turned off
ihse
parents: 49138
diff changeset
   434
	    $(PRINTF) "=== End of repeated output ===\n" \
33572
b74ceb2d2d20 8141696: Improve COMPARE_BUILD
ihse
parents: 32720
diff changeset
   435
	  ) \
b74ceb2d2d20 8141696: Improve COMPARE_BUILD
ihse
parents: 32720
diff changeset
   436
	)
b74ceb2d2d20 8141696: Improve COMPARE_BUILD
ihse
parents: 32720
diff changeset
   437
  endef
b74ceb2d2d20 8141696: Improve COMPARE_BUILD
ihse
parents: 32720
diff changeset
   438
b74ceb2d2d20 8141696: Improve COMPARE_BUILD
ihse
parents: 32720
diff changeset
   439
  define PrintBuildLogFailures
49568
3e9cb3562d83 8201320: Allow PrintFailureReports to be turned off
ihse
parents: 49138
diff changeset
   440
	$(if $(filter none, $(LOG_REPORT)), , \
3e9cb3562d83 8201320: Allow PrintFailureReports to be turned off
ihse
parents: 49138
diff changeset
   441
	  if $(GREP) -q "recipe for target .* failed" $(BUILD_LOG) 2> /dev/null; then  \
3e9cb3562d83 8201320: Allow PrintFailureReports to be turned off
ihse
parents: 49138
diff changeset
   442
	    $(PRINTF) "\n=== Make failed targets repeated here ===\n" ; \
3e9cb3562d83 8201320: Allow PrintFailureReports to be turned off
ihse
parents: 49138
diff changeset
   443
	    $(GREP) "recipe for target .* failed" $(BUILD_LOG) ; \
3e9cb3562d83 8201320: Allow PrintFailureReports to be turned off
ihse
parents: 49138
diff changeset
   444
	    $(PRINTF) "=== End of repeated output ===\n" ; \
3e9cb3562d83 8201320: Allow PrintFailureReports to be turned off
ihse
parents: 49138
diff changeset
   445
	    $(PRINTF) "\nHint: Try searching the build log for the name of the first failed target.\n" ; \
3e9cb3562d83 8201320: Allow PrintFailureReports to be turned off
ihse
parents: 49138
diff changeset
   446
	  else \
3e9cb3562d83 8201320: Allow PrintFailureReports to be turned off
ihse
parents: 49138
diff changeset
   447
	    $(PRINTF) "\nNo indication of failed target found.\n" ; \
3e9cb3562d83 8201320: Allow PrintFailureReports to be turned off
ihse
parents: 49138
diff changeset
   448
	    $(PRINTF) "Hint: Try searching the build log for '] Error'.\n" ; \
3e9cb3562d83 8201320: Allow PrintFailureReports to be turned off
ihse
parents: 49138
diff changeset
   449
	  fi \
3e9cb3562d83 8201320: Allow PrintFailureReports to be turned off
ihse
parents: 49138
diff changeset
   450
	)
33572
b74ceb2d2d20 8141696: Improve COMPARE_BUILD
ihse
parents: 32720
diff changeset
   451
  endef
b74ceb2d2d20 8141696: Improve COMPARE_BUILD
ihse
parents: 32720
diff changeset
   452
29662
78c47f0002c3 8076060: Improve make bootstrap process
ihse
parents: 29156
diff changeset
   453
  define RotateLogFiles
35008
ef0cd710989f 8146403: Windows build can be faster
erikj
parents: 34594
diff changeset
   454
	$(RM) $(BUILD_LOG).old 2> /dev/null && \
29662
78c47f0002c3 8076060: Improve make bootstrap process
ihse
parents: 29156
diff changeset
   455
	$(MV) $(BUILD_LOG) $(BUILD_LOG).old 2> /dev/null || true
44465
26fabd8abee9 8177770: Need more precise control on build system logging
asemenyuk
parents: 44027
diff changeset
   456
	$(if $(findstring true, $(LOG_PROFILE_TIMES_FILE)), \
26fabd8abee9 8177770: Need more precise control on build system logging
asemenyuk
parents: 44027
diff changeset
   457
	  $(RM) $(BUILD_PROFILE_LOG).old 2> /dev/null && \
26fabd8abee9 8177770: Need more precise control on build system logging
asemenyuk
parents: 44027
diff changeset
   458
	  $(MV) $(BUILD_PROFILE_LOG) $(BUILD_PROFILE_LOG).old 2> /dev/null || true \
29662
78c47f0002c3 8076060: Improve make bootstrap process
ihse
parents: 29156
diff changeset
   459
	)
78c47f0002c3 8076060: Improve make bootstrap process
ihse
parents: 29156
diff changeset
   460
  endef
26116
f051bd253364 8055095: Improve "do nothing" incremental build performance after modularized source code integration
erikj
parents: 25854
diff changeset
   461
50562
3903ab54107e 8204664: PrepareFailureLogs should be done after sequential make targets
ihse
parents: 50507
diff changeset
   462
  # Failure logs are only supported for "parallel" main targets, not the
3903ab54107e 8204664: PrepareFailureLogs should be done after sequential make targets
ihse
parents: 50507
diff changeset
   463
  # (trivial) sequential make targets (such as clean and reconfigure),
3903ab54107e 8204664: PrepareFailureLogs should be done after sequential make targets
ihse
parents: 50507
diff changeset
   464
  # since the failure-logs directory creation will conflict with clean.
32344
0b288e0efcfa 8062618: Create a build failure summary at end of build log
ihse
parents: 29788
diff changeset
   465
  define PrepareFailureLogs
35008
ef0cd710989f 8146403: Windows build can be faster
erikj
parents: 34594
diff changeset
   466
	$(RM) -r $(MAKESUPPORT_OUTPUTDIR)/failure-logs 2> /dev/null && \
32344
0b288e0efcfa 8062618: Create a build failure summary at end of build log
ihse
parents: 29788
diff changeset
   467
	$(MKDIR) -p $(MAKESUPPORT_OUTPUTDIR)/failure-logs
44027
3a3050924db2 8176084: Developer-friendly run-test facility
ihse
parents: 43173
diff changeset
   468
	$(RM) $(MAKESUPPORT_OUTPUTDIR)/exit-with-error 2> /dev/null
32344
0b288e0efcfa 8062618: Create a build failure summary at end of build log
ihse
parents: 29788
diff changeset
   469
  endef
0b288e0efcfa 8062618: Create a build failure summary at end of build log
ihse
parents: 29788
diff changeset
   470
29662
78c47f0002c3 8076060: Improve make bootstrap process
ihse
parents: 29156
diff changeset
   471
  # Remove any javac server logs and port files. This
78c47f0002c3 8076060: Improve make bootstrap process
ihse
parents: 29156
diff changeset
   472
  # prevents a new make run to reuse the previous servers.
78c47f0002c3 8076060: Improve make bootstrap process
ihse
parents: 29156
diff changeset
   473
  define PrepareSmartJavac
78c47f0002c3 8076060: Improve make bootstrap process
ihse
parents: 29156
diff changeset
   474
	$(if $(SJAVAC_SERVER_DIR), \
78c47f0002c3 8076060: Improve make bootstrap process
ihse
parents: 29156
diff changeset
   475
	  $(RM) -r $(SJAVAC_SERVER_DIR) 2> /dev/null && \
78c47f0002c3 8076060: Improve make bootstrap process
ihse
parents: 29156
diff changeset
   476
	  $(MKDIR) -p $(SJAVAC_SERVER_DIR) \
78c47f0002c3 8076060: Improve make bootstrap process
ihse
parents: 29156
diff changeset
   477
	)
78c47f0002c3 8076060: Improve make bootstrap process
ihse
parents: 29156
diff changeset
   478
  endef
27560
adc258b13e2c 8049367: Modular Run-Time Images
chegar
parents: 27000
diff changeset
   479
29662
78c47f0002c3 8076060: Improve make bootstrap process
ihse
parents: 29156
diff changeset
   480
  define CleanupSmartJavac
78c47f0002c3 8076060: Improve make bootstrap process
ihse
parents: 29156
diff changeset
   481
	[ -f $(SJAVAC_SERVER_DIR)/server.port ] && $(ECHO) Stopping sjavac server && \
78c47f0002c3 8076060: Improve make bootstrap process
ihse
parents: 29156
diff changeset
   482
	    $(TOUCH) $(SJAVAC_SERVER_DIR)/server.port.stop; true
78c47f0002c3 8076060: Improve make bootstrap process
ihse
parents: 29156
diff changeset
   483
  endef
26116
f051bd253364 8055095: Improve "do nothing" incremental build performance after modularized source code integration
erikj
parents: 25854
diff changeset
   484
53683
48ff68e2fe5c 8218431: Improved platform checking in makefiles
ihse
parents: 52595
diff changeset
   485
  ifeq ($(call isBuildOs, windows), true)
35370
f9b430645a18 8148120: Incremental update from build-infra project
ihse
parents: 35008
diff changeset
   486
    # On windows we need to synchronize with the javac server to be able to
f9b430645a18 8148120: Incremental update from build-infra project
ihse
parents: 35008
diff changeset
   487
    # move or remove the build output directory. Since we have no proper
f9b430645a18 8148120: Incremental update from build-infra project
ihse
parents: 35008
diff changeset
   488
    # synchronization process, wait for a while and hope it helps. This is only
f9b430645a18 8148120: Incremental update from build-infra project
ihse
parents: 35008
diff changeset
   489
    # used by build comparisons.
f9b430645a18 8148120: Incremental update from build-infra project
ihse
parents: 35008
diff changeset
   490
    define WaitForSmartJavacFinish
f9b430645a18 8148120: Incremental update from build-infra project
ihse
parents: 35008
diff changeset
   491
	$(if $(SJAVAC_SERVER_DIR), \
f9b430645a18 8148120: Incremental update from build-infra project
ihse
parents: 35008
diff changeset
   492
	  sleep 5\
f9b430645a18 8148120: Incremental update from build-infra project
ihse
parents: 35008
diff changeset
   493
	)
f9b430645a18 8148120: Incremental update from build-infra project
ihse
parents: 35008
diff changeset
   494
    endef
f9b430645a18 8148120: Incremental update from build-infra project
ihse
parents: 35008
diff changeset
   495
  else
f9b430645a18 8148120: Incremental update from build-infra project
ihse
parents: 35008
diff changeset
   496
    define WaitForSmartJavacFinish
f9b430645a18 8148120: Incremental update from build-infra project
ihse
parents: 35008
diff changeset
   497
    endef
f9b430645a18 8148120: Incremental update from build-infra project
ihse
parents: 35008
diff changeset
   498
  endif
f9b430645a18 8148120: Incremental update from build-infra project
ihse
parents: 35008
diff changeset
   499
29662
78c47f0002c3 8076060: Improve make bootstrap process
ihse
parents: 29156
diff changeset
   500
  define StartGlobalTimer
35008
ef0cd710989f 8146403: Windows build can be faster
erikj
parents: 34594
diff changeset
   501
	$(RM) -r $(BUILDTIMESDIR) 2> /dev/null && \
ef0cd710989f 8146403: Windows build can be faster
erikj
parents: 34594
diff changeset
   502
	$(MKDIR) -p $(BUILDTIMESDIR) && \
29662
78c47f0002c3 8076060: Improve make bootstrap process
ihse
parents: 29156
diff changeset
   503
	$(call RecordStartTime,TOTAL)
78c47f0002c3 8076060: Improve make bootstrap process
ihse
parents: 29156
diff changeset
   504
  endef
27560
adc258b13e2c 8049367: Modular Run-Time Images
chegar
parents: 27000
diff changeset
   505
29662
78c47f0002c3 8076060: Improve make bootstrap process
ihse
parents: 29156
diff changeset
   506
  define StopGlobalTimer
78c47f0002c3 8076060: Improve make bootstrap process
ihse
parents: 29156
diff changeset
   507
	$(call RecordEndTime,TOTAL)
78c47f0002c3 8076060: Improve make bootstrap process
ihse
parents: 29156
diff changeset
   508
  endef
27560
adc258b13e2c 8049367: Modular Run-Time Images
chegar
parents: 27000
diff changeset
   509
29662
78c47f0002c3 8076060: Improve make bootstrap process
ihse
parents: 29156
diff changeset
   510
  # Find all build_time_* files and print their contents in a list sorted
78c47f0002c3 8076060: Improve make bootstrap process
ihse
parents: 29156
diff changeset
   511
  # on the name of the sub repository.
78c47f0002c3 8076060: Improve make bootstrap process
ihse
parents: 29156
diff changeset
   512
  define ReportBuildTimes
35008
ef0cd710989f 8146403: Windows build can be faster
erikj
parents: 34594
diff changeset
   513
	$(PRINTF) $(LOG_INFO) -- \
29662
78c47f0002c3 8076060: Improve make bootstrap process
ihse
parents: 29156
diff changeset
   514
	    "----- Build times -------\nStart %s\nEnd   %s\n%s\n%s\n-------------------------\n" \
78c47f0002c3 8076060: Improve make bootstrap process
ihse
parents: 29156
diff changeset
   515
	    "`$(CAT) $(BUILDTIMESDIR)/build_time_start_TOTAL_human_readable`" \
78c47f0002c3 8076060: Improve make bootstrap process
ihse
parents: 29156
diff changeset
   516
	    "`$(CAT) $(BUILDTIMESDIR)/build_time_end_TOTAL_human_readable`" \
78c47f0002c3 8076060: Improve make bootstrap process
ihse
parents: 29156
diff changeset
   517
	    "`$(LS) $(BUILDTIMESDIR)/build_time_diff_* | $(GREP) -v _TOTAL | \
78c47f0002c3 8076060: Improve make bootstrap process
ihse
parents: 29156
diff changeset
   518
	    $(XARGS) $(CAT) | $(SORT) -k 2`" \
35008
ef0cd710989f 8146403: Windows build can be faster
erikj
parents: 34594
diff changeset
   519
	    "`$(CAT) $(BUILDTIMESDIR)/build_time_diff_TOTAL`" \
54415
00fda51e28cf 8221764: Reduce make Init.gmk logging overhead
erikj
parents: 54382
diff changeset
   520
	    $(BUILD_LOG_PIPE_SIMPLE)
29662
78c47f0002c3 8076060: Improve make bootstrap process
ihse
parents: 29156
diff changeset
   521
  endef
27560
adc258b13e2c 8049367: Modular Run-Time Images
chegar
parents: 27000
diff changeset
   522
44465
26fabd8abee9 8177770: Need more precise control on build system logging
asemenyuk
parents: 44027
diff changeset
   523
  define ReportProfileTimes
26fabd8abee9 8177770: Need more precise control on build system logging
asemenyuk
parents: 44027
diff changeset
   524
    $(if $(findstring true, $(LOG_PROFILE_TIMES_LOG)), \
26fabd8abee9 8177770: Need more precise control on build system logging
asemenyuk
parents: 44027
diff changeset
   525
      [ ! -f $(BUILD_PROFILE_LOG) ] || \
26fabd8abee9 8177770: Need more precise control on build system logging
asemenyuk
parents: 44027
diff changeset
   526
      { $(ECHO) Begin $(notdir $(BUILD_PROFILE_LOG)) && \
26fabd8abee9 8177770: Need more precise control on build system logging
asemenyuk
parents: 44027
diff changeset
   527
        $(CAT) $(BUILD_PROFILE_LOG) && \
26fabd8abee9 8177770: Need more precise control on build system logging
asemenyuk
parents: 44027
diff changeset
   528
        $(ECHO) End $(notdir $(BUILD_PROFILE_LOG)); \
26fabd8abee9 8177770: Need more precise control on build system logging
asemenyuk
parents: 44027
diff changeset
   529
      } \
54415
00fda51e28cf 8221764: Reduce make Init.gmk logging overhead
erikj
parents: 54382
diff changeset
   530
      $(BUILD_LOG_PIPE_SIMPLE)
44465
26fabd8abee9 8177770: Need more precise control on build system logging
asemenyuk
parents: 44027
diff changeset
   531
    )
26fabd8abee9 8177770: Need more precise control on build system logging
asemenyuk
parents: 44027
diff changeset
   532
  endef
26fabd8abee9 8177770: Need more precise control on build system logging
asemenyuk
parents: 44027
diff changeset
   533
29662
78c47f0002c3 8076060: Improve make bootstrap process
ihse
parents: 29156
diff changeset
   534
endif # HAS_SPEC
27560
adc258b13e2c 8049367: Modular Run-Time Images
chegar
parents: 27000
diff changeset
   535
49568
3e9cb3562d83 8201320: Allow PrintFailureReports to be turned off
ihse
parents: 49138
diff changeset
   536
# Look for a given option in the LOG variable, and if found, set a variable
3e9cb3562d83 8201320: Allow PrintFailureReports to be turned off
ihse
parents: 49138
diff changeset
   537
# and remove the option from the LOG variable
3e9cb3562d83 8201320: Allow PrintFailureReports to be turned off
ihse
parents: 49138
diff changeset
   538
# $1: The option to look for
3e9cb3562d83 8201320: Allow PrintFailureReports to be turned off
ihse
parents: 49138
diff changeset
   539
# $2: The variable to set to "true" if the option is found
3e9cb3562d83 8201320: Allow PrintFailureReports to be turned off
ihse
parents: 49138
diff changeset
   540
define ParseLogOption
3e9cb3562d83 8201320: Allow PrintFailureReports to be turned off
ihse
parents: 49138
diff changeset
   541
  ifneq ($$(findstring $1, $$(LOG)),)
3e9cb3562d83 8201320: Allow PrintFailureReports to be turned off
ihse
parents: 49138
diff changeset
   542
    override $2 := true
3e9cb3562d83 8201320: Allow PrintFailureReports to be turned off
ihse
parents: 49138
diff changeset
   543
    # First try to remove ",<option>" if it exists, otherwise just remove "<option>"
3e9cb3562d83 8201320: Allow PrintFailureReports to be turned off
ihse
parents: 49138
diff changeset
   544
    LOG_STRIPPED := $$(subst $1,, $$(subst $$(COMMA)$$(strip $1),, $$(LOG)))
3e9cb3562d83 8201320: Allow PrintFailureReports to be turned off
ihse
parents: 49138
diff changeset
   545
    # We might have ended up with a leading comma. Remove it. Need override
3e9cb3562d83 8201320: Allow PrintFailureReports to be turned off
ihse
parents: 49138
diff changeset
   546
    # since LOG is set from the command line.
3e9cb3562d83 8201320: Allow PrintFailureReports to be turned off
ihse
parents: 49138
diff changeset
   547
    override LOG := $$(strip $$(patsubst $$(COMMA)%, %, $$(LOG_STRIPPED)))
3e9cb3562d83 8201320: Allow PrintFailureReports to be turned off
ihse
parents: 49138
diff changeset
   548
  endif
3e9cb3562d83 8201320: Allow PrintFailureReports to be turned off
ihse
parents: 49138
diff changeset
   549
endef
3e9cb3562d83 8201320: Allow PrintFailureReports to be turned off
ihse
parents: 49138
diff changeset
   550
3e9cb3562d83 8201320: Allow PrintFailureReports to be turned off
ihse
parents: 49138
diff changeset
   551
# Look for a given option with an assignment in the LOG variable, and if found,
3e9cb3562d83 8201320: Allow PrintFailureReports to be turned off
ihse
parents: 49138
diff changeset
   552
# set a variable to that value and remove the option from the LOG variable
3e9cb3562d83 8201320: Allow PrintFailureReports to be turned off
ihse
parents: 49138
diff changeset
   553
# $1: The option to look for
3e9cb3562d83 8201320: Allow PrintFailureReports to be turned off
ihse
parents: 49138
diff changeset
   554
# $2: The variable to set to the value of the option, if found
3e9cb3562d83 8201320: Allow PrintFailureReports to be turned off
ihse
parents: 49138
diff changeset
   555
define ParseLogValue
3e9cb3562d83 8201320: Allow PrintFailureReports to be turned off
ihse
parents: 49138
diff changeset
   556
  ifneq ($$(findstring $1=, $$(LOG)),)
3e9cb3562d83 8201320: Allow PrintFailureReports to be turned off
ihse
parents: 49138
diff changeset
   557
    # Make words of out comma-separated list and find the one with opt=val
3e9cb3562d83 8201320: Allow PrintFailureReports to be turned off
ihse
parents: 49138
diff changeset
   558
    value := $$(strip $$(subst $$(strip $1)=,, $$(filter $$(strip $1)=%, $$(subst $$(COMMA), , $$(LOG)))))
3e9cb3562d83 8201320: Allow PrintFailureReports to be turned off
ihse
parents: 49138
diff changeset
   559
    override $2 := $$(value)
3e9cb3562d83 8201320: Allow PrintFailureReports to be turned off
ihse
parents: 49138
diff changeset
   560
    # First try to remove ",<option>" if it exists, otherwise just remove "<option>"
3e9cb3562d83 8201320: Allow PrintFailureReports to be turned off
ihse
parents: 49138
diff changeset
   561
    LOG_STRIPPED := $$(subst $$(strip $1)=$$(value),, \
3e9cb3562d83 8201320: Allow PrintFailureReports to be turned off
ihse
parents: 49138
diff changeset
   562
        $$(subst $$(COMMA)$$(strip $1)=$$(value),, $$(LOG)))
3e9cb3562d83 8201320: Allow PrintFailureReports to be turned off
ihse
parents: 49138
diff changeset
   563
    # We might have ended up with a leading comma. Remove it. Need override
3e9cb3562d83 8201320: Allow PrintFailureReports to be turned off
ihse
parents: 49138
diff changeset
   564
    # since LOG is set from the command line.
3e9cb3562d83 8201320: Allow PrintFailureReports to be turned off
ihse
parents: 49138
diff changeset
   565
    override LOG := $$(strip $$(patsubst $$(COMMA)%, %, $$(LOG_STRIPPED)))
3e9cb3562d83 8201320: Allow PrintFailureReports to be turned off
ihse
parents: 49138
diff changeset
   566
  endif
3e9cb3562d83 8201320: Allow PrintFailureReports to be turned off
ihse
parents: 49138
diff changeset
   567
endef
3e9cb3562d83 8201320: Allow PrintFailureReports to be turned off
ihse
parents: 49138
diff changeset
   568
3e9cb3562d83 8201320: Allow PrintFailureReports to be turned off
ihse
parents: 49138
diff changeset
   569
3e9cb3562d83 8201320: Allow PrintFailureReports to be turned off
ihse
parents: 49138
diff changeset
   570
define ParseLogLevel
3e9cb3562d83 8201320: Allow PrintFailureReports to be turned off
ihse
parents: 49138
diff changeset
   571
  # Catch old-style VERBOSE= command lines.
3e9cb3562d83 8201320: Allow PrintFailureReports to be turned off
ihse
parents: 49138
diff changeset
   572
  ifneq ($$(origin VERBOSE), undefined)
3e9cb3562d83 8201320: Allow PrintFailureReports to be turned off
ihse
parents: 49138
diff changeset
   573
    $$(info Error: VERBOSE is deprecated. Use LOG=<warn|info|debug|trace> instead.)
3e9cb3562d83 8201320: Allow PrintFailureReports to be turned off
ihse
parents: 49138
diff changeset
   574
    $$(error Cannot continue)
3e9cb3562d83 8201320: Allow PrintFailureReports to be turned off
ihse
parents: 49138
diff changeset
   575
  endif
3e9cb3562d83 8201320: Allow PrintFailureReports to be turned off
ihse
parents: 49138
diff changeset
   576
3e9cb3562d83 8201320: Allow PrintFailureReports to be turned off
ihse
parents: 49138
diff changeset
   577
  # Setup logging according to LOG
3e9cb3562d83 8201320: Allow PrintFailureReports to be turned off
ihse
parents: 49138
diff changeset
   578
3e9cb3562d83 8201320: Allow PrintFailureReports to be turned off
ihse
parents: 49138
diff changeset
   579
  # If "nofile" is present, do not log to a file
3e9cb3562d83 8201320: Allow PrintFailureReports to be turned off
ihse
parents: 49138
diff changeset
   580
  $$(eval $$(call ParseLogOption, nofile, LOG_NOFILE))
3e9cb3562d83 8201320: Allow PrintFailureReports to be turned off
ihse
parents: 49138
diff changeset
   581
3e9cb3562d83 8201320: Allow PrintFailureReports to be turned off
ihse
parents: 49138
diff changeset
   582
  # If "cmdline" is present, print all executes "important" command lines.
3e9cb3562d83 8201320: Allow PrintFailureReports to be turned off
ihse
parents: 49138
diff changeset
   583
  $$(eval $$(call ParseLogOption, cmdlines, LOG_CMDLINES))
3e9cb3562d83 8201320: Allow PrintFailureReports to be turned off
ihse
parents: 49138
diff changeset
   584
3e9cb3562d83 8201320: Allow PrintFailureReports to be turned off
ihse
parents: 49138
diff changeset
   585
  # If "report" is present, use non-standard reporting options at build failure.
3e9cb3562d83 8201320: Allow PrintFailureReports to be turned off
ihse
parents: 49138
diff changeset
   586
  $$(eval $$(call ParseLogValue, report, LOG_REPORT))
3e9cb3562d83 8201320: Allow PrintFailureReports to be turned off
ihse
parents: 49138
diff changeset
   587
  ifneq ($$(LOG_REPORT), )
3e9cb3562d83 8201320: Allow PrintFailureReports to be turned off
ihse
parents: 49138
diff changeset
   588
    ifeq ($$(filter $$(LOG_REPORT), none all default), )
3e9cb3562d83 8201320: Allow PrintFailureReports to be turned off
ihse
parents: 49138
diff changeset
   589
      $$(info Error: LOG=report has invalid value: $$(LOG_REPORT).)
3e9cb3562d83 8201320: Allow PrintFailureReports to be turned off
ihse
parents: 49138
diff changeset
   590
      $$(info Valid values: LOG=report=<none>|<all>|<default>)
3e9cb3562d83 8201320: Allow PrintFailureReports to be turned off
ihse
parents: 49138
diff changeset
   591
      $$(error Cannot continue)
3e9cb3562d83 8201320: Allow PrintFailureReports to be turned off
ihse
parents: 49138
diff changeset
   592
    endif
3e9cb3562d83 8201320: Allow PrintFailureReports to be turned off
ihse
parents: 49138
diff changeset
   593
  endif
3e9cb3562d83 8201320: Allow PrintFailureReports to be turned off
ihse
parents: 49138
diff changeset
   594
3e9cb3562d83 8201320: Allow PrintFailureReports to be turned off
ihse
parents: 49138
diff changeset
   595
  # If "profile-to-log" is present, write shell times in build log
3e9cb3562d83 8201320: Allow PrintFailureReports to be turned off
ihse
parents: 49138
diff changeset
   596
  $$(eval $$(call ParseLogOption, profile-to-log, LOG_PROFILE_TIMES_LOG))
3e9cb3562d83 8201320: Allow PrintFailureReports to be turned off
ihse
parents: 49138
diff changeset
   597
3e9cb3562d83 8201320: Allow PrintFailureReports to be turned off
ihse
parents: 49138
diff changeset
   598
  # If "profile" is present, write shell times in separate log file
3e9cb3562d83 8201320: Allow PrintFailureReports to be turned off
ihse
parents: 49138
diff changeset
   599
  # IMPORTANT: $(ParseLogOption profile-to-log) should go first. Otherwise
3e9cb3562d83 8201320: Allow PrintFailureReports to be turned off
ihse
parents: 49138
diff changeset
   600
  # parsing of 'LOG=debug,profile-to-log,nofile' ends up in the following error:
3e9cb3562d83 8201320: Allow PrintFailureReports to be turned off
ihse
parents: 49138
diff changeset
   601
  # Error: LOG contains unknown option or log level: debug-to-log.
3e9cb3562d83 8201320: Allow PrintFailureReports to be turned off
ihse
parents: 49138
diff changeset
   602
  $$(eval $$(call ParseLogOption, profile, LOG_PROFILE_TIMES_FILE))
3e9cb3562d83 8201320: Allow PrintFailureReports to be turned off
ihse
parents: 49138
diff changeset
   603
3e9cb3562d83 8201320: Allow PrintFailureReports to be turned off
ihse
parents: 49138
diff changeset
   604
  # Treat LOG=profile-to-log as if it were LOG=profile,profile-to-log
3e9cb3562d83 8201320: Allow PrintFailureReports to be turned off
ihse
parents: 49138
diff changeset
   605
  LOG_PROFILE_TIMES_FILE := $$(firstword $$(LOG_PROFILE_TIMES_FILE) $$(LOG_PROFILE_TIMES_LOG))
3e9cb3562d83 8201320: Allow PrintFailureReports to be turned off
ihse
parents: 49138
diff changeset
   606
3e9cb3562d83 8201320: Allow PrintFailureReports to be turned off
ihse
parents: 49138
diff changeset
   607
  override LOG_LEVEL := $$(LOG)
3e9cb3562d83 8201320: Allow PrintFailureReports to be turned off
ihse
parents: 49138
diff changeset
   608
3e9cb3562d83 8201320: Allow PrintFailureReports to be turned off
ihse
parents: 49138
diff changeset
   609
  ifeq ($$(LOG_LEVEL),)
3e9cb3562d83 8201320: Allow PrintFailureReports to be turned off
ihse
parents: 49138
diff changeset
   610
    # Set LOG to "warn" as default if not set
3e9cb3562d83 8201320: Allow PrintFailureReports to be turned off
ihse
parents: 49138
diff changeset
   611
    override LOG_LEVEL := warn
3e9cb3562d83 8201320: Allow PrintFailureReports to be turned off
ihse
parents: 49138
diff changeset
   612
  endif
3e9cb3562d83 8201320: Allow PrintFailureReports to be turned off
ihse
parents: 49138
diff changeset
   613
3e9cb3562d83 8201320: Allow PrintFailureReports to be turned off
ihse
parents: 49138
diff changeset
   614
  ifeq ($$(LOG_LEVEL), warn)
3e9cb3562d83 8201320: Allow PrintFailureReports to be turned off
ihse
parents: 49138
diff changeset
   615
    override MAKE_LOG_FLAGS := -s
3e9cb3562d83 8201320: Allow PrintFailureReports to be turned off
ihse
parents: 49138
diff changeset
   616
  else ifeq ($$(LOG_LEVEL), info)
3e9cb3562d83 8201320: Allow PrintFailureReports to be turned off
ihse
parents: 49138
diff changeset
   617
    override MAKE_LOG_FLAGS := -s
3e9cb3562d83 8201320: Allow PrintFailureReports to be turned off
ihse
parents: 49138
diff changeset
   618
  else ifeq ($$(LOG_LEVEL), debug)
3e9cb3562d83 8201320: Allow PrintFailureReports to be turned off
ihse
parents: 49138
diff changeset
   619
    override MAKE_LOG_FLAGS :=
3e9cb3562d83 8201320: Allow PrintFailureReports to be turned off
ihse
parents: 49138
diff changeset
   620
  else ifeq ($$(LOG_LEVEL), trace)
3e9cb3562d83 8201320: Allow PrintFailureReports to be turned off
ihse
parents: 49138
diff changeset
   621
    override MAKE_LOG_FLAGS :=
3e9cb3562d83 8201320: Allow PrintFailureReports to be turned off
ihse
parents: 49138
diff changeset
   622
  else
3e9cb3562d83 8201320: Allow PrintFailureReports to be turned off
ihse
parents: 49138
diff changeset
   623
    $$(info Error: LOG contains unknown option or log level: $$(LOG).)
3e9cb3562d83 8201320: Allow PrintFailureReports to be turned off
ihse
parents: 49138
diff changeset
   624
    $$(info LOG can be <level>[,<opt>[...]] where <opt> is nofile | cmdlines | profile | profile-to-log)
3e9cb3562d83 8201320: Allow PrintFailureReports to be turned off
ihse
parents: 49138
diff changeset
   625
    $$(info and <level> is warn | info | debug | trace)
3e9cb3562d83 8201320: Allow PrintFailureReports to be turned off
ihse
parents: 49138
diff changeset
   626
    $$(error Cannot continue)
3e9cb3562d83 8201320: Allow PrintFailureReports to be turned off
ihse
parents: 49138
diff changeset
   627
  endif
3e9cb3562d83 8201320: Allow PrintFailureReports to be turned off
ihse
parents: 49138
diff changeset
   628
endef
3e9cb3562d83 8201320: Allow PrintFailureReports to be turned off
ihse
parents: 49138
diff changeset
   629
44465
26fabd8abee9 8177770: Need more precise control on build system logging
asemenyuk
parents: 44027
diff changeset
   630
MAKE_LOG_VARS = $(foreach v, \
49568
3e9cb3562d83 8201320: Allow PrintFailureReports to be turned off
ihse
parents: 49138
diff changeset
   631
    LOG_LEVEL LOG_NOFILE LOG_CMDLINES LOG_REPORT LOG_PROFILE_TIMES_LOG \
3e9cb3562d83 8201320: Allow PrintFailureReports to be turned off
ihse
parents: 49138
diff changeset
   632
    LOG_PROFILE_TIMES_FILE, \
44465
26fabd8abee9 8177770: Need more precise control on build system logging
asemenyuk
parents: 44027
diff changeset
   633
    $v=$($v) \
26fabd8abee9 8177770: Need more precise control on build system logging
asemenyuk
parents: 44027
diff changeset
   634
)
26fabd8abee9 8177770: Need more precise control on build system logging
asemenyuk
parents: 44027
diff changeset
   635
29662
78c47f0002c3 8076060: Improve make bootstrap process
ihse
parents: 29156
diff changeset
   636
endif # _INITSUPPORT_GMK