view jdk/make/common/shared/Defs-utils.gmk @ 14091:e5c8662f325d

7152336: Enable builds on Windows with MinGW/MSYS Summary: Minimal makefile changes to enable building OpenJDK using MSYS on Windows7 Reviewed-by: ohair, tbell Contributed-by: volker.simonis@gmail.com
author tbell
date Tue, 23 Oct 2012 10:10:23 -0700
parents 320a714614e9
children 8435a30053c1
line wrap: on
line source
#
# Copyright (c) 2005, 2011, 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.
#

#
# Shared variables for standard unix utilties on all platforms.
#
# Assumes Platform.gmk has been included before this file.
#
# 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/ 
#            UTILS_USR_BIN_PATH
#         /usr/ccs/bin/ (m4, lex, yacc, as, ar, strip, mcs)
#            UTILS_CCS_BIN_PATH
#         Dev Tools: zip, unzip, etc that we may have special versions of
#            UTILS_DEVTOOL_PATH
#
# WARNING:  This file cannot assume that any of these utilties are available
#           to be run via their variable names defined here.
#           The paths inside the UTILS_* variables may not be defined yet.
#
# Note: There is no guarantee that all these exist on all platforms.
#       Some only make sense for one platform, but are harmless.
#

ifeq ($(PLATFORM),linux)
  UTILS_COMMAND_PATH=$(UNIXCOMMAND_PATH)
  UTILS_USR_BIN_PATH=$(USRBIN_PATH)
  UTILS_CCS_BIN_PATH=$(USRBIN_PATH)
  UTILS_DEVTOOL_PATH=$(USRBIN_PATH)
endif

ifeq ($(PLATFORM),solaris)
  UTILS_COMMAND_PATH=$(UNIXCOMMAND_PATH)
  UTILS_USR_BIN_PATH=$(UNIXCOMMAND_PATH)
  UTILS_CCS_BIN_PATH=$(UNIXCCS_PATH)
  UTILS_DEVTOOL_PATH=$(DEVTOOLS_PATH)
endif

ifeq ($(PLATFORM),windows)
  UTILS_COMMAND_PATH=$(UNIXCOMMAND_PATH)
  UTILS_USR_BIN_PATH=$(UNIXCOMMAND_PATH)
  UTILS_CCS_BIN_PATH=$(UNIXCOMMAND_PATH)
  UTILS_DEVTOOL_PATH=$(DEVTOOLS_PATH)
endif

ifeq ($(PLATFORM),macosx)
  UTILS_COMMAND_PATH=$(UNIXCOMMAND_PATH)
  UTILS_USR_BIN_PATH=$(USRBIN_PATH)
  UTILS_CCS_BIN_PATH=$(USRBIN_PATH)
  UTILS_DEVTOOL_PATH=$(DEVTOOLS_PATH)
endif

# Utilities
ifdef CROSS_COMPILE_ARCH
  AR             = $(COMPILER_PATH)ar
  AS             = $(COMPILER_PATH)as
  LD             = $(COMPILER_PATH)ld
  MCS            = $(COMPILER_PATH)mcs
  NM             = $(COMPILER_PATH)nm
  STRIP          = $(COMPILER_PATH)strip
else
  AR             = $(UTILS_CCS_BIN_PATH)ar
  AS             = $(UTILS_CCS_BIN_PATH)as
  LD             = $(UTILS_CCS_BIN_PATH)ld
  MCS            = $(UTILS_CCS_BIN_PATH)mcs
  NM             = $(UTILS_CCS_BIN_PATH)nm
  STRIP          = $(UTILS_CCS_BIN_PATH)strip
endif

ADB            = $(UTILS_COMMAND_PATH)adb
BASENAME       = $(UTILS_COMMAND_PATH)basename
BZIP2          = $(UTILS_COMMAND_PATH)bzip2
CAT            = $(UTILS_COMMAND_PATH)cat
CHMOD          = $(UTILS_COMMAND_PATH)chmod
CMP            = $(UTILS_USR_BIN_PATH)cmp
COMM           = $(UTILS_USR_BIN_PATH)comm
COMPRESS       = $(UTILS_USR_BIN_PATH)compress
CP             = $(UTILS_COMMAND_PATH)cp
CPIO           = $(UTILS_COMMAND_PATH)cpio
CUT            = $(UTILS_USR_BIN_PATH)cut
DATE           = $(UTILS_COMMAND_PATH)date
DF             = $(UTILS_COMMAND_PATH)df
DIFF           = $(UTILS_USR_BIN_PATH)diff
DIRNAME        = $(UTILS_USR_BIN_PATH)dirname
DUMP           = $(UTILS_CCS_BIN_PATH)dump
ECHO           = $(UTILS_COMMAND_PATH)echo
EGREP          = $(UTILS_COMMAND_PATH)egrep
EXPR           = $(UTILS_USR_BIN_PATH)expr
FILE           = $(UTILS_USR_BIN_PATH)file
FIND           = $(UTILS_USR_BIN_PATH)find
FMT            = $(UTILS_COMMAND_PATH)fmt
GDB            = $(UTILS_USR_BIN_PATH)gdb
GREP           = $(UTILS_COMMAND_PATH)grep
GUNZIP         = $(UTILS_COMMAND_PATH)gunzip
# GZIP is used for solaris. Linux and windows use tar czf
GZIP           = $(UTILS_COMMAND_PATH)gzip
HEAD           = $(UTILS_USR_BIN_PATH)head
HG             = hg
ID             = $(UTILS_COMMAND_PATH)id
ISAINFO        = $(UTILS_COMMAND_PATH)isainfo
KSH            = $(UTILS_COMMAND_PATH)ksh
LDD            = $(UTILS_USR_BIN_PATH)ldd
LEX            = $(UTILS_CCS_BIN_PATH)lex
LN             = $(UTILS_COMMAND_PATH)ln
LS             = $(UTILS_COMMAND_PATH)ls
M4             = $(UTILS_CCS_BIN_PATH)m4
MKDIR          = $(UTILS_COMMAND_PATH)mkdir
MKSINFO        = $(UTILS_COMMAND_PATH)mksinfo
MSGFMT         = $(UTILS_USR_BIN_PATH)msgfmt
MV             = $(UTILS_COMMAND_PATH)mv
NAWK           = $(UTILS_USR_BIN_PATH)nawk
OTOOL          = $(UTILS_USR_BIN_PATH)otool
PKGMK          = $(UTILS_COMMAND_PATH)pkgmk
PRINTF         = $(UTILS_USR_BIN_PATH)printf
PWD            = $(UTILS_COMMAND_PATH)pwd
READELF        = $(UTILS_USR_BIN_PATH)readelf
RMDIR          = $(UTILS_COMMAND_PATH)rmdir
RPM            = $(UTILS_COMMAND_PATH)rpm
RPMBUILD       = $(UTILS_COMMAND_PATH)rpmbuild
SED            = $(UTILS_COMMAND_PATH)sed
SH             = $(UTILS_COMMAND_PATH)sh
SHOWREV        = $(UTILS_USR_BIN_PATH)showrev
SORT           = $(UTILS_COMMAND_PATH)sort
TAIL           = $(UTILS_USR_BIN_PATH)tail
TAR            = $(UTILS_COMMAND_PATH)tar
TEST           = $(UTILS_USR_BIN_PATH)test
TOUCH          = $(UTILS_COMMAND_PATH)touch
TR             = $(UTILS_USR_BIN_PATH)tr
TRUE           = $(UTILS_COMMAND_PATH)true
UNAME          = $(UTILS_COMMAND_PATH)uname
UNIQ           = $(UTILS_USR_BIN_PATH)uniq
UNZIP          = $(UTILS_USR_BIN_PATH)unzip
UNZIPSFX       = $(UTILS_DEVTOOL_PATH)unzipsfx
XARGS          = $(UTILS_USR_BIN_PATH)xargs
WC             = $(UTILS_USR_BIN_PATH)wc
WHICH          = $(UTILS_USR_BIN_PATH)which
YACC           = $(UTILS_CCS_BIN_PATH)yacc
ZIPEXE         = $(UTILS_DEVTOOL_PATH)zip

# Special cases
#RM   is defined by GNU Make as 'rm -f'
CD             = cd # intrinsic unix command

# Windows specific
ifeq ($(PLATFORM),windows)
  ifdef USING_CYGWIN
    # Intrinsic unix command, with backslash-escaped character interpretation
    ECHO     = $(UNIXCOMMAND_PATH)echo -e
    ZIPEXE   = $(UNIXCOMMAND_PATH)zip
    UNZIP    = $(UNIXCOMMAND_PATH)unzip
    # Some CYGWIN nawk versions require BINMODE=w for proper '\r' interpretation
    NAWK     = $(UNIXCOMMAND_PATH)awk -v BINMODE=w
  else
    ZIPEXE = $(UTILS_DEVTOOL_PATH)zip
    UNZIP  = $(UTILS_DEVTOOL_PATH)unzip
    NAWK   = $(UNIXCOMMAND_PATH)awk
    ifdef USING_MSYS
      ECHO   = $(UTILS_COMMAND_PATH)echo -e
      AR     = $(UTILS_DEVTOOL_PATH)ar
    endif
  endif
  # Re-define some utilities
  LEX            =# override GNU Make intrinsic: no lex on windows
  SHA1SUM        = $(UNIXCOMMAND_PATH)openssl sha1
endif

# Linux specific
ifeq ($(PLATFORM),linux)
  # A few redefines
  # Allows for builds on Debian GNU Linux, basename is in a different place
  BASENAME=$(firstword $(wildcard $(UTILS_COMMAND_PATH)basename) \
                       $(wildcard $(UTILS_USR_BIN_PATH)basename))
  # RPM 4 has replaced "rpm -b" with an entirely new utility "rpmbuild".
  # 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))
  RPMBUILD=$(firstword $(wildcard $(UTILS_COMMAND_PATH)rpmbuild) \
		       $(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))
  NAWK           = $(USRBIN_PATH)gawk
  # Intrinsic unix command, with backslash-escaped character interpretation
  ECHO           = /bin/echo -e
  # These are really in UTILS_USR_BIN_PATH on Linux
  ifndef CROSS_COMPILE_ARCH
    AR             = $(UTILS_USR_BIN_PATH)ar
    AS             = $(UTILS_USR_BIN_PATH)as
    LD             = $(UTILS_USR_BIN_PATH)ld
    MCS            = $(UTILS_USR_BIN_PATH)mcs
    NM             = $(UTILS_USR_BIN_PATH)nm
    STRIP          = $(UTILS_USR_BIN_PATH)strip
  endif
  LEX            = $(UTILS_USR_BIN_PATH)lex
  M4             = $(UTILS_USR_BIN_PATH)m4
  YACC           = $(UTILS_USR_BIN_PATH)yacc
endif

# Solaris specific
ifeq ($(PLATFORM),solaris)
  # Intrinsic unix command, with backslash-escaped character interpretation
  #   (not using -e  will cause build failure when using /bin/bash)
  #   (using -e breaks something else)
  ECHO           = /usr/bin/echo
endif

ifeq ($(PLATFORM), macosx) 
  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
  NAWK         = $(UTILS_USR_BIN_PATH)awk
  UNZIPSFX     = $(UTILS_USR_BIN_PATH)unzipsfx
  ZIPEXE       = $(UTILS_USR_BIN_PATH)zip
  CPIO         = $(UTILS_USR_BIN_PATH)cpio
  TAR          = $(UTILS_USR_BIN_PATH)tar
  # Builtin shell command, no -e option needed
  ECHO         = echo
endif