Tweak lang/ocaml version 4.02.1
[dports.git] / lang / ocaml / Makefile
1 # Created by: Kiriyama Kazuhiko <kiri@kiri.toba-cmt.ac.jp>
2 # $FreeBSD$
3 # for committer: bump PORTREVISION for math/facile whenever ocaml gets updated
4
5 PORTNAME=       ocaml
6 PORTVERSION=    4.02.1
7 CATEGORIES=     lang
8 MASTER_SITES=   http://caml.inria.fr/pub/distrib/${DISTNAME:R}/ GENTOO \
9                 http://caml.inria.fr/pub/distrib/${DISTNAME:R}/:docs
10 PKGNAMESUFFIX=  ${SFX}
11
12 MAINTAINER=     michipili@gmail.com
13 COMMENT=        Objective Caml compiler and programming environment
14
15 LICENSE=                QPL10 LGPL20
16 LICENSE_COMB=           multi
17 LICENSE_NAME_QPL10=     Q Public License, Version 1.0
18 LICENSE_FILE_QPL10=     ${WRKSRC}/LICENSE
19 LICENSE_PERMS_QPL10=    dist-mirror dist-sell pkg-mirror pkg-sell auto-accept
20
21 BROKEN_sparc64= ocamlc.opt seg-faults, please try to fix
22 BROKEN_mips64=  No ASM support
23 BROKEN_mips=    No ASM support
24
25 USES=           cpe gmake tar:xz
26 CPE_VENDOR=     inria
27 REINPLACE_ARGS= -i ""
28 HAS_CONFIGURE=  yes
29 ALL_TARGET=     world.opt
30 STRIP=
31 SSP_UNSAFE=     yes
32 MAKE_JOBS_UNSAFE=       yes
33
34 MAKE_ENV+=      STAGEDIR="${STAGEDIR}"
35 CONFIGURE_ARGS= -verbose -prefix "${PREFIX}" \
36                 -cc "${CC} ${CFLAGS}" \
37                 -as "${AS} ${ASFLAGS}" \
38                 -aspp "${CC} -c" \
39                 -partialld "${LD} -r"
40
41 OPTIONS_DEFINE= X11 THREADS DOCS EXAMPLES
42 OPTIONS_DEFAULT=X11 THREADS
43 CMP_LIB_DESC=   Install compiler libraries
44 PORTDOCS=       htmlman ${DOCSDISTNAME}-refman.ps.gz \
45                 ${DOCSDISTNAME}-refman.pdf
46
47 MODOPT=         camlp4o camlp4r ocamlc ocamldep ocamldoc ocamllex ocamlopt
48 PATTERN=        [[:space:]]*(do|then)?[[:space:]]*)(\$$\(CP\)|cp)([[:space:]]
49 DOCSDISTNAME=   ${DISTNAME:C/([[:digit:]]+)\.([[:digit:]]+)\.([[:digit:]]+)/\1.\2/}
50
51 CONFLICTS=      metaocaml-[0-9]*
52
53 .include <bsd.port.options.mk>
54
55 .if ${PORT_OPTIONS:MDOCS}
56 DISTFILES:=     ${DISTNAME}${EXTRACT_SUFX} \
57                 ${DOCSDISTNAME}-refman-html.tar.gz:docs \
58                 ${DOCSDISTNAME}-refman.ps.gz:docs \
59                 ${DOCSDISTNAME}-refman.pdf:docs
60 EXTRACT_ONLY:=  ${DISTNAME}${EXTRACT_SUFX} \
61                 ${DOCSDISTNAME}-refman-html.tar.gz
62 PLIST_SUB+=     DOC=""
63 PORTDOCS=       htmlman ${DOCSDISTNAME}-refman.ps.gz ${DOCSDISTNAME}-refman.pdf
64 .else
65 PLIST_SUB+=     DOC="@comment "
66 .endif
67
68 .if ${ARCH} == armv6
69 CONFIGURE_ARGS+= -as "${AS} ${ASFLAGS} -meabi=5"
70 .else
71 CONFIGURE_ARGS+= -as "${AS} ${ASFLAGS}"
72 .endif
73
74 .if ${PORT_OPTIONS:MTHREADS}
75 PLIST_SUB+=     THREADS=""
76 THR_LD=         -lpthread
77 .else
78 PLIST_SUB+=     THREADS="@comment "
79 THR_LD=         #empty
80 CONFIGURE_ARGS+=-no-pthread
81 .endif
82
83 .if ${PORT_OPTIONS:MX11}
84 PLIST_SUB+=     X11=""
85 USE_XORG=       x11
86 CONFLICTS+=     ocaml-nox11-[0-9]*
87 CONFIGURE_ARGS+=-x11include ${LOCALBASE}/include -x11lib ${LOCALBASE}/lib
88 .else
89 PLIST_SUB+=     X11="@comment "
90 SFX=            -nox11
91 CONFLICTS+=     ocaml-[0-9]*
92 CONFIGURE_ARGS+=-no-graph
93 .endif
94
95 .include <bsd.port.pre.mk>
96 .include "${FILESDIR}/manfiles"
97
98 OCAML_ARCH= ${ARCH:S/x86_64/amd64/:S/powerpc/power/:S/armv6/arm/}
99
100 .if defined(NO_PROFILE) || ${OCAML_ARCH:Mpower} || ${OCAML_ARCH:Mamd64} \
101         || ${OCAML_ARCH:Marm}
102 PLIST_SUB+=     PROF="@comment "
103 .else
104 PLIST_SUB+=     PROF=""
105 .endif
106
107 post-extract:
108 .if ${PORT_OPTIONS:MDOCS}
109         @if ! (cd ${WRKDIR} && \
110           ${TAR} xf ${_DISTDIR}${DOCSDISTNAME}-refman-html.tar.gz \
111         ) \
112         then \
113           exit 1; \
114         fi;
115 .endif
116
117 post-patch:
118         @${REINPLACE_CMD} \
119                 -e '\|MKLIB=|s|ar rc|${AR} rc|' \
120                 -e '\|RANLIB|s|ranlib|${RANLIB}|' \
121                 -e '\|bytecclinkopts=|s|""|"${LDFLAGS}"|' \
122                 -e "\|nativecclinkopts=|s|''|\"${LDFLAGS:C/-Wl,//}\"|" \
123                 -e '\|mksharedlib=|s|$$bytecc|& $$bytecclinkopts|' \
124                 -e 's|-lbfd -ldl|-lbfd $$dllib|' \
125                 ${WRKSRC}/configure
126 # don't hardcode gcc for depend target
127
128 post-configure:
129 # CFLAGS safeness
130         @${REINPLACE_CMD} -E \
131                 -e 's|(BYTECCCOMPOPTS[ \t]*=.*)|\1 ${CFLAGS}|' \
132                 -e 's|(NATIVECCCOMPOPTS[ \t]*=.*)|\1 ${CFLAGS}|' \
133                 -e '/^PTHREAD_LINK/s,-pthread,${THR_LD},g' \
134                 ${WRKSRC}/config/Makefile
135
136 # INSTALL* safeness (which preserves the correct permissions despite
137 # user's umask(1)
138         @${FIND} ${WRKDIR} -type f -name Makefile -print0 | \
139                 ${XARGS} -0 -n 5 -x ${REINPLACE_CMD} -E \
140                 -e 's,\$$\(ARCH\),${OCAML_ARCH},g'      \
141                 -e 's,^(${PATTERN}+.*INSTALLDIR),\1\$${BSD_INSTALL_DATA} \4,' \
142                 -e 's,^(${PATTERN}+.*BINDIR),\1\$${BSD_INSTALL_PROGRAM} \4,' \
143                 -e 's,^(${PATTERN}+.*LIBDIR),\1\$${BSD_INSTALL_DATA} \4,' \
144                 -e 's,(${PATTERN}+.*(MANDIR|MANODIR|MANEXT)),\1\$${BSD_INSTALL_MAN} \4,'
145
146 check-test: do-install
147         @cd ${WRKSRC}/testsuite; ${RM} -f _log; for d in tests/* ; do \
148         ${SETENV} ${MAKE_ENV} ${MAKE_CMD} ${MAKE_ARGS} one DIR=$${d} \
149         2>&1 | tee -a _log || ${TRUE} ; done ; \
150         ${SETENV} ${MAKE_ENV} ${MAKE_CMD} ${MAKE_ARGS} report
151
152 post-install:
153 .if ${PORT_OPTIONS:MDOCS}
154         ${MKDIR} ${STAGEDIR}${DOCSDIR}
155         (cd ${WRKDIR} && ${COPYTREE_SHARE} htmlman ${STAGEDIR}${DOCSDIR})
156         ${INSTALL_DATA} ${_DISTDIR}${DOCSDISTNAME}-refman.ps.gz ${STAGEDIR}${DOCSDIR}
157         ${INSTALL_DATA} ${_DISTDIR}${DOCSDISTNAME}-refman.pdf ${STAGEDIR}${DOCSDIR}
158 .endif
159
160 # Fix permissions for ld.conf
161         @${CHMOD} 644 ${STAGEDIR}${PREFIX}/lib/ocaml/ld.conf
162
163 .include <bsd.port.post.mk>