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