aboutsummaryrefslogtreecommitdiffstats
path: root/shells/zsh/Makefile
blob: f0c8517d360e3424e5b182d15ee50f1ed06ce7ca (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
# Created by: torstenb
# $FreeBSD$

PORTNAME=   zsh
DISTVERSION=    5.2
PORTREVISION=   2
CATEGORIES= shells
MASTER_SITES=   http://www.zsh.org/pub/:doc \
        http://www.zsh.org/pub/ \
        SF \
        SF/${PORTNAME}/${PORTNAME}-doc/${PORTVERSION}:doc
DISTFILES=  ${DISTNAME}${EXTRACT_SUFX}

MAINTAINER= adamw@FreeBSD.org
COMMENT=    The Z shell

LICENSE=    ZSH
LICENSE_NAME=   ZSH license
LICENSE_FILE=   ${WRKSRC}/LICENCE
LICENSE_PERMS=  dist-mirror dist-sell pkg-mirror pkg-sell auto-accept

MAKE_JOBS_UNSAFE=   yes

EXTRA_PATCHES=  ${FILESDIR}/extra-patch-bsdtar
ZSH_VER=    ${PORTVERSION}
PLIST_SUB+= ZSH_VER="${ZSH_VER}"
SUB_FILES=  pkg-message

USES=       iconv ncurses shebangfix tar:xz

SHEBANG_LANG=   zsh
zsh_OLD_CMD=    /bin/zsh
zsh_CMD=    ${PREFIX}/bin/zsh
SHEBANG_FILES=  Functions/Calendar/calendar_add \
        Functions/Misc/checkmail \
        Functions/Misc/run-help \
        Functions/Misc/sticky-note \
        Functions/Misc/zcalc \
        Functions/Misc/zed \
        Functions/Misc/zkbd

GNU_CONFIGURE=  yes
TEST_TARGET=    test

CPPFLAGS+=  -I${LOCALBASE}/include -DBOOL_DEFINED
LDFLAGS+=   -L${LOCALBASE}/lib -Wl,--as-needed
CONFIGURE_ENV+= zsh_cv_sys_path_dev_fd=no
CONFIGURE_ARGS= --with-tcsetpgrp \
        --enable-function-subdirs \
        --enable-multibyte \
        --sysconfdir=${PREFIX}/etc

DOCS=       LICENCE META-FAQ README \
        Etc/BUGS Etc/CONTRIBUTORS Etc/FAQ Etc/completion-style-guide \
        Doc/zsh*.html Doc/zsh.dvi

PORTDOCS=   *
PORTEXAMPLES=   zlogin zshenv zshrc

## Vendor completions to be added into the port (none used now)
#EXTRA_COMPLETION_FILES=    _sockstat
#EXTRA_COMPLETION_DIR=  Completion/BSD/Command

OPTIONS_DEFINE= DEBUG ETCDIR GDBM MAILDIR MEM PCRE SECURE_FREE STATIC \
        DOCS EXAMPLES
OPTIONS_DEFAULT=SECURE_FREE MAILDIR
OPTIONS_SUB=    yes

DEBUG_CONFIGURE_ENABLE= zsh-debug

DOCS_DISTFILES= ${DISTNAME}-doc${EXTRACT_SUFX}:doc

GDBM_DESC=      Enable GDBM support (GPL)
GDBM_LIB_DEPENDS=   libgdbm.so:databases/gdbm
GDBM_CONFIGURE_ENABLE=  gdbm

ETCDIR_DESC=        System-wide defaults in /etc (instead of $${PREFIX}/etc)
ETCDIR_CONFIGURE_OFF=   --enable-etcdir=${PREFIX}/etc

MAILDIR_DESC=           Enable support for Maildirs in MAIL(PATH)
MAILDIR_CONFIGURE_ENABLE=   maildir-support

MEM_DESC=       Enable zsh-mem options
MEM_CONFIGURE_ENABLE=   zsh-mem

SECURE_FREE_DESC=       Enable zsh-secure-free
SECURE_FREE_CONFIGURE_ENABLE=   zsh-secure-free

PCRE_LIB_DEPENDS=   libpcre.so:devel/pcre
PCRE_CONFIGURE_ENABLE=  pcre

## Some modules can only be built dynamically (such as the regex module).
## If you enable STATIC, you may get strange errors if scripts/plugins
## try to use the regex module.
STATIC_LDFLAGS=     -static
STATIC_CONFIGURE_ON=    --disable-dynamic --with-term-lib="tinfow tinfo"
STATIC_CONFIGURE_OFF=   --enable-dynamic  --with-term-lib="ncursesw ncurses"

.include <bsd.port.pre.mk>

.if empty(ICONV_LIB)
CONFIGURE_ENV+= ac_cv_lib_iconv_libiconv=no
.endif

post-patch:
    @${REINPLACE_CMD} -i '' -e '1s|zsh|${zsh_CMD}|' ${WRKSRC}/Functions/Misc/run-help-ip
    @${REINPLACE_CMD} -e '/LIBS/s/-lrt//' ${WRKSRC}/configure
    @${SED} -i "" -e "s,link=dynamic,link=either," \
        ${WRKSRC}/Src/Modules/*.mdd
    @${SED} -i "" -e "s,/etc/,${LOCALBASE}/etc/," \
        ${WRKSRC}/Functions/MIME/zsh-mime-setup

# Adding vendor completions into the package
.ifdef EXTRA_COMPLETION_FILES
    @${ECHO} "===>  Installing extra completion files"
.for COMPFILE in ${EXTRA_COMPLETION_FILES}
    @(if [ -f ${WRKSRC}/${EXTRA_COMPLETION_DIR}/${COMPFILE} ] ; then \
        ${ECHO} "${EXTRA_COMPLETION_DIR}/${COMPFILE} already exists" ; \
        exit 1 ; \
    else \
        ${ECHO} ${EXTRA_COMPLETION_DIR}/${COMPFILE} ; \
        ${CP} ${FILESDIR}/${COMPFILE} \
            ${WRKSRC}/${EXTRA_COMPLETION_DIR}/${COMPFILE} ; \
    fi)
.endfor
.endif
    @${FIND} ${WRKSRC}/Completion -type f -iname '*.orig' -delete

post-build:
# Fix ".so" macro problem by using "soelim" command.
    ${LN} -sf ${WRKSRC}/Doc ${WRKSRC}/man1
    ${MV} ${WRKSRC}/Doc/zshall.1 ${WRKSRC}/Doc/zshall.1.source
    (cd ${WRKSRC} && ${SOELIM} -r ${WRKSRC}/Doc/zshall.1.source > \
        ${WRKSRC}/Doc/zshall.1)

post-install:
    ${LN} -f ${STAGEDIR}${PREFIX}/bin/zsh ${STAGEDIR}${PREFIX}/bin/rzsh
# Precompile completions and functions
    (${STAGEDIR}${PREFIX}/bin/zsh -fc ' \
        setopt extendedglob nomark_dirs; \
        cd ${STAGEDIR}/${DATADIR}/${ZSH_VER} ; \
        for i in functions/**/*(/) ; do \
            zcompile -U -M $$i.zwc $$i/*~*.zwc(^/) ; \
            ${CHMOD} 644 $$i.zwc ; \
        done')

post-install-EXAMPLES-on:
    @${MKDIR} ${STAGEDIR}${EXAMPLESDIR}
    (cd ${WRKSRC}/StartupFiles && ${INSTALL_DATA} ${PORTEXAMPLES} ${STAGEDIR}${EXAMPLESDIR})

post-install-DOCS-on:
    @${MKDIR} ${STAGEDIR}${DOCSDIR}
    (cd ${WRKSRC} && ${INSTALL_DATA} ${DOCS} ${STAGEDIR}${DOCSDIR})

.include <bsd.port.post.mk>