# HG changeset patch # User michaelm # Date 1331065543 0 # Node ID f7718662741d5c937281eff108446cc167b05bf5 # Parent 2082eb35d49a9c2aab90b8d4fd31cefb7a23b82e 7113349: Initial changeset for Macosx port to jdk Reviewed-by: jjh, alanb, dholmes, anthony, ohrstrom, ksrini, jrose, weijun, smarks Contributed-by: Alan Bateman , Alexander Potochkin , Alexander Zuev , Andrew Brygin , Artem Ananiev , Alex Strange , Bino George , Christine Lu , David Katleman , David Durrence , Dmitry Cherepanov , Greg Lewis , Kevin Miller , Kurt Miller , Landon Fuller , Leonid Romanov , Loefty Walkowiak , Mark Reinhold , Naoto Sato , Philip Race , Roger Hoover , Scott Kovatch , Sergey ByloKhov , Mike Swingler , Tomas Hurka diff -r 2082eb35d49a -r f7718662741d .hgignore --- a/.hgignore Fri Feb 24 18:22:48 2012 -0800 +++ b/.hgignore Tue Mar 06 20:25:43 2012 +0000 @@ -2,3 +2,4 @@ ^dist/ /nbproject/private/ ^.hgtip +.DS_Store diff -r 2082eb35d49a -r f7718662741d make/common/Defs-bsd.gmk --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/make/common/Defs-bsd.gmk Tue Mar 06 20:25:43 2012 +0000 @@ -0,0 +1,46 @@ +# +# Copyright (c) 1999, 2010, 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. +# + +# +# Makefile to specify compiler flags for programs and libraries +# targeted to BSD. Should not contain any rules. +# + +# Warning: the following variables are overriden by Defs.gmk. Set +# values will be silently ignored: +# CFLAGS (set $(OTHER_CFLAGS) instead) +# CPPFLAGS (set $(OTHER_CPPFLAGS) instead) +# CXXFLAGS (set $(OTHER_CXXFLAGS) instead) +# LDFLAGS (set $(OTHER_LDFAGS) instead) +# LDLIBS (set $(EXTRA_LIBS) instead) +# LDLIBS_COMMON (set $(EXTRA_LIBS) instead) + +# Get shared JDK settings +include $(BUILDDIR)/common/shared/Defs.gmk + +ifndef PLATFORM_SRC + PLATFORM_SRC = $(TOPDIR)/src/solaris +endif # PLATFORM_SRC + diff -r 2082eb35d49a -r f7718662741d make/common/shared/Defs-bsd.gmk --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/make/common/shared/Defs-bsd.gmk Tue Mar 06 20:25:43 2012 +0000 @@ -0,0 +1,131 @@ +# +# Copyright (c) 2005, 2010, 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. +# + +# +# Definitions for Bsd. +# + +# Default for COMPILER_WARNINGS_FATAL on Bsd (C & C++ compiler warnings) +ifndef COMPILER_WARNINGS_FATAL + COMPILER_WARNINGS_FATAL=false +endif + +# Bsd should use parallel compilation for best build times +ifndef COMPILE_APPROACH + COMPILE_APPROACH = parallel +endif + +# Indication that we are doing an incremental build. +# This may trigger the creation of make depend files. +ifndef INCREMENTAL_BUILD + INCREMENTAL_BUILD = false +endif + +# FullPath just makes sure it never ends with a / and no duplicates +define FullPath +$(shell cd $1 2> $(DEV_NULL) && pwd) +endef + +# OptFullPath: Absolute path name of a dir that might not initially exist. +define OptFullPath +$(shell if [ "$1" != "" -a -d "$1" ]; then (cd $1 && pwd); else echo "$1"; fi) +endef + +# Location on system where jdk installs might be +USRJDKINSTANCES_PATH =$(PACKAGE_PATH) + +# UNIXCOMMAND_PATH: path to where the most common Unix commands are. +# NOTE: Must end with / so that it could be empty, allowing PATH usage. +ifneq "$(origin ALT_UNIXCOMMAND_PATH)" "undefined" + UNIXCOMMAND_PATH :=$(call PrefixPath,$(ALT_UNIXCOMMAND_PATH)) +else + UNIXCOMMAND_PATH = /bin/ +endif + +# USRBIN_PATH: path to where the most common Unix commands are. +# NOTE: Must end with / so that it could be empty, allowing PATH usage. +ifneq "$(origin ALT_USRBIN_PATH)" "undefined" + USRBIN_PATH :=$(call PrefixPath,$(ALT_USRBIN_PATH)) +else + USRBIN_PATH = /usr/bin/ +endif + +# UNIXCCS_PATH: path to where the Solaris ported UNIX commands can be found +# NOTE: Must end with / so that it could be empty, allowing PATH usage. +ifneq "$(origin ALT_UNIXCCS_PATH)" "undefined" + UNIXCCS_PATH :=$(call PrefixPath,$(ALT_UNIXCCS_PATH)) +else + UNIXCCS_PATH = /usr/ccs/bin/ +endif + +# SLASH_JAVA: location of all network accessable files +ifdef ALT_SLASH_JAVA + SLASH_JAVA :=$(ALT_SLASH_JAVA) +else + SLASH_JAVA := $(call DirExists,/java,/java,/NOT-SET) +endif + +# JDK_DEVTOOLS_DIR: common path for all the java devtools +ifdef ALT_JDK_DEVTOOLS_DIR + JDK_DEVTOOLS_DIR =$(ALT_JDK_DEVTOOLS_DIR) +else + JDK_DEVTOOLS_DIR =$(SLASH_JAVA)/devtools +endif + +# DEVTOOLS_PATH: for other tools required for building (such as zip, etc.) +# NOTE: Must end with / so that it could be empty, allowing PATH usage. +ifneq "$(origin ALT_DEVTOOLS_PATH)" "undefined" + DEVTOOLS_PATH :=$(call PrefixPath,$(ALT_DEVTOOLS_PATH)) +else + DEVTOOLS_PATH =$(PACKAGE_PATH)/bin/ +endif + +# _BOOTDIR1: First choice for a Bootstrap JDK, previous released JDK. +# _BOOTDIR2: Second choice +ifndef ALT_BOOTDIR + _BOOTDIR1 =$(SLASH_JAVA)/re/jdk/$(PREVIOUS_JDK_VERSION)/archive/fcs/binaries/$(PLATFORM)-$(ARCH) + _BOOTDIR2 =$(USRJDKINSTANCES_PATH)/jdk$(PREVIOUS_JDK_VERSION) +endif + +# Import JDK images allow for partial builds, components not built are +# imported (or copied from) these import areas when needed. + +# BUILD_JDK_IMPORT_PATH: location of JDK install trees to import for +# multiple platforms, e.g. windows-i586, solaris-sparc, bsd-586, etc. +ifdef ALT_BUILD_JDK_IMPORT_PATH + BUILD_JDK_IMPORT_PATH :=$(call FullPath,$(ALT_BUILD_JDK_IMPORT_PATH)) +else + BUILD_JDK_IMPORT_PATH = $(PROMOTED_BUILD_BINARIES) +endif +BUILD_JDK_IMPORT_PATH:=$(call AltCheckValue,BUILD_JDK_IMPORT_PATH) + +# JDK_IMPORT_PATH: location of JDK install tree (this version) to import +ifdef ALT_JDK_IMPORT_PATH + JDK_IMPORT_PATH :=$(call FullPath,$(ALT_JDK_IMPORT_PATH)) +else + JDK_IMPORT_PATH = $(BUILD_JDK_IMPORT_PATH)/$(PLATFORM)-$(ARCH)$(_JDK_IMPORT_VARIANT) +endif +JDK_IMPORT_PATH:=$(call AltCheckValue,JDK_IMPORT_PATH) + diff -r 2082eb35d49a -r f7718662741d make/common/shared/Defs-utils.gmk --- a/make/common/shared/Defs-utils.gmk Fri Feb 24 18:22:48 2012 -0800 +++ b/make/common/shared/Defs-utils.gmk Tue Mar 06 20:25:43 2012 +0000 @@ -31,7 +31,7 @@ # These input UTILS_* variables can be defined at anytime, ideally once. # Unix Commands: Normally /bin/, /usr/bin/. or C:/mksnt/mksnt/ # UTILS_COMMAND_PATH -# /usr/bin/ +# /usr/bin/ # UTILS_USR_BIN_PATH # /usr/ccs/bin/ (sccs, m4, lex, yacc, as, ar, strip, mcs) # UTILS_CCS_BIN_PATH @@ -53,6 +53,13 @@ UTILS_DEVTOOL_PATH=$(USRBIN_PATH) endif +ifeq ($(PLATFORM),bsd) + UTILS_COMMAND_PATH=$(UNIXCOMMAND_PATH) + UTILS_USR_BIN_PATH=$(USRBIN_PATH) + UTILS_CCS_BIN_PATH=$(USRBIN_PATH) + UTILS_DEVTOOL_PATH=$(DEVTOOLS_PATH) +endif + ifeq ($(PLATFORM),solaris) UTILS_COMMAND_PATH=$(UNIXCOMMAND_PATH) UTILS_USR_BIN_PATH=$(UNIXCOMMAND_PATH) @@ -166,15 +173,15 @@ # Also, some distribution (Ubuntu, Debian, others?) place the rpm command # itself in /usr/bin rather than it's traditional home in /bin. RPM=$(firstword $(wildcard $(UTILS_COMMAND_PATH)rpm) \ - $(wildcard $(UTILS_USR_BIN_PATH)rpm)) + $(wildcard $(UTILS_USR_BIN_PATH)rpm)) RPMBUILD=$(firstword $(wildcard $(UTILS_COMMAND_PATH)rpmbuild) \ - $(wildcard $(UTILS_USR_BIN_PATH)rpmbuild) \ - $(wildcard $(UTILS_COMMAND_PATH)rpm) \ - $(wildcard $(UTILS_USR_BIN_PATH)rpm)) + $(wildcard $(UTILS_USR_BIN_PATH)rpmbuild) \ + $(wildcard $(UTILS_COMMAND_PATH)rpm) \ + $(wildcard $(UTILS_USR_BIN_PATH)rpm)) # Most Linux distros have "sort" in /bin. Ubuntu, Debian and perhaps # others have it in /usr/bin. SORT=$(firstword $(wildcard $(UTILS_COMMAND_PATH)sort) \ - $(wildcard $(UTILS_USR_BIN_PATH)sort)) + $(wildcard $(UTILS_USR_BIN_PATH)sort)) NAWK = $(USRBIN_PATH)gawk # Intrinsic unix command, with backslash-escaped character interpretation ECHO = /bin/echo -e @@ -198,3 +205,34 @@ ECHO = /usr/bin/echo endif +# BSD specific +ifeq ($(PLATFORM),bsd) + BASENAME = $(UTILS_USR_BIN_PATH)basename + EGREP = $(UTILS_USR_BIN_PATH)egrep + EXPR = $(UTILS_COMMAND_PATH)expr + FMT = $(UTILS_USR_BIN_PATH)fmt + GREP = $(UTILS_USR_BIN_PATH)grep + GUNZIP = $(UTILS_USR_BIN_PATH)gunzip + ID = $(UTILS_USR_BIN_PATH)id + MSGFMT = $(UTILS_DEVTOOL_PATH)msgfmt + SED = $(UTILS_USR_BIN_PATH)sed + SORT = $(UTILS_USR_BIN_PATH)sort + TEST = $(UTILS_COMMAND_PATH)test + TOUCH = $(UTILS_USR_BIN_PATH)touch + TRUE = $(UTILS_USR_BIN_PATH)true + UNAME = $(UTILS_USR_BIN_PATH)uname + # BSD OS_VENDOR specific + ifeq ($(OS_VENDOR), Apple) + NAWK = $(UTILS_USR_BIN_PATH)awk + UNZIPSFX = $(UTILS_USR_BIN_PATH)unzipsfx + ZIPEXE = $(UTILS_USR_BIN_PATH)zip + else + UNZIP = $(UTILS_DEVTOOL_PATH)unzip + endif + ifeq ($(OS_VENDOR), OpenBSD) + NAWK = $(UTILS_USR_BIN_PATH)awk + else + CPIO = $(UTILS_USR_BIN_PATH)cpio + TAR = $(UTILS_USR_BIN_PATH)tar + endif +endif diff -r 2082eb35d49a -r f7718662741d make/common/shared/Platform.gmk --- a/make/common/shared/Platform.gmk Fri Feb 24 18:22:48 2012 -0800 +++ b/make/common/shared/Platform.gmk Tue Mar 06 20:25:43 2012 +0000 @@ -62,8 +62,8 @@ # CLASSPATH_SEPARATOR separator in classpath, ; or : # BUNDLE_FILE_SUFFIX suffix for bundles: .tar or .tar.gz # ISA_DIR solaris only: /sparcv9 or /amd64 -# REQUIRED_WINDOWS_NAME windows only: basic name of windows -# REQUIRED_WINDOWS_VERSION windows only: specific version of windows +# REQUIRED_WINDOWS_NAME windows only: basic name of windows +# REQUIRED_WINDOWS_VERSION windows only: specific version of windows # USING_CYGWIN windows only: true or false # WINDOWS_NT_VERSION_STRING windows only: long version name # REQUIRED_OS_VERSION required OS version, e.g. 5.10, 2.4 @@ -135,7 +135,7 @@ BUNDLE_FILE_SUFFIX=.tar # Required Solaris version REQUIRED_OS_VERSION = 5.10 - # Minimum disk space needed as determined by running 'du -sk' on + # Minimum disk space needed as determined by running 'du -sk' on # a fully built workspace. ifeq ($(ARCH_FAMILY), sparc) REQUIRED_FREE_SPACE=1300000 @@ -207,7 +207,7 @@ # Suffix for file bundles used in previous release BUNDLE_FILE_SUFFIX=.tar.gz - # Minimum disk space needed as determined by running 'du -sk' on + # Minimum disk space needed as determined by running 'du -sk' on # a fully built workspace. REQUIRED_FREE_SPACE=1460000 LINUX_VERSION_INFO = /etc/redhat-release @@ -231,6 +231,98 @@ MB_OF_MEMORY := $(shell free -m | fgrep Mem: | sed -e 's@\ \ *@ @g' | cut -d' ' -f2) endif +ifeq ($(SYSTEM_UNAME), FreeBSD) + PLATFORM = bsd + OS_NAME = freebsd + OS_VENDOR = FreeBSD + REQUIRED_OS_VERSION = 6.0 +endif + +ifeq ($(SYSTEM_UNAME), Darwin) + PLATFORM = bsd + OS_NAME = darwin + OS_VENDOR = Apple + REQUIRED_OS_VERSION = 8.0 +endif + +ifeq ($(SYSTEM_UNAME), NetBSD) + PLATFORM = bsd + OS_NAME = netbsd + OS_VENDOR = NetBSD + REQUIRED_OS_VERSION = 3.0 +endif + +ifeq ($(SYSTEM_UNAME), OpenBSD) + PLATFORM = bsd + OS_NAME = openbsd + OS_VENDOR = OpenBSD + REQUIRED_OS_VERSION = 4.9 +endif + +# Platform settings specific to BSD +ifeq ($(PLATFORM), bsd) + OS_VERSION := $(shell uname -r) + # Arch and OS name/version + mach := $(shell uname -m) + archExpr = case "$(mach)" in \ + i[3-9]86) \ + echo i586 \ + ;; \ + sparc64) \ + echo sparcv9 \ + ;; \ + sparc*) \ + echo sparc \ + ;; \ + x86_64) \ + echo amd64 \ + ;; \ + "Power Macintosh") \ + echo ppc \ + ;; \ + *) \ + echo $(mach) \ + ;; \ + esac + ARCH := $(shell $(archExpr) ) + ARCH_FAMILY := $(ARCH) + + # Darwin x86 builds are i386/amd64 universal. + ifeq ($(SYSTEM_UNAME), Darwin) + ifneq ($(ARCH), ppc) + ARCH=universal + endif + endif + + # i586, sparc, and ppc are 32 bit, amd64 and sparc64 are 64 + ifneq (,$(findstring $(ARCH), i586 sparc ppc universal)) + ARCH_DATA_MODEL=32 + else + ARCH_DATA_MODEL=64 + endif + + ifeq ($(ARCH), i586) + LIBARCH = i386 + else + LIBARCH = $(ARCH) + endif + + # Value of Java os.arch property + ARCHPROP = $(LIBARCH) + + # Suffix for file bundles used in previous release + BUNDLE_FILE_SUFFIX=.tar.gz + # Minimum disk space needed as determined by running 'du -sk' on + # a fully built workspace. + REQUIRED_FREE_SPACE=1500000 + # How much RAM does this machine have: + ifeq ($(OS_VENDOR), OpenBSD) + MB_OF_MEMORY=$(shell sysctl -n hw.physmem | awk '{print int($$NF / 1048576); }' ) + else + MB_OF_MEMORY=$(shell (sysctl -n hw.physmem64 2> /dev/null || sysctl -n hw.physmem) | awk '{print int($$NF / 1048576); }' ) + endif +endif + # Windows with and without CYGWIN will be slightly different ifeq ($(SYSTEM_UNAME), Windows_NT) PLATFORM = windows @@ -327,7 +419,7 @@ endif # Suffix for file bundles used in previous release BUNDLE_FILE_SUFFIX=.tar - # Minimum disk space needed as determined by running 'du -sk' on + # Minimum disk space needed as determined by running 'du -sk' on # a fully built workspace. REQUIRED_FREE_SPACE=500000 # How much RAM does this machine have: @@ -335,8 +427,8 @@ MB_OF_MEMORY := $(shell \ if [ -f "C:/cygwin/bin/free.exe" ] ; then \ ( C:/cygwin/bin/bash.exe -c "C:/cygwin/bin/free.exe -m" ) | \ - grep Mem: | \ - sed -e 's@\ \ *@ @g' | cut -d' ' -f2 ; \ + grep Mem: | \ + sed -e 's@\ \ *@ @g' | cut -d' ' -f2 ; \ else \ echo "512"; \ fi) @@ -392,7 +484,7 @@ # Where is unwanted output to be delivered? DEV_NULL = /dev/null export DEV_NULL - # Character used between entries in classpath + # Character used between entries in classpath CLASSPATH_SEPARATOR = : # User name determination (set _USER) ifndef USER