7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin#!/bin/ksh -p
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin# (note we use "/bin/ksh -p" for Linux/pdksh support in this script)
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin#
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin# CDDL HEADER START
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin#
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin# The contents of this file are subject to the terms of the
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin# Common Development and Distribution License (the "License").
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin# You may not use this file except in compliance with the License.
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin#
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin# or http://www.opensolaris.org/os/licensing.
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin# See the License for the specific language governing permissions
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin# and limitations under the License.
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin#
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin# When distributing Covered Code, include this CDDL HEADER in each
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin# If applicable, add the following below this CDDL HEADER, with the
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin# fields enclosed by brackets "[]" replaced with your own identifying
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin# information: Portions Copyright [yyyy] [name of copyright owner]
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin#
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin# CDDL HEADER END
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin#
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin#
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. Faulkner# Copyright (c) 2006, 2010, Oracle and/or its affiliates. All rights reserved.
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin#
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin#
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz# buildksh93.sh - ast-ksh standalone build script for the
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin# OpenSolaris ksh93-integration project
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin#
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin# ksh93t sources can be downloaded like this from the AT&T site:
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. Faulkner# wget --http-user="I accept www.opensource.org/licenses/cpl" --http-passwd="." 'http://www.research.att.com/~gsf/download/tgz/INIT.2010-03-09.tgz'
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. Faulkner# wget --http-user="I accept www.opensource.org/licenses/cpl" --http-passwd="." 'http://www.research.att.com/~gsf/download/tgz/ast-ksh.2010-03-09.tgz'
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chinfunction fatal_error
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin{
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin print -u2 "${progname}: $*"
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin exit 1
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin}
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chinset -o errexit
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chinset -o xtrace
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chintypeset progname="$(basename "${0}")"
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chintypeset buildmode="$1"
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chinif [[ "${buildmode}" == "" ]] ; then
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin fatal_error "buildmode required."
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chinfi
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin# Make sure we use the C locale during building to avoid any unintended
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin# side-effects
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chinexport LANG=C
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chinexport LC_ALL=$LANG LC_MONETARY=$LANG LC_NUMERIC=$LANG LC_MESSAGES=$LANG LC_COLLATE=$LANG LC_CTYPE=$LANG
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin# Make sure the POSIX/XPG6 tools are in front of /usr/bin (/bin is needed for Linux after /usr/bin)
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chinexport PATH=/usr/xpg6/bin:/usr/xpg4/bin:/usr/ccs/bin:/usr/bin:/bin:/opt/SUNWspro/bin
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin# Make sure the POSIX/XPG6 packages are installed (mandatory for building
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin# our version of ksh93 correctly).
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chinif [[ "$(uname -s)" == "SunOS" ]] ; then
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin if [[ ! -x "/usr/xpg6/bin/tr" ]] ; then
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin fatal_error "XPG6/4 packages (SUNWxcu6,SUNWxcu4) not installed."
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin fi
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chinfi
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chinfunction print_solaris_builtin_header
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin{
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin# Make sure to use \\ instead of \ for continuations
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chincat <<ENDOFTEXT
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin/*
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin * CDDL HEADER START
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin *
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin * The contents of this file are subject to the terms of the
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin * Common Development and Distribution License (the "License").
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin * You may not use this file except in compliance with the License.
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin *
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin * or http://www.opensolaris.org/os/licensing.
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin * See the License for the specific language governing permissions
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin * and limitations under the License.
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin *
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin * When distributing Covered Code, include this CDDL HEADER in each
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin * If applicable, add the following below this CDDL HEADER, with the
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin * fields enclosed by brackets "[]" replaced with your own identifying
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin * information: Portions Copyright [yyyy] [name of copyright owner]
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin *
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin * CDDL HEADER END
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin */
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin/*
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. Faulkner * Copyright (c) 2006, 2010, Oracle and/or its affiliates. All rights reserved.
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin */
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin#ifndef _SOLARIS_KSH_CMDLIST_H
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin#define _SOLARIS_KSH_CMDLIST_H
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin#ifdef __cplusplus
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chinextern "C" {
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin#endif
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin/*
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin * List builtins for Solaris.
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin * The list here is partially autogenerated and partially hand-picked
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin * based on compatibility with the native Solaris versions of these
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin * tools
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin */
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin/*
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin * Commands which are 100% compatible with native Solaris versions (/bin is
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin * a softlink to ./usr/bin, ksh93 takes care about the lookup)
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin */
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin#define BINCMDLIST(f) \\
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin { "/bin/" #f, NV_BLTIN|NV_BLTINOPT|NV_NOFREE, bltin(f) },
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin#define USRBINCMDLIST(f) \\
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin { "/usr/bin/" #f, NV_BLTIN|NV_BLTINOPT|NV_NOFREE, bltin(f) },
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin#define SBINCMDLIST(f) \\
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin { "/sbin/" #f, NV_BLTIN|NV_BLTINOPT|NV_NOFREE, bltin(f) },
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin#define SUSRBINCMDLIST(f) \\
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin { "/usr/sbin/" #f, NV_BLTIN|NV_BLTINOPT|NV_NOFREE, bltin(f) },
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. Faulkner/* POSIX compatible commands */
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. Faulkner#define XPG6CMDLIST(f) \\
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. Faulkner { "/usr/xpg6/bin/" #f, NV_BLTIN|NV_BLTINOPT|NV_NOFREE, bltin(f) },
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. Faulkner#define XPG4CMDLIST(f) \\
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. Faulkner { "/usr/xpg4/bin/" #f, NV_BLTIN|NV_BLTINOPT|NV_NOFREE, bltin(f) },
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. Faulkner#ifdef SHOPT_USR_GNU_BIN_BUILTINS
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. Faulkner/* GNU coreutils compatible commands */
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. Faulkner#define GNUCMDLIST(f) \\
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. Faulkner { "/usr/gnu/bin/" #f, NV_BLTIN|NV_BLTINOPT|NV_NOFREE, bltin(f) },
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. Faulkner#else
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. Faulkner#define GNUCMDLIST(f)
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. Faulkner#endif
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin/*
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin * Make all ksh93 builtins accessible when /usr/ast/bin was added to
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin * /usr/xpg6/bin:/usr/xpg4/bin:/usr/ccs/bin:/usr/bin:/bin:/opt/SUNWspro/bin
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin */
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin#define ASTCMDLIST(f) \\
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin { "/usr/ast/bin/" #f, NV_BLTIN|NV_BLTINOPT|NV_NOFREE, bltin(f) },
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin/* undo ast_map.h #defines to avoid collision */
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin#undef basename
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin#undef dirname
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz#undef mktemp
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin/* Generated data, do not edit. */
7c2fbfb345896881c631598ee3852ce9ce33fb07April ChinASTCMDLIST(basename)
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. FaulknerGNUCMDLIST(basename)
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. FaulknerXPG4CMDLIST(basename)
7c2fbfb345896881c631598ee3852ce9ce33fb07April ChinASTCMDLIST(cat)
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. FaulknerBINCMDLIST(cat)
7c2fbfb345896881c631598ee3852ce9ce33fb07April ChinASTCMDLIST(chgrp)
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. Faulkner// XPG4CMDLIST(chgrp)
7c2fbfb345896881c631598ee3852ce9ce33fb07April ChinASTCMDLIST(chmod)
7c2fbfb345896881c631598ee3852ce9ce33fb07April ChinASTCMDLIST(chown)
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. Faulkner// XPG4CMDLIST(chown)
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. FaulknerBINCMDLIST(chown)
7c2fbfb345896881c631598ee3852ce9ce33fb07April ChinASTCMDLIST(cksum)
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. FaulknerBINCMDLIST(cksum)
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. FaulknerGNUCMDLIST(cksum)
7c2fbfb345896881c631598ee3852ce9ce33fb07April ChinASTCMDLIST(cmp)
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. FaulknerBINCMDLIST(cmp)
7c2fbfb345896881c631598ee3852ce9ce33fb07April ChinASTCMDLIST(comm)
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. FaulknerBINCMDLIST(comm)
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. FaulknerGNUCMDLIST(comm)
7c2fbfb345896881c631598ee3852ce9ce33fb07April ChinASTCMDLIST(cp)
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. Faulkner// XPG4CMDLIST(cp)
7c2fbfb345896881c631598ee3852ce9ce33fb07April ChinASTCMDLIST(cut)
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. FaulknerBINCMDLIST(cut)
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. FaulknerGNUCMDLIST(cut)
7c2fbfb345896881c631598ee3852ce9ce33fb07April ChinASTCMDLIST(date)
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. Faulkner// XPG4CMDLIST(date)
7c2fbfb345896881c631598ee3852ce9ce33fb07April ChinASTCMDLIST(dirname)
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. FaulknerBINCMDLIST(dirname)
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. FaulknerGNUCMDLIST(dirname)
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. Faulkner// ASTCMDLIST(egrep)
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. Faulkner// XPG4CMDLIST(egrep)
7c2fbfb345896881c631598ee3852ce9ce33fb07April ChinASTCMDLIST(expr)
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. FaulknerGNUCMDLIST(expr)
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. FaulknerXPG6CMDLIST(expr)
7c2fbfb345896881c631598ee3852ce9ce33fb07April ChinASTCMDLIST(fds)
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. Faulkner// ASTCMDLIST(fgrep)
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. Faulkner// XPG4CMDLIST(fgrep)
7c2fbfb345896881c631598ee3852ce9ce33fb07April ChinASTCMDLIST(fmt)
7c2fbfb345896881c631598ee3852ce9ce33fb07April ChinASTCMDLIST(fold)
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. FaulknerBINCMDLIST(fold)
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. FaulknerGNUCMDLIST(fold)
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. Faulkner// ASTCMDLIST(grep)
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. Faulkner// XPG4CMDLIST(grep)
7c2fbfb345896881c631598ee3852ce9ce33fb07April ChinASTCMDLIST(head)
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. FaulknerBINCMDLIST(head)
7c2fbfb345896881c631598ee3852ce9ce33fb07April ChinASTCMDLIST(id)
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. FaulknerXPG4CMDLIST(id)
7c2fbfb345896881c631598ee3852ce9ce33fb07April ChinASTCMDLIST(join)
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. FaulknerBINCMDLIST(join)
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. FaulknerGNUCMDLIST(join)
7c2fbfb345896881c631598ee3852ce9ce33fb07April ChinASTCMDLIST(ln)
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. Faulkner// XPG4CMDLIST(ln)
7c2fbfb345896881c631598ee3852ce9ce33fb07April ChinASTCMDLIST(logname)
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. FaulknerBINCMDLIST(logname)
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. FaulknerGNUCMDLIST(logname)
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. FaulknerASTCMDLIST(md5sum)
7c2fbfb345896881c631598ee3852ce9ce33fb07April ChinASTCMDLIST(mkdir)
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. FaulknerBINCMDLIST(mkdir)
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. FaulknerGNUCMDLIST(mkdir)
7c2fbfb345896881c631598ee3852ce9ce33fb07April ChinASTCMDLIST(mkfifo)
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. FaulknerBINCMDLIST(mkfifo)
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. FaulknerGNUCMDLIST(mkfifo)
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland MainzASTCMDLIST(mktemp)
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. FaulknerBINCMDLIST(mktemp)
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. FaulknerGNUCMDLIST(mktemp)
7c2fbfb345896881c631598ee3852ce9ce33fb07April ChinASTCMDLIST(mv)
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. Faulkner// XPG4CMDLIST(mv)
7c2fbfb345896881c631598ee3852ce9ce33fb07April ChinASTCMDLIST(paste)
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. FaulknerBINCMDLIST(paste)
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. FaulknerGNUCMDLIST(paste)
7c2fbfb345896881c631598ee3852ce9ce33fb07April ChinASTCMDLIST(pathchk)
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. FaulknerBINCMDLIST(pathchk)
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. FaulknerGNUCMDLIST(pathchk)
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. Faulkner// ASTCMDLIST(readlink)
7c2fbfb345896881c631598ee3852ce9ce33fb07April ChinASTCMDLIST(rev)
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. FaulknerBINCMDLIST(rev)
7c2fbfb345896881c631598ee3852ce9ce33fb07April ChinASTCMDLIST(rm)
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. FaulknerXPG4CMDLIST(rm)
7c2fbfb345896881c631598ee3852ce9ce33fb07April ChinASTCMDLIST(rmdir)
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. FaulknerBINCMDLIST(rmdir)
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. FaulknerGNUCMDLIST(rmdir)
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. FaulknerGNUCMDLIST(sleep)
7c2fbfb345896881c631598ee3852ce9ce33fb07April ChinASTCMDLIST(stty)
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. Faulkner// XPG4CMDLIST(stty)
7c2fbfb345896881c631598ee3852ce9ce33fb07April ChinASTCMDLIST(sum)
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. FaulknerBINCMDLIST(sum)
7c2fbfb345896881c631598ee3852ce9ce33fb07April ChinASTCMDLIST(sync)
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. FaulknerBINCMDLIST(sync)
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. FaulknerGNUCMDLIST(sync)
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. FaulknerSBINCMDLIST(sync)
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. FaulknerSUSRBINCMDLIST(sync)
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. FaulknerASTCMDLIST(tail)
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland MainzBINCMDLIST(tail)
7c2fbfb345896881c631598ee3852ce9ce33fb07April ChinXPG4CMDLIST(tail)
7c2fbfb345896881c631598ee3852ce9ce33fb07April ChinASTCMDLIST(tee)
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. FaulknerBINCMDLIST(tee)
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. FaulknerGNUCMDLIST(tee)
7c2fbfb345896881c631598ee3852ce9ce33fb07April ChinASTCMDLIST(tty)
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. FaulknerBINCMDLIST(tty)
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. FaulknerGNUCMDLIST(tty)
7c2fbfb345896881c631598ee3852ce9ce33fb07April ChinASTCMDLIST(uname)
7c2fbfb345896881c631598ee3852ce9ce33fb07April ChinASTCMDLIST(uniq)
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. FaulknerBINCMDLIST(uniq)
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. FaulknerGNUCMDLIST(uniq)
7c2fbfb345896881c631598ee3852ce9ce33fb07April ChinASTCMDLIST(wc)
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. FaulknerBINCMDLIST(wc)
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. FaulknerGNUCMDLIST(wc)
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. Faulkner// ASTCMDLIST(xgrep)
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. Faulkner// BINCMDLIST(xgrep)
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin/* Mandatory for ksh93 test suite and AST scripts */
7c2fbfb345896881c631598ee3852ce9ce33fb07April ChinBINCMDLIST(getconf)
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin#ifdef __cplusplus
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin}
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin#endif
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin#endif /* !_SOLARIS_KSH_CMDLIST_H */
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. Faulkner
7c2fbfb345896881c631598ee3852ce9ce33fb07April ChinENDOFTEXT
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin}
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chinfunction build_shell
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin{
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin set -o errexit
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin set -o xtrace
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin # OS.cputype.XXbit.compiler
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin case "${buildmode}" in
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin *.linux.*)
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin # ksh93+AST config flags
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin bast_flags="-DSHOPT_CMDLIB_BLTIN=0 -DSH_CMDLIB_DIR=\\\"/usr/ast/bin\\\" -DSHOPT_SYSRC -D_map_libc=1"
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin # gcc flags
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin bgcc99="gcc -std=gnu99 "
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin bgcc_ccflags="${bon_flags} ${bast_flags} -g"
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin case "${buildmode}" in
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin # Linux i386
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin *.i386.32bit.gcc*) HOSTTYPE="linux.i386" CC="${bgcc99} -fPIC" cc_sharedlib="-shared" CCFLAGS="${bgcc_ccflags}"
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin ;;
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin *)
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin fatal_error "build_shell: Illegal Linux type/compiler build mode \"${buildmode}\"."
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin ;;
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin esac
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin ;;
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin *.solaris.*)
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin # Notes:
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin # 1. Do not remove/modify these flags or their order before either
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin # asking the project leads at
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin # http://www.opensolaris.org/os/project/ksh93-integration/
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin # These flags all have a purpose, even if they look
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin # weird/redundant/etc. at the first look.
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin #
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin # 2. We use -KPIC here since -Kpic is too small on 64bit sparc and
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin # on 32bit it's close to the barrier so we use it for both 32bit and
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin # 64bit to avoid later suprises when people update libast in the
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin # future
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin #
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin # 3. "-D_map_libc=1" is needed to force map.c to add a "_ast_" prefix to all
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin # AST symbol names which may otherwise collide with Solaris/Linux libc
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin #
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin # 4. "-DSHOPT_SYSRC" enables /etc/ksh.kshrc support (AST default is currently
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin # to enable it if /etc/ksh.kshrc or /etc/bash.bashrc are available on the
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin # build machine).
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin #
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin # 5. -D_lib_socket=1 -lsocket -lnsl" was added to make sure ksh93 is compiled
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin # with networking support enabled, the current AST build infratructure has
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin # problems with detecting networking support in Solaris.
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin #
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin # 6. "-xc99=%all -D_XOPEN_SOURCE=600 -D__EXTENSIONS__=1" is used to force
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin # the compiler into C99 mode. Otherwise ksh93 will be much slower and lacks
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin # lots of arithmethic functions.
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin #
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin # 7. "-D_TS_ERRNO -D_REENTRANT" are flags taken from the default OS/Net
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin # build system.
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin #
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin # 8. "-xpagesize_stack=64K is used on SPARC to enhance the performace
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin #
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin # 9. -DSHOPT_CMDLIB_BLTIN=0 -DSH_CMDLIB_DIR=\\\"/usr/ast/bin\\\" -DSHOPT_CMDLIB_HDR=\\\"/home/test001/ksh93/ast_ksh_20070322/solaris_cmdlist.h\\\"
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin # is used to bind all ksh93 builtins to a "virtual" directory
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin # called "/usr/ast/bin/" and to adjust the list of builtins
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin # enabled by default to those defined by PSARC 2006/550
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin solaris_builtin_header="${PWD}/tmp_solaris_builtin_header.h"
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin print_solaris_builtin_header >"${solaris_builtin_header}"
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin # OS/Net build flags
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin bon_flags="-D_TS_ERRNO -D_REENTRANT"
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin # ksh93+AST config flags
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin bast_flags="-DSHOPT_CMDLIB_BLTIN=0 -DSH_CMDLIB_DIR=\\\"/usr/ast/bin\\\" -DSHOPT_CMDLIB_HDR=\\\"${solaris_builtin_header}\\\" -DSHOPT_SYSRC -D_map_libc=1"
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin # Sun Studio flags
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin bsunc99="/opt/SUNWspro/bin/cc -xc99=%all -D_XOPEN_SOURCE=600 -D__EXTENSIONS__=1"
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin bsuncc_app_ccflags_sparc="-xpagesize_stack=64K" # use bsuncc_app_ccflags_sparc only for final executables
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin bsuncc_ccflags="${bon_flags} -KPIC -g -xs -xspace -Xa -xstrconst -z combreloc -xildoff -xcsi -errtags=yes ${bast_flags} -D_lib_socket=1 -lsocket -lnsl"
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin # gcc flags
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin bgcc99="/usr/sfw/bin/gcc -std=gnu99 -D_XOPEN_SOURCE=600 -D__EXTENSIONS__=1"
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz bgcc_warnflags="-Wall -Wextra -Wno-unknown-pragmas -Wno-missing-braces -Wno-sign-compare -Wno-parentheses -Wno-uninitialized -Wno-implicit-function-declaration -Wno-unused -Wno-trigraphs -Wno-char-subscripts -Wno-switch"
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz bgcc_ccflags="${bon_flags} ${bgcc_warnflags} ${bast_flags} -D_lib_socket=1 -lsocket -lnsl"
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin case "${buildmode}" in
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz # for -m32/-m64 flags see usr/src/Makefile.master, makefile symbols *_XARCH/co.
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz *.i386.32bit.suncc*) HOSTTYPE="sol11.i386" CC="${bsunc99} -m32" cc_sharedlib="-G" CCFLAGS="${bsuncc_ccflags}" ;;
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz *.i386.64bit.suncc*) HOSTTYPE="sol11.i386" CC="${bsunc99} -m64 -KPIC" cc_sharedlib="-G" CCFLAGS="${bsuncc_ccflags}" ;;
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz *.sparc.32bit.suncc*) HOSTTYPE="sol11.sun4" CC="${bsunc99} -m32" cc_sharedlib="-G" CCFLAGS="${bsuncc_ccflags}" bsuncc_app_ccflags="${bsuncc_app_ccflags_sparc}" ;;
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz *.sparc.64bit.suncc*) HOSTTYPE="sol11.sun4" CC="${bsunc99} -m64 -dalign -KPIC" cc_sharedlib="-G" CCFLAGS="${bsuncc_ccflags}" bsuncc_app_ccflags="${bsuncc_app_ccflags_sparc}" ;;
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin *.i386.32bit.gcc*) HOSTTYPE="sol11.i386" CC="${bgcc99} -fPIC" cc_sharedlib="-shared" CCFLAGS="${bgcc_ccflags}" ;;
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin *.i386.64bit.gcc*) HOSTTYPE="sol11.i386" CC="${bgcc99} -m64 -mtune=opteron -Ui386 -U__i386 -fPIC" cc_sharedlib="-shared" CCFLAGS="${bgcc_ccflags}" ;;
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin *.sparc.32bit.gcc*) HOSTTYPE="sol11.sun4" CC="${bgcc99} -m32 -mcpu=v8 -fPIC" cc_sharedlib="-shared" CCFLAGS="${bgcc_ccflags}" ;;
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin *.sparc.64bit.gcc*) HOSTTYPE="sol11.sun4" CC="${bgcc99} -m64 -mcpu=v9 -fPIC" cc_sharedlib="-shared" CCFLAGS="${bgcc_ccflags}" ;;
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin *.s390.32bit.gcc*) HOSTTYPE="sol11.s390" CC="${bgcc99} -m32 -fPIC" cc_sharedlib="-shared" CCFLAGS="${bgcc_ccflags}" ;;
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin *.s390.64bit.gcc*) HOSTTYPE="sol11.s390" CC="${bgcc99} -m64 -fPIC" cc_sharedlib="-shared" CCFLAGS="${bgcc_ccflags}" ;;
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin *)
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin fatal_error "build_shell: Illegal Solaris type/compiler build mode \"${buildmode}\"."
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin ;;
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin esac
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin ;;
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin *)
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin fatal_error "Illegal OS build mode \"${buildmode}\"."
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin ;;
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin esac
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin # some prechecks
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin [[ -z "${CCFLAGS}" ]] && fatal_error "build_shell: CCFLAGS is empty."
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin [[ -z "${CC}" ]] && fatal_error "build_shell: CC is empty."
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin [[ -z "${HOSTTYPE}" ]] && fatal_error "build_shell: HOSTTYPE is empty."
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin [[ ! -f "bin/package" ]] && fatal_error "build_shell: bin/package missing."
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin [[ ! -x "bin/package" ]] && fatal_error "build_shell: bin/package not executable."
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin export CCFLAGS CC HOSTTYPE
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin # build ksh93
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin bin/package make CCFLAGS="${CCFLAGS}" CC="${CC}" HOSTTYPE="${HOSTTYPE}"
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin root="${PWD}/arch/${HOSTTYPE}"
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin [[ -d "$root" ]] || fatal_error "build_shell: directory ${root} not found."
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin log="${root}/lib/package/gen/make.out"
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin [[ -s $log ]] || fatal_error "build_shell: no make.out log found."
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz if [[ -f ${root}/lib/libast-g.a ]] then link_libast="ast-g" ; else link_libast="ast" ; fi
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz if [[ -f ${root}/lib/libdll-g.a ]] then link_libdll="dll-g" ; else link_libdll="dll" ; fi
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz if [[ -f ${root}/lib/libsum-g.a ]] then link_libsum="sum-g" ; else link_libsum="sum" ; fi
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz if [[ -f ${root}/lib/libcmd-g.a ]] then link_libcmd="cmd-g" ; else link_libcmd="cmd" ; fi
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz if [[ -f ${root}/lib/libshell-g.a ]] then link_libshell="shell-g" ; else link_libshell="shell" ; fi
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin if [[ "${buildmode}" != *.staticshell* ]] ; then
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin # libcmd causes some trouble since there is a squatter in solaris
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin # This has been fixed in Solaris 11/B48 but may require adjustments
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin # for older Solaris releases
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin for lib in libast libdll libsum libcmd libshell ; do
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin case "$lib" in
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin libshell)
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz base="src/cmd/ksh93/"
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin vers=1
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz link="-L${root}/lib/ -l${link_libcmd} -l${link_libsum} -l${link_libdll} -l${link_libast} -lm"
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin ;;
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin libdll)
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin base="src/lib/${lib}"
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin vers=1
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin link="-ldl"
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin ;;
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin libast)
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin base="src/lib/${lib}"
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin vers=1
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin link="-lm"
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin ;;
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin *)
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin base="src/lib/${lib}"
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin vers=1
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz link="-L${root}/lib/ -l${link_libast} -lm"
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin ;;
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin esac
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin (
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin cd "${root}/${base}"
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz if [[ -f ${lib}-g.a ]] ; then lib_a="${lib}-g.a" ; else lib_a="${lib}.a" ; fi
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin if [[ "${buildmode}" == *solaris* ]] ; then
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz ${CC} ${cc_sharedlib} ${CCFLAGS} -Bdirect -Wl,-zallextract -Wl,-zmuldefs -o "${root}/lib/${lib}.so.${vers}" "${lib_a}" $link
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin else
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz ${CC} ${cc_sharedlib} ${CCFLAGS} -Wl,--whole-archive -Wl,-zmuldefs "${lib_a}" -Wl,--no-whole-archive -o "${root}/lib/${lib}.so.${vers}" $link
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin fi
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin #rm ${lib}.a
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz mv "${lib_a}" "disabled_${lib_a}_"
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin cd "${root}/lib"
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin ln -sf "${lib}.so.${vers}" "${lib}.so"
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin )
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin done
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin (
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin base=src/cmd/ksh93
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin cd "${root}/${base}"
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin rm -f \
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz "${root}/lib/libshell.a" "${root}/lib/libshell-g.a" \
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz "${root}/lib/libsum.a" "${root}/lib/libsum-g.a" \
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz "${root}/lib/libdll.a" "${root}/lib/libdll-g.a" \
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. Faulkner "${root}/lib/libast.a" "${root}/lib/libast-g.a"
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin if [[ "${buildmode}" == *solaris* ]] ; then
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz ${CC} ${CCFLAGS} ${bsuncc_app_ccflags} -L${root}/lib/ -Bdirect -o ksh pmain.o -lshell -Bstatic -l${link_libcmd} -Bdynamic -lsum -ldll -last -lm -lmd -lsecdb
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin else
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin ${CC} ${CCFLAGS} ${bsuncc_app_ccflags} -L${root}/lib/ -o ksh pmain.o -lshell -lcmd -lsum -ldll -last -lm
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin fi
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin file ksh
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin file shcomp
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin export LD_LIBRARY_PATH="${root}/lib:${LD_LIBRARY_PATH}"
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin export LD_LIBRARY_PATH_32="${root}/lib:${LD_LIBRARY_PATH_32}"
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin export LD_LIBRARY_PATH_64="${root}/lib:${LD_LIBRARY_PATH_64}"
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin ldd ksh
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin )
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin fi
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin}
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chinfunction test_builtin_getconf
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin{
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin(
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin print "# testing getconf builtin..."
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin set +o errexit
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin export PATH=/bin:/usr/bin
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin for lang in ${TEST_LANG} ; do
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin (
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin printf "## testing LANG=%s\n" "${lang}"
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin export LC_ALL="${lang}" LANG="${lang}"
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin ${SHELL} -c '/usr/bin/getconf -a |
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin while read i ; do
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin t="${i%:*}" ; a="$(getconf "$t" 2>/dev/null)" ;
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin b="$(/usr/bin/getconf "$t" 2>/dev/null)" ; [ "$a" != "$b" ] && print "# |$t|:|$a| != |$b|" ;
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin done'
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin )
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin done
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin print "# testing getconf done."
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin)
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin}
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chinfunction test_shell
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin{
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin set -o errexit
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin set -o xtrace
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz ulimit -s 65536 # need larger stack on 64bit SPARC to pass all tests
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin export SHELL="$(ls -1 $PWD/arch/*/src/cmd/ksh93/ksh)"
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin export LD_LIBRARY_PATH="$(ls -1ad $PWD/arch/*/lib):${LD_LIBRARY_PATH}"
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin export LD_LIBRARY_PATH_32="$(ls -1ad $PWD/arch/*/lib):${LD_LIBRARY_PATH_32}"
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin export LD_LIBRARY_PATH_64="$(ls -1ad $PWD/arch/*/lib):${LD_LIBRARY_PATH_64}"
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin printf "## SHELL is |%s|\n" "${SHELL}"
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin printf "## LD_LIBRARY_PATH is |%s|\n" "${LD_LIBRARY_PATH}"
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin [[ ! -f "${SHELL}" ]] && fatal_error "test_shell: |${SHELL}| is not a file."
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin [[ ! -x "${SHELL}" ]] && fatal_error "test_shell: |${SHELL}| is not executable."
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. Faulkner [[ "${TEST_LANG}" == "" ]] && TEST_LANG="C zh_CN.GB18030 en_US.UTF-8"
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin case "${buildmode}" in
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin testshell.bcheck*)
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin for lang in ${TEST_LANG} ; do
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin (
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin export LC_ALL="${lang}" LANG="${lang}"
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin for i in ./src/cmd/ksh93/tests/*.sh ; do
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin bc_logfile="$(basename "$i").$$.bcheck"
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin rm -f "${bc_logfile}"
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin /opt/SUNWspro/bin/bcheck -q -access -o "${bc_logfile}" ${SHELL} ./src/cmd/ksh93/tests/shtests \
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin LD_LIBRARY_PATH_64="$LD_LIBRARY_PATH_64" \
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin LD_LIBRARY_PATH="$LD_LIBRARY_PATH" \
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin LD_LIBRARY_PATH_32="$LD_LIBRARY_PATH_32"\
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin LC_ALL="${lang}" LANG="${lang}" \
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. Faulkner VMALLOC_OPTIONS=abort \
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin "$i"
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin cat "${bc_logfile}"
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin done
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin )
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin done
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin ;;
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin testshell.builtin.getconf)
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin test_builtin_getconf
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin ;;
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin testshell)
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin for lang in ${TEST_LANG} ; do
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin (
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin export LC_ALL="${lang}" LANG="${lang}"
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin for i in ./src/cmd/ksh93/tests/*.sh ; do
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin ${SHELL} ./src/cmd/ksh93/tests/shtests -a \
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin LD_LIBRARY_PATH_64="$LD_LIBRARY_PATH_64" \
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin LD_LIBRARY_PATH="$LD_LIBRARY_PATH" \
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin LD_LIBRARY_PATH_32="$LD_LIBRARY_PATH_32" \
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin LC_ALL="${lang}" LANG="${lang}" \
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. Faulkner VMALLOC_OPTIONS=abort \
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin SHCOMP=$PWD/arch/*/bin/shcomp \
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin "$i"
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin done
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin )
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin done
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin test_builtin_getconf
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin ;;
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin esac
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin}
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin# main
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chincase "${buildmode}" in
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin build.*) build_shell ;;
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin testshell*) test_shell ;;
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin *) fatal_error "Illegal build mode \"${buildmode}\"." ;;
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chinesac
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin# EOF.