8136777: Introduce bundle targets
Reviewed-by: tbell, ihse
This commit is contained in:
parent
69cc0c7ebe
commit
251735466a
@ -484,6 +484,8 @@ AC_DEFUN_ONCE([BASIC_SETUP_FUNDAMENTAL_TOOLS],
|
||||
BASIC_REQUIRE_PROGS(FILE, file)
|
||||
BASIC_REQUIRE_PROGS(FIND, find)
|
||||
BASIC_REQUIRE_PROGS(HEAD, head)
|
||||
BASIC_REQUIRE_PROGS(GUNZIP, gunzip)
|
||||
BASIC_REQUIRE_PROGS(GZIP, pigz gzip)
|
||||
BASIC_REQUIRE_PROGS(LN, ln)
|
||||
BASIC_REQUIRE_PROGS(LS, ls)
|
||||
BASIC_REQUIRE_PROGS(MKDIR, mkdir)
|
||||
@ -496,7 +498,7 @@ AC_DEFUN_ONCE([BASIC_SETUP_FUNDAMENTAL_TOOLS],
|
||||
BASIC_REQUIRE_PROGS(SH, sh)
|
||||
BASIC_REQUIRE_PROGS(SORT, sort)
|
||||
BASIC_REQUIRE_PROGS(TAIL, tail)
|
||||
BASIC_REQUIRE_PROGS(TAR, tar)
|
||||
BASIC_REQUIRE_PROGS(TAR, gtar tar)
|
||||
BASIC_REQUIRE_PROGS(TEE, tee)
|
||||
BASIC_REQUIRE_PROGS(TOUCH, touch)
|
||||
BASIC_REQUIRE_PROGS(TR, tr)
|
||||
@ -1007,11 +1009,36 @@ AC_DEFUN([BASIC_CHECK_FIND_DELETE],
|
||||
AC_SUBST(FIND_DELETE)
|
||||
])
|
||||
|
||||
AC_DEFUN([BASIC_CHECK_TAR],
|
||||
[
|
||||
# Test which kind of tar was found
|
||||
if test "x$($TAR --version | $GREP "GNU tar")" != "x"; then
|
||||
TAR_TYPE="gnu"
|
||||
elif test "x$($TAR -v | $GREP "bsdtar")" != "x"; then
|
||||
TAR_TYPE="bsd"
|
||||
elif test "x$OPENJDK_BUILD_OS" = "xsolaris"; then
|
||||
TAR_TYPE="solaris"
|
||||
fi
|
||||
AC_MSG_CHECKING([what type of tar was found])
|
||||
AC_MSG_RESULT([$TAR_TYPE])
|
||||
|
||||
if test "x$TAR_TYPE" = "xgnu"; then
|
||||
TAR_INCLUDE_PARAM="T"
|
||||
TAR_SUPPORTS_TRANSFORM="true"
|
||||
else
|
||||
TAR_INCLUDE_PARAM="I"
|
||||
TAR_SUPPORTS_TRANSFORM="false"
|
||||
fi
|
||||
AC_SUBST(TAR_INCLUDE_PARAM)
|
||||
AC_SUBST(TAR_SUPPORTS_TRANSFORM)
|
||||
])
|
||||
|
||||
AC_DEFUN_ONCE([BASIC_SETUP_COMPLEX_TOOLS],
|
||||
[
|
||||
BASIC_CHECK_GNU_MAKE
|
||||
|
||||
BASIC_CHECK_FIND_DELETE
|
||||
BASIC_CHECK_TAR
|
||||
|
||||
# These tools might not be installed by default,
|
||||
# need hint on how to install them.
|
||||
|
@ -48,6 +48,7 @@ export EXPR="@EXPR@"
|
||||
export FILE="@FILE@"
|
||||
export FIND="@FIND@"
|
||||
export GREP="@GREP@"
|
||||
export GUNZIP="@GUNZIP@"
|
||||
export LDD="@LDD@"
|
||||
export LN="@LN@"
|
||||
export MKDIR="@MKDIR@"
|
||||
@ -63,10 +64,11 @@ export SED="@SED@"
|
||||
export SORT="@SORT@"
|
||||
export STAT="@STAT@"
|
||||
export STRIP="@STRIP@ @STRIPFLAGS@"
|
||||
export TAR="@TAR@"
|
||||
export TEE="@TEE@"
|
||||
export UNIQ="@UNIQ@"
|
||||
export UNPACK200="@FIXPATH@ @BOOT_JDK@/bin/unpack200"
|
||||
export UNARCHIVE="@UNZIP@ -q"
|
||||
export UNARCHIVE="@UNZIP@ -q -o"
|
||||
|
||||
export SRC_ROOT="@TOPDIR@"
|
||||
export OUTPUT_ROOT="@OUTPUT_ROOT@"
|
||||
|
@ -949,6 +949,8 @@ OTOOL
|
||||
LDD
|
||||
ZIP
|
||||
UNZIP
|
||||
TAR_SUPPORTS_TRANSFORM
|
||||
TAR_INCLUDE_PARAM
|
||||
FIND_DELETE
|
||||
OUTPUT_SYNC
|
||||
OUTPUT_SYNC_SUPPORTED
|
||||
@ -981,6 +983,9 @@ HOTSPOT_BUILD_CPU_ARCH
|
||||
HOTSPOT_BUILD_CPU
|
||||
HOTSPOT_BUILD_OS_TYPE
|
||||
HOTSPOT_BUILD_OS
|
||||
OPENJDK_BUILD_BUNDLE_PLATFORM
|
||||
OPENJDK_BUILD_CPU_BUNDLE
|
||||
OPENJDK_BUILD_OS_BUNDLE
|
||||
OPENJDK_BUILD_OS_EXPORT_DIR
|
||||
OPENJDK_BUILD_CPU_JLI_CFLAGS
|
||||
OPENJDK_BUILD_CPU_OSARCH
|
||||
@ -995,6 +1000,9 @@ HOTSPOT_TARGET_OS_TYPE
|
||||
HOTSPOT_TARGET_OS
|
||||
DEFINE_CROSS_COMPILE_ARCH
|
||||
LP64
|
||||
OPENJDK_TARGET_BUNDLE_PLATFORM
|
||||
OPENJDK_TARGET_CPU_BUNDLE
|
||||
OPENJDK_TARGET_OS_BUNDLE
|
||||
OPENJDK_TARGET_OS_EXPORT_DIR
|
||||
OPENJDK_TARGET_CPU_JLI_CFLAGS
|
||||
OPENJDK_TARGET_CPU_OSARCH
|
||||
@ -1064,6 +1072,8 @@ MKTEMP
|
||||
MKDIR
|
||||
LS
|
||||
LN
|
||||
GZIP
|
||||
GUNZIP
|
||||
HEAD
|
||||
FIND
|
||||
FILE
|
||||
@ -1246,6 +1256,8 @@ EXPR
|
||||
FILE
|
||||
FIND
|
||||
HEAD
|
||||
GUNZIP
|
||||
GZIP
|
||||
LN
|
||||
LS
|
||||
MKDIR
|
||||
@ -2184,6 +2196,8 @@ Some influential environment variables:
|
||||
FILE Override default value for FILE
|
||||
FIND Override default value for FIND
|
||||
HEAD Override default value for HEAD
|
||||
GUNZIP Override default value for GUNZIP
|
||||
GZIP Override default value for GZIP
|
||||
LN Override default value for LN
|
||||
LS Override default value for LS
|
||||
MKDIR Override default value for MKDIR
|
||||
@ -3686,6 +3700,8 @@ ac_configure="$SHELL $ac_aux_dir/configure" # Please don't use this var.
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
# Check if build directory is on local disk. If not possible to determine,
|
||||
# we prefer to claim it's local.
|
||||
# Argument 1: directory to test
|
||||
@ -5056,7 +5072,7 @@ VS_SDK_PLATFORM_NAME_2013=
|
||||
#CUSTOM_AUTOCONF_INCLUDE
|
||||
|
||||
# Do not change or remove the following line, it is needed for consistency checks:
|
||||
DATE_WHEN_GENERATED=1463011468
|
||||
DATE_WHEN_GENERATED=1463500649
|
||||
|
||||
###############################################################################
|
||||
#
|
||||
@ -8381,6 +8397,414 @@ $as_echo "$tool_specified" >&6; }
|
||||
|
||||
|
||||
|
||||
# Publish this variable in the help.
|
||||
|
||||
|
||||
if [ -z "${GUNZIP+x}" ]; then
|
||||
# The variable is not set by user, try to locate tool using the code snippet
|
||||
for ac_prog in gunzip
|
||||
do
|
||||
# Extract the first word of "$ac_prog", so it can be a program name with args.
|
||||
set dummy $ac_prog; ac_word=$2
|
||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
|
||||
$as_echo_n "checking for $ac_word... " >&6; }
|
||||
if ${ac_cv_path_GUNZIP+:} false; then :
|
||||
$as_echo_n "(cached) " >&6
|
||||
else
|
||||
case $GUNZIP in
|
||||
[\\/]* | ?:[\\/]*)
|
||||
ac_cv_path_GUNZIP="$GUNZIP" # Let the user override the test with a path.
|
||||
;;
|
||||
*)
|
||||
as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
|
||||
for as_dir in $PATH
|
||||
do
|
||||
IFS=$as_save_IFS
|
||||
test -z "$as_dir" && as_dir=.
|
||||
for ac_exec_ext in '' $ac_executable_extensions; do
|
||||
if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
|
||||
ac_cv_path_GUNZIP="$as_dir/$ac_word$ac_exec_ext"
|
||||
$as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
|
||||
break 2
|
||||
fi
|
||||
done
|
||||
done
|
||||
IFS=$as_save_IFS
|
||||
|
||||
;;
|
||||
esac
|
||||
fi
|
||||
GUNZIP=$ac_cv_path_GUNZIP
|
||||
if test -n "$GUNZIP"; then
|
||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $GUNZIP" >&5
|
||||
$as_echo "$GUNZIP" >&6; }
|
||||
else
|
||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
|
||||
$as_echo "no" >&6; }
|
||||
fi
|
||||
|
||||
|
||||
test -n "$GUNZIP" && break
|
||||
done
|
||||
|
||||
else
|
||||
# The variable is set, but is it from the command line or the environment?
|
||||
|
||||
# Try to remove the string !GUNZIP! from our list.
|
||||
try_remove_var=${CONFIGURE_OVERRIDDEN_VARIABLES//!GUNZIP!/}
|
||||
if test "x$try_remove_var" = "x$CONFIGURE_OVERRIDDEN_VARIABLES"; then
|
||||
# If it failed, the variable was not from the command line. Ignore it,
|
||||
# but warn the user (except for BASH, which is always set by the calling BASH).
|
||||
if test "xGUNZIP" != xBASH; then
|
||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Ignoring value of GUNZIP from the environment. Use command line variables instead." >&5
|
||||
$as_echo "$as_me: WARNING: Ignoring value of GUNZIP from the environment. Use command line variables instead." >&2;}
|
||||
fi
|
||||
# Try to locate tool using the code snippet
|
||||
for ac_prog in gunzip
|
||||
do
|
||||
# Extract the first word of "$ac_prog", so it can be a program name with args.
|
||||
set dummy $ac_prog; ac_word=$2
|
||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
|
||||
$as_echo_n "checking for $ac_word... " >&6; }
|
||||
if ${ac_cv_path_GUNZIP+:} false; then :
|
||||
$as_echo_n "(cached) " >&6
|
||||
else
|
||||
case $GUNZIP in
|
||||
[\\/]* | ?:[\\/]*)
|
||||
ac_cv_path_GUNZIP="$GUNZIP" # Let the user override the test with a path.
|
||||
;;
|
||||
*)
|
||||
as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
|
||||
for as_dir in $PATH
|
||||
do
|
||||
IFS=$as_save_IFS
|
||||
test -z "$as_dir" && as_dir=.
|
||||
for ac_exec_ext in '' $ac_executable_extensions; do
|
||||
if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
|
||||
ac_cv_path_GUNZIP="$as_dir/$ac_word$ac_exec_ext"
|
||||
$as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
|
||||
break 2
|
||||
fi
|
||||
done
|
||||
done
|
||||
IFS=$as_save_IFS
|
||||
|
||||
;;
|
||||
esac
|
||||
fi
|
||||
GUNZIP=$ac_cv_path_GUNZIP
|
||||
if test -n "$GUNZIP"; then
|
||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $GUNZIP" >&5
|
||||
$as_echo "$GUNZIP" >&6; }
|
||||
else
|
||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
|
||||
$as_echo "no" >&6; }
|
||||
fi
|
||||
|
||||
|
||||
test -n "$GUNZIP" && break
|
||||
done
|
||||
|
||||
else
|
||||
# If it succeeded, then it was overridden by the user. We will use it
|
||||
# for the tool.
|
||||
|
||||
# First remove it from the list of overridden variables, so we can test
|
||||
# for unknown variables in the end.
|
||||
CONFIGURE_OVERRIDDEN_VARIABLES="$try_remove_var"
|
||||
|
||||
# Check if we try to supply an empty value
|
||||
if test "x$GUNZIP" = x; then
|
||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: Setting user supplied tool GUNZIP= (no value)" >&5
|
||||
$as_echo "$as_me: Setting user supplied tool GUNZIP= (no value)" >&6;}
|
||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for GUNZIP" >&5
|
||||
$as_echo_n "checking for GUNZIP... " >&6; }
|
||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: disabled" >&5
|
||||
$as_echo "disabled" >&6; }
|
||||
else
|
||||
# Check if the provided tool contains a complete path.
|
||||
tool_specified="$GUNZIP"
|
||||
tool_basename="${tool_specified##*/}"
|
||||
if test "x$tool_basename" = "x$tool_specified"; then
|
||||
# A command without a complete path is provided, search $PATH.
|
||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: Will search for user supplied tool GUNZIP=$tool_basename" >&5
|
||||
$as_echo "$as_me: Will search for user supplied tool GUNZIP=$tool_basename" >&6;}
|
||||
# Extract the first word of "$tool_basename", so it can be a program name with args.
|
||||
set dummy $tool_basename; ac_word=$2
|
||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
|
||||
$as_echo_n "checking for $ac_word... " >&6; }
|
||||
if ${ac_cv_path_GUNZIP+:} false; then :
|
||||
$as_echo_n "(cached) " >&6
|
||||
else
|
||||
case $GUNZIP in
|
||||
[\\/]* | ?:[\\/]*)
|
||||
ac_cv_path_GUNZIP="$GUNZIP" # Let the user override the test with a path.
|
||||
;;
|
||||
*)
|
||||
as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
|
||||
for as_dir in $PATH
|
||||
do
|
||||
IFS=$as_save_IFS
|
||||
test -z "$as_dir" && as_dir=.
|
||||
for ac_exec_ext in '' $ac_executable_extensions; do
|
||||
if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
|
||||
ac_cv_path_GUNZIP="$as_dir/$ac_word$ac_exec_ext"
|
||||
$as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
|
||||
break 2
|
||||
fi
|
||||
done
|
||||
done
|
||||
IFS=$as_save_IFS
|
||||
|
||||
;;
|
||||
esac
|
||||
fi
|
||||
GUNZIP=$ac_cv_path_GUNZIP
|
||||
if test -n "$GUNZIP"; then
|
||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $GUNZIP" >&5
|
||||
$as_echo "$GUNZIP" >&6; }
|
||||
else
|
||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
|
||||
$as_echo "no" >&6; }
|
||||
fi
|
||||
|
||||
|
||||
if test "x$GUNZIP" = x; then
|
||||
as_fn_error $? "User supplied tool $tool_basename could not be found" "$LINENO" 5
|
||||
fi
|
||||
else
|
||||
# Otherwise we believe it is a complete path. Use it as it is.
|
||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: Will use user supplied tool GUNZIP=$tool_specified" >&5
|
||||
$as_echo "$as_me: Will use user supplied tool GUNZIP=$tool_specified" >&6;}
|
||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for GUNZIP" >&5
|
||||
$as_echo_n "checking for GUNZIP... " >&6; }
|
||||
if test ! -x "$tool_specified"; then
|
||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: not found" >&5
|
||||
$as_echo "not found" >&6; }
|
||||
as_fn_error $? "User supplied tool GUNZIP=$tool_specified does not exist or is not executable" "$LINENO" 5
|
||||
fi
|
||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $tool_specified" >&5
|
||||
$as_echo "$tool_specified" >&6; }
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
|
||||
fi
|
||||
|
||||
|
||||
|
||||
if test "x$GUNZIP" = x; then
|
||||
as_fn_error $? "Could not find required tool for GUNZIP" "$LINENO" 5
|
||||
fi
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
# Publish this variable in the help.
|
||||
|
||||
|
||||
if [ -z "${GZIP+x}" ]; then
|
||||
# The variable is not set by user, try to locate tool using the code snippet
|
||||
for ac_prog in pigz gzip
|
||||
do
|
||||
# Extract the first word of "$ac_prog", so it can be a program name with args.
|
||||
set dummy $ac_prog; ac_word=$2
|
||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
|
||||
$as_echo_n "checking for $ac_word... " >&6; }
|
||||
if ${ac_cv_path_GZIP+:} false; then :
|
||||
$as_echo_n "(cached) " >&6
|
||||
else
|
||||
case $GZIP in
|
||||
[\\/]* | ?:[\\/]*)
|
||||
ac_cv_path_GZIP="$GZIP" # Let the user override the test with a path.
|
||||
;;
|
||||
*)
|
||||
as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
|
||||
for as_dir in $PATH
|
||||
do
|
||||
IFS=$as_save_IFS
|
||||
test -z "$as_dir" && as_dir=.
|
||||
for ac_exec_ext in '' $ac_executable_extensions; do
|
||||
if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
|
||||
ac_cv_path_GZIP="$as_dir/$ac_word$ac_exec_ext"
|
||||
$as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
|
||||
break 2
|
||||
fi
|
||||
done
|
||||
done
|
||||
IFS=$as_save_IFS
|
||||
|
||||
;;
|
||||
esac
|
||||
fi
|
||||
GZIP=$ac_cv_path_GZIP
|
||||
if test -n "$GZIP"; then
|
||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $GZIP" >&5
|
||||
$as_echo "$GZIP" >&6; }
|
||||
else
|
||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
|
||||
$as_echo "no" >&6; }
|
||||
fi
|
||||
|
||||
|
||||
test -n "$GZIP" && break
|
||||
done
|
||||
|
||||
else
|
||||
# The variable is set, but is it from the command line or the environment?
|
||||
|
||||
# Try to remove the string !GZIP! from our list.
|
||||
try_remove_var=${CONFIGURE_OVERRIDDEN_VARIABLES//!GZIP!/}
|
||||
if test "x$try_remove_var" = "x$CONFIGURE_OVERRIDDEN_VARIABLES"; then
|
||||
# If it failed, the variable was not from the command line. Ignore it,
|
||||
# but warn the user (except for BASH, which is always set by the calling BASH).
|
||||
if test "xGZIP" != xBASH; then
|
||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Ignoring value of GZIP from the environment. Use command line variables instead." >&5
|
||||
$as_echo "$as_me: WARNING: Ignoring value of GZIP from the environment. Use command line variables instead." >&2;}
|
||||
fi
|
||||
# Try to locate tool using the code snippet
|
||||
for ac_prog in pigz gzip
|
||||
do
|
||||
# Extract the first word of "$ac_prog", so it can be a program name with args.
|
||||
set dummy $ac_prog; ac_word=$2
|
||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
|
||||
$as_echo_n "checking for $ac_word... " >&6; }
|
||||
if ${ac_cv_path_GZIP+:} false; then :
|
||||
$as_echo_n "(cached) " >&6
|
||||
else
|
||||
case $GZIP in
|
||||
[\\/]* | ?:[\\/]*)
|
||||
ac_cv_path_GZIP="$GZIP" # Let the user override the test with a path.
|
||||
;;
|
||||
*)
|
||||
as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
|
||||
for as_dir in $PATH
|
||||
do
|
||||
IFS=$as_save_IFS
|
||||
test -z "$as_dir" && as_dir=.
|
||||
for ac_exec_ext in '' $ac_executable_extensions; do
|
||||
if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
|
||||
ac_cv_path_GZIP="$as_dir/$ac_word$ac_exec_ext"
|
||||
$as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
|
||||
break 2
|
||||
fi
|
||||
done
|
||||
done
|
||||
IFS=$as_save_IFS
|
||||
|
||||
;;
|
||||
esac
|
||||
fi
|
||||
GZIP=$ac_cv_path_GZIP
|
||||
if test -n "$GZIP"; then
|
||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $GZIP" >&5
|
||||
$as_echo "$GZIP" >&6; }
|
||||
else
|
||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
|
||||
$as_echo "no" >&6; }
|
||||
fi
|
||||
|
||||
|
||||
test -n "$GZIP" && break
|
||||
done
|
||||
|
||||
else
|
||||
# If it succeeded, then it was overridden by the user. We will use it
|
||||
# for the tool.
|
||||
|
||||
# First remove it from the list of overridden variables, so we can test
|
||||
# for unknown variables in the end.
|
||||
CONFIGURE_OVERRIDDEN_VARIABLES="$try_remove_var"
|
||||
|
||||
# Check if we try to supply an empty value
|
||||
if test "x$GZIP" = x; then
|
||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: Setting user supplied tool GZIP= (no value)" >&5
|
||||
$as_echo "$as_me: Setting user supplied tool GZIP= (no value)" >&6;}
|
||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for GZIP" >&5
|
||||
$as_echo_n "checking for GZIP... " >&6; }
|
||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: disabled" >&5
|
||||
$as_echo "disabled" >&6; }
|
||||
else
|
||||
# Check if the provided tool contains a complete path.
|
||||
tool_specified="$GZIP"
|
||||
tool_basename="${tool_specified##*/}"
|
||||
if test "x$tool_basename" = "x$tool_specified"; then
|
||||
# A command without a complete path is provided, search $PATH.
|
||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: Will search for user supplied tool GZIP=$tool_basename" >&5
|
||||
$as_echo "$as_me: Will search for user supplied tool GZIP=$tool_basename" >&6;}
|
||||
# Extract the first word of "$tool_basename", so it can be a program name with args.
|
||||
set dummy $tool_basename; ac_word=$2
|
||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
|
||||
$as_echo_n "checking for $ac_word... " >&6; }
|
||||
if ${ac_cv_path_GZIP+:} false; then :
|
||||
$as_echo_n "(cached) " >&6
|
||||
else
|
||||
case $GZIP in
|
||||
[\\/]* | ?:[\\/]*)
|
||||
ac_cv_path_GZIP="$GZIP" # Let the user override the test with a path.
|
||||
;;
|
||||
*)
|
||||
as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
|
||||
for as_dir in $PATH
|
||||
do
|
||||
IFS=$as_save_IFS
|
||||
test -z "$as_dir" && as_dir=.
|
||||
for ac_exec_ext in '' $ac_executable_extensions; do
|
||||
if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
|
||||
ac_cv_path_GZIP="$as_dir/$ac_word$ac_exec_ext"
|
||||
$as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
|
||||
break 2
|
||||
fi
|
||||
done
|
||||
done
|
||||
IFS=$as_save_IFS
|
||||
|
||||
;;
|
||||
esac
|
||||
fi
|
||||
GZIP=$ac_cv_path_GZIP
|
||||
if test -n "$GZIP"; then
|
||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $GZIP" >&5
|
||||
$as_echo "$GZIP" >&6; }
|
||||
else
|
||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
|
||||
$as_echo "no" >&6; }
|
||||
fi
|
||||
|
||||
|
||||
if test "x$GZIP" = x; then
|
||||
as_fn_error $? "User supplied tool $tool_basename could not be found" "$LINENO" 5
|
||||
fi
|
||||
else
|
||||
# Otherwise we believe it is a complete path. Use it as it is.
|
||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: Will use user supplied tool GZIP=$tool_specified" >&5
|
||||
$as_echo "$as_me: Will use user supplied tool GZIP=$tool_specified" >&6;}
|
||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for GZIP" >&5
|
||||
$as_echo_n "checking for GZIP... " >&6; }
|
||||
if test ! -x "$tool_specified"; then
|
||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: not found" >&5
|
||||
$as_echo "not found" >&6; }
|
||||
as_fn_error $? "User supplied tool GZIP=$tool_specified does not exist or is not executable" "$LINENO" 5
|
||||
fi
|
||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $tool_specified" >&5
|
||||
$as_echo "$tool_specified" >&6; }
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
|
||||
fi
|
||||
|
||||
|
||||
|
||||
if test "x$GZIP" = x; then
|
||||
as_fn_error $? "Could not find required tool for GZIP" "$LINENO" 5
|
||||
fi
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
# Publish this variable in the help.
|
||||
|
||||
|
||||
@ -10834,7 +11258,7 @@ $as_echo "$tool_specified" >&6; }
|
||||
|
||||
if [ -z "${TAR+x}" ]; then
|
||||
# The variable is not set by user, try to locate tool using the code snippet
|
||||
for ac_prog in tar
|
||||
for ac_prog in gtar tar
|
||||
do
|
||||
# Extract the first word of "$ac_prog", so it can be a program name with args.
|
||||
set dummy $ac_prog; ac_word=$2
|
||||
@ -10892,7 +11316,7 @@ done
|
||||
$as_echo "$as_me: WARNING: Ignoring value of TAR from the environment. Use command line variables instead." >&2;}
|
||||
fi
|
||||
# Try to locate tool using the code snippet
|
||||
for ac_prog in tar
|
||||
for ac_prog in gtar tar
|
||||
do
|
||||
# Extract the first word of "$ac_prog", so it can be a program name with args.
|
||||
set dummy $ac_prog; ac_word=$2
|
||||
@ -15408,6 +15832,23 @@ $as_echo "$COMPILE_TYPE" >&6; }
|
||||
fi
|
||||
|
||||
|
||||
# The new version string in JDK 9 also defined new naming of OS and ARCH for bundles
|
||||
# Macosx is osx and x86_64 is x64
|
||||
if test "x$OPENJDK_TARGET_OS" = xmacosx; then
|
||||
OPENJDK_TARGET_OS_BUNDLE="osx"
|
||||
else
|
||||
OPENJDK_TARGET_OS_BUNDLE="$OPENJDK_TARGET_OS"
|
||||
fi
|
||||
if test "x$OPENJDK_TARGET_CPU" = xx86_64; then
|
||||
OPENJDK_TARGET_CPU_BUNDLE="x64"
|
||||
else
|
||||
OPENJDK_TARGET_CPU_BUNDLE="$OPENJDK_TARGET_CPU"
|
||||
fi
|
||||
OPENJDK_TARGET_BUNDLE_PLATFORM="${OPENJDK_TARGET_OS_BUNDLE}-${OPENJDK_TARGET_CPU_BUNDLE}"
|
||||
|
||||
|
||||
|
||||
|
||||
if test "x$OPENJDK_TARGET_CPU_BITS" = x64; then
|
||||
A_LP64="LP64:="
|
||||
# -D_LP64=1 is only set on linux and mac. Setting on windows causes diff in
|
||||
@ -15564,6 +16005,23 @@ $as_echo "$COMPILE_TYPE" >&6; }
|
||||
fi
|
||||
|
||||
|
||||
# The new version string in JDK 9 also defined new naming of OS and ARCH for bundles
|
||||
# Macosx is osx and x86_64 is x64
|
||||
if test "x$OPENJDK_BUILD_OS" = xmacosx; then
|
||||
OPENJDK_BUILD_OS_BUNDLE="osx"
|
||||
else
|
||||
OPENJDK_BUILD_OS_BUNDLE="$OPENJDK_TARGET_OS"
|
||||
fi
|
||||
if test "x$OPENJDK_BUILD_CPU" = xx86_64; then
|
||||
OPENJDK_BUILD_CPU_BUNDLE="x64"
|
||||
else
|
||||
OPENJDK_BUILD_CPU_BUNDLE="$OPENJDK_BUILD_CPU"
|
||||
fi
|
||||
OPENJDK_BUILD_BUNDLE_PLATFORM="${OPENJDK_BUILD_OS_BUNDLE}-${OPENJDK_BUILD_CPU_BUNDLE}"
|
||||
|
||||
|
||||
|
||||
|
||||
if test "x$OPENJDK_BUILD_CPU_BITS" = x64; then
|
||||
A_LP64="LP64:="
|
||||
# -D_LP64=1 is only set on linux and mac. Setting on windows causes diff in
|
||||
@ -20681,6 +21139,30 @@ $as_echo "yes" >&6; }
|
||||
|
||||
|
||||
|
||||
# Test which kind of tar was found
|
||||
if test "x$($TAR --version | $GREP "GNU tar")" != "x"; then
|
||||
TAR_TYPE="gnu"
|
||||
elif test "x$($TAR -v | $GREP "bsdtar")" != "x"; then
|
||||
TAR_TYPE="bsd"
|
||||
elif test "x$OPENJDK_BUILD_OS" = "xsolaris"; then
|
||||
TAR_TYPE="solaris"
|
||||
fi
|
||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking what type of tar was found" >&5
|
||||
$as_echo_n "checking what type of tar was found... " >&6; }
|
||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $TAR_TYPE" >&5
|
||||
$as_echo "$TAR_TYPE" >&6; }
|
||||
|
||||
if test "x$TAR_TYPE" = "xgnu"; then
|
||||
TAR_INCLUDE_PARAM="T"
|
||||
TAR_SUPPORTS_TRANSFORM="true"
|
||||
else
|
||||
TAR_INCLUDE_PARAM="I"
|
||||
TAR_SUPPORTS_TRANSFORM="false"
|
||||
fi
|
||||
|
||||
|
||||
|
||||
|
||||
# These tools might not be installed by default,
|
||||
# need hint on how to install them.
|
||||
|
||||
|
@ -366,6 +366,23 @@ AC_DEFUN([PLATFORM_SETUP_LEGACY_VARS_HELPER],
|
||||
fi
|
||||
AC_SUBST(OPENJDK_$1_OS_EXPORT_DIR)
|
||||
|
||||
# The new version string in JDK 9 also defined new naming of OS and ARCH for bundles
|
||||
# Macosx is osx and x86_64 is x64
|
||||
if test "x$OPENJDK_$1_OS" = xmacosx; then
|
||||
OPENJDK_$1_OS_BUNDLE="osx"
|
||||
else
|
||||
OPENJDK_$1_OS_BUNDLE="$OPENJDK_TARGET_OS"
|
||||
fi
|
||||
if test "x$OPENJDK_$1_CPU" = xx86_64; then
|
||||
OPENJDK_$1_CPU_BUNDLE="x64"
|
||||
else
|
||||
OPENJDK_$1_CPU_BUNDLE="$OPENJDK_$1_CPU"
|
||||
fi
|
||||
OPENJDK_$1_BUNDLE_PLATFORM="${OPENJDK_$1_OS_BUNDLE}-${OPENJDK_$1_CPU_BUNDLE}"
|
||||
AC_SUBST(OPENJDK_$1_OS_BUNDLE)
|
||||
AC_SUBST(OPENJDK_$1_CPU_BUNDLE)
|
||||
AC_SUBST(OPENJDK_$1_BUNDLE_PLATFORM)
|
||||
|
||||
if test "x$OPENJDK_$1_CPU_BITS" = x64; then
|
||||
A_LP64="LP64:="
|
||||
# -D_LP64=1 is only set on linux and mac. Setting on windows causes diff in
|
||||
|
@ -89,6 +89,10 @@ HOTSPOT_TARGET_CPU := @HOTSPOT_TARGET_CPU@
|
||||
HOTSPOT_TARGET_CPU_ARCH := @HOTSPOT_TARGET_CPU_ARCH@
|
||||
HOTSPOT_TARGET_CPU_DEFINE := @HOTSPOT_TARGET_CPU_DEFINE@
|
||||
|
||||
OPENJDK_TARGET_CPU_BUNDLE:=@OPENJDK_TARGET_CPU_BUNDLE@
|
||||
OPENJDK_TARGET_OS_BUNDLE:=@OPENJDK_TARGET_OS_BUNDLE@
|
||||
OPENJDK_TARGET_BUNDLE_PLATFORM:=@OPENJDK_TARGET_BUNDLE_PLATFORM@
|
||||
|
||||
# We are building on this build system.
|
||||
# When not cross-compiling, it is the same as the target.
|
||||
OPENJDK_BUILD_OS:=@OPENJDK_BUILD_OS@
|
||||
@ -268,6 +272,7 @@ BUILDTOOLS_OUTPUTDIR=$(BUILD_OUTPUT)/buildtools
|
||||
HOTSPOT_OUTPUTDIR=$(BUILD_OUTPUT)/hotspot
|
||||
JDK_OUTPUTDIR=$(BUILD_OUTPUT)/jdk
|
||||
IMAGES_OUTPUTDIR=$(BUILD_OUTPUT)/images
|
||||
BUNDLES_OUTPUTDIR=$(BUILD_OUTPUT)/bundles
|
||||
TESTMAKE_OUTPUTDIR=$(BUILD_OUTPUT)/test-make
|
||||
MAKESUPPORT_OUTPUTDIR=$(BUILD_OUTPUT)/make-support
|
||||
# This does not get overridden in a bootcycle build
|
||||
@ -632,6 +637,7 @@ ECHO:=@ECHO@
|
||||
EGREP:=@EGREP@
|
||||
FGREP:=@FGREP@
|
||||
GREP:=@GREP@
|
||||
GZIP:=@GZIP@
|
||||
HEAD:=@HEAD@
|
||||
LS:=@LS@
|
||||
LN:=@LN@
|
||||
@ -679,6 +685,9 @@ XCODEBUILD=@XCODEBUILD@
|
||||
DTRACE := @DTRACE@
|
||||
FIXPATH:=@FIXPATH@
|
||||
|
||||
TAR_INCLUDE_PARAM:=@TAR_INCLUDE_PARAM@
|
||||
TAR_SUPPORTS_TRANSFORM:=@TAR_SUPPORTS_TRANSFORM@
|
||||
|
||||
# Build setup
|
||||
ENABLE_JFR=@ENABLE_JFR@
|
||||
ENABLE_INTREE_EC=@ENABLE_INTREE_EC@
|
||||
@ -785,11 +794,46 @@ SYMBOLS_IMAGE_DIR=$(IMAGES_OUTPUTDIR)/$(SYMBOLS_IMAGE_SUBDIR)
|
||||
# Interim image
|
||||
INTERIM_IMAGE_DIR := $(SUPPORT_OUTPUTDIR)/interim-image
|
||||
|
||||
# Docs image
|
||||
DOCS_IMAGE_SUBDIR := docs
|
||||
DOCS_IMAGE_DIR := $(IMAGES_OUTPUTDIR)/$(DOCS_IMAGE_SUBDIR)
|
||||
|
||||
# Macosx bundles directory definitions
|
||||
JDK_MACOSX_BUNDLE_SUBDIR=jdk-bundle/jdk-$(VERSION_NUMBER).jdk/Contents
|
||||
JRE_MACOSX_BUNDLE_SUBDIR=jre-bundle/jre-$(VERSION_NUMBER).jre/Contents
|
||||
JDK_MACOSX_BUNDLE_SUBDIR=jdk-bundle
|
||||
JRE_MACOSX_BUNDLE_SUBDIR=jre-bundle
|
||||
JDK_MACOSX_BUNDLE_DIR=$(IMAGES_OUTPUTDIR)/$(JDK_MACOSX_BUNDLE_SUBDIR)
|
||||
JRE_MACOSX_BUNDLE_DIR=$(IMAGES_OUTPUTDIR)/$(JRE_MACOSX_BUNDLE_SUBDIR)
|
||||
JDK_MACOSX_CONTENTS_SUBDIR=jdk-$(VERSION_NUMBER).jdk/Contents
|
||||
JRE_MACOSX_CONTENTS_SUBDIR=jre-$(VERSION_NUMBER).jre/Contents
|
||||
JDK_MACOSX_CONTENTS_DIR=$(JDK_MACOSX_BUNDLE_DIR)/$(JDK_MACOSX_CONTENTS_SUBDIR)
|
||||
JRE_MACOSX_CONTENTS_DIR=$(JRE_MACOSX_BUNDLE_DIR)/$(JRE_MACOSX_CONTENTS_SUBDIR)
|
||||
|
||||
# Bundle names
|
||||
BASE_NAME := $(VERSION_SHORT)+$(VERSION_BUILD)_$(OPENJDK_TARGET_BUNDLE_PLATFORM)
|
||||
ifeq ($(DEBUG_LEVEL), fastdebug)
|
||||
DEBUG_PART := -debug
|
||||
else ifneq ($(DEBUG_LEVEL), release)
|
||||
DEBUG_PART := -$(DEBUG_LEVEL)
|
||||
endif
|
||||
JDK_BUNDLE_NAME := jdk-$(BASE_NAME)_bin$(DEBUG_PART).tar.gz
|
||||
JRE_BUNDLE_NAME := jre-$(BASE_NAME)_bin$(DEBUG_PART).tar.gz
|
||||
JDK_SYMBOLS_BUNDLE_NAME := jdk-$(BASE_NAME)_bin$(DEBUG_PART)-symbols.tar.gz
|
||||
JRE_SYMBOLS_BUNDLE_NAME := jre-$(BASE_NAME)_bin$(DEBUG_PART)-symbols.tar.gz
|
||||
ifeq ($(OPENJDK_TARGET_OS), windows)
|
||||
DEMOS_BUNDLE_NAME := jdk-$(BASE_NAME)_demo$(DEBUG_PART).zip
|
||||
else
|
||||
DEMOS_BUNDLE_NAME := jdk-$(BASE_NAME)_demo$(DEBUG_PART).tar.gz
|
||||
endif
|
||||
TEST_BUNDLE_NAME := jdk-$(BASE_NAME)_bin-tests$(DEBUG_PART).tar.gz
|
||||
DOCS_BUNDLE_NAME := jdk-$(BASE_NAME)_doc-api-spec$(DEBUG_PART).tar.gz
|
||||
|
||||
JDK_BUNDLE := $(BUNDLES_OUTPUTDIR)/$(JDK_BUNDLE_NAME)
|
||||
JRE_BUNDLE := $(BUNDLES_OUTPUTDIR)/$(JRE_BUNDLE_NAME)
|
||||
JDK_SYMBOLS_BUNDLE := $(BUNDLES_OUTPUTDIR)/$(JDK_SYMBOLS_BUNDLE_NAME)
|
||||
JRE_SYMBOLS_BUNDLE := $(BUNDLES_OUTPUTDIR)/$(JRE_SYMBOLS_BUNDLE_NAME)
|
||||
DEMOS_BUNDLE := $(BUNDLES_OUTPUTDIR)/$(DEMOS_BUNDLE_NAME)
|
||||
TEST_BUNDLE := $(BUNDLES_OUTPUTDIR)/$(TEST_BUNDLE_NAME)
|
||||
DOCS_BUNDLE := $(BUNDLES_OUTPUTDIR)/$(DOCS_BUNDLE_NAME)
|
||||
|
||||
# This macro is called to allow inclusion of closed source counterparts.
|
||||
# Unless overridden in closed sources, it expands to nothing.
|
||||
|
@ -274,14 +274,19 @@ compare_file_types() {
|
||||
|
||||
$MKDIR -p $WORK_DIR
|
||||
|
||||
FILE_TYPES_FILTER="$SED \
|
||||
-e 's/BuildID[^,]*//' \
|
||||
-e 's/last modified: .*//' \
|
||||
"
|
||||
|
||||
echo -n File types...
|
||||
found=""
|
||||
for f in `cd $OTHER_DIR && $FIND . ! -type d`
|
||||
do
|
||||
if [ ! -f ${OTHER_DIR}/$f ]; then continue; fi
|
||||
if [ ! -f ${THIS_DIR}/$f ]; then continue; fi
|
||||
OF=`cd ${OTHER_DIR} && $FILE -h $f | $SED 's/BuildID[^,]*//g'`
|
||||
TF=`cd ${THIS_DIR} && $FILE -h $f | $SED 's/BuildID[^,]*//g'`
|
||||
OF=$(cd ${OTHER_DIR} && $FILE -h $f | eval $FILE_TYPES_FILTER)
|
||||
TF=$(cd ${THIS_DIR} && $FILE -h $f | eval $FILE_TYPES_FILTER)
|
||||
if [ "$OF" != "$TF" ]
|
||||
then
|
||||
if [ "`echo $OF | $GREP -c 'Zip archive data'`" -gt 0 ] \
|
||||
@ -320,7 +325,7 @@ compare_general_files() {
|
||||
! -name "*.obj" ! -name "*.o" ! -name "JavaControlPanelHelper" \
|
||||
! -name "JavaUpdater" ! -name "JavaWSApplicationStub" \
|
||||
! -name "jspawnhelper" ! -name "JavawsLauncher" ! -name "*.a" \
|
||||
! -name "finish_installation" ! -name "Sparkle" \
|
||||
! -name "finish_installation" ! -name "Sparkle" ! -name "*.tar.gz" \
|
||||
| $GREP -v "./bin/" | $SORT | $FILTER)
|
||||
|
||||
echo Other files with binary differences...
|
||||
@ -423,6 +428,10 @@ compare_zip_file() {
|
||||
then
|
||||
(cd $THIS_UNZIPDIR && $UNARCHIVE $THIS_ZIP)
|
||||
(cd $OTHER_UNZIPDIR && $UNARCHIVE $OTHER_ZIP)
|
||||
elif [ "$TYPE" = "gz" ]
|
||||
then
|
||||
(cd $THIS_UNZIPDIR && $GUNZIP -c $THIS_ZIP | $TAR xf -)
|
||||
(cd $OTHER_UNZIPDIR && $GUNZIP -c $OTHER_ZIP | $TAR xf -)
|
||||
else
|
||||
(cd $THIS_UNZIPDIR && $JIMAGE extract $THIS_ZIP)
|
||||
(cd $OTHER_UNZIPDIR && $JIMAGE extract $OTHER_ZIP)
|
||||
@ -526,10 +535,11 @@ compare_all_zip_files() {
|
||||
OTHER_DIR=$2
|
||||
WORK_DIR=$3
|
||||
|
||||
ZIPS=$(cd $THIS_DIR && $FIND . -type f -name "*.zip" | $SORT | $FILTER )
|
||||
ZIPS=$(cd $THIS_DIR && $FIND . -type f -name "*.zip" -o -name "*.tar.gz" \
|
||||
| $SORT | $FILTER )
|
||||
|
||||
if [ -n "$ZIPS" ]; then
|
||||
echo Zip files...
|
||||
echo Zip/tar.gz files...
|
||||
|
||||
return_value=0
|
||||
for f in $ZIPS; do
|
||||
@ -913,7 +923,7 @@ compare_bin_file() {
|
||||
FULLDUMP_MSG=" "
|
||||
DIFF_FULLDUMP=
|
||||
if [[ "$KNOWN_FULLDUMP_DIFF $ACCEPTED_FULLDUMP_DIFF" = *"$BIN_FILE"* ]]; then
|
||||
FULLDUMP_MSG=" ! "
|
||||
FULLDUMP_MSG=" ! "
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
|
@ -215,7 +215,7 @@ var getJibProfilesCommon = function (input) {
|
||||
var common = {};
|
||||
|
||||
common.dependencies = ["boot_jdk", "gnumake", "jtreg"],
|
||||
common.default_make_targets = ["product-images", "test-image"],
|
||||
common.default_make_targets = ["product-bundles", "test-bundles"],
|
||||
common.default_make_targets_debug = common.default_make_targets;
|
||||
common.default_make_targets_slowdebug = common.default_make_targets;
|
||||
common.configure_args = ["--enable-jtreg-failure-handler"],
|
||||
@ -245,7 +245,7 @@ var getJibProfilesProfiles = function (input, common) {
|
||||
target_cpu: "x64",
|
||||
dependencies: concat(common.dependencies, "devkit"),
|
||||
configure_args: concat(common.configure_args, "--with-zlib=system"),
|
||||
default_make_targets: concat(common.default_make_targets, "docs-image")
|
||||
default_make_targets: concat(common.default_make_targets, "docs-bundles")
|
||||
},
|
||||
|
||||
"linux-x86": {
|
||||
|
300
make/Bundles.gmk
Normal file
300
make/Bundles.gmk
Normal file
@ -0,0 +1,300 @@
|
||||
#
|
||||
# Copyright (c) 2016, 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.
|
||||
#
|
||||
|
||||
default: all
|
||||
|
||||
include $(SPEC)
|
||||
include MakeBase.gmk
|
||||
|
||||
PRODUCT_TARGETS :=
|
||||
TEST_TARGETS :=
|
||||
DOCS_TARGETS :=
|
||||
|
||||
# On Windows tar frequently complains that "file changed as we read it" for
|
||||
# some random source files. This seems to be cause by anti virus scanners and
|
||||
# is most likely safe to ignore. When it happens, tar returns '1'.
|
||||
ifeq ($(OPENJDK_BUILD_OS), windows)
|
||||
TAR_IGNORE_EXIT_VALUE := || test "$$$$?" = "1"
|
||||
endif
|
||||
|
||||
# Hook to include the corresponding custom file, if present.
|
||||
$(eval $(call IncludeCustomExtension, , Bundles-pre.gmk))
|
||||
################################################################################
|
||||
# BUNDLE : Name of bundle to create
|
||||
# FILES : Files in BASE_DIR to add to bundle
|
||||
# SPECIAL_INCLUDES : List of directories inside BASE_DIR to look for additional
|
||||
# files in. These files will not get proper dependency handling. Use when
|
||||
# files or directories may contain spaces.
|
||||
# BASE_DIR : Base directory for the root dir in the bundle.
|
||||
# SUBDIR : Optional name of root dir in bundle.
|
||||
SetupBundleFile = $(NamedParamsMacroTemplate)
|
||||
define SetupBundleFileBody
|
||||
|
||||
$1_RELATIVE_FILES := $$(patsubst $$($1_BASE_DIR)/%, ./%, $$($1_FILES))
|
||||
|
||||
ifneq ($$(filter %.tar.gz, $$($1_BUNDLE_NAME)), )
|
||||
$1_TYPE := tar.gz
|
||||
else ifneq ($$(filter %.zip, $$($1_BUNDLE_NAME)), )
|
||||
$1_TYPE := zip
|
||||
else
|
||||
$$(error Unknown bundle type $$($1_BUNDLE_NAME))
|
||||
endif
|
||||
|
||||
$$(call SetIfEmpty, $1_UNZIP_DEBUGINFO, false)
|
||||
|
||||
$(BUNDLES_OUTPUTDIR)/$$($1_BUNDLE_NAME): $$($1_FILES)
|
||||
$$(eval $$(call ListPathsSafely, \
|
||||
$1_RELATIVE_FILES, \
|
||||
$(SUPPORT_OUTPUTDIR)/bundles/_$1_files))
|
||||
$$(call MakeDir, $$(@D))
|
||||
ifneq ($$($1_SPECIAL_INCLUDES), )
|
||||
$$(foreach i, $$($1_SPECIAL_INCLUDES), \
|
||||
($(CD) $$($1_BASE_DIR) && $(FIND) ./$$i \
|
||||
>> $(SUPPORT_OUTPUTDIR)/bundles/_$1_files ) ; )
|
||||
endif
|
||||
ifneq ($$($1_SUBDIR), )
|
||||
ifeq ($$($1_TYPE)-$(TAR_SUPPORTS_TRANSFORM)-$$($1_UNZIP_DEBUGINFO), tar.gz-true-false)
|
||||
$(CD) $$($1_BASE_DIR) \
|
||||
&& ( $(TAR) cf - -$(TAR_INCLUDE_PARAM) $(SUPPORT_OUTPUTDIR)/bundles/_$1_files \
|
||||
--transform 's|^|$$($1_SUBDIR)/|' $(TAR_IGNORE_EXIT_VALUE) ) \
|
||||
| $(GZIP) > $$@
|
||||
else
|
||||
# If a subdir has been specified, copy all files into a temporary
|
||||
# location with this subdir before creating the tar file
|
||||
$(RM) -r $(SUPPORT_OUTPUTDIR)/bundles/$1/$$($1_SUBDIR)
|
||||
$(MKDIR) -p $(SUPPORT_OUTPUTDIR)/bundles/$1/$$($1_SUBDIR)
|
||||
( $(CD) $$($1_BASE_DIR) \
|
||||
&& $(TAR) cf - -$(TAR_INCLUDE_PARAM) $(SUPPORT_OUTPUTDIR)/bundles/_$1_files \
|
||||
$(TAR_IGNORE_EXIT_VALUE) ) \
|
||||
| ( $(CD) $(SUPPORT_OUTPUTDIR)/bundles/$1/$$($1_SUBDIR) && $(TAR) xf - )
|
||||
# Unzip any zipped debuginfo files
|
||||
ifeq ($$($1_UNZIP_DEBUGINFO), true)
|
||||
for f in `$(FIND) $(SUPPORT_OUTPUTDIR)/bundles/$1/$$($1_SUBDIR) -name "*.diz"`; do \
|
||||
$(CD) $$$${f%/*} && $(UNZIP) -q $$$${f} && $(RM) $$$${f}; \
|
||||
done
|
||||
endif
|
||||
ifeq ($$($1_TYPE), tar.gz)
|
||||
$(CD) $(SUPPORT_OUTPUTDIR)/bundles/$1 && \
|
||||
( $(TAR) cf - $$($1_SUBDIR) $(TAR_IGNORE_EXIT_VALUE) ) | $(GZIP) > $$@
|
||||
else ifeq ($$($1_TYPE), zip)
|
||||
$(CD) $(SUPPORT_OUTPUTDIR)/bundles/$1 && $(ZIP) -qr $$@ .
|
||||
endif
|
||||
endif
|
||||
else
|
||||
ifeq ($$($1_TYPE), tar.gz)
|
||||
$(CD) $$($1_BASE_DIR) \
|
||||
&& ( $(TAR) cf - -$(TAR_INCLUDE_PARAM) $(SUPPORT_OUTPUTDIR)/bundles/_$1_files \
|
||||
$(TAR_IGNORE_EXIT_VALUE) ) \
|
||||
| $(GZIP) > $$@
|
||||
else ifeq ($$($1_TYPE), zip)
|
||||
$(CD) $$($1_BASE_DIR) \
|
||||
&& $(ZIP) -qr $$@ . -i@$(SUPPORT_OUTPUTDIR)/bundles/_$1_files
|
||||
endif
|
||||
endif
|
||||
|
||||
$1 += $(BUNDLES_OUTPUTDIR)/$$($1_BUNDLE_NAME)
|
||||
|
||||
endef
|
||||
|
||||
################################################################################
|
||||
|
||||
# On Macosx, we bundle up the macosx specific images which already have the
|
||||
# correct base directories.
|
||||
ifeq ($(OPENJDK_TARGET_OS), macosx)
|
||||
JDK_IMAGE_DIR := $(JDK_MACOSX_BUNDLE_DIR)
|
||||
JRE_IMAGE_DIR := $(JRE_MACOSX_BUNDLE_DIR)
|
||||
JDK_IMAGE_HOMEDIR := $(JDK_MACOSX_CONTENTS_DIR)/Home
|
||||
JRE_IMAGE_HOMEDIR := $(JRE_MACOSX_CONTENTS_DIR)/Home
|
||||
JDK_BUNDLE_SUBDIR :=
|
||||
JRE_BUNDLE_SUBDIR :=
|
||||
else
|
||||
JDK_IMAGE_HOMEDIR := $(JDK_IMAGE_DIR)
|
||||
JRE_IMAGE_HOMEDIR := $(JRE_IMAGE_DIR)
|
||||
JDK_BUNDLE_SUBDIR := jdk-$(VERSION_NUMBER)
|
||||
JRE_BUNDLE_SUBDIR := jre-$(VERSION_NUMBER)
|
||||
ifneq ($(DEBUG_LEVEL), release)
|
||||
JDK_BUNDLE_SUBDIR := $(JDK_BUNDLE_SUBDIR)/$(DEBUG_LEVEL)
|
||||
JRE_BUNDLE_SUBDIR := $(JRE_BUNDLE_SUBDIR)/$(DEBUG_LEVEL)
|
||||
endif
|
||||
endif
|
||||
|
||||
################################################################################
|
||||
|
||||
ifneq ($(filter product-bundles, $(MAKECMDGOALS)), )
|
||||
$(eval $(call FillCacheFind, $(IMAGES_OUTPUTDIR)))
|
||||
|
||||
SYMBOLS_EXCLUDE_PATTERN := %.debuginfo %.diz %.pdb %.map
|
||||
|
||||
ALL_JDK_FILES := $(call CacheFind, $(JDK_IMAGE_DIR))
|
||||
|
||||
# Create special filter rules when dealing with unzipped .dSYM directories on
|
||||
# macosx
|
||||
ifeq ($(OPENJDK_TARGET_OS), macosx)
|
||||
ifeq ($(ZIP_DEBUGINFO_FILES), false)
|
||||
JDK_SYMBOLS_EXCLUDE_PATTERN := $(addprefix %, \
|
||||
$(call containing, .dSYM/, $(patsubst $(JDK_IMAGE_DIR)/%, %, $(ALL_JDK_FILES))))
|
||||
endif
|
||||
endif
|
||||
|
||||
JDK_BUNDLE_FILES := \
|
||||
$(filter-out \
|
||||
$(JDK_SYMBOLS_EXCLUDE_PATTERN) \
|
||||
$(JDK_EXTRA_EXCLUDES) \
|
||||
$(SYMBOLS_EXCLUDE_PATTERN) \
|
||||
$(JDK_IMAGE_HOMEDIR)/demo/% $(JDK_IMAGE_HOMEDIR)/sample/% \
|
||||
, \
|
||||
$(ALL_JDK_FILES) \
|
||||
)
|
||||
DEMOS_BUNDLE_FILES := \
|
||||
$(filter-out \
|
||||
$(JDK_SYMBOLS_EXCLUDE_PATTERN) \
|
||||
$(SYMBOLS_EXCLUDE_PATTERN) \
|
||||
, \
|
||||
$(filter \
|
||||
$(JDK_IMAGE_HOMEDIR)/demo/% $(JDK_IMAGE_HOMEDIR)/sample/% \
|
||||
$(JDK_IMAGE_HOMEDIR)/release \
|
||||
, \
|
||||
$(ALL_JDK_FILES) \
|
||||
) \
|
||||
)
|
||||
JDK_SYMBOLS_BUNDLE_FILES := \
|
||||
$(filter \
|
||||
$(JDK_SYMBOLS_EXCLUDE_PATTERN) \
|
||||
$(SYMBOLS_EXCLUDE_PATTERN) \
|
||||
, \
|
||||
$(ALL_JDK_FILES) \
|
||||
) \
|
||||
$(call CacheFind, $(SYMBOLS_IMAGE_DIR))
|
||||
|
||||
ALL_JRE_FILES := $(call CacheFind, $(JRE_IMAGE_DIR))
|
||||
|
||||
# Create special filter rules when dealing with unzipped .dSYM directories on
|
||||
# macosx
|
||||
ifeq ($(OPENJDK_TARGET_OS), macosx)
|
||||
ifeq ($(ZIP_DEBUGINFO_FILES), false)
|
||||
JRE_SYMBOLS_EXCLUDE_PATTERN := $(addprefix %, \
|
||||
$(call containing, .dSYM/, $(patsubst $(JRE_IMAGE_DIR)/%, %, $(ALL_JRE_FILES))))
|
||||
endif
|
||||
endif
|
||||
|
||||
JRE_BUNDLE_FILES := $(filter-out \
|
||||
$(JRE_SYMBOLS_EXCLUDE_PATTERN) \
|
||||
$(SYMBOLS_EXCLUDE_PATTERN), \
|
||||
$(ALL_JRE_FILES))
|
||||
JRE_SYMBOLS_BUNDLE_FILES := $(filter \
|
||||
$(JRE_SYMBOLS_EXCLUDE_PATTERN) \
|
||||
$(SYMBOLS_EXCLUDE_PATTERN), \
|
||||
$(ALL_JRE_FILES))
|
||||
|
||||
$(eval $(call SetupBundleFile, BUILD_JDK_BUNDLE, \
|
||||
BUNDLE_NAME := $(JDK_BUNDLE_NAME), \
|
||||
FILES := $(JDK_BUNDLE_FILES), \
|
||||
SPECIAL_INCLUDES := $(JDK_SPECIAL_INCLUDES), \
|
||||
BASE_DIR := $(JDK_IMAGE_DIR), \
|
||||
SUBDIR := $(JDK_BUNDLE_SUBDIR), \
|
||||
))
|
||||
|
||||
PRODUCT_TARGETS += $(BUILD_JDK_BUNDLE)
|
||||
|
||||
$(eval $(call SetupBundleFile, BUILD_JRE_BUNDLE, \
|
||||
BUNDLE_NAME := $(JRE_BUNDLE_NAME), \
|
||||
FILES := $(JRE_BUNDLE_FILES), \
|
||||
BASE_DIR := $(JRE_IMAGE_DIR), \
|
||||
SUBDIR := $(JRE_BUNDLE_SUBDIR), \
|
||||
))
|
||||
|
||||
PRODUCT_TARGETS += $(BUILD_JRE_BUNDLE)
|
||||
|
||||
$(eval $(call SetupBundleFile, BUILD_JDK_SYMBOLS_BUNDLE, \
|
||||
BUNDLE_NAME := $(JDK_SYMBOLS_BUNDLE_NAME), \
|
||||
FILES := $(JDK_SYMBOLS_BUNDLE_FILES), \
|
||||
BASE_DIR := $(JDK_IMAGE_DIR), \
|
||||
SUBDIR := $(JDK_BUNDLE_SUBDIR), \
|
||||
UNZIP_DEBUGINFO := true, \
|
||||
))
|
||||
|
||||
PRODUCT_TARGETS += $(BUILD_JDK_SYMBOLS_BUNDLE)
|
||||
|
||||
$(eval $(call SetupBundleFile, BUILD_JRE_SYMBOLS_BUNDLE, \
|
||||
BUNDLE_NAME := $(JRE_SYMBOLS_BUNDLE_NAME), \
|
||||
FILES := $(JRE_SYMBOLS_BUNDLE_FILES), \
|
||||
BASE_DIR := $(JRE_IMAGE_DIR), \
|
||||
SUBDIR := $(JRE_BUNDLE_SUBDIR), \
|
||||
UNZIP_DEBUGINFO := true, \
|
||||
))
|
||||
|
||||
PRODUCT_TARGETS += $(BUILD_JRE_SYMBOLS_BUNDLE)
|
||||
|
||||
$(eval $(call SetupBundleFile, BUILD_DEMOS_BUNDLE, \
|
||||
BUNDLE_NAME := $(DEMOS_BUNDLE_NAME), \
|
||||
FILES := $(call DoubleDollar, $(DEMOS_BUNDLE_FILES)), \
|
||||
BASE_DIR := $(JDK_IMAGE_DIR), \
|
||||
SUBDIR := $(JDK_BUNDLE_SUBDIR), \
|
||||
))
|
||||
|
||||
PRODUCT_TARGETS += $(BUILD_DEMOS_BUNDLE)
|
||||
endif
|
||||
|
||||
################################################################################
|
||||
|
||||
ifneq ($(filter test-bundles, $(MAKECMDGOALS)), )
|
||||
TEST_BUNDLE_FILES := $(call CacheFind, $(TEST_IMAGE_DIR))
|
||||
|
||||
$(eval $(call SetupBundleFile, BUILD_TEST_BUNDLE, \
|
||||
BUNDLE_NAME := $(TEST_BUNDLE_NAME), \
|
||||
FILES := $(call DoubleDollar, $(TEST_BUNDLE_FILES)), \
|
||||
BASE_DIR := $(TEST_IMAGE_DIR), \
|
||||
))
|
||||
|
||||
TEST_TARGETS += $(BUILD_TEST_BUNDLE)
|
||||
endif
|
||||
|
||||
################################################################################
|
||||
|
||||
ifneq ($(filter docs-bundles, $(MAKECMDGOALS)), )
|
||||
DOCS_BUNDLE_FILES := $(call CacheFind, $(DOCS_IMAGE_DIR))
|
||||
|
||||
$(eval $(call SetupBundleFile, BUILD_DOCS_BUNDLE, \
|
||||
BUNDLE_NAME := $(DOCS_BUNDLE_NAME), \
|
||||
FILES := $(DOCS_BUNDLE_FILES), \
|
||||
BASE_DIR := $(DOCS_IMAGE_DIR), \
|
||||
SUBDIR := docs, \
|
||||
))
|
||||
|
||||
DOCS_TARGETS += $(BUILD_DOCS_BUNDLE)
|
||||
endif
|
||||
|
||||
################################################################################
|
||||
|
||||
# Hook to include the corresponding custom file, if present.
|
||||
$(eval $(call IncludeCustomExtension, , Bundles.gmk))
|
||||
|
||||
################################################################################
|
||||
|
||||
product-bundles: $(PRODUCT_TARGETS)
|
||||
test-bundles: $(TEST_TARGETS)
|
||||
docs-bundles: $(DOCS_TARGETS)
|
||||
|
||||
.PHONY: all default product-bundles test-bundles docs-bundles
|
@ -44,7 +44,7 @@ include NON_CORE_PKGS.gmk
|
||||
# Definitions for directories
|
||||
#
|
||||
|
||||
DOCSDIR := $(IMAGES_OUTPUTDIR)/docs
|
||||
DOCSDIR := $(DOCS_IMAGE_DIR)
|
||||
DOCSTMPDIR = $(SUPPORT_OUTPUTDIR)/docs
|
||||
|
||||
HOTSPOT_DOCS_IMPORT_PATH=$(HOTSPOT_OUTPUTDIR)/docs
|
||||
|
125
make/Jprt.gmk
125
make/Jprt.gmk
@ -32,14 +32,6 @@ ifneq ($(CYGPATH), )
|
||||
ifdef JPRT_ARCHIVE_BUNDLE
|
||||
override JPRT_ARCHIVE_BUNDLE := $(shell $(CYGPATH) -u $(JPRT_ARCHIVE_BUNDLE))
|
||||
endif
|
||||
ifdef JPRT_ARCHIVE_INSTALL_BUNDLE
|
||||
override JPRT_ARCHIVE_INSTALL_BUNDLE := \
|
||||
$(shell $(CYGPATH) -u $(JPRT_ARCHIVE_INSTALL_BUNDLE))
|
||||
endif
|
||||
ifdef JPRT_ARCHIVE_MODULES_BUNDLE
|
||||
override JPRT_ARCHIVE_MODULES_BUNDLE := \
|
||||
$(shell $(CYGPATH) -u $(JPRT_ARCHIVE_MODULES_BUNDLE))
|
||||
endif
|
||||
ifdef JPRT_ARCHIVE_TEST_BUNDLE
|
||||
override JPRT_ARCHIVE_TEST_BUNDLE := \
|
||||
$(shell $(CYGPATH) -u $(JPRT_ARCHIVE_TEST_BUNDLE))
|
||||
@ -55,12 +47,6 @@ endif
|
||||
ifndef JPRT_ARCHIVE_BUNDLE
|
||||
JPRT_ARCHIVE_BUNDLE=/tmp/jprt_bundles/jdk-image.zip
|
||||
endif
|
||||
ifndef JPRT_ARCHIVE_INSTALL_BUNDLE
|
||||
JPRT_ARCHIVE_INSTALL_BUNDLE=/tmp/jprt_bundles/product-install.zip
|
||||
endif
|
||||
ifndef JPRT_ARCHIVE_MODULES_BUNDLE
|
||||
JPRT_ARCHIVE_MODULES_BUNDLE=/tmp/jprt_bundles/modules.zip
|
||||
endif
|
||||
ifndef JPRT_ARCHIVE_TEST_BUNDLE
|
||||
JPRT_ARCHIVE_TEST_BUNDLE=/tmp/jprt_bundles/test-image.zip
|
||||
endif
|
||||
@ -72,94 +58,51 @@ ifeq ($(SKIP_BOOT_CYCLE), false)
|
||||
jprt_bundle: bootcycle-images
|
||||
endif
|
||||
|
||||
# This target must be called in the context of a SPEC file
|
||||
jprt_bundle: $(JPRT_ARCHIVE_BUNDLE) $(JPRT_ARCHIVE_TEST_BUNDLE) \
|
||||
$(JPRT_ARCHIVE_MODULES_BUNDLE)
|
||||
################################################################################
|
||||
# JPRT specific bundling targets
|
||||
JPRT_TARGET ?= $(DEFAULT_MAKE_TARGET)
|
||||
ifeq ($(JPRT_TARGET), $(DEFAULT_MAKE_TARGET))
|
||||
jprt_bundle: $(DEFAULT_MAKE_TARGET) $(JPRT_ARCHIVE_BUNDLE) \
|
||||
$(JPRT_ARCHIVE_TEST_BUNDLE)
|
||||
|
||||
ifeq ($(GCOV_ENABLED), true)
|
||||
jprt_bundle: $(JPRT_ARCHIVE_SYMBOLS_BUNDLE)
|
||||
endif
|
||||
SRC_JDK_IMAGE_DIR := $(JDK_IMAGE_DIR)
|
||||
SRC_TEST_IMAGE_DIR := $(TEST_IMAGE_DIR)
|
||||
|
||||
# This target must be called in the context of a SPEC file
|
||||
$(JPRT_ARCHIVE_BUNDLE): bundles
|
||||
$(MKDIR) -p $(@D)
|
||||
$(RM) $@
|
||||
$(CP) $(BUILD_OUTPUT)/bundles/$(JDK_IMAGE_SUBDIR).zip $@
|
||||
# This target must be called in the context of a SPEC file
|
||||
$(JPRT_ARCHIVE_BUNDLE): product-images
|
||||
$(call MakeDir, $(@D))
|
||||
$(CD) $(SRC_JDK_IMAGE_DIR) && $(ZIP) -y -q -r $@ .
|
||||
|
||||
$(JPRT_ARCHIVE_MODULES_BUNDLE): bundles
|
||||
$(MKDIR) -p $(@D)
|
||||
$(RM) $@
|
||||
$(CP) $(BUILD_OUTPUT)/bundles/modules.zip $@
|
||||
$(JPRT_ARCHIVE_TEST_BUNDLE): test-image
|
||||
$(call MakeDir, $(@D))
|
||||
$(CD) $(SRC_TEST_IMAGE_DIR) && $(ZIP) -y -q -r $@ .
|
||||
|
||||
$(JPRT_ARCHIVE_TEST_BUNDLE): bundles
|
||||
$(MKDIR) -p $(@D)
|
||||
$(RM) $@
|
||||
$(CP) $(BUILD_OUTPUT)/bundles/$(TEST_IMAGE_SUBDIR).zip $@
|
||||
##############################################################################
|
||||
# Optional symbols bundle
|
||||
ifeq ($(GCOV_ENABLED), true)
|
||||
jprt_bundle: $(JPRT_ARCHIVE_SYMBOLS_BUNDLE)
|
||||
zip-bundles: $(SYMBOLS_ZIP_BUNDLE)
|
||||
|
||||
$(JPRT_ARCHIVE_SYMBOLS_BUNDLE): bundles
|
||||
$(MKDIR) -p $(@D)
|
||||
$(RM) $@
|
||||
$(CP) $(BUILD_OUTPUT)/bundles/$(SYMBOLS_IMAGE_SUBDIR).zip $@
|
||||
$(JPRT_ARCHIVE_SYMBOLS_BUNDLE): product-images
|
||||
$(call MakeDir, $(@D))
|
||||
$(CD) $(SYMBOLS_IMAGE_DIR) && $(ZIP) -y -q -r $@ .
|
||||
|
||||
SRC_JDK_IMAGE_DIR := $(JDK_IMAGE_DIR)
|
||||
SRC_JRE_IMAGE_DIR := $(JRE_IMAGE_DIR)
|
||||
SRC_TEST_IMAGE_DIR := $(TEST_IMAGE_DIR)
|
||||
SRC_JDK_MACOSX_BUNDLE_DIR := $(JDK_MACOSX_BUNDLE_DIR)
|
||||
SRC_JRE_MACOSX_BUNDLE_DIR := $(JRE_MACOSX_BUNDLE_DIR)
|
||||
endif
|
||||
|
||||
##############################################################################
|
||||
|
||||
# Bundle up the images
|
||||
JPRT_TARGET ?= default
|
||||
ifeq ($(JPRT_TARGET), default)
|
||||
bundles: $(JPRT_TARGET)
|
||||
@$(call TargetEnter)
|
||||
$(MKDIR) -p $(BUILD_OUTPUT)/bundles
|
||||
$(CD) $(SRC_JDK_IMAGE_DIR) && $(ZIP) -y -q -r \
|
||||
$(BUILD_OUTPUT)/bundles/$(JDK_IMAGE_SUBDIR).zip .
|
||||
$(CD) $(SRC_JRE_IMAGE_DIR) && $(ZIP) -y -q -r \
|
||||
$(BUILD_OUTPUT)/bundles/$(JRE_IMAGE_SUBDIR).zip .
|
||||
$(CD) $(SRC_TEST_IMAGE_DIR) && $(ZIP) -y -q -r \
|
||||
$(BUILD_OUTPUT)/bundles/$(TEST_IMAGE_SUBDIR).zip .
|
||||
$(CD) $(IMAGES_OUTPUTDIR)/jmods && $(ZIP) -y -q -r \
|
||||
$(BUILD_OUTPUT)/bundles/modules.zip .
|
||||
if [ -d $(BUILD_OUTPUT)/install/bundles ] ; then \
|
||||
$(CD) $(BUILD_OUTPUT)/install/bundles && $(ZIP) -y -q -r \
|
||||
$(JPRT_ARCHIVE_INSTALL_BUNDLE) . ; \
|
||||
fi
|
||||
if [ -d $(SYMBOLS_IMAGE_DIR) ] ; then \
|
||||
$(CD) $(SYMBOLS_IMAGE_DIR) && $(ZIP) -y -q -r \
|
||||
$(BUILD_OUTPUT)/bundles/$(SYMBOLS_IMAGE_SUBDIR).zip . ; \
|
||||
fi
|
||||
@$(call TargetExit)
|
||||
else
|
||||
# Just fake the bundles
|
||||
bundles: $(JPRT_TARGET)
|
||||
# Just fake the main bundle to satisfy JPRT
|
||||
jprt_bundle: $(JPRT_TARGET)
|
||||
@$(call TargetEnter)
|
||||
$(MKDIR) -p $(BUILD_OUTPUT)/bundles
|
||||
$(CD) $(TOPDIR) && $(ZIP) -y -q -r \
|
||||
$(BUILD_OUTPUT)/bundles/$(JDK_IMAGE_SUBDIR).zip README
|
||||
$(CD) $(TOPDIR) && $(ZIP) -y -q -r \
|
||||
$(BUILD_OUTPUT)/bundles/$(JRE_IMAGE_SUBDIR).zip README
|
||||
$(CD) $(TOPDIR) && $(ZIP) -y -q -r \
|
||||
$(BUILD_OUTPUT)/bundles/$(TEST_IMAGE_SUBDIR).zip README
|
||||
$(CD) $(TOPDIR) && $(ZIP) -y -q -r \
|
||||
$(BUILD_OUTPUT)/bundles/modules.zip README
|
||||
$(CD) $(TOPDIR) && $(TAR) cf - README | $(GZIP) > \
|
||||
$(JPRT_ARCHIVE_BUNDLE)
|
||||
@$(call TargetExit)
|
||||
endif
|
||||
|
||||
# Copy images to one unified location regardless of platform etc.
|
||||
final-images: $(JPRT_TARGET)
|
||||
@$(call TargetEnter)
|
||||
$(RM) -r $(BUILD_OUTPUT)/final-images
|
||||
$(MKDIR) -p $(BUILD_OUTPUT)/final-images/$(JDK_IMAGE_SUBDIR)
|
||||
$(MKDIR) -p $(BUILD_OUTPUT)/final-images/$(JRE_IMAGE_SUBDIR)
|
||||
$(CP) -R -P $(SRC_JDK_IMAGE_DIR)/* $(BUILD_OUTPUT)/final-images/$(JDK_IMAGE_SUBDIR)/
|
||||
$(CP) -R -P $(SRC_JRE_IMAGE_DIR)/* $(BUILD_OUTPUT)/final-images/$(JRE_IMAGE_SUBDIR)/
|
||||
ifeq ($(OPENJDK_TARGET_OS),macosx)
|
||||
$(MKDIR) -p $(BUILD_OUTPUT)/final-images/$(JDK_MACOSX_BUNDLE_SUBDIR)
|
||||
$(MKDIR) -p $(BUILD_OUTPUT)/final-images/$(JRE_MACOSX_BUNDLE_SUBDIR)
|
||||
$(CP) -R -P $(SRC_JDK_MACOSX_BUNDLE_DIR)/* $(BUILD_OUTPUT)/final-images/$(JDK_MACOSX_BUNDLE_SUBDIR)/
|
||||
$(CP) -R -P $(SRC_JRE_MACOSX_BUNDLE_DIR)/* $(BUILD_OUTPUT)/final-images/$(JRE_MACOSX_BUNDLE_SUBDIR)/
|
||||
endif
|
||||
@$(call TargetExit)
|
||||
ALL_TARGETS += jprt_bundle
|
||||
|
||||
ALL_TARGETS += jprt_bundle bundles final-images
|
||||
################################################################################
|
||||
|
||||
$(eval $(call IncludeCustomExtension, , Jprt.gmk))
|
||||
|
@ -34,7 +34,7 @@ ifeq ($(OPENJDK_TARGET_OS), macosx)
|
||||
|
||||
bundles: jre-bundle jdk-bundle
|
||||
|
||||
# JDK_MACOSX_BUNDLE_DIR and JRE_MACOSX_BUNDLE_DIR are defined in SPEC.
|
||||
# JDK_MACOSX_CONTENTS_DIR and JRE_MACOSX_CONTENTS_DIR are defined in SPEC.
|
||||
|
||||
MACOSX_PLIST_SRC := $(JDK_TOPDIR)/make/data/bundle
|
||||
|
||||
@ -52,27 +52,27 @@ ifeq ($(OPENJDK_TARGET_OS), macosx)
|
||||
JDK_FILE_LIST := $(shell $(FIND) $(JDK_IMAGE_DIR))
|
||||
JRE_FILE_LIST := $(shell $(FIND) $(JRE_IMAGE_DIR))
|
||||
|
||||
JDK_TARGET_LIST := $(subst $(JDK_IMAGE_DIR)/,$(JDK_MACOSX_BUNDLE_DIR)/Home/,$(JDK_FILE_LIST))
|
||||
JRE_TARGET_LIST := $(subst $(JRE_IMAGE_DIR)/,$(JRE_MACOSX_BUNDLE_DIR)/Home/,$(JRE_FILE_LIST))
|
||||
JDK_TARGET_LIST := $(subst $(JDK_IMAGE_DIR)/,$(JDK_MACOSX_CONTENTS_DIR)/Home/,$(JDK_FILE_LIST))
|
||||
JRE_TARGET_LIST := $(subst $(JRE_IMAGE_DIR)/,$(JRE_MACOSX_CONTENTS_DIR)/Home/,$(JRE_FILE_LIST))
|
||||
|
||||
# Copy empty directories (jre/lib/applet).
|
||||
$(JDK_MACOSX_BUNDLE_DIR)/Home/%: $(JDK_IMAGE_DIR)/%
|
||||
$(JDK_MACOSX_CONTENTS_DIR)/Home/%: $(JDK_IMAGE_DIR)/%
|
||||
$(call LogInfo, Copying $(patsubst $(OUTPUT_ROOT)/%,%,$@))
|
||||
$(MKDIR) -p $(@D)
|
||||
if [ -d "$<" ]; then $(MKDIR) -p $@; else $(CP) -f -R -P '$<' '$@'; fi
|
||||
|
||||
$(JRE_MACOSX_BUNDLE_DIR)/Home/%: $(JRE_IMAGE_DIR)/%
|
||||
$(JRE_MACOSX_CONTENTS_DIR)/Home/%: $(JRE_IMAGE_DIR)/%
|
||||
$(call LogInfo, Copying $(patsubst $(OUTPUT_ROOT)/%,%,$@))
|
||||
$(MKDIR) -p $(@D)
|
||||
if [ -d "$<" ]; then $(MKDIR) -p $@; else $(CP) -f -R -P '$<' '$@'; fi
|
||||
|
||||
$(JDK_MACOSX_BUNDLE_DIR)/MacOS/libjli.dylib:
|
||||
$(JDK_MACOSX_CONTENTS_DIR)/MacOS/libjli.dylib:
|
||||
$(call LogInfo, Creating link $(patsubst $(OUTPUT_ROOT)/%,%,$@))
|
||||
$(MKDIR) -p $(@D)
|
||||
$(RM) $@
|
||||
$(LN) -s ../Home/lib/jli/libjli.dylib $@
|
||||
|
||||
$(JRE_MACOSX_BUNDLE_DIR)/MacOS/libjli.dylib:
|
||||
$(JRE_MACOSX_CONTENTS_DIR)/MacOS/libjli.dylib:
|
||||
$(call LogInfo, Creating link $(patsubst $(OUTPUT_ROOT)/%,%,$@))
|
||||
$(MKDIR) -p $(@D)
|
||||
$(RM) $@
|
||||
@ -80,7 +80,7 @@ ifeq ($(OPENJDK_TARGET_OS), macosx)
|
||||
|
||||
$(eval $(call SetupTextFileProcessing, BUILD_JDK_PLIST, \
|
||||
SOURCE_FILES := $(MACOSX_PLIST_SRC)/JDK-Info.plist, \
|
||||
OUTPUT_FILE := $(JDK_MACOSX_BUNDLE_DIR)/Info.plist, \
|
||||
OUTPUT_FILE := $(JDK_MACOSX_CONTENTS_DIR)/Info.plist, \
|
||||
REPLACEMENTS := \
|
||||
@@ID@@ => $(BUNDLE_ID).jdk ; \
|
||||
@@NAME@@ => $(BUNDLE_NAME) ; \
|
||||
@ -92,7 +92,7 @@ ifeq ($(OPENJDK_TARGET_OS), macosx)
|
||||
|
||||
$(eval $(call SetupTextFileProcessing, BUILD_JRE_PLIST, \
|
||||
SOURCE_FILES := $(MACOSX_PLIST_SRC)/JRE-Info.plist, \
|
||||
OUTPUT_FILE := $(JRE_MACOSX_BUNDLE_DIR)/Info.plist, \
|
||||
OUTPUT_FILE := $(JRE_MACOSX_CONTENTS_DIR)/Info.plist, \
|
||||
REPLACEMENTS := \
|
||||
@@ID@@ => $(BUNDLE_ID).jre ; \
|
||||
@@NAME@@ => $(BUNDLE_NAME) ; \
|
||||
@ -102,13 +102,13 @@ ifeq ($(OPENJDK_TARGET_OS), macosx)
|
||||
@@VENDOR@@ => $(BUNDLE_VENDOR) , \
|
||||
))
|
||||
|
||||
jdk-bundle: $(JDK_TARGET_LIST) $(JDK_MACOSX_BUNDLE_DIR)/MacOS/libjli.dylib \
|
||||
jdk-bundle: $(JDK_TARGET_LIST) $(JDK_MACOSX_CONTENTS_DIR)/MacOS/libjli.dylib \
|
||||
$(BUILD_JDK_PLIST)
|
||||
$(SETFILE) -a B $(dir $(JDK_MACOSX_BUNDLE_DIR))
|
||||
$(SETFILE) -a B $(dir $(JDK_MACOSX_CONTENTS_DIR))
|
||||
|
||||
jre-bundle: $(JRE_TARGET_LIST) $(JRE_MACOSX_BUNDLE_DIR)/MacOS/libjli.dylib \
|
||||
jre-bundle: $(JRE_TARGET_LIST) $(JRE_MACOSX_CONTENTS_DIR)/MacOS/libjli.dylib \
|
||||
$(BUILD_JRE_PLIST)
|
||||
$(SETFILE) -a B $(dir $(JRE_MACOSX_BUNDLE_DIR))
|
||||
$(SETFILE) -a B $(dir $(JRE_MACOSX_CONTENTS_DIR))
|
||||
|
||||
else # Not macosx
|
||||
|
||||
|
@ -453,6 +453,20 @@ test-make:
|
||||
ALL_TARGETS += test test-hotspot-jtreg test-hotspot-jtreg-native \
|
||||
test-hotspot-internal test-jdk-jtreg-native test-make
|
||||
|
||||
################################################################################
|
||||
# Bundles
|
||||
|
||||
product-bundles:
|
||||
+($(CD) $(TOPDIR)/make && $(MAKE) $(MAKE_ARGS) -f Bundles.gmk product-bundles)
|
||||
|
||||
test-bundles:
|
||||
+($(CD) $(TOPDIR)/make && $(MAKE) $(MAKE_ARGS) -f Bundles.gmk test-bundles)
|
||||
|
||||
docs-bundles:
|
||||
+($(CD) $(TOPDIR)/make && $(MAKE) $(MAKE_ARGS) -f Bundles.gmk docs-bundles)
|
||||
|
||||
ALL_TARGETS += product-bundles test-bundles docs-bundles
|
||||
|
||||
################################################################################
|
||||
# Install targets
|
||||
|
||||
@ -678,6 +692,12 @@ else
|
||||
|
||||
install: product-images
|
||||
|
||||
product-bundles: product-images
|
||||
|
||||
test-bundles: test-image
|
||||
|
||||
docs-bundles: docs-image
|
||||
|
||||
generate-summary: jmods
|
||||
|
||||
endif
|
||||
@ -758,12 +778,16 @@ docs-image: docs-javadoc docs-jvmtidoc
|
||||
test-image: prepare-test-image test-image-hotspot-jtreg-native \
|
||||
test-image-jdk-jtreg-native test-image-failure-handler test-image-hotspot-gtest
|
||||
|
||||
# all-images is the top-most target, it builds all our deliverables ("images").
|
||||
# all-images builds all our deliverables as images.
|
||||
all-images: product-images test-image docs-image
|
||||
|
||||
# all-bundles packages all our deliverables as tar.gz bundles.
|
||||
all-bundles: product-bundles test-bundles docs-bundles
|
||||
|
||||
ALL_TARGETS += buildtools gensrc gendata copy java rmic libs launchers jmods \
|
||||
jdk.jdwp.agent-gensrc $(ALL_MODULES) demos samples exploded-image \
|
||||
create-buildjdk mac-bundles product-images docs-image test-image all-images
|
||||
create-buildjdk mac-bundles product-images docs-image test-image all-images \
|
||||
all-bundles
|
||||
|
||||
################################################################################
|
||||
|
||||
@ -774,9 +798,10 @@ default: $(DEFAULT_MAKE_TARGET)
|
||||
jdk: exploded-image
|
||||
images: product-images
|
||||
docs: docs-image
|
||||
bundles: all-bundles
|
||||
all: all-images
|
||||
|
||||
ALL_TARGETS += default jdk images docs all
|
||||
ALL_TARGETS += default jdk images docs bundles all
|
||||
|
||||
################################################################################
|
||||
################################################################################
|
||||
|
@ -145,7 +145,7 @@ ifeq ($(HAS_FILE_FUNCTION), true)
|
||||
$$(strip $2),$$(subst $$(SPACE),$$(NEWLINE),$$(strip $$($$(strip $1)))))
|
||||
endef
|
||||
|
||||
else # HAS_FILE_FUNCTION
|
||||
else # HAS_FILE_FUNCTION = false
|
||||
|
||||
$(eval compress_paths = \
|
||||
$(strip $(shell $(CAT) $(SRC_ROOT)/make/common/support/ListPathsSafely-pre-compress.incl)))
|
||||
@ -172,8 +172,8 @@ else # HAS_FILE_FUNCTION
|
||||
# Param 2 - File to print to
|
||||
# Param 3 - Set to true to append to file instead of overwriting
|
||||
define ListPathsSafely
|
||||
ifneq (,$$(word 10001,$$($1)))
|
||||
$$(error Cannot list safely more than 10000 paths. $1 has $$(words $$($1)) paths!)
|
||||
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)
|
||||
@ -229,6 +229,106 @@ else # HAS_FILE_FUNCTION
|
||||
$$(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
|
||||
|
||||
@ -420,8 +520,12 @@ else ifeq ($(OPENJDK_TARGET_OS),macosx)
|
||||
# set. Some files get their write permissions removed after being copied to the
|
||||
# output dir. When these are copied again to images, xattr would fail. By only clearing
|
||||
# attributes when they are present, failing on this is avoided.
|
||||
#
|
||||
# If copying a soft link to a directory, need to delete the target first to avoid
|
||||
# weird errors.
|
||||
define install-file
|
||||
$(MKDIR) -p '$(@D)'
|
||||
$(RM) '$@'
|
||||
$(CP) -fRP '$<' '$@'
|
||||
if [ -n "`$(XATTR) -l '$@'`" ]; then $(XATTR) -c '$@'; fi
|
||||
endef
|
||||
|
Loading…
x
Reference in New Issue
Block a user