Tweak lang/ocaml version 4.05.0_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.05.0
7 PORTREVISION=   1
8 CATEGORIES=     lang
9 MASTER_SITES=   http://caml.inria.fr/pub/distrib/${DISTNAME:R}/ GENTOO \
10                 http://caml.inria.fr/pub/distrib/${DISTNAME:R}/:docs
11 PKGNAMESUFFIX=  ${SFX}
12
13 MAINTAINER=     michipili@gmail.com
14 COMMENT=        Objective Caml compiler and programming environment
15
16 LICENSE=                QPL10 LGPL20
17 LICENSE_COMB=           multi
18 LICENSE_NAME_QPL10=     Q Public License, Version 1.0
19 LICENSE_FILE_QPL10=     ${WRKSRC}/LICENSE
20 LICENSE_PERMS_QPL10=    dist-mirror dist-sell pkg-mirror pkg-sell auto-accept
21
22 BROKEN_aarch64=         Does not build: sh: as: not found
23 BROKEN_sparc64= No rule to make target 'none.o', needed by 'libasmrun.a'
24 BROKEN_mips64=  No ASM support
25 BROKEN_mips=    No ASM support
26
27 USES=           cpe compiler:c11 gmake tar:xz
28 USE_LDCONFIG=   yes
29 CPE_VENDOR=     inria
30 HAS_CONFIGURE=  yes
31 ALL_TARGET=     world.opt
32 STRIP=
33 SSP_UNSAFE=     yes
34 MAKE_JOBS_UNSAFE=       yes
35 LDFLAGS_armv7=  -Wl,-znotext
36 LDFLAGS_i386=   -Wl,-znotext
37
38 CONFIGURE_ARGS= -verbose -prefix "${PREFIX}" \
39                 -cc "${CC}" \
40                 -aspp "${CC} -c" \
41                 -partialld "${LD} -r"
42
43 OPTIONS_DEFINE= X11 THREADS DOCS EXAMPLES
44 OPTIONS_DEFAULT=X11 THREADS
45 CMP_LIB_DESC=   Install compiler libraries
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 || ${ARCH} == armv7
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 USES+=          xorg
86 USE_XORG=       x11
87 CONFLICTS+=     ocaml-nox11-[0-9]*
88 CONFIGURE_ARGS+=-x11include ${LOCALBASE}/include -x11lib ${LOCALBASE}/lib
89 .else
90 PLIST_SUB+=     X11="@comment "
91 SFX=            -nox11
92 CONFLICTS+=     ocaml-[0-9]*
93 CONFIGURE_ARGS+=-no-graph
94 .endif
95
96 .include <bsd.port.pre.mk>
97
98 .if defined(NO_PROFILE) || ${ARCH:Mpowerpc} || ${ARCH:Mx86_64}
99 PLIST_SUB+=     PROF="@comment "
100 .else
101 PLIST_SUB+=     PROF=""
102 .endif
103
104 post-extract:
105 .if ${PORT_OPTIONS:MDOCS}
106         @if ! (cd ${WRKDIR} && \
107           ${TAR} xf ${_DISTDIR}${DOCSDISTNAME}-refman-html.tar.gz \
108         ) \
109         then \
110           exit 1; \
111         fi;
112 .endif
113
114 post-patch:
115         @${REINPLACE_CMD} \
116                 -e '\|MKLIB=|s|ar rc|${AR} rc|' \
117                 -e '\|RANLIB|s|ranlib|${RANLIB}|' \
118                 -e '\|bytecclinkopts=|s|""|"${LDFLAGS}"|' \
119                 -e "\|nativecclinkopts=|s|''|\"${LDFLAGS:C/-Wl,//}\"|" \
120                 ${WRKSRC}/configure
121         @${REINPLACE_CMD} -e 's,$$(ARCH),$$(SYSTEM_ARCH),' \
122                 ${WRKSRC}/Makefile ${WRKSRC}/Makefile.tools \
123                 ${WRKSRC}/asmrun/Makefile \
124                 ${WRKSRC}/otherlibs/systhreads/Makefile \
125                 ${WRKSRC}/testsuite/makefiles/Makefile.common \
126                 ${WRKSRC}/testsuite/tests/asmcomp/Makefile
127
128 post-configure:
129         @${REINPLACE_CMD} -E \
130                 -e '/^PTHREAD_LINK/s,-pthread,${THR_LD},g' \
131                 ${WRKSRC}/config/Makefile
132 # INSTALL* safeness (which preserves the correct permissions despite
133 # user's umask(1)
134         @${FIND} ${WRKDIR} -type f -name Makefile -print0 | \
135                 ${XARGS} -0 -n 5 -x ${REINPLACE_CMD} -E \
136                 -e 's,^(${PATTERN}+.*INSTALLDIR),\1\$${BSD_INSTALL_DATA} \4,' \
137                 -e 's,^(${PATTERN}+.*BINDIR),\1\$${BSD_INSTALL_PROGRAM} \4,' \
138                 -e 's,^(${PATTERN}+.*LIBDIR),\1\$${BSD_INSTALL_DATA} \4,' \
139                 -e 's,(${PATTERN}+.*(MANDIR|MANODIR|MANEXT)),\1\$${BSD_INSTALL_MAN} \4,'
140
141 check-test: do-install
142         @cd ${WRKSRC}/testsuite; ${RM} _log; for d in tests/* ; do \
143         ${SETENV} ${MAKE_ENV} ${MAKE_CMD} ${MAKE_ARGS} one DIR=$${d} \
144         2>&1 | tee -a _log || ${TRUE} ; done ; \
145         ${SETENV} ${MAKE_ENV} ${MAKE_CMD} ${MAKE_ARGS} report
146
147 post-install:
148 .if ${PORT_OPTIONS:MDOCS}
149         ${MKDIR} ${STAGEDIR}${DOCSDIR}
150         (cd ${WRKDIR} && ${COPYTREE_SHARE} htmlman ${STAGEDIR}${DOCSDIR})
151         ${INSTALL_DATA} ${_DISTDIR}${DOCSDISTNAME}-refman.ps.gz ${STAGEDIR}${DOCSDIR}
152         ${INSTALL_DATA} ${_DISTDIR}${DOCSDISTNAME}-refman.pdf ${STAGEDIR}${DOCSDIR}
153 .endif
154 # Spacetime profiling is only available for native code on 64-bit targets
155 .if ${ARCH} == armv7 || ${ARCH} == i386 || ${ARCH} == powerpc
156         @${REINPLACE_CMD} -e '/raw_spacetime_lib/d' ${TMPPLIST}
157 .endif
158
159 .include <bsd.port.post.mk>