8136782: Introduce a build/configure wrapper
Reviewed-by: ihse
This commit is contained in:
parent
a4a04cc6ed
commit
129c3028ee
@ -4,6 +4,7 @@ nbproject/private/
|
|||||||
^webrev
|
^webrev
|
||||||
^.hgtip
|
^.hgtip
|
||||||
^.bridge2
|
^.bridge2
|
||||||
|
^.jab/
|
||||||
.DS_Store
|
.DS_Store
|
||||||
.metadata/
|
.metadata/
|
||||||
.recommenders/
|
.recommenders/
|
||||||
|
@ -99,7 +99,13 @@ AC_DEFUN([BASIC_FIXUP_PATH],
|
|||||||
AC_MSG_ERROR([The path of $1, which resolves as "$path", is not found.])
|
AC_MSG_ERROR([The path of $1, which resolves as "$path", is not found.])
|
||||||
fi
|
fi
|
||||||
|
|
||||||
$1="`cd "$path"; $THEPWDCMD -L`"
|
if test -d "$path"; then
|
||||||
|
$1="`cd "$path"; $THEPWDCMD -L`"
|
||||||
|
else
|
||||||
|
dir="`$DIRNAME "$path"`"
|
||||||
|
base="`$BASENAME "$path"`"
|
||||||
|
$1="`cd "$dir"; $THEPWDCMD -L`/$base"
|
||||||
|
fi
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
])
|
])
|
||||||
@ -1072,6 +1078,26 @@ AC_DEFUN_ONCE([BASIC_CHECK_BASH_OPTIONS],
|
|||||||
AC_SUBST(BASH_ARGS)
|
AC_SUBST(BASH_ARGS)
|
||||||
])
|
])
|
||||||
|
|
||||||
|
################################################################################
|
||||||
|
#
|
||||||
|
# Default make target
|
||||||
|
#
|
||||||
|
AC_DEFUN_ONCE([BASIC_SETUP_DEFAULT_MAKE_TARGET],
|
||||||
|
[
|
||||||
|
AC_ARG_WITH(default-make-target, [AS_HELP_STRING([--with-default-make-target],
|
||||||
|
[set the default make target @<:@exploded-image@:>@])])
|
||||||
|
if test "x$with_default_make_target" = "x" \
|
||||||
|
|| test "x$with_default_make_target" = "xyes"; then
|
||||||
|
DEFAULT_MAKE_TARGET="exploded-image"
|
||||||
|
elif test "x$with_default_make_target" = "xno"; then
|
||||||
|
AC_MSG_ERROR([--without-default-make-target is not a valid option])
|
||||||
|
else
|
||||||
|
DEFAULT_MAKE_TARGET="$with_default_make_target"
|
||||||
|
fi
|
||||||
|
|
||||||
|
AC_SUBST(DEFAULT_MAKE_TARGET)
|
||||||
|
])
|
||||||
|
|
||||||
# Code to run after AC_OUTPUT
|
# Code to run after AC_OUTPUT
|
||||||
AC_DEFUN_ONCE([BASIC_POST_CONFIG_OUTPUT],
|
AC_DEFUN_ONCE([BASIC_POST_CONFIG_OUTPUT],
|
||||||
[
|
[
|
||||||
|
8
common/autoconf/configure
vendored
8
common/autoconf/configure
vendored
@ -257,10 +257,14 @@ fi
|
|||||||
|
|
||||||
# Now transfer control to the script generated by autoconf. This is where the
|
# Now transfer control to the script generated by autoconf. This is where the
|
||||||
# main work is done.
|
# main work is done.
|
||||||
|
RCDIR=`mktemp -dt jdk-build-configure.tmp.XXXXXX` || exit $?
|
||||||
|
trap "rm -rf \"$RCDIR\"" EXIT
|
||||||
conf_logfile=./configure.log
|
conf_logfile=./configure.log
|
||||||
(exec 3>&1 ; (. $conf_script_to_run "${conf_processed_arguments[@]}" 2>&1 1>&3 ) | tee -a $conf_logfile 1>&2 ; exec 3>&-) | tee -a $conf_logfile
|
(exec 3>&1 ; ((. $conf_script_to_run "${conf_processed_arguments[@]}" 2>&1 1>&3 ) \
|
||||||
|
; echo $? > "$RCDIR/rc" ) \
|
||||||
|
| tee -a $conf_logfile 1>&2 ; exec 3>&-) | tee -a $conf_logfile
|
||||||
|
|
||||||
conf_result_code=$?
|
conf_result_code=`cat "$RCDIR/rc"`
|
||||||
###
|
###
|
||||||
### Post-processing
|
### Post-processing
|
||||||
###
|
###
|
||||||
|
@ -121,6 +121,9 @@ PKG_PROG_PKG_CONFIG
|
|||||||
# After basic tools have been setup, we can check build os specific details.
|
# After basic tools have been setup, we can check build os specific details.
|
||||||
PLATFORM_SETUP_OPENJDK_BUILD_OS_VERSION
|
PLATFORM_SETUP_OPENJDK_BUILD_OS_VERSION
|
||||||
|
|
||||||
|
# Misc basic settings
|
||||||
|
BASIC_SETUP_DEFAULT_MAKE_TARGET
|
||||||
|
|
||||||
###############################################################################
|
###############################################################################
|
||||||
#
|
#
|
||||||
# Determine OpenJDK variants, options and version numbers.
|
# Determine OpenJDK variants, options and version numbers.
|
||||||
|
File diff suppressed because it is too large
Load Diff
@ -271,6 +271,9 @@ SJAVAC_SERVER_DIR=$(MAKESUPPORT_OUTPUTDIR)/javacservers
|
|||||||
# Number of parallel jobs to use for compilation
|
# Number of parallel jobs to use for compilation
|
||||||
JOBS?=@JOBS@
|
JOBS?=@JOBS@
|
||||||
|
|
||||||
|
# Default make target
|
||||||
|
DEFAULT_MAKE_TARGET:=@DEFAULT_MAKE_TARGET@
|
||||||
|
|
||||||
FREETYPE_LIBS:=@FREETYPE_LIBS@
|
FREETYPE_LIBS:=@FREETYPE_LIBS@
|
||||||
FREETYPE_CFLAGS:=@FREETYPE_CFLAGS@
|
FREETYPE_CFLAGS:=@FREETYPE_CFLAGS@
|
||||||
FREETYPE_BUNDLE_LIB_PATH=@FREETYPE_BUNDLE_LIB_PATH@
|
FREETYPE_BUNDLE_LIB_PATH=@FREETYPE_BUNDLE_LIB_PATH@
|
||||||
|
127
common/bin/jab.sh
Normal file
127
common/bin/jab.sh
Normal file
@ -0,0 +1,127 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
#
|
||||||
|
# Copyright (c) 2015, 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.
|
||||||
|
#
|
||||||
|
# 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.
|
||||||
|
#
|
||||||
|
|
||||||
|
# This script installs the JAB tool into it's own local repository and
|
||||||
|
# puts a wrapper scripts into <source-root>/.jab
|
||||||
|
|
||||||
|
mydir="$(dirname "${BASH_SOURCE[0]}")"
|
||||||
|
myname="$(basename "${BASH_SOURCE[0]}")"
|
||||||
|
|
||||||
|
installed_jab_script=${mydir}/../../.jab/jab
|
||||||
|
install_data=${mydir}/../../.jab/.data
|
||||||
|
|
||||||
|
setup_url() {
|
||||||
|
if [ -f "~/.config/jab/jab.conf" ]; then
|
||||||
|
source ~/.config/jab/jab.conf
|
||||||
|
fi
|
||||||
|
|
||||||
|
jab_repository="jdk-virtual"
|
||||||
|
jab_organization="jpg/infra/builddeps"
|
||||||
|
jab_module="jab"
|
||||||
|
jab_revision="2.0-SNAPSHOT"
|
||||||
|
jab_ext="jab.sh.gz"
|
||||||
|
|
||||||
|
closed_script="${mydir}/../../closed/conf/jab-install.conf"
|
||||||
|
if [ -f "${closed_script}" ]; then
|
||||||
|
source "${closed_script}"
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ -n "${JAB_SERVER}" ]; then
|
||||||
|
jab_server="${JAB_SERVER}"
|
||||||
|
fi
|
||||||
|
if [ -n "${JAB_REPOSITORY}" ]; then
|
||||||
|
jab_repository="${JAB_REPOSITORY}"
|
||||||
|
fi
|
||||||
|
if [ -n "${JAB_ORGANIZATION}" ]; then
|
||||||
|
jab_organization="${JAB_ORGANIZATION}"
|
||||||
|
fi
|
||||||
|
if [ -n "${JAB_MODULE}" ]; then
|
||||||
|
jab_module="${JAB_MODULE}"
|
||||||
|
fi
|
||||||
|
if [ -n "${JAB_REVISION}" ]; then
|
||||||
|
jab_revision="${JAB_REVISION}"
|
||||||
|
fi
|
||||||
|
if [ -n "${JAB_EXTENSION}" ]; then
|
||||||
|
jab_extension="${JAB_EXTENSION}"
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ -n "${JAB_URL}" ]; then
|
||||||
|
jab_url="${JAB_URL}"
|
||||||
|
data_string="${jab_url}"
|
||||||
|
else
|
||||||
|
data_string="${jab_repository}/${jab_organization}/${jab_module}/${jab_revision}/${jab_module}-${jab_revision}.${jab_ext}"
|
||||||
|
jab_url="${jab_server}/${data_string}"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
install_jab() {
|
||||||
|
if [ -z "${jab_server}" -a -z "${JAB_URL}" ]; then
|
||||||
|
echo "No jab server or URL provided, set either"
|
||||||
|
echo "JAB_SERVER=<base server address>"
|
||||||
|
echo "or"
|
||||||
|
echo "JAB_URL=<full path to install script>"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
if command -v curl > /dev/null; then
|
||||||
|
getcmd="curl -s"
|
||||||
|
elif command -v wget > /dev/null; then
|
||||||
|
getcmd="wget --quiet -O -"
|
||||||
|
else
|
||||||
|
echo "Could not find either curl or wget"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
if ! command -v gunzip > /dev/null; then
|
||||||
|
echo "Could not find gunzip"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "Downloading JAB bootstrap script"
|
||||||
|
mkdir -p "${installed_jab_script%/*}"
|
||||||
|
rm -f "${installed_jab_script}.gz"
|
||||||
|
${getcmd} ${jab_url} > "${installed_jab_script}.gz"
|
||||||
|
if [ ! -s "${installed_jab_script}.gz" ]; then
|
||||||
|
echo "Failed to download ${jab_url}"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
echo "Extracting JAB bootstrap script"
|
||||||
|
rm -f "${installed_jab_script}"
|
||||||
|
gunzip "${installed_jab_script}.gz"
|
||||||
|
chmod +x "${installed_jab_script}"
|
||||||
|
echo "${data_string}" > "${install_data}"
|
||||||
|
}
|
||||||
|
|
||||||
|
# Main body starts here
|
||||||
|
|
||||||
|
setup_url
|
||||||
|
|
||||||
|
if [ ! -x "${installed_jab_script}" ]; then
|
||||||
|
install_jab
|
||||||
|
elif [ ! -e "${install_data}" ] || [ "${data_string}" != "$(cat "${install_data}")" ]; then
|
||||||
|
echo "Install url changed since last time, reinstalling"
|
||||||
|
install_jab
|
||||||
|
fi
|
||||||
|
|
||||||
|
${installed_jab_script} "$@"
|
555
common/conf/jab-profiles.js
Normal file
555
common/conf/jab-profiles.js
Normal file
@ -0,0 +1,555 @@
|
|||||||
|
/*
|
||||||
|
* Copyright (c) 2015, 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.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*
|
||||||
|
* This file defines build profiles for the JAB tool and others.
|
||||||
|
*
|
||||||
|
* A build profile defines a set of configuration options and external
|
||||||
|
* dependencies that we for some reason or other care about specifically.
|
||||||
|
* Typically, build profiles are defined for the build configurations we
|
||||||
|
* build regularly.
|
||||||
|
*
|
||||||
|
* Contract against this file from the tools that use it, is to provide
|
||||||
|
* a function on the form:
|
||||||
|
*
|
||||||
|
* getJabProfiles(input)
|
||||||
|
*
|
||||||
|
* which returns an object graph describing the profiles and their
|
||||||
|
* dependencies. The name of the function is based on the name of this
|
||||||
|
* file, minus the extension and the '-', camel cased and prefixed with
|
||||||
|
* 'get'.
|
||||||
|
*
|
||||||
|
*
|
||||||
|
* The parameter 'input' is an object that optionally contains some data.
|
||||||
|
* Optionally because a tool may read the configuration for different purposes.
|
||||||
|
* To initially get a list of available profiles, the active profile may not
|
||||||
|
* yet be known for instance.
|
||||||
|
*
|
||||||
|
* Data that may be set on the input object:
|
||||||
|
*
|
||||||
|
* input.profile = <name of active profile>
|
||||||
|
*
|
||||||
|
* If the active profile is set, the following data from it must also
|
||||||
|
* be provided:
|
||||||
|
*
|
||||||
|
* input.profile
|
||||||
|
* input.target_os
|
||||||
|
* input.target_cpu
|
||||||
|
* input.build_os
|
||||||
|
* input.build_cpu
|
||||||
|
* input.target_platform
|
||||||
|
* input.build_platform
|
||||||
|
* // The build_osenv_* variables describe the unix layer on Windows systems,
|
||||||
|
* // i.e. Cygwin, which may also be 32 or 64 bit.
|
||||||
|
* input.build_osenv
|
||||||
|
* input.build_osenv_cpu
|
||||||
|
* input.build_osenv_platform
|
||||||
|
*
|
||||||
|
* For more complex nested attributes, there is a method "get":
|
||||||
|
*
|
||||||
|
* input.get("<dependency>", "<attribute>")
|
||||||
|
*
|
||||||
|
* Valid attributes are:
|
||||||
|
* install_path
|
||||||
|
* download_path
|
||||||
|
* download_dir
|
||||||
|
*
|
||||||
|
*
|
||||||
|
* The output data generated by this configuration file has the following
|
||||||
|
* format:
|
||||||
|
*
|
||||||
|
* data: {
|
||||||
|
* // Identifies the version of this format to the tool reading it
|
||||||
|
* format_version: "1.0",
|
||||||
|
*
|
||||||
|
* // Name of base outputdir. JAB assumes the actual output dir is formed
|
||||||
|
* // by adding the configuration name: <output_basedir>/<config-name>
|
||||||
|
* output_basedir: "build",
|
||||||
|
* // Configure argument to use to specify configuration name
|
||||||
|
* configuration_configure_arg:
|
||||||
|
* // Make argument to use to specify configuration name
|
||||||
|
* configuration_make_arg:
|
||||||
|
*
|
||||||
|
* profiles: {
|
||||||
|
* <profile-name>: {
|
||||||
|
* // Name of os the profile is built to run on
|
||||||
|
* target_os; <string>
|
||||||
|
* // Name of cpu the profile is built to run on
|
||||||
|
* target_cpu; <string>
|
||||||
|
* // Combination of target_os and target_cpu for convenience
|
||||||
|
* target_platform; <string>
|
||||||
|
* // Name of os the profile is built on
|
||||||
|
* build_os; <string>
|
||||||
|
* // Name of cpu the profile is built on
|
||||||
|
* build_cpu; <string>
|
||||||
|
* // Combination of build_os and build_cpu for convenience
|
||||||
|
* build_platform; <string>
|
||||||
|
*
|
||||||
|
* // List of dependencies needed to build this profile
|
||||||
|
* dependencies: <Array of strings>
|
||||||
|
*
|
||||||
|
* // List of configure args to use for this profile
|
||||||
|
* configure_args: <Array of strings>
|
||||||
|
*
|
||||||
|
* // List of free form labels describing aspects of this profile
|
||||||
|
* labels: <Array of strings>
|
||||||
|
* }
|
||||||
|
* }
|
||||||
|
*
|
||||||
|
* // Dependencies use a Maven like deployment structure
|
||||||
|
* dependencies: {
|
||||||
|
* <dependency-name>: {
|
||||||
|
* // Organization part of path defining this dependency
|
||||||
|
* organization: <string>
|
||||||
|
* // File extension for this dependency
|
||||||
|
* ext: <string>
|
||||||
|
* // Module part of path for defining this dependency,
|
||||||
|
* // defaults to <dependency-name>
|
||||||
|
* module: <string>
|
||||||
|
* // Revision part of path for defining this dependency
|
||||||
|
* revision: <string>
|
||||||
|
*
|
||||||
|
* // List of configure args to add when using this dependency,
|
||||||
|
* // defaults to
|
||||||
|
* // "--with-<dependency-name>=input.get("<dependency-name", "install_path")"
|
||||||
|
* configure_args: <array of strings>
|
||||||
|
*
|
||||||
|
* // Name of environment variable to set when using this dependency
|
||||||
|
* // when running make
|
||||||
|
* environment_name: <string>
|
||||||
|
* // Value of environment variable to set when using this dependency
|
||||||
|
* // when running make
|
||||||
|
* environment_value: <string>
|
||||||
|
*
|
||||||
|
* // Value to add to the PATH variable when using this dependency,
|
||||||
|
* // applies to both make and configure
|
||||||
|
* environment_path: <string>
|
||||||
|
* }
|
||||||
|
*
|
||||||
|
* <dependency-name>: {
|
||||||
|
* // For certain dependencies where a legacy distribution mechanism is
|
||||||
|
* // already in place, the "javare" server layout is also supported
|
||||||
|
* // Indicate that an alternate server source and layout should be used
|
||||||
|
* server: "javare"
|
||||||
|
*
|
||||||
|
* // For "javare", a combination of module, revision,
|
||||||
|
* // build number (optional), files and checksum file is possible for
|
||||||
|
* // artifacts following the standard layout.
|
||||||
|
* module: <string>
|
||||||
|
* revision: <string>
|
||||||
|
* build_number: <string>
|
||||||
|
* checksum_file: <string>
|
||||||
|
* file: <string>
|
||||||
|
*
|
||||||
|
* // For other files, use checksum path and path instead
|
||||||
|
* checksum_path: <string>
|
||||||
|
* path: <string>
|
||||||
|
* }
|
||||||
|
* }
|
||||||
|
* }
|
||||||
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Main entry to generate the profile configuration
|
||||||
|
*
|
||||||
|
* @param input External data to use for generating the configuration
|
||||||
|
* @returns {{}} Profile configuration
|
||||||
|
*/
|
||||||
|
var getJabProfiles = function (input) {
|
||||||
|
|
||||||
|
var data = {};
|
||||||
|
|
||||||
|
// Identifies the version of this format to the tool reading it
|
||||||
|
data.format_version = "1.0";
|
||||||
|
|
||||||
|
// Organization is used when uploading/publishing build results
|
||||||
|
data.organization = "com.oracle.jpg.jdk";
|
||||||
|
|
||||||
|
// The base directory for the build output. JAB will assume that the
|
||||||
|
// actual build directory will be <output_basedir>/<configuration>
|
||||||
|
data.output_basedir = "build";
|
||||||
|
// The configure argument to use to specify the name of the configuration
|
||||||
|
data.configuration_configure_arg = "--with-conf-name=";
|
||||||
|
// The make argument to use to specify the name of the configuration
|
||||||
|
data.configuration_make_arg = "CONF_NAME=";
|
||||||
|
|
||||||
|
// Define some common values
|
||||||
|
var common = getJabProfilesCommon(input);
|
||||||
|
// Generate the profiles part of the configuration
|
||||||
|
data.profiles = getJabProfilesProfiles(input, common);
|
||||||
|
// Generate the dependencies part of the configuration
|
||||||
|
data.dependencies = getJabProfilesDependencies(input, common);
|
||||||
|
|
||||||
|
return data;
|
||||||
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Generates some common values
|
||||||
|
*
|
||||||
|
* @param input External data to use for generating the configuration
|
||||||
|
* @returns Common values
|
||||||
|
*/
|
||||||
|
var getJabProfilesCommon = function (input) {
|
||||||
|
var common = {
|
||||||
|
dependencies: ["boot_jdk", "gnumake", "jtreg"],
|
||||||
|
configure_args: ["--with-default-make-target=all"],
|
||||||
|
configure_args_32bit: ["--with-target-bits=32", "--with-jvm-variants=client,server"],
|
||||||
|
configure_args_debug: ["--enable-debug"],
|
||||||
|
organization: "jpg.infra.builddeps"
|
||||||
|
};
|
||||||
|
|
||||||
|
return common;
|
||||||
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Generates the profiles part of the configuration.
|
||||||
|
*
|
||||||
|
* @param input External data to use for generating the configuration
|
||||||
|
* @param common The common values
|
||||||
|
* @returns {{}} Profiles part of the configuration
|
||||||
|
*/
|
||||||
|
var getJabProfilesProfiles = function (input, common) {
|
||||||
|
var profiles = {};
|
||||||
|
|
||||||
|
// Main SE profiles
|
||||||
|
var mainProfiles = {
|
||||||
|
|
||||||
|
"linux-x64": {
|
||||||
|
target_os: "linux",
|
||||||
|
target_cpu: "x64",
|
||||||
|
dependencies: concat(common.dependencies, "devkit"),
|
||||||
|
configure_args: common.configure_args,
|
||||||
|
make_args: common.make_args
|
||||||
|
},
|
||||||
|
|
||||||
|
"linux-x86": {
|
||||||
|
target_os: "linux",
|
||||||
|
target_cpu: "x86",
|
||||||
|
build_cpu: "x64",
|
||||||
|
dependencies: concat(common.dependencies, "devkit"),
|
||||||
|
configure_args: concat(common.configure_args, common.configure_args_32bit),
|
||||||
|
make_args: common.make_args
|
||||||
|
},
|
||||||
|
|
||||||
|
"macosx-x64": {
|
||||||
|
target_os: "macosx",
|
||||||
|
target_cpu: "x64",
|
||||||
|
dependencies: concat(common.dependencies, "devkit"),
|
||||||
|
configure_args: concat(common.configure_args, "--with-sdk-name=macosx10.9"),
|
||||||
|
make_args: common.make_args
|
||||||
|
},
|
||||||
|
|
||||||
|
"solaris-x64": {
|
||||||
|
target_os: "solaris",
|
||||||
|
target_cpu: "x64",
|
||||||
|
dependencies: concat(common.dependencies, "devkit", "cups"),
|
||||||
|
configure_args: common.configure_args,
|
||||||
|
make_args: common.make_args
|
||||||
|
},
|
||||||
|
|
||||||
|
"solaris-sparcv9": {
|
||||||
|
target_os: "solaris",
|
||||||
|
target_cpu: "sparcv9",
|
||||||
|
dependencies: concat(common.dependencies, "devkit", "cups"),
|
||||||
|
configure_args: common.configure_args,
|
||||||
|
make_args: common.make_args
|
||||||
|
},
|
||||||
|
|
||||||
|
"windows-x64": {
|
||||||
|
target_os: "windows",
|
||||||
|
target_cpu: "x64",
|
||||||
|
dependencies: concat(common.dependencies, "devkit", "freetype"),
|
||||||
|
configure_args: common.configure_args,
|
||||||
|
make_args: common.make_args
|
||||||
|
},
|
||||||
|
|
||||||
|
"windows-x86": {
|
||||||
|
target_os: "windows",
|
||||||
|
target_cpu: "x86",
|
||||||
|
build_cpu: "x64",
|
||||||
|
dependencies: concat(common.dependencies, "devkit", "freetype"),
|
||||||
|
configure_args: concat(common.configure_args, common.configure_args_32bit),
|
||||||
|
make_args: common.make_args
|
||||||
|
}
|
||||||
|
};
|
||||||
|
profiles = concatObjects(profiles, mainProfiles);
|
||||||
|
// Generate debug versions of all the main profiles
|
||||||
|
profiles = concatObjects(profiles, generateDebugProfiles(common, mainProfiles));
|
||||||
|
|
||||||
|
// Specific open profiles needed for JPRT testing
|
||||||
|
var jprtOpenProfiles = {
|
||||||
|
|
||||||
|
"linux-x64-open": {
|
||||||
|
target_os: mainProfiles["linux-x64"].target_os,
|
||||||
|
target_cpu: mainProfiles["linux-x64"].target_cpu,
|
||||||
|
dependencies: mainProfiles["linux-x64"].dependencies,
|
||||||
|
configure_args: concat(mainProfiles["linux-x64"].configure_args,
|
||||||
|
"--enable-openjdk-only"),
|
||||||
|
make_args: mainProfiles["linux-x64"].make_args,
|
||||||
|
labels: [ "open" ]
|
||||||
|
},
|
||||||
|
|
||||||
|
"solaris-x64-open": {
|
||||||
|
target_os: mainProfiles["solaris-x64"].target_os,
|
||||||
|
target_cpu: mainProfiles["solaris-x64"].target_cpu,
|
||||||
|
dependencies: mainProfiles["solaris-x64"].dependencies,
|
||||||
|
configure_args: concat(mainProfiles["solaris-x64"].configure_args,
|
||||||
|
"--enable-openjdk-only"),
|
||||||
|
make_args: mainProfiles["solaris-x64"].make_args,
|
||||||
|
labels: [ "open" ]
|
||||||
|
}
|
||||||
|
};
|
||||||
|
profiles = concatObjects(profiles, jprtOpenProfiles);
|
||||||
|
// Generate debug profiles for the open jprt profiles
|
||||||
|
profiles = concatObjects(profiles, generateDebugProfiles(common, jprtOpenProfiles));
|
||||||
|
|
||||||
|
// Profiles used to run tests. Used in JPRT.
|
||||||
|
var testOnlyProfiles = {
|
||||||
|
|
||||||
|
"run-test": {
|
||||||
|
target_os: input.build_os,
|
||||||
|
target_cpu: input.build_cpu,
|
||||||
|
dependencies: [ "jtreg", "gnumake" ],
|
||||||
|
labels: "test"
|
||||||
|
}
|
||||||
|
};
|
||||||
|
profiles = concatObjects(profiles, testOnlyProfiles);
|
||||||
|
|
||||||
|
// Generate the missing platform attributes
|
||||||
|
profiles = generatePlatformAttributes(profiles);
|
||||||
|
return profiles;
|
||||||
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Generate the dependencies part of the configuration
|
||||||
|
*
|
||||||
|
* @param input External data to use for generating the configuration
|
||||||
|
* @param common The common values
|
||||||
|
* @returns {{}} Dependencies part of configuration
|
||||||
|
*/
|
||||||
|
var getJabProfilesDependencies = function (input, common) {
|
||||||
|
|
||||||
|
var boot_jdk_platform = input.build_os + "-"
|
||||||
|
+ (input.build_cpu == "x86" ? "i586" : input.build_cpu);
|
||||||
|
|
||||||
|
var devkit_platform_revisions = {
|
||||||
|
linux_x64: "gcc4.9.2-OEL6.4+1.0",
|
||||||
|
macosx_x64: "Xcode6.3-MacOSX10.9+1.0",
|
||||||
|
solaris_x64: "SS12u3-Solaris10u10+1.0",
|
||||||
|
solaris_sparcv9: "SS12u3-Solaris10u10+1.0",
|
||||||
|
windows_x64: "VS2013SP4+1.0"
|
||||||
|
};
|
||||||
|
|
||||||
|
var devkit_platform = (input.target_cpu == "x86"
|
||||||
|
? input.target_os + "_x64"
|
||||||
|
: input.target_platform);
|
||||||
|
|
||||||
|
var dependencies = {
|
||||||
|
|
||||||
|
boot_jdk: {
|
||||||
|
server: "javare",
|
||||||
|
module: "jdk",
|
||||||
|
revision: "8",
|
||||||
|
checksum_file: boot_jdk_platform + "/MD5_VALUES",
|
||||||
|
file: boot_jdk_platform + "/jdk-8-" + boot_jdk_platform + ".tar.gz",
|
||||||
|
configure_args: (input.build_os == "macosx"
|
||||||
|
? "--with-boot-jdk=" + input.get("boot_jdk", "install_path") + "/jdk1.8.0.jdk/Contents/Home"
|
||||||
|
: "--with-boot-jdk=" + input.get("boot_jdk", "install_path") + "/jdk1.8.0")
|
||||||
|
},
|
||||||
|
|
||||||
|
devkit: {
|
||||||
|
organization: common.organization,
|
||||||
|
ext: "tar.gz",
|
||||||
|
module: "devkit-" + devkit_platform,
|
||||||
|
revision: devkit_platform_revisions[devkit_platform]
|
||||||
|
},
|
||||||
|
|
||||||
|
build_devkit: {
|
||||||
|
organization: common.organization,
|
||||||
|
ext: "tar.gz",
|
||||||
|
module: "devkit-" + input.build_platform,
|
||||||
|
revision: devkit_platform_revisions[input.build_platform]
|
||||||
|
},
|
||||||
|
|
||||||
|
cups: {
|
||||||
|
organization: common.organization,
|
||||||
|
ext: "tar.gz",
|
||||||
|
revision: "1.0118+1.0"
|
||||||
|
},
|
||||||
|
|
||||||
|
jtreg: {
|
||||||
|
server: "javare",
|
||||||
|
revision: "4.1",
|
||||||
|
build_number: "b12",
|
||||||
|
checksum_file: "MD5_VALUES",
|
||||||
|
file: "jtreg_bin-4.1.zip",
|
||||||
|
environment_name: "JT_HOME"
|
||||||
|
},
|
||||||
|
|
||||||
|
gnumake: {
|
||||||
|
organization: common.organization,
|
||||||
|
ext: "tar.gz",
|
||||||
|
revision: "4.0+1.0",
|
||||||
|
|
||||||
|
module: (input.build_os == "windows"
|
||||||
|
? "gnumake-" + input.build_osenv_platform
|
||||||
|
: "gnumake-" + input.build_platform),
|
||||||
|
|
||||||
|
configure_args: (input.build_os == "windows"
|
||||||
|
? "MAKE=" + input.get("gnumake", "install_path") + "/cygwin/bin/make"
|
||||||
|
: "MAKE=" + input.get("gnumake", "install_path") + "/bin/make"),
|
||||||
|
|
||||||
|
environment_path: (input.build_os == "windows"
|
||||||
|
? input.get("gnumake", "install_path") + "/cygwin/bin"
|
||||||
|
: input.get("gnumake", "install_path") + "/bin")
|
||||||
|
},
|
||||||
|
|
||||||
|
freetype: {
|
||||||
|
organization: common.organization,
|
||||||
|
ext: "tar.gz",
|
||||||
|
revision: "2.3.4+1.0",
|
||||||
|
module: "freetype-" + input.target_platform
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
return dependencies;
|
||||||
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Generate the missing platform attributes for profiles
|
||||||
|
*
|
||||||
|
* @param profiles Profiles map to generate attributes on
|
||||||
|
* @returns {{}} New profiles map with platform attributes fully filled in
|
||||||
|
*/
|
||||||
|
var generatePlatformAttributes = function (profiles) {
|
||||||
|
var ret = concatObjects(profiles, {});
|
||||||
|
for (var profile in profiles) {
|
||||||
|
if (ret[profile].build_os == null) {
|
||||||
|
ret[profile].build_os = ret[profile].target_os;
|
||||||
|
}
|
||||||
|
if (ret[profile].build_cpu == null) {
|
||||||
|
ret[profile].build_cpu = ret[profile].target_cpu;
|
||||||
|
}
|
||||||
|
ret[profile].target_platform = ret[profile].target_os + "_" + ret[profile].target_cpu;
|
||||||
|
ret[profile].build_platform = ret[profile].build_os + "_" + ret[profile].build_cpu;
|
||||||
|
}
|
||||||
|
return ret;
|
||||||
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Generates debug versions of profiles. Clones the given profiles and adds
|
||||||
|
* debug metadata.
|
||||||
|
*
|
||||||
|
* @param common Common values
|
||||||
|
* @param profiles Profiles map to generate debug profiles for
|
||||||
|
* @returns {{}} New map of profiles containing debug profiles
|
||||||
|
*/
|
||||||
|
var generateDebugProfiles = function (common, profiles) {
|
||||||
|
var newProfiles = {};
|
||||||
|
for (var profile in profiles) {
|
||||||
|
var debugProfile = profile + "-debug";
|
||||||
|
newProfiles[debugProfile] = clone(profiles[profile]);
|
||||||
|
newProfiles[debugProfile].debug_level = "fastdebug";
|
||||||
|
newProfiles[debugProfile].labels
|
||||||
|
= concat(newProfiles[debugProfile].labels || [], "debug"),
|
||||||
|
newProfiles[debugProfile].configure_args
|
||||||
|
= concat(newProfiles[debugProfile].configure_args,
|
||||||
|
common.configure_args_debug);
|
||||||
|
}
|
||||||
|
return newProfiles;
|
||||||
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Deep clones an object tree.
|
||||||
|
*
|
||||||
|
* @param o Object to clone
|
||||||
|
* @returns {{}} Clone of o
|
||||||
|
*/
|
||||||
|
var clone = function (o) {
|
||||||
|
return JSON.parse(JSON.stringify(o));
|
||||||
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Concatenates all arguments into a new array
|
||||||
|
*
|
||||||
|
* @returns {Array.<T>} New array containing all arguments
|
||||||
|
*/
|
||||||
|
var concat = function () {
|
||||||
|
return Array.prototype.concat.apply([], arguments);
|
||||||
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Copies all elements in an array into a new array but replacing all
|
||||||
|
* occurrences of original with replacement.
|
||||||
|
*
|
||||||
|
* @param original Element to look for
|
||||||
|
* @param replacement Element to replace with
|
||||||
|
* @param a Array to copy
|
||||||
|
* @returns {Array} New array with all occurrences of original replaced
|
||||||
|
* with replacement
|
||||||
|
*/
|
||||||
|
var replace = function (original, replacement, a) {
|
||||||
|
var newA = [];
|
||||||
|
for (var i in a) {
|
||||||
|
if (original == a[i]) {
|
||||||
|
newA.push(replacement);
|
||||||
|
} else {
|
||||||
|
newA.push(a[i]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return newA;
|
||||||
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Deep concatenation of two objects. For each node encountered, merge
|
||||||
|
* the contents with the corresponding node in the other object tree,
|
||||||
|
* treating all strings as array elements.
|
||||||
|
*
|
||||||
|
* @param o1 Object to concatenate
|
||||||
|
* @param o2 Object to concatenate
|
||||||
|
* @returns {{}} New object tree containing the concatenation of o1 and o2
|
||||||
|
*/
|
||||||
|
var concatObjects = function (o1, o2) {
|
||||||
|
var ret = {};
|
||||||
|
for (var a in o1) {
|
||||||
|
if (o2[a] == null) {
|
||||||
|
ret[a] = o1[a];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
for (var a in o2) {
|
||||||
|
if (o1[a] == null) {
|
||||||
|
ret[a] = o2[a];
|
||||||
|
} else {
|
||||||
|
if (typeof o1[a] == 'string') {
|
||||||
|
ret[a] = [o1[a]].concat(o2[a]);
|
||||||
|
} else if (Array.isArray(o1[a])) {
|
||||||
|
ret[a] = o1[a].concat(o2[a]);
|
||||||
|
} else if (typeof o1[a] == 'object') {
|
||||||
|
ret[a] = concatObjects(o1[a], o2[a]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return ret;
|
||||||
|
};
|
@ -75,6 +75,7 @@ help:
|
|||||||
$(info $(_) CONF= # Build all configurations (note, assignment is empty))
|
$(info $(_) CONF= # Build all configurations (note, assignment is empty))
|
||||||
$(info $(_) CONF=<substring> # Build the configuration(s) with a name matching)
|
$(info $(_) CONF=<substring> # Build the configuration(s) with a name matching)
|
||||||
$(info $(_) # <substring>)
|
$(info $(_) # <substring>)
|
||||||
|
$(info $(_) CONF_NAME=<string> # Build the configuration with exactly the <string>)
|
||||||
$(info $(_) SPEC=<spec file> # Build the configuration given by the spec file)
|
$(info $(_) SPEC=<spec file> # Build the configuration given by the spec file)
|
||||||
$(info $(_) LOG=<loglevel> # Change the log level from warn to <loglevel>)
|
$(info $(_) LOG=<loglevel> # Change the log level from warn to <loglevel>)
|
||||||
$(info $(_) # Available log levels are:)
|
$(info $(_) # Available log levels are:)
|
||||||
|
@ -40,7 +40,7 @@ ifeq ($(HAS_SPEC),)
|
|||||||
##############################################################################
|
##############################################################################
|
||||||
|
|
||||||
# Make control variables, handled by Init.gmk
|
# Make control variables, handled by Init.gmk
|
||||||
INIT_CONTROL_VARIABLES := LOG CONF SPEC JOBS CONF_CHECK COMPARE_BUILD
|
INIT_CONTROL_VARIABLES := LOG CONF CONF_NAME SPEC JOBS CONF_CHECK COMPARE_BUILD
|
||||||
|
|
||||||
# All known make control variables
|
# All known make control variables
|
||||||
MAKE_CONTROL_VARIABLES := $(INIT_CONTROL_VARIABLES) TEST JDK_FILTER
|
MAKE_CONTROL_VARIABLES := $(INIT_CONTROL_VARIABLES) TEST JDK_FILTER
|
||||||
@ -169,6 +169,11 @@ ifeq ($(HAS_SPEC),)
|
|||||||
$$(info Error: Cannot use CONF=$$(CONF) and SPEC=$$(SPEC) at the same time. Choose one.)
|
$$(info Error: Cannot use CONF=$$(CONF) and SPEC=$$(SPEC) at the same time. Choose one.)
|
||||||
$$(error Cannot continue)
|
$$(error Cannot continue)
|
||||||
endif
|
endif
|
||||||
|
ifneq ($$(origin CONF_NAME), undefined)
|
||||||
|
# We also have a CONF_NAME argument. We can't have both.
|
||||||
|
$$(info Error: Cannot use CONF_NAME=$$(CONF_NAME) and SPEC=$$(SPEC) at the same time. Choose one.)
|
||||||
|
$$(error Cannot continue)
|
||||||
|
endif
|
||||||
ifeq ($$(wildcard $$(SPEC)),)
|
ifeq ($$(wildcard $$(SPEC)),)
|
||||||
$$(info Error: Cannot locate spec.gmk, given by SPEC=$$(SPEC).)
|
$$(info Error: Cannot locate spec.gmk, given by SPEC=$$(SPEC).)
|
||||||
$$(error Cannot continue)
|
$$(error Cannot continue)
|
||||||
@ -191,7 +196,29 @@ ifeq ($(HAS_SPEC),)
|
|||||||
$$(error Cannot continue)
|
$$(error Cannot continue)
|
||||||
endif
|
endif
|
||||||
|
|
||||||
ifneq ($$(origin CONF), undefined)
|
ifneq ($$(origin CONF_NAME), undefined)
|
||||||
|
ifneq ($$(origin CONF), undefined)
|
||||||
|
# We also have a CONF argument. We can't have both.
|
||||||
|
$$(info Error: Cannot use CONF=$$(CONF) and CONF_NAME=$$(CONF_NAME) at the same time. Choose one.)
|
||||||
|
$$(error Cannot continue)
|
||||||
|
endif
|
||||||
|
matching_conf := $$(strip $$(filter $$(CONF_NAME), $$(all_confs)))
|
||||||
|
ifeq ($$(matching_conf),)
|
||||||
|
$$(info Error: No configurations found matching CONF_NAME=$$(CONF_NAME).)
|
||||||
|
$$(info Available configurations in $$(build_dir):)
|
||||||
|
$$(foreach var, $$(all_confs), $$(info * $$(var)))
|
||||||
|
$$(error Cannot continue)
|
||||||
|
else ifneq ($$(words $$(matching_conf)), 1)
|
||||||
|
$$(info Error: Matching more than one configuration CONF_NAME=$$(CONF_NAME).)
|
||||||
|
$$(info Available configurations in $$(build_dir):)
|
||||||
|
$$(foreach var, $$(all_confs), $$(info * $$(var)))
|
||||||
|
$$(error Cannot continue)
|
||||||
|
else
|
||||||
|
$$(info Building configuration '$$(matching_conf)' (matching CONF_NAME=$$(CONF_NAME)))
|
||||||
|
endif
|
||||||
|
# Create a SPEC definition. This will contain the path to exactly one spec file.
|
||||||
|
SPECS := $$(build_dir)/$$(matching_conf)/spec.gmk
|
||||||
|
else ifneq ($$(origin CONF), undefined)
|
||||||
# User have given a CONF= argument.
|
# User have given a CONF= argument.
|
||||||
ifeq ($$(CONF),)
|
ifeq ($$(CONF),)
|
||||||
# If given CONF=, match all configurations
|
# If given CONF=, match all configurations
|
||||||
|
@ -554,7 +554,7 @@ ALL_TARGETS += buildtools gensrc gendata copy java rmic libs launchers \
|
|||||||
# Traditional targets typically run by users.
|
# Traditional targets typically run by users.
|
||||||
# These can be considered aliases for the targets now named by a more
|
# These can be considered aliases for the targets now named by a more
|
||||||
# "modern" naming scheme.
|
# "modern" naming scheme.
|
||||||
default: exploded-image
|
default: $(DEFAULT_MAKE_TARGET)
|
||||||
jdk: exploded-image
|
jdk: exploded-image
|
||||||
images: product-images
|
images: product-images
|
||||||
docs: docs-image
|
docs: docs-image
|
||||||
|
Loading…
Reference in New Issue
Block a user