#
# Copyright (c) 2011, 2025, Oracle and/or its affiliates. All rights reserved.
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
#
# This code is free software; you can redistribute it and/or modify it
# under the terms of the GNU General Public License version 2 only, as
# published by the Free Software Foundation.  Oracle designates this
# particular file as subject to the "Classpath" exception as provided
# by Oracle in the LICENSE file that accompanied this code.
#
# This code is distributed in the hope that it will be useful, but WITHOUT
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
# version 2 for more details (a copy is included in the LICENSE file that
# accompanied this code).
#
# You should have received a copy of the GNU General Public License version
# 2 along with this work; if not, write to the Free Software Foundation,
# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
#
# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
# or visit www.oracle.com if you need additional information or have any
# questions.
#

include MakeIncludeStart.gmk
ifeq ($(INCLUDE), true)

################################################################################
# Functions for dealing with reading and writing from makefiles. Prior to GNU
# Make 4.0, this was tricky business.
################################################################################

################################################################################
# ListPathsSafely can be used to print command parameters to a file. This is
# typically done if the command line length risk being too long for the
# OS/shell. In later make versions, the file function can be used for this
# purpose. For earlier versions, a more complex implementation is provided.
#
# The function ListPathsSafely can be called either directly or, more commonly
# from a recipe line. If called from a recipe, it will be executed in the
# evaluation phase of that recipe, which means that it will write to the file
# before any other line in the recipe has been run.
ifeq ($(HAS_FILE_FUNCTION), true)
  # Param 1 - Name of variable containing paths/arguments to output
  # Param 2 - File to print to
  # Param 3 - Set to true to append to file instead of overwriting
  define ListPathsSafely
    $$(call MakeDir, $$(dir $$(strip $2)))
    $$(file $$(if $$(filter true, $$(strip $3)),>>,>) \
        $$(strip $2),$$(subst $$(SPACE),$$(NEWLINE),$$(strip $$($$(strip $1)))))
  endef

else # HAS_FILE_FUNCTION = false

  $(eval compress_paths = \
      $(strip $(shell $(CAT) $(TOPDIR)/make/common/support/ListPathsSafely-pre-compress.incl)))
  compress_paths += \
      $(subst $(TOPDIR),X97, \
      $(subst $(OUTPUTDIR),X98, \
      $(subst X,X00, \
      $(subst $(SPACE),\n,$(strip $1)))))
  $(eval compress_paths += \
      $(strip $(shell $(CAT) $(TOPDIR)/make/common/support/ListPathsSafely-post-compress.incl)))

  decompress_paths = $(SED) -f $(TOPDIR)/make/common/support/ListPathsSafely-uncompress.sed \
      -e 's|X99|\\n|g' \
      -e 's|X98|$(OUTPUTDIR)|g' -e 's|X97|$(TOPDIR)|g' \
      -e 's|X00|X|g'

  ListPathsSafely_IfPrintf = \
      $(if $(word $3, $($(strip $1))), \
          $(shell $(PRINTF) -- "$(strip $(call EscapeDollar, \
              $(call compress_paths, $(wordlist $3, $4, $($(strip $1))))))\n" \
              | $(decompress_paths) >> $2))

  # Param 1 - Name of variable containing paths/arguments to output
  # Param 2 - File to print to
  # Param 3 - Set to true to append to file instead of overwriting
  define ListPathsSafely
    ifneq ($$(word 30001, $$($$(strip $1))), )
      $$(error Cannot list safely more than 30000 paths. $1 has $$(words $$($$(strip $1))) paths!)
    endif
    $$(call MakeDir, $$(dir $2))
    ifneq ($$(strip $3), true)
      $$(shell $(RM) $$(strip $2))
    endif

    $$(call ListPathsSafely_IfPrintf,$1,$2,1,250)
    $$(call ListPathsSafely_IfPrintf,$1,$2,251,500)
    $$(call ListPathsSafely_IfPrintf,$1,$2,501,750)
    $$(call ListPathsSafely_IfPrintf,$1,$2,751,1000)

    $$(call ListPathsSafely_IfPrintf,$1,$2,1001,1250)
    $$(call ListPathsSafely_IfPrintf,$1,$2,1251,1500)
    $$(call ListPathsSafely_IfPrintf,$1,$2,1501,1750)
    $$(call ListPathsSafely_IfPrintf,$1,$2,1751,2000)

    $$(call ListPathsSafely_IfPrintf,$1,$2,2001,2250)
    $$(call ListPathsSafely_IfPrintf,$1,$2,2251,2500)
    $$(call ListPathsSafely_IfPrintf,$1,$2,2501,2750)
    $$(call ListPathsSafely_IfPrintf,$1,$2,2751,3000)

    $$(call ListPathsSafely_IfPrintf,$1,$2,3001,3250)
    $$(call ListPathsSafely_IfPrintf,$1,$2,3251,3500)
    $$(call ListPathsSafely_IfPrintf,$1,$2,3501,3750)
    $$(call ListPathsSafely_IfPrintf,$1,$2,3751,4000)

    $$(call ListPathsSafely_IfPrintf,$1,$2,4001,4250)
    $$(call ListPathsSafely_IfPrintf,$1,$2,4251,4500)
    $$(call ListPathsSafely_IfPrintf,$1,$2,4501,4750)
    $$(call ListPathsSafely_IfPrintf,$1,$2,4751,5000)

    $$(call ListPathsSafely_IfPrintf,$1,$2,5001,5250)
    $$(call ListPathsSafely_IfPrintf,$1,$2,5251,5500)
    $$(call ListPathsSafely_IfPrintf,$1,$2,5501,5750)
    $$(call ListPathsSafely_IfPrintf,$1,$2,5751,6000)

    $$(call ListPathsSafely_IfPrintf,$1,$2,6001,6250)
    $$(call ListPathsSafely_IfPrintf,$1,$2,6251,6500)
    $$(call ListPathsSafely_IfPrintf,$1,$2,6501,6750)
    $$(call ListPathsSafely_IfPrintf,$1,$2,6751,7000)

    $$(call ListPathsSafely_IfPrintf,$1,$2,7001,7250)
    $$(call ListPathsSafely_IfPrintf,$1,$2,7251,7500)
    $$(call ListPathsSafely_IfPrintf,$1,$2,7501,7750)
    $$(call ListPathsSafely_IfPrintf,$1,$2,7751,8000)

    $$(call ListPathsSafely_IfPrintf,$1,$2,8001,8250)
    $$(call ListPathsSafely_IfPrintf,$1,$2,8251,8500)
    $$(call ListPathsSafely_IfPrintf,$1,$2,8501,8750)
    $$(call ListPathsSafely_IfPrintf,$1,$2,8751,9000)

    $$(call ListPathsSafely_IfPrintf,$1,$2,9001,9250)
    $$(call ListPathsSafely_IfPrintf,$1,$2,9251,9500)
    $$(call ListPathsSafely_IfPrintf,$1,$2,9501,9750)
    $$(call ListPathsSafely_IfPrintf,$1,$2,9751,10000)

    $$(call ListPathsSafely_IfPrintf,$1,$2,10001,10250)
    $$(call ListPathsSafely_IfPrintf,$1,$2,10251,10500)
    $$(call ListPathsSafely_IfPrintf,$1,$2,10501,10750)
    $$(call ListPathsSafely_IfPrintf,$1,$2,10751,11000)

    $$(call ListPathsSafely_IfPrintf,$1,$2,11001,11250)
    $$(call ListPathsSafely_IfPrintf,$1,$2,11251,11500)
    $$(call ListPathsSafely_IfPrintf,$1,$2,11501,11750)
    $$(call ListPathsSafely_IfPrintf,$1,$2,11751,12000)

    $$(call ListPathsSafely_IfPrintf,$1,$2,12001,12250)
    $$(call ListPathsSafely_IfPrintf,$1,$2,12251,12500)
    $$(call ListPathsSafely_IfPrintf,$1,$2,12501,12750)
    $$(call ListPathsSafely_IfPrintf,$1,$2,12751,13000)

    $$(call ListPathsSafely_IfPrintf,$1,$2,13001,13250)
    $$(call ListPathsSafely_IfPrintf,$1,$2,13251,13500)
    $$(call ListPathsSafely_IfPrintf,$1,$2,13501,13750)
    $$(call ListPathsSafely_IfPrintf,$1,$2,13751,14000)

    $$(call ListPathsSafely_IfPrintf,$1,$2,14001,14250)
    $$(call ListPathsSafely_IfPrintf,$1,$2,14251,14500)
    $$(call ListPathsSafely_IfPrintf,$1,$2,14501,14750)
    $$(call ListPathsSafely_IfPrintf,$1,$2,14751,15000)

    $$(call ListPathsSafely_IfPrintf,$1,$2,15001,15250)
    $$(call ListPathsSafely_IfPrintf,$1,$2,15251,15500)
    $$(call ListPathsSafely_IfPrintf,$1,$2,15501,15750)
    $$(call ListPathsSafely_IfPrintf,$1,$2,15751,16000)

    $$(call ListPathsSafely_IfPrintf,$1,$2,16001,16250)
    $$(call ListPathsSafely_IfPrintf,$1,$2,16251,16500)
    $$(call ListPathsSafely_IfPrintf,$1,$2,16501,16750)
    $$(call ListPathsSafely_IfPrintf,$1,$2,16751,17000)

    $$(call ListPathsSafely_IfPrintf,$1,$2,17001,17250)
    $$(call ListPathsSafely_IfPrintf,$1,$2,17251,17500)
    $$(call ListPathsSafely_IfPrintf,$1,$2,17501,17750)
    $$(call ListPathsSafely_IfPrintf,$1,$2,17751,18000)

    $$(call ListPathsSafely_IfPrintf,$1,$2,18001,18250)
    $$(call ListPathsSafely_IfPrintf,$1,$2,18251,18500)
    $$(call ListPathsSafely_IfPrintf,$1,$2,18501,18750)
    $$(call ListPathsSafely_IfPrintf,$1,$2,18751,19000)

    $$(call ListPathsSafely_IfPrintf,$1,$2,19001,19250)
    $$(call ListPathsSafely_IfPrintf,$1,$2,19251,19500)
    $$(call ListPathsSafely_IfPrintf,$1,$2,19501,19750)
    $$(call ListPathsSafely_IfPrintf,$1,$2,19751,20000)

    $$(call ListPathsSafely_IfPrintf,$1,$2,20001,20250)
    $$(call ListPathsSafely_IfPrintf,$1,$2,20251,20500)
    $$(call ListPathsSafely_IfPrintf,$1,$2,20501,20750)
    $$(call ListPathsSafely_IfPrintf,$1,$2,20751,21000)

    $$(call ListPathsSafely_IfPrintf,$1,$2,21001,21250)
    $$(call ListPathsSafely_IfPrintf,$1,$2,21251,21500)
    $$(call ListPathsSafely_IfPrintf,$1,$2,21501,21750)
    $$(call ListPathsSafely_IfPrintf,$1,$2,21751,22000)

    $$(call ListPathsSafely_IfPrintf,$1,$2,22001,22250)
    $$(call ListPathsSafely_IfPrintf,$1,$2,22251,22500)
    $$(call ListPathsSafely_IfPrintf,$1,$2,22501,22750)
    $$(call ListPathsSafely_IfPrintf,$1,$2,22751,23000)

    $$(call ListPathsSafely_IfPrintf,$1,$2,23001,23250)
    $$(call ListPathsSafely_IfPrintf,$1,$2,23251,23500)
    $$(call ListPathsSafely_IfPrintf,$1,$2,23501,23750)
    $$(call ListPathsSafely_IfPrintf,$1,$2,23751,24000)

    $$(call ListPathsSafely_IfPrintf,$1,$2,24001,24250)
    $$(call ListPathsSafely_IfPrintf,$1,$2,24251,24500)
    $$(call ListPathsSafely_IfPrintf,$1,$2,24501,24750)
    $$(call ListPathsSafely_IfPrintf,$1,$2,24751,25000)

    $$(call ListPathsSafely_IfPrintf,$1,$2,25001,25250)
    $$(call ListPathsSafely_IfPrintf,$1,$2,25251,25500)
    $$(call ListPathsSafely_IfPrintf,$1,$2,25501,25750)
    $$(call ListPathsSafely_IfPrintf,$1,$2,25751,26000)

    $$(call ListPathsSafely_IfPrintf,$1,$2,26001,26250)
    $$(call ListPathsSafely_IfPrintf,$1,$2,26251,26500)
    $$(call ListPathsSafely_IfPrintf,$1,$2,26501,26750)
    $$(call ListPathsSafely_IfPrintf,$1,$2,26751,27000)

    $$(call ListPathsSafely_IfPrintf,$1,$2,27001,27250)
    $$(call ListPathsSafely_IfPrintf,$1,$2,27251,27500)
    $$(call ListPathsSafely_IfPrintf,$1,$2,27501,27750)
    $$(call ListPathsSafely_IfPrintf,$1,$2,27751,28000)

    $$(call ListPathsSafely_IfPrintf,$1,$2,28001,28250)
    $$(call ListPathsSafely_IfPrintf,$1,$2,28251,28500)
    $$(call ListPathsSafely_IfPrintf,$1,$2,28501,28750)
    $$(call ListPathsSafely_IfPrintf,$1,$2,28751,29000)

    $$(call ListPathsSafely_IfPrintf,$1,$2,29001,29250)
    $$(call ListPathsSafely_IfPrintf,$1,$2,29251,29500)
    $$(call ListPathsSafely_IfPrintf,$1,$2,29501,29750)
    $$(call ListPathsSafely_IfPrintf,$1,$2,29751,30000)
  endef
endif # HAS_FILE_FUNCTION

################################################################################

endif # include guard
include MakeIncludeEnd.gmk
