2016-07-25 23:05:25 +02:00
|
|
|
# $MirOS: src/bin/mksh/Makefile,v 1.150 2016/07/25 21:05:19 tg Exp $
|
2009-05-16 18:59:42 +02:00
|
|
|
#-
|
2012-03-28 00:36:53 +02:00
|
|
|
# Copyright (c) 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010,
|
2016-01-21 19:24:45 +01:00
|
|
|
# 2011, 2012, 2013, 2014, 2015, 2016
|
2015-10-05 19:59:00 +02:00
|
|
|
# mirabilos <m@mirbsd.org>
|
2009-05-16 18:59:42 +02:00
|
|
|
#
|
|
|
|
# Provided that these terms and disclaimer and all copyright notices
|
|
|
|
# are retained or reproduced in an accompanying document, permission
|
|
|
|
# is granted to deal in this work without restriction, including un-
|
|
|
|
# limited rights to use, publicly perform, distribute, sell, modify,
|
|
|
|
# merge, give away, or sublicence.
|
|
|
|
#
|
|
|
|
# This work is provided "AS IS" and WITHOUT WARRANTY of any kind, to
|
|
|
|
# the utmost extent permitted by applicable law, neither express nor
|
|
|
|
# implied; without malicious intent or gross negligence. In no event
|
|
|
|
# may a licensor, author or contributor be held liable for indirect,
|
|
|
|
# direct, other damage, loss, or other issues arising in any way out
|
|
|
|
# of dealing in the work, even if advised of the possibility of such
|
|
|
|
# damage or existence of a defect, except proven that it results out
|
|
|
|
# of said person's immediate fault when using the work as intended.
|
2012-10-21 19:16:45 +02:00
|
|
|
|
|
|
|
.ifmake d
|
|
|
|
__CRAZY= Yes
|
|
|
|
MKC_DEBG= cpp
|
|
|
|
DEBUGFILE= Yes
|
|
|
|
NOMAN= Yes
|
|
|
|
.endif
|
2007-02-18 17:24:13 +01:00
|
|
|
|
|
|
|
.include <bsd.own.mk>
|
2005-05-23 05:06:10 +02:00
|
|
|
|
2015-04-12 01:28:21 +02:00
|
|
|
SRCDIR= ${.CURDIR}
|
|
|
|
|
2005-05-23 05:06:10 +02:00
|
|
|
PROG= mksh
|
2009-03-22 17:55:38 +01:00
|
|
|
SRCS= edit.c eval.c exec.c expr.c funcs.c histrap.c jobs.c \
|
|
|
|
lalloc.c lex.c main.c misc.c shf.c syn.c tree.c var.c
|
2007-01-18 02:24:46 +01:00
|
|
|
.if !make(test-build)
|
2011-12-08 23:19:16 +01:00
|
|
|
CPPFLAGS+= -DMKSH_ASSUME_UTF8 -DMKSH_DISABLE_DEPRECATED \
|
2009-12-12 23:27:10 +01:00
|
|
|
-DHAVE_ATTRIBUTE_BOUNDED=1 -DHAVE_ATTRIBUTE_FORMAT=1 \
|
2014-01-05 22:57:29 +01:00
|
|
|
-DHAVE_ATTRIBUTE_NORETURN=1 -DHAVE_ATTRIBUTE_PURE=1 \
|
|
|
|
-DHAVE_ATTRIBUTE_UNUSED=1 -DHAVE_ATTRIBUTE_USED=1 \
|
|
|
|
-DHAVE_SYS_TIME_H=1 -DHAVE_TIME_H=1 -DHAVE_BOTH_TIME_H=1 \
|
|
|
|
-DHAVE_SYS_BSDTYPES_H=0 -DHAVE_SYS_FILE_H=1 \
|
2014-06-09 15:25:53 +02:00
|
|
|
-DHAVE_SYS_MKDEV_H=0 -DHAVE_SYS_MMAN_H=1 -DHAVE_SYS_PARAM_H=1 \
|
|
|
|
-DHAVE_SYS_RESOURCE_H=1 -DHAVE_SYS_SELECT_H=1 \
|
|
|
|
-DHAVE_SYS_SYSMACROS_H=0 -DHAVE_BSTRING_H=0 -DHAVE_GRP_H=1 \
|
2015-07-09 22:52:43 +02:00
|
|
|
-DHAVE_IO_H=0 -DHAVE_LIBGEN_H=1 -DHAVE_LIBUTIL_H=0 \
|
|
|
|
-DHAVE_PATHS_H=1 -DHAVE_STDINT_H=1 -DHAVE_STRINGS_H=1 \
|
|
|
|
-DHAVE_TERMIOS_H=1 -DHAVE_ULIMIT_H=0 -DHAVE_VALUES_H=0 \
|
|
|
|
-DHAVE_CAN_INTTYPES=1 -DHAVE_CAN_UCBINTS=1 \
|
|
|
|
-DHAVE_CAN_INT8TYPE=1 -DHAVE_CAN_UCBINT8=1 -DHAVE_RLIM_T=1 \
|
|
|
|
-DHAVE_SIG_T=1 -DHAVE_SYS_ERRLIST=1 -DHAVE_SYS_SIGNAME=1 \
|
|
|
|
-DHAVE_SYS_SIGLIST=1 -DHAVE_FLOCK=1 -DHAVE_LOCK_FCNTL=1 \
|
|
|
|
-DHAVE_GETRUSAGE=1 -DHAVE_GETSID=1 -DHAVE_GETTIMEOFDAY=1 \
|
2015-10-05 19:59:00 +02:00
|
|
|
-DHAVE_KILLPG=1 -DHAVE_MEMMOVE=1 -DHAVE_MKNOD=0 -DHAVE_MMAP=1 \
|
|
|
|
-DHAVE_NICE=1 -DHAVE_REVOKE=1 -DHAVE_SETLOCALE_CTYPE=0 \
|
|
|
|
-DHAVE_LANGINFO_CODESET=0 -DHAVE_SELECT=1 -DHAVE_SETRESUGID=1 \
|
|
|
|
-DHAVE_SETGROUPS=1 -DHAVE_STRERROR=0 -DHAVE_STRSIGNAL=0 \
|
|
|
|
-DHAVE_STRLCPY=1 -DHAVE_FLOCK_DECL=1 -DHAVE_REVOKE_DECL=1 \
|
2012-12-18 00:46:33 +01:00
|
|
|
-DHAVE_SYS_ERRLIST_DECL=1 -DHAVE_SYS_SIGLIST_DECL=1 \
|
2016-07-25 23:05:25 +02:00
|
|
|
-DHAVE_PERSISTENT_HISTORY=1 -DMKSH_BUILD_R=529
|
2012-03-27 23:23:52 +02:00
|
|
|
CPPFLAGS+= -D${${PROG:L}_tf:C/(Mir${MAN:E}{0,1}){2}/4/:S/x/mksh_BUILD/:U}
|
2013-11-17 23:21:18 +01:00
|
|
|
CPPFLAGS+= -I.
|
2014-02-09 23:49:29 +01:00
|
|
|
COPTS+= -std=c89 -Wall
|
2007-01-18 02:24:46 +01:00
|
|
|
.endif
|
2005-05-23 05:06:10 +02:00
|
|
|
|
2009-07-30 21:11:12 +02:00
|
|
|
USE_PRINTF_BUILTIN?= 0
|
|
|
|
.if ${USE_PRINTF_BUILTIN} == 1
|
|
|
|
.PATH: ${BSDSRCDIR}/usr.bin/printf
|
|
|
|
SRCS+= printf.c
|
|
|
|
CPPFLAGS+= -DMKSH_PRINTF_BUILTIN
|
|
|
|
.endif
|
|
|
|
|
2012-03-23 20:38:12 +01:00
|
|
|
DEBUGFILE?= No
|
|
|
|
.if ${DEBUGFILE:L} == "yes"
|
|
|
|
CPPFLAGS+= -DDF=mksh_debugtofile
|
|
|
|
.endif
|
|
|
|
|
• more comment and int→bool cleanup, add and improve some comments
• in interactive mode, always look up {LC_{ALL,CTYPE},LANG} environment
variables if setlocale/nl_langinfo(CODESET) doesn’t suffice
• add the ability to call any builtin (some don't make sense or wouldn't
work) directly by analysing argv[0]
• for direct builtin calls, the {LC_{ALL,CTYPE},LANG} environment
variables determine utf8-mode, even if MKSH_ASSUME_UTF8 was set
• when called as builtin, echo behaves POSIXish
• add domainname as alias for true on MirBSD only, to be able to link it
• sync mksh Makefiles with Build.sh output
• adjust manpage wrt release plans
• link some things to mksh now that we have callable builtins:
bin/echo bin/kill bin/pwd bin/sleep (exact matches)
bin/test bin/[ (were scripts before)
bin/domainname=usr/bin/true usr/bin/false (move to /bin/ now)
• drop linked utilities and, except for echo and kill, their manpages
• adjust instbin and link a few more there as well
2011-02-11 02:18:23 +01:00
|
|
|
MANLINKS= [ false pwd sh sleep test true
|
|
|
|
BINLINKS= ${MANLINKS} echo domainname kill
|
|
|
|
.for _i in ${BINLINKS}
|
|
|
|
LINKS+= ${BINDIR}/${PROG} ${BINDIR}/${_i}
|
|
|
|
.endfor
|
|
|
|
.for _i in ${MANLINKS}
|
|
|
|
MLINKS+= ${PROG}.1 ${_i}.1
|
|
|
|
.endfor
|
2006-07-23 21:10:59 +02:00
|
|
|
|
2015-04-12 01:28:21 +02:00
|
|
|
OPTGENS!= cd ${SRCDIR:Q} && echo *.opt
|
2013-11-17 23:21:18 +01:00
|
|
|
.for _i in ${OPTGENS}
|
|
|
|
GENERATED+= ${_i:R}.gen
|
2015-04-12 01:28:21 +02:00
|
|
|
${_i:R}.gen: ${_i} ${SRCDIR}/Build.sh
|
|
|
|
/bin/sh ${SRCDIR:Q}/Build.sh -G ${SRCDIR:Q}/${_i:Q}
|
2013-11-17 23:21:18 +01:00
|
|
|
.endfor
|
|
|
|
CLEANFILES+= ${GENERATED}
|
|
|
|
|
|
|
|
${PROG} beforedepend: ${GENERATED}
|
|
|
|
|
2005-05-23 05:06:10 +02:00
|
|
|
regress: ${PROG} check.pl check.t
|
2007-01-12 02:11:03 +01:00
|
|
|
-rm -rf regress-dir
|
2006-05-08 14:18:49 +02:00
|
|
|
mkdir -p regress-dir
|
|
|
|
echo export FNORD=666 >regress-dir/.mkshrc
|
2015-04-12 01:28:21 +02:00
|
|
|
HOME=$$(realpath regress-dir) perl ${SRCDIR}/check.pl \
|
|
|
|
-s ${SRCDIR}/check.t -v -p ./${PROG} \
|
2013-04-26 21:40:09 +02:00
|
|
|
-C shell:legacy-no,int:32,fastbox
|
2006-05-08 14:18:49 +02:00
|
|
|
|
2016-07-25 23:05:25 +02:00
|
|
|
TEST_BUILD_ENV:= TARGET_OS= CPP=
|
|
|
|
TEST_BUILD_ENV+= HAVE_STRING_POOLING=0
|
|
|
|
|
2007-01-18 02:24:46 +01:00
|
|
|
test-build: .PHONY
|
|
|
|
-rm -rf build-dir
|
|
|
|
mkdir -p build-dir
|
2011-10-07 21:51:17 +02:00
|
|
|
.if ${USE_PRINTF_BUILTIN} == 1
|
|
|
|
cp ${BSDSRCDIR}/usr.bin/printf/printf.c build-dir/
|
|
|
|
.endif
|
2007-01-18 02:24:46 +01:00
|
|
|
cd build-dir; env CC=${CC:Q} CFLAGS=${CFLAGS:M*:Q} \
|
|
|
|
CPPFLAGS=${CPPFLAGS:M*:Q} LDFLAGS=${LDFLAGS:M*:Q} \
|
2016-07-25 23:05:25 +02:00
|
|
|
LIBS= NOWARN=-Wno-error ${TEST_BUILD_ENV} /bin/sh \
|
2015-04-12 01:28:21 +02:00
|
|
|
${SRCDIR}/Build.sh -Q -r ${_TBF} && ./test.sh -v -f
|
2012-07-01 17:54:36 +02:00
|
|
|
|
2013-04-27 20:22:47 +02:00
|
|
|
CLEANFILES+= lksh.cat1
|
2012-07-01 17:54:36 +02:00
|
|
|
test-build-lksh: .PHONY
|
2015-04-12 01:28:21 +02:00
|
|
|
cd ${SRCDIR} && exec ${MAKE} lksh.cat1 test-build _TBF=-L
|
2006-05-08 14:18:49 +02:00
|
|
|
|
2013-04-27 20:50:25 +02:00
|
|
|
bothmans: .PHONY
|
2015-04-12 01:28:21 +02:00
|
|
|
cd ${SRCDIR} && exec ${MAKE} MAN='lksh.1 mksh.1' __MANALL
|
2013-04-27 20:50:25 +02:00
|
|
|
|
2007-01-18 02:24:46 +01:00
|
|
|
cleandir: clean-extra
|
|
|
|
|
|
|
|
clean-extra: .PHONY
|
2009-07-30 21:18:06 +02:00
|
|
|
-rm -rf build-dir regress-dir printf.o printf.ln
|
2005-05-23 05:06:10 +02:00
|
|
|
|
2012-03-27 23:23:52 +02:00
|
|
|
mksh_tf=xMakefile${OStype:S/${MACHINE_OS}/1/1g}${OSNAME}
|
2007-04-16 20:54:37 +02:00
|
|
|
distribution:
|
2009-08-27 18:52:12 +02:00
|
|
|
sed 's!\$$I''d\([:$$]\)!$$M''irSecuCron\1!g' \
|
2015-04-12 01:28:21 +02:00
|
|
|
${SRCDIR}/dot.mkshrc >${DESTDIR}/etc/skel/.mkshrc
|
2009-08-27 18:52:12 +02:00
|
|
|
chown ${BINOWN}:${CONFGRP} ${DESTDIR}/etc/skel/.mkshrc
|
|
|
|
chmod 0644 ${DESTDIR}/etc/skel/.mkshrc
|
2007-04-16 20:54:37 +02:00
|
|
|
|
2005-05-23 05:06:10 +02:00
|
|
|
.include <bsd.prog.mk>
|
2012-10-14 16:51:08 +02:00
|
|
|
|
2012-11-26 17:39:43 +01:00
|
|
|
.ifmake cats
|
|
|
|
V_GROFF!= pkg_info -e 'groff-*'
|
|
|
|
V_GHOSTSCRIPT!= pkg_info -e 'ghostscript-*'
|
|
|
|
. if empty(V_GROFF) || empty(V_GHOSTSCRIPT)
|
|
|
|
. error empty V_GROFF=${V_GROFF} or V_GHOSTSCRIPT=${V_GHOSTSCRIPT}
|
|
|
|
. endif
|
|
|
|
.endif
|
|
|
|
|
2012-10-14 18:22:49 +02:00
|
|
|
CLEANFILES+= ${MANALL:S/.cat/.ps/} ${MAN:S/$/.pdf/} ${MANALL:S/$/.gz/}
|
|
|
|
CLEANFILES+= ${MAN:S/$/.htm/} ${MAN:S/$/.htm.gz/}
|
2012-10-14 16:51:08 +02:00
|
|
|
CLEANFILES+= ${MAN:S/$/.txt/} ${MAN:S/$/.txt.gz/}
|
2012-11-26 17:39:43 +01:00
|
|
|
CATS_KW= mksh, ksh, sh
|
|
|
|
CATS_TITLE_mksh_1=mksh - The MirBSD Korn Shell
|
2012-10-14 16:51:08 +02:00
|
|
|
cats: ${MANALL} ${MANALL:S/.cat/.ps/}
|
2013-04-27 20:50:25 +02:00
|
|
|
.if "${MANALL:Nlksh.cat1:Nmksh.cat1}" != ""
|
2012-10-14 16:51:08 +02:00
|
|
|
. error Adjust here.
|
|
|
|
.endif
|
2012-11-26 17:39:43 +01:00
|
|
|
.for _m _n in mksh 1
|
2015-04-12 01:28:21 +02:00
|
|
|
x=$$(ident ${SRCDIR:Q}/${_m}.${_n} | \
|
2015-09-05 21:19:12 +02:00
|
|
|
awk '/Mir''OS:/ { print $$4$$5; }' | \
|
2012-10-14 16:51:08 +02:00
|
|
|
tr -dc 0-9); (( $${#x} == 14 )) || exit 1; exec \
|
2016-03-04 00:51:31 +01:00
|
|
|
${MKSH} ${BSDSRCDIR:Q}/contrib/hosted/tg/ps2pdfmir -p pa4 -c \
|
2012-11-26 17:39:43 +01:00
|
|
|
-o ${_m}.${_n}.pdf '[' /Author '(The MirOS Project)' \
|
|
|
|
/Title '('${CATS_TITLE_${_m}_${_n}:Q}')' \
|
2012-10-14 16:51:08 +02:00
|
|
|
/Subject '(BSD Reference Manual)' /ModDate "(D:$$x)" \
|
2012-11-26 17:39:43 +01:00
|
|
|
/Creator '(GNU groff version ${V_GROFF:S/groff-//} \(MirPorts\))' \
|
|
|
|
/Producer '(Artifex Ghostscript ${V_GHOSTSCRIPT:S/ghostscript-//:S/-artifex//} \(MirPorts\))' \
|
|
|
|
/Keywords '('${CATS_KW:Q}')' /DOCINFO pdfmark \
|
|
|
|
-f ${_m}.ps${_n}
|
|
|
|
.endfor
|
2012-10-14 16:51:08 +02:00
|
|
|
set -e; . ${BSDSRCDIR:Q}/scripts/roff2htm; set_target_absolute; \
|
|
|
|
for m in ${MANALL}; do \
|
|
|
|
bn=$${m%.*}; ext=$${m##*.cat}; \
|
|
|
|
[[ $$bn != $$m ]]; [[ $$ext != $$m ]]; \
|
2012-10-14 18:22:49 +02:00
|
|
|
gzip -n9 <"$$m" >"$$m.gz"; \
|
2012-10-14 16:51:08 +02:00
|
|
|
col -bx <"$$m" >"$$bn.$$ext.txt"; \
|
|
|
|
rm -f "$$bn.$$ext.txt.gz"; gzip -n9 "$$bn.$$ext.txt"; \
|
|
|
|
do_conversion_verbose "$$bn" "$$ext" "$$m" "$$bn.$$ext.htm"; \
|
2012-10-14 18:22:49 +02:00
|
|
|
rm -f "$$bn.$$ext.htm.gz"; gzip -n9 "$$bn.$$ext.htm"; \
|
2012-10-14 16:51:08 +02:00
|
|
|
done
|
2012-10-21 19:16:45 +02:00
|
|
|
|
|
|
|
.ifmake d
|
|
|
|
. ifmake obj || depend || all || install || regress || test-build
|
|
|
|
d:
|
|
|
|
. else
|
|
|
|
d: all
|
|
|
|
. endif
|
|
|
|
.endif
|
|
|
|
|
|
|
|
dr:
|
2015-04-12 01:28:21 +02:00
|
|
|
p=$$(realpath ${PROG:Q}) && cd ${SRCDIR:Q} && exec ${MKSH} \
|
2012-10-21 19:16:45 +02:00
|
|
|
${BSDSRCDIR:Q}/contrib/hosted/tg/sdmksh "$$p"
|
2016-07-25 02:04:48 +02:00
|
|
|
|
|
|
|
repool:
|
|
|
|
cd ${.CURDIR:Q} && \
|
|
|
|
exec ${MKSH} ${BSDSRCDIR:Q}/scripts/stringpool.sh sh.h
|