aboutsummaryrefslogtreecommitdiffstats
path: root/shells/zsh/Makefile
blob: 5db772edf778a2e93cdaf99c424489bb4cec89ca (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
# Created by: torstenb
# $FreeBSD$

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

MAINTAINER= bapt@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

USES=       iconv ncurses shebangfix tar:xz

SHEBANG_LANG=   zsh
zsh_OLD_CMD=    zsh # shebang appears as /bin/zsh and just zsh
SHEBANG_FILES=  Functions/Calendar/* \
        Functions/Misc/*

CONFIGURE_ARGS= --with-tcsetpgrp \
        --enable-function-subdirs \
        --enable-maildir-support \
        --enable-multibyte \
        --enable-zsh-secure-free \
        --sysconfdir=${PREFIX}/etc
CONFIGURE_ENV+= zsh_cv_sys_path_dev_fd=no

GNU_CONFIGURE=  yes
CPPFLAGS+=  -I${LOCALBASE}/include -DBOOL_DEFINED
LDFLAGS+=   -L${LOCALBASE}/lib -Wl,--as-needed
TEST_TARGET=    test

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

ETCDIR_DESC=    System-wide defaults in /etc (instead of $${PREFIX}/etc)
GDBM_DESC=  Enable GDBM support (GPL)
MEM_DESC=   Enable zsh-mem options

GDBM_LIB_DEPENDS=   libgdbm.so:databases/gdbm
PCRE_LIB_DEPENDS=   libpcre.so:devel/pcre

DEBUG_CONFIGURE_ENABLE= zsh-debug
ETCDIR_CONFIGURE_OFF=   --enable-etcdir=${PREFIX}/etc
GDBM_CONFIGURE_ENABLE=  gdbm
MEM_CONFIGURE_ENABLE=   zsh-mem
PCRE_CONFIGURE_ENABLE=  pcre

## Some modules can only be built as a shared library.
## If you enable STATIC, you may get strange errors if you, a script,
## or a plugin tries 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"

DOCS=       LICENCE META-FAQ README \
        Etc/BUGS Etc/CONTRIBUTORS Etc/FAQ Etc/completion-style-guide \
        Doc/zsh*.html Doc/zsh.dvi
DOCS_DISTFILES= ${DISTNAME}-doc${EXTRACT_SUFX}:doc

PORTDOCS=   *
PORTEXAMPLES=   zlogin zshenv zshrc

ZSH_VER=    ${PORTVERSION}
PLIST_SUB+= ZSH_VER="${ZSH_VER}"
SUB_FILES=  pkg-message

.include <bsd.port.pre.mk>

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

post-patch:
# FreeBSD's clock_gettime(2) is in libc, not librt; see PR 167857
    @${REINPLACE_CMD} -e '/LIBS/s|-lrt||' ${WRKSRC}/configure
    @${REINPLACE_CMD} -e "s|/etc/|${LOCALBASE}/etc/|" \
        ${WRKSRC}/Functions/MIME/zsh-mime-setup

post-patch-STATIC-on:
    @${REINPLACE_CMD} -e "s|link=dynamic|link=either|" \
        ${WRKSRC}/Src/Modules/*.mdd

post-build:
# Fix ".so" macro problem by using "soelim" command.
# soelim needs the manpages in man1/
    ${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>