1*b30d1939SAndy Fiddaman# 2*b30d1939SAndy Fiddaman# CDDL HEADER START 3*b30d1939SAndy Fiddaman# 4*b30d1939SAndy Fiddaman# The contents of this file are subject to the terms of the 5*b30d1939SAndy Fiddaman# Common Development and Distribution License (the "License"). 6*b30d1939SAndy Fiddaman# You may not use this file except in compliance with the License. 7*b30d1939SAndy Fiddaman# 8*b30d1939SAndy Fiddaman# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE 9*b30d1939SAndy Fiddaman# or http://www.opensolaris.org/os/licensing. 10*b30d1939SAndy Fiddaman# See the License for the specific language governing permissions 11*b30d1939SAndy Fiddaman# and limitations under the License. 12*b30d1939SAndy Fiddaman# 13*b30d1939SAndy Fiddaman# When distributing Covered Code, include this CDDL HEADER in each 14*b30d1939SAndy Fiddaman# file and include the License file at usr/src/OPENSOLARIS.LICENSE. 15*b30d1939SAndy Fiddaman# If applicable, add the following below this CDDL HEADER, with the 16*b30d1939SAndy Fiddaman# fields enclosed by brackets "[]" replaced with your own identifying 17*b30d1939SAndy Fiddaman# information: Portions Copyright [yyyy] [name of copyright owner] 18*b30d1939SAndy Fiddaman# 19*b30d1939SAndy Fiddaman# CDDL HEADER END 20*b30d1939SAndy Fiddaman# 21*b30d1939SAndy Fiddaman 22*b30d1939SAndy Fiddaman# 23*b30d1939SAndy Fiddaman# Copyright (c) 2007, 2010, Oracle and/or its affiliates. All rights reserved. 24*b30d1939SAndy Fiddaman# Copyright 2021 OmniOS Community Edition (OmniOSce) Association. 25*b30d1939SAndy Fiddaman# 26*b30d1939SAndy Fiddaman 27*b30d1939SAndy FiddamanC_AST = $(CONTRIB)/ast 28*b30d1939SAndy FiddamanC_ASTINIT = $(C_AST)/src/cmd/INIT 29*b30d1939SAndy Fiddaman 30*b30d1939SAndy FiddamanAST= $(SRC)/cmd/ast 31*b30d1939SAndy Fiddaman 32*b30d1939SAndy FiddamanAST_TOOLS = $(AST)/tools 33*b30d1939SAndy FiddamanAST_LCGEN = $(AST_TOOLS)/lcgen 34*b30d1939SAndy FiddamanAST_PROTO = $(AST_TOOLS)/proto -p -s -l $(C_AST)/lib/package/ast.lic \ 35*b30d1939SAndy Fiddaman -o '$(AST_LICENSE)' 36*b30d1939SAndy Fiddaman 37*b30d1939SAndy Fiddaman# Override this top level flag so the compiler builds in its native C99 mode. 38*b30d1939SAndy FiddamanCSTD= $(CSTD_GNU99) 39*b30d1939SAndy Fiddaman 40*b30d1939SAndy Fiddaman# 41*b30d1939SAndy Fiddaman# Shell feature flags. 42*b30d1939SAndy Fiddaman# * - the upstream build configuration can be viewed at 43*b30d1939SAndy Fiddaman# $(CONTRIB)/ast/src/cmd/ksh93/Makefile 44*b30d1939SAndy Fiddaman# 45*b30d1939SAndy Fiddaman 46*b30d1939SAndy Fiddaman# These options are enabled, and are also enabled by default in the upstream 47*b30d1939SAndy Fiddaman# build framework*: 48*b30d1939SAndy Fiddaman# 49*b30d1939SAndy Fiddaman# SHOPT_2DMATCH two dimensional .sh.match for ${var//pat/str} 50*b30d1939SAndy Fiddaman# SHOPT_BGX one SIGCHLD trap per completed job 51*b30d1939SAndy Fiddaman# SHOPT_BRACEPAT C-shell {...,...} expansions (, required) 52*b30d1939SAndy Fiddaman# SHOPT_DYNAMIC dynamic loading for builtins 53*b30d1939SAndy Fiddaman# SHOPT_ESH emacs/gmacs edit mode 54*b30d1939SAndy Fiddaman# SHOPT_FILESCAN fast file scan 55*b30d1939SAndy Fiddaman# SHOPT_FIXEDARRAY fixed dimension indexed array 56*b30d1939SAndy Fiddaman# SHOPT_HISTEXPAND csh-style history file expansions 57*b30d1939SAndy Fiddaman# SHOPT_KIA shell information database generation 58*b30d1939SAndy Fiddaman# SHOPT_MULTIBYTE multibyte character handling 59*b30d1939SAndy Fiddaman# SHOPT_NAMESPACE allow namespaces 60*b30d1939SAndy Fiddaman# SHOPT_OPTIMIZE optimize loop invariants 61*b30d1939SAndy Fiddaman# SHOPT_PFSH solaris exec_attr(4) profile execution 62*b30d1939SAndy Fiddaman# SHOPT_RAWONLY make viraw the only vi mode 63*b30d1939SAndy Fiddaman# SHOPT_STATS add .sh.stats variable 64*b30d1939SAndy Fiddaman# SHOPT_SUID_EXEC allow (safe) suid/sgid shell scripts 65*b30d1939SAndy Fiddaman# SHOPT_TYPEDEF enable typeset type definitions 66*b30d1939SAndy Fiddaman# SHOPT_VSH vi edit mode 67*b30d1939SAndy Fiddaman 68*b30d1939SAndy Fiddaman# These options are enabled but are not enabled by default in the upstream 69*b30d1939SAndy Fiddaman# build framework*: 70*b30d1939SAndy Fiddaman# 71*b30d1939SAndy Fiddaman# SHOPT_SYSRC attempt . /etc/ksh.kshrc if interactive 72*b30d1939SAndy Fiddaman 73*b30d1939SAndy Fiddaman# These options are NOT enabled but are enabled by default in the upstream 74*b30d1939SAndy Fiddaman# build framework*: 75*b30d1939SAndy Fiddaman# 76*b30d1939SAndy Fiddaman# SHOPT_AUDIT enable auditing per SHOPT_AUDITFILE 77*b30d1939SAndy Fiddaman# SHOPT_COSHELL build with connection to coshell 78*b30d1939SAndy Fiddaman# SHOPT_EDPREDICT predictive editing 79*b30d1939SAndy Fiddaman 80*b30d1939SAndy Fiddaman# These options are NOT enabled and are also NOT enabled in the upstream 81*b30d1939SAndy Fiddaman# build framework*: 82*b30d1939SAndy Fiddaman# 83*b30d1939SAndy Fiddaman# SHOPT_ACCT accounting 84*b30d1939SAndy Fiddaman# SHOPT_ACCTFILE per user accounting info 85*b30d1939SAndy Fiddaman# SHOPT_AUDITFILE "/etc/ksh_audit" auditing file 86*b30d1939SAndy Fiddaman# SHOPT_BASH bash compatibility code 87*b30d1939SAndy Fiddaman# SHOPT_CRNL accept <cr><nl> for <nl> 88*b30d1939SAndy Fiddaman# SHOPT_ECHOPRINT make echo equivalent to print 89*b30d1939SAndy Fiddaman# SHOPT_FS_3D 3d file system 90*b30d1939SAndy Fiddaman# SHOPT_OLDTERMIO support both TCGETA and TCGETS 91*b30d1939SAndy Fiddaman# SHOPT_P_SUID real uid's that require -p for set[ug]id 92*b30d1939SAndy Fiddaman# SHOPT_REGRESS enable __regress__ builtin 93*b30d1939SAndy Fiddaman# SHOPT_REMOTE enable --rc if running as a remote shell 94*b30d1939SAndy Fiddaman# SHOPT_SEVENBIT strip the eigth bit from characters 95*b30d1939SAndy Fiddaman# SHOPT_SPAWN use spawnveg for fork/exec 96*b30d1939SAndy Fiddaman# SHOPT_TIMEOUT number of seconds for shell timeout 97*b30d1939SAndy Fiddaman 98*b30d1939SAndy FiddamanLIBSHELLFEATUREFLAGS= \ 99*b30d1939SAndy Fiddaman -DSHOPT_2DMATCH \ 100*b30d1939SAndy Fiddaman -DSHOPT_BGX \ 101*b30d1939SAndy Fiddaman -DSHOPT_BRACEPAT \ 102*b30d1939SAndy Fiddaman -DSHOPT_DYNAMIC \ 103*b30d1939SAndy Fiddaman -DSHOPT_ESH \ 104*b30d1939SAndy Fiddaman -DSHOPT_FILESCAN \ 105*b30d1939SAndy Fiddaman -DSHOPT_FIXEDARRAY \ 106*b30d1939SAndy Fiddaman -DSHOPT_HISTEXPAND \ 107*b30d1939SAndy Fiddaman -DSHOPT_KIA \ 108*b30d1939SAndy Fiddaman -DSHOPT_MULTIBYTE \ 109*b30d1939SAndy Fiddaman -DSHOPT_NAMESPACE \ 110*b30d1939SAndy Fiddaman -DSHOPT_OPTIMIZE \ 111*b30d1939SAndy Fiddaman -DSHOPT_PFSH \ 112*b30d1939SAndy Fiddaman -DSHOPT_RAWONLY \ 113*b30d1939SAndy Fiddaman -DSHOPT_STATS \ 114*b30d1939SAndy Fiddaman -DSHOPT_SUID_EXEC \ 115*b30d1939SAndy Fiddaman -DSHOPT_SYSRC \ 116*b30d1939SAndy Fiddaman -DSHOPT_TYPEDEF \ 117*b30d1939SAndy Fiddaman -DSHOPT_VSH 118*b30d1939SAndy Fiddaman 119*b30d1939SAndy Fiddaman# 120*b30d1939SAndy Fiddaman# common CPP flags for libshell consumers (ksh, shcomp etc.) 121*b30d1939SAndy Fiddaman# 122*b30d1939SAndy Fiddaman 123*b30d1939SAndy FiddamanLIBSHELLCPPFLAGS= \ 124*b30d1939SAndy Fiddaman -I$(LIBSHELLBASE)/$(LIBSHELLMACH) \ 125*b30d1939SAndy Fiddaman -I$(ASTSRC)/include \ 126*b30d1939SAndy Fiddaman -I$(ROOT)/usr/include/ast \ 127*b30d1939SAndy Fiddaman -I$(ROOT)/usr/include \ 128*b30d1939SAndy Fiddaman \ 129*b30d1939SAndy Fiddaman -DSHOPT_CMDLIB_BLTIN=0 \ 130*b30d1939SAndy Fiddaman '-DSH_CMDLIB_DIR="/usr/ast/bin"' \ 131*b30d1939SAndy Fiddaman '-DSHOPT_CMDLIB_HDR="../common/illumos_cmdlist.h"' \ 132*b30d1939SAndy Fiddaman \ 133*b30d1939SAndy Fiddaman $(LIBSHELLFEATUREFLAGS) \ 134*b30d1939SAndy Fiddaman \ 135*b30d1939SAndy Fiddaman -DKSHELL \ 136*b30d1939SAndy Fiddaman -D_BLD_shell \ 137*b30d1939SAndy Fiddaman -D_PACKAGE_ast \ 138*b30d1939SAndy Fiddaman -D_API_ast=20100309 \ 139*b30d1939SAndy Fiddaman '-DERROR_CATALOG="libshell"' \ 140*b30d1939SAndy Fiddaman -DERROR_CONTEXT_T=Error_context_t \ 141*b30d1939SAndy Fiddaman '-DUSAGE_LICENSE=\ 142*b30d1939SAndy Fiddaman "[-author?David Korn <dgk@research.att.com>]" \ 143*b30d1939SAndy Fiddaman "[-copyright?Copyright (c) 1982-2012 AT&T Intellectual Property]" \ 144*b30d1939SAndy Fiddaman "[-license?http://www.eclipse.org/org/documents/epl-v10.html]" \ 145*b30d1939SAndy Fiddaman "[--catalog?libshell]"' 146*b30d1939SAndy Fiddaman 147*b30d1939SAndy Fiddaman# Default CFLAGS/CFLAGS64 for AST sources 148*b30d1939SAndy FiddamanASTCFLAGS= $(CCVERBOSE) 149*b30d1939SAndy FiddamanASTCFLAGS64= $(CCVERBOSE) 150*b30d1939SAndy Fiddaman 151*b30d1939SAndy Fiddaman# Generated header files generated using this system have a number of 152*b30d1939SAndy Fiddaman# artifacts that are cleaned up by the following action. 153*b30d1939SAndy Fiddaman# 154*b30d1939SAndy Fiddaman# They include a 'generated by' header which includes the full path to 155*b30d1939SAndy Fiddaman# the source file. The path to the root of the gate is removed, leaving only 156*b30d1939SAndy Fiddaman# the relative part of the path. 157*b30d1939SAndy Fiddaman# 158*b30d1939SAndy Fiddaman# They have trailing whitespace, which is removed. 159*b30d1939SAndy Fiddaman 160*b30d1939SAndy FiddamanPOST_PROCESS_AST = $(SED) -i ' \ 161*b30d1939SAndy Fiddaman s^$(SRC)/^^g; \ 162*b30d1939SAndy Fiddaman s/ *$$//; \ 163*b30d1939SAndy Fiddaman /def.* _def_.*_$(MACH64)/s/$(MACH64)/$(HDRGUARD)/; \ 164*b30d1939SAndy Fiddaman /def.* _def_.*_$(MACH)/s/$(MACH)/$(HDRGUARD)/; \ 165*b30d1939SAndy Fiddaman ' 166