mirror of
https://github.com/ARM-software/arm-trusted-firmware.git
synced 2025-04-16 09:34:18 +00:00

CMD.exe limits prompts to 8191 characters [1], unfortunately our command line lengths when building with make get really long and in certain instances exceed this limit. Get around this by passing options to the compiler and linker via the response file mechanism. [1] https://learn.microsoft.com/en-us/troubleshoot/windows-client/shell-experience/command-line-string-limitation Change-Id: I6fee83c5892542f887daf25227fcb595a36f26b9 Signed-off-by: Harrison Mutai <harrison.mutai@arm.com>
92 lines
2.9 KiB
Makefile
92 lines
2.9 KiB
Makefile
#
|
|
# Copyright (c) 2016-2023, Arm Limited and Contributors. All rights reserved.
|
|
#
|
|
# SPDX-License-Identifier: BSD-3-Clause
|
|
#
|
|
|
|
# OS specific parts for builds in a Windows_NT environment. The
|
|
# environment variable OS is set to Windows_NT on all modern Windows platforms
|
|
|
|
# Include generic windows command definitions.
|
|
|
|
ifndef WINDOWS_MK
|
|
WINDOWS_MK := $(lastword $(MAKEFILE_LIST))
|
|
|
|
ECHO_BLANK_LINE := @cmd /c echo.
|
|
ECHO_QUIET := @rem
|
|
DIR_DELIM := $(strip \)
|
|
BIN_EXT := .exe
|
|
PATH_SEP := ;
|
|
|
|
# For some Windows native commands there is a problem with the directory delimiter.
|
|
# Make uses / (slash) and the commands expect \ (backslash)
|
|
# We have to provide a means of translating these, so we define local functions.
|
|
|
|
# ${1} is the file to be copied.
|
|
# ${2} is the destination file name.
|
|
define SHELL_COPY
|
|
$(eval tmp_from_file:=$(subst /,\,${1}))
|
|
$(eval tmp_to_file:=$(subst /,\,${2}))
|
|
copy "${tmp_from_file}" "${tmp_to_file}"
|
|
endef
|
|
|
|
# ${1} is the directory to be copied.
|
|
# ${2} is the destination directory path.
|
|
define SHELL_COPY_TREE
|
|
$(eval tmp_from_dir:=$(subst /,\,${1}))
|
|
$(eval tmp_to_dir:=$(subst /,\,${2}))
|
|
xcopy /HIVE "${tmp_from_dir}" "${tmp_to_dir}"
|
|
endef
|
|
|
|
# ${1} is the file to be deleted.
|
|
define SHELL_DELETE
|
|
$(eval tmp_del_file:=$(subst /,\,${*}))
|
|
-@if exist $(tmp_del_file) del /Q $(tmp_del_file)
|
|
endef
|
|
|
|
# ${1} is a space delimited list of files to be deleted.
|
|
define SHELL_DELETE_ALL
|
|
$(eval $(foreach filename,$(wildcard ${1}),$(call DELETE_IF_THERE,${filename})))
|
|
endef
|
|
|
|
# ${1} is the directory to be generated.
|
|
# ${2} is optional, and allows prerequisites to be specified.
|
|
# Do nothing if $1 == $2, to ignore self dependencies.
|
|
define MAKE_PREREQ_DIR
|
|
ifneq (${1},${2})
|
|
|
|
${1} : ${2}
|
|
$(eval tmp_dir:=$(subst /,\,${1}))
|
|
-@if not exist "$(tmp_dir)" mkdir "${tmp_dir}"
|
|
|
|
endif
|
|
endef
|
|
|
|
# ${1} is the directory to be removed.
|
|
define SHELL_REMOVE_DIR
|
|
$(eval tmp_dir:=$(subst /,\,${1}))
|
|
-@if exist "$(tmp_dir)" rd /Q /S "$(tmp_dir)"
|
|
endef
|
|
|
|
endif
|
|
|
|
# Because git is not available from CMD.EXE, we need to avoid
|
|
# the BUILD_STRING generation which uses git.
|
|
# For now we use "development build".
|
|
# This can be overridden from the command line or environment.
|
|
BUILD_STRING ?= development build
|
|
|
|
# The DOS echo shell command does not strip ' characters from the command
|
|
# parameters before printing. We therefore use an alternative method invoked
|
|
# by defining the MAKE_BUILD_STRINGS macro.
|
|
BUILT_TIME_DATE_STRING = const char build_message[] = "Built : "${BUILD_MESSAGE_TIMESTAMP};
|
|
VERSION_STRING_MESSAGE = const char version_string[] = "${VERSION_STRING}";
|
|
VERSION_MESSAGE = const char version[] = "${VERSION}";
|
|
define MAKE_BUILD_STRINGS
|
|
$$(file >$1.in,$$(TF_CFLAGS) $$(CFLAGS))
|
|
@echo $$(BUILT_TIME_DATE_STRING) $$(VERSION_STRING_MESSAGE) $$(VERSION_MESSAGE) | \
|
|
$$(CC) @$1.in -x c -c - -o $1
|
|
endef
|
|
|
|
MSVC_NMAKE := nmake.exe
|
|
|