1 #
   2 # Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved.
   3 # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
   4 #
   5 # This code is free software; you can redistribute it and/or modify it
   6 # under the terms of the GNU General Public License version 2 only, as
   7 # published by the Free Software Foundation.  Oracle designates this
   8 # particular file as subject to the "Classpath" exception as provided
   9 # by Oracle in the LICENSE file that accompanied this code.
  10 #
  11 # This code is distributed in the hope that it will be useful, but WITHOUT
  12 # ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
  13 # FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
  14 # version 2 for more details (a copy is included in the LICENSE file that
  15 # accompanied this code).
  16 #
  17 # You should have received a copy of the GNU General Public License version
  18 # 2 along with this work; if not, write to the Free Software Foundation,
  19 # Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
  20 #
  21 # Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
  22 # or visit www.oracle.com if you need additional information or have any
  23 # questions.
  24 #
  25 
  26 #
  27 # Shared variables for standard unix utilties on all platforms.
  28 #
  29 # Assumes Platform.gmk has been included before this file.
  30 #
  31 # These input UTILS_* variables can be defined at anytime, ideally once.
  32 #         Unix Commands: Normally /bin/, /usr/bin/. or C:/mksnt/mksnt/
  33 #            UTILS_COMMAND_PATH
  34 #         /usr/bin/ 
  35 #            UTILS_USR_BIN_PATH
  36 #         /usr/ccs/bin/ (m4, lex, yacc, as, ar, strip, mcs)
  37 #            UTILS_CCS_BIN_PATH
  38 #         Dev Tools: zip, unzip, etc that we may have special versions of
  39 #            UTILS_DEVTOOL_PATH
  40 #
  41 # WARNING:  This file cannot assume that any of these utilties are available
  42 #           to be run via their variable names defined here.
  43 #           The paths inside the UTILS_* variables may not be defined yet.
  44 #
  45 # Note: There is no guarantee that all these exist on all platforms.
  46 #       Some only make sense for one platform, but are harmless.
  47 #
  48 
  49 ifeq ($(PLATFORM),linux)
  50   UTILS_COMMAND_PATH=$(UNIXCOMMAND_PATH)
  51   UTILS_USR_BIN_PATH=$(USRBIN_PATH)
  52   UTILS_CCS_BIN_PATH=$(USRBIN_PATH)
  53   UTILS_DEVTOOL_PATH=$(USRBIN_PATH)
  54 endif
  55 
  56 ifeq ($(PLATFORM),solaris)
  57   UTILS_COMMAND_PATH=$(UNIXCOMMAND_PATH)
  58   UTILS_USR_BIN_PATH=$(UNIXCOMMAND_PATH)
  59   UTILS_CCS_BIN_PATH=$(UNIXCCS_PATH)
  60   UTILS_DEVTOOL_PATH=$(DEVTOOLS_PATH)
  61 endif
  62 
  63 ifeq ($(PLATFORM),windows)
  64   UTILS_COMMAND_PATH=$(UNIXCOMMAND_PATH)
  65   UTILS_USR_BIN_PATH=$(UNIXCOMMAND_PATH)
  66   UTILS_CCS_BIN_PATH=$(UNIXCOMMAND_PATH)
  67   UTILS_DEVTOOL_PATH=$(DEVTOOLS_PATH)
  68 endif
  69 
  70 # Utilities
  71 ADB            = $(UTILS_COMMAND_PATH)adb
  72 AR             = $(UTILS_CCS_BIN_PATH)ar
  73 AS             = $(UTILS_CCS_BIN_PATH)as
  74 BASENAME       = $(UTILS_COMMAND_PATH)basename
  75 BZIP2          = $(UTILS_COMMAND_PATH)bzip2
  76 CAT            = $(UTILS_COMMAND_PATH)cat
  77 CHMOD          = $(UTILS_COMMAND_PATH)chmod
  78 CMP            = $(UTILS_USR_BIN_PATH)cmp
  79 COMM           = $(UTILS_USR_BIN_PATH)comm
  80 COMPRESS       = $(UTILS_USR_BIN_PATH)compress
  81 CP             = $(UTILS_COMMAND_PATH)cp
  82 CPIO           = $(UTILS_COMMAND_PATH)cpio
  83 CUT            = $(UTILS_USR_BIN_PATH)cut
  84 DATE           = $(UTILS_COMMAND_PATH)date
  85 DF             = $(UTILS_COMMAND_PATH)df
  86 DIFF           = $(UTILS_USR_BIN_PATH)diff
  87 DIRNAME        = $(UTILS_USR_BIN_PATH)dirname
  88 ECHO           = $(UTILS_COMMAND_PATH)echo
  89 EGREP          = $(UTILS_COMMAND_PATH)egrep
  90 EXPR           = $(UTILS_USR_BIN_PATH)expr
  91 FILE           = $(UTILS_USR_BIN_PATH)file
  92 FIND           = $(UTILS_USR_BIN_PATH)find
  93 FMT            = $(UTILS_COMMAND_PATH)fmt
  94 GDB            = $(UTILS_USR_BIN_PATH)gdb
  95 GREP           = $(UTILS_COMMAND_PATH)grep
  96 GUNZIP         = $(UTILS_COMMAND_PATH)gunzip
  97 HEAD           = $(UTILS_USR_BIN_PATH)head
  98 ID             = $(UTILS_COMMAND_PATH)id
  99 ISAINFO        = $(UTILS_COMMAND_PATH)isainfo
 100 KSH            = $(UTILS_COMMAND_PATH)ksh
 101 LD             = $(UTILS_CCS_BIN_PATH)ld
 102 LEX            = $(UTILS_CCS_BIN_PATH)lex
 103 LN             = $(UTILS_COMMAND_PATH)ln
 104 LS             = $(UTILS_COMMAND_PATH)ls
 105 MCS            = $(UTILS_CCS_BIN_PATH)mcs
 106 M4             = $(UTILS_CCS_BIN_PATH)m4
 107 MKDIR          = $(UTILS_COMMAND_PATH)mkdir
 108 MKSINFO        = $(UTILS_COMMAND_PATH)mksinfo
 109 MSGFMT         = $(UTILS_USR_BIN_PATH)msgfmt
 110 MV             = $(UTILS_COMMAND_PATH)mv
 111 NAWK           = $(UTILS_USR_BIN_PATH)nawk
 112 NM             = $(UTILS_CCS_BIN_PATH)nm
 113 PKGMK          = $(UTILS_COMMAND_PATH)pkgmk
 114 PRINTF         = $(UTILS_USR_BIN_PATH)printf
 115 PWD            = $(UTILS_COMMAND_PATH)pwd
 116 RC             = $(UTILS_COMMAND_PATH)rc
 117 RMDIR          = $(UTILS_COMMAND_PATH)rmdir
 118 RPM            = $(UTILS_COMMAND_PATH)rpm
 119 RPMBUILD       = $(UTILS_COMMAND_PATH)rpmbuild
 120 SED            = $(UTILS_COMMAND_PATH)sed
 121 SH             = $(UTILS_COMMAND_PATH)sh
 122 SHOWREV        = $(UTILS_USR_BIN_PATH)showrev
 123 SORT           = $(UTILS_COMMAND_PATH)sort
 124 STRIP          = $(UTILS_CCS_BIN_PATH)strip
 125 TAIL           = $(UTILS_USR_BIN_PATH)tail
 126 TAR            = $(UTILS_COMMAND_PATH)tar
 127 TEST           = $(UTILS_USR_BIN_PATH)test
 128 TOUCH          = $(UTILS_COMMAND_PATH)touch
 129 TR             = $(UTILS_USR_BIN_PATH)tr
 130 TRUE           = $(UTILS_COMMAND_PATH)true
 131 UNAME          = $(UTILS_COMMAND_PATH)uname
 132 UNIQ           = $(UTILS_USR_BIN_PATH)uniq
 133 UNZIP          = $(UTILS_USR_BIN_PATH)unzip
 134 UNZIPSFX       = $(UTILS_DEVTOOL_PATH)unzipsfx
 135 WC             = $(UTILS_USR_BIN_PATH)wc
 136 WHICH          = $(UTILS_USR_BIN_PATH)which
 137 YACC           = $(UTILS_CCS_BIN_PATH)yacc
 138 ZIPEXE         = $(UTILS_DEVTOOL_PATH)zip
 139 
 140 # Special cases
 141 #RM   is defined by GNU Make as 'rm -f'
 142 CD             = cd # intrinsic unix command
 143 
 144 # Windows specific
 145 ifeq ($(PLATFORM),windows)
 146   ifdef USING_CYGWIN
 147     # Intrinsic unix command, with backslash-escaped character interpretation
 148     ECHO = $(UNIXCOMMAND_PATH)echo -e
 149     ZIPEXE = $(UNIXCOMMAND_PATH)zip
 150     UNZIP  = $(UNIXCOMMAND_PATH)unzip
 151     # Some CYGWIN nawk versions require BINMODE=w for proper '\r' interpretation
 152     NAWK   = $(UNIXCOMMAND_PATH)awk -v BINMODE=w
 153   else
 154     ZIPEXE = $(UTILS_DEVTOOL_PATH)zip
 155     UNZIP  = $(UTILS_DEVTOOL_PATH)unzip
 156     NAWK   = $(UNIXCOMMAND_PATH)awk
 157   endif
 158   # Re-define some utilities
 159   LEX            =# override GNU Make intrinsic: no lex on windows
 160   SHA1SUM        = $(UNIXCOMMAND_PATH)openssl sha1
 161 endif
 162 
 163 # Linux specific
 164 ifeq ($(PLATFORM),linux)
 165   # A few redefines
 166   # Allows for builds on Debian GNU Linux, basename is in a different place
 167   BASENAME=$(firstword $(wildcard $(UTILS_COMMAND_PATH)basename) \
 168                        $(wildcard $(UTILS_USR_BIN_PATH)basename))
 169   # RPM 4 has replaced "rpm -b" with an entirely new utility "rpmbuild".
 170   # Also, some distribution (Ubuntu, Debian, others?) place the rpm command
 171   # itself in /usr/bin rather than it's traditional home in /bin.
 172   RPM=$(firstword $(wildcard $(UTILS_COMMAND_PATH)rpm) \
 173                   $(wildcard $(UTILS_USR_BIN_PATH)rpm))
 174   RPMBUILD=$(firstword $(wildcard $(UTILS_COMMAND_PATH)rpmbuild) \
 175                        $(wildcard $(UTILS_USR_BIN_PATH)rpmbuild) \
 176                        $(wildcard $(UTILS_COMMAND_PATH)rpm) \
 177                        $(wildcard $(UTILS_USR_BIN_PATH)rpm))
 178   # Most Linux distros have "sort" in /bin.  Ubuntu, Debian and perhaps
 179   # others have it in /usr/bin.
 180   SORT=$(firstword $(wildcard $(UTILS_COMMAND_PATH)sort) \
 181                    $(wildcard $(UTILS_USR_BIN_PATH)sort))
 182   NAWK           = $(USRBIN_PATH)gawk
 183   # Intrinsic unix command, with backslash-escaped character interpretation
 184   ECHO           = /bin/echo -e
 185   # These are really in UTILS_USR_BIN_PATH on Linux
 186   AR             = $(UTILS_USR_BIN_PATH)ar
 187   AS             = $(UTILS_USR_BIN_PATH)as
 188   LD             = $(UTILS_USR_BIN_PATH)ld
 189   LEX            = $(UTILS_USR_BIN_PATH)lex
 190   MCS            = $(UTILS_USR_BIN_PATH)mcs
 191   M4             = $(UTILS_USR_BIN_PATH)m4
 192   NM             = $(UTILS_USR_BIN_PATH)nm
 193   STRIP          = $(UTILS_USR_BIN_PATH)strip
 194   YACC           = $(UTILS_USR_BIN_PATH)yacc
 195 endif
 196 
 197 # Solaris specific
 198 ifeq ($(PLATFORM),solaris)
 199   # Intrinsic unix command, with backslash-escaped character interpretation
 200   #   (not using -e  will cause build failure when using /bin/bash)
 201   #   (using -e breaks something else)
 202   ECHO           = /usr/bin/echo
 203 endif
 204