freebsd-ports/lang/julia10/Makefile

188 lines
5.5 KiB
Makefile

# Created by: Iblis Lin <iblis@hs.ntnu.edu.tw>
# $FreeBSD$
PORTNAME= julia
PORTVERSION= 1.0.4
DISTVERSIONSUFFIX= -full
PORTREVISION= 5
CATEGORIES= lang math
MASTER_SITES= https://github.com/JuliaLang/julia/releases/download/v${PORTVERSION}/
PKGNAMESUFFIX= 10
MAINTAINER= iblis@hs.ntnu.edu.tw
COMMENT= Julia Language: A fresh approach to technical computing
LICENSE= MIT
LICENSE_FILE= ${WRKSRC}/LICENSE.md
ONLY_FOR_ARCHS= amd64 i386
LIB_DEPENDS= libcurl.so:ftp/curl \
libgit2.so:devel/libgit2 \
libgmp.so:math/gmp \
libmbedtls.so:security/mbedtls \
libmpfr.so:math/mpfr \
libpcre2-8.so:devel/pcre2 \
libssh2.so:security/libssh2 \
libutf8proc.so:textproc/utf8proc
EXTRACT_DEPENDS=gmake:devel/gmake
BUILD_DEPENDS= patchelf:sysutils/patchelf \
pcre2-config:devel/pcre2 \
cmake:devel/cmake
USES= gmake compiler:c++11-lib fortran python:2.7,build perl5 \
shebangfix
USE_LDCONFIG= yes
DESCR= ${.CURDIR}/../julia/pkg-descr
SHEBANG_GLOB= *.sh
WRKSRC= ${WRKDIR}/julia-${PORTVERSION}
INSTALLDIR= julia/${PORTNAME}${PKGNAMESUFFIX}
MANDIRS+= ${PREFIX}/${INSTALLDIR}/man
ALL_TARGET= default
INSTALL_TARGET= install
TEST_TARGET= test
PLIST_SUB= VERSION="${PORTVERSION:R}" \
JULIA="${INSTALLDIR}"
CXXFLAGS+= -stdlib=libc++ -std=c++11
MAKE_ARGS+= prefix=${PREFIX}/${INSTALLDIR} \
JCXXFLAGS="${CXXFLAGS}" \
FORCE_ASSERTIONS=${FORCE_ASSERTIONS} \
USE_GPL_LIBS=${USE_GPL_LIBS} \
USE_SYSTEM_CURL=1 \
USE_SYSTEM_GMP=1 \
USE_SYSTEM_LAPACK=1 \
USE_SYSTEM_LIBGIT2=1 \
USE_SYSTEM_LIBSSH2=1 \
USE_SYSTEM_LIBUV=0 \
USE_SYSTEM_MBEDTLS=1 \
USE_SYSTEM_MPFR=1 \
USE_SYSTEM_PATCHELF=1 \
USE_SYSTEM_PCRE=1 \
USE_SYSTEM_UTF8PROC=1 \
NO_GIT=1
OPTIONS_DEFINE= DEBUG DOCS GPL_LIBS DESKTOP NATIVE
OPTIONS_DEFAULT= OPENLIBM
OPTIONS_GROUP= PRIVATE
OPTIONS_GROUP_PRIVATE= OPENBLAS
OPTIONS_SINGLE= LIBM
OPTIONS_SINGLE_LIBM= SYSLIBM OPENLIBM
OPTIONS_SUB= yes
PRIVATE_DESC= Build self-shipped private depends
LIBM_DESC= Math library implementation
DEBUG_VARS= FORCE_ASSERTIONS=1 \
ALL_TARGET=all
DEBUG_MAKE_ARGS= BUNDLE_DEBUG_LIBS=1
DOCSDIR= ${PREFIX}/share/doc/${PORTNAME}${PKGNAMESUFFIX}
PORTDOCS= html
DOCS_VARS= INSTALL_TARGET+=install-docs
GPL_LIBS_DESC= Build with GPL lib: SUITESPARSE
GPL_LIBS_MAKE_ARGS= USE_SYSTEM_SUITESPARSE=0
GPL_LIBS_VARS= USE_GPL_LIBS=1
DESKTOP_DESC= Install icon, .desktop and appdata files
DESKTOP_USES= gnome
DESKTOP_VARS= INSTALL_TARGET+=install-desktop \
INSTALLS_ICONS=yes
SYSLIBM_DESC= Build with system libm
SYSLIBM_MAKE_ARGS= USE_SYSTEM_LIBM=1
OPENLIBM_DESC= Build with OpenLibm (math/openlibm)
OPENLIBM_MAKE_ARGS= USE_SYSTEM_OPENLIBM=1
OPENLIBM_LIB_DEPENDS= libopenlibm.so:math/openlibm
OPENBLAS_DESC= Private OpenBLAS v0.3.2\
(ports tree: v${:!${MAKE} -C ${PORTSDIR}/math/openblas -V PORTVERSION!})
OPENBLAS_MAKE_ARGS= USE_SYSTEM_BLAS=0 OPENBLAS_DYNAMIC_ARCH=1
OPENBLAS_MAKE_ARGS_OFF= USE_SYSTEM_BLAS=1
OPENBLAS_LIB_DEPENDS_OFF= libopenblas.so:math/openblas
.include <bsd.port.options.mk>
NATIVE_DESC= Build with native CPU JIT tuning
.if ${PORT_OPTIONS:MNATIVE}
MAKE_ARGS+= JULIA_CPU_TARGET=native
.else
.if ${ARCH} == "amd64"
MAKE_ARGS+= JULIA_CPU_TARGET=x86-64
.elif ${ARCH} == "i386"
MAKE_ARGS+= JULIA_CPU_TARGET=pentium4
.else
MAKE_ARGS+= JULIA_CPU_TARGET=generic
.endif
.endif # .if ${PORT_OPTIONS:MNATIVE}
# OPENBLAS plist
.if ${PORT_OPTIONS:MOPENBLAS}
.if ${ARCH} == "amd64"
PLIST_SUB+= OPENBLAS64="64_"
.else
PLIST_SUB+= OPENBLAS64=""
.endif
.endif # .if ${PORT_OPTIONS:MOPENBLAS}
.if ${ARCH} == "i386"
EXTRA_PATCHES+= ${PATCHDIR}/extra-patch-ui_Makefile
.endif
post-extract:
${MAKE_CMD} -C ${WRKSRC}/deps extract
${MAKE_CMD} -C ${WRKSRC}/stdlib install
post-patch:
echo "override TAGGED_RELEASE_BANNER=\"FreeBSD port lang/${PORTNAME}${PKGNAMESUFFIX} build\"" >> ${WRKSRC}/Make.user
# unset ARCH for auto-detection
# Julia build script uses the name x86_86/x86, which are different from ports framework
echo "ARCH=" >> ${WRKSRC}/Make.user
post-patch-OPENBLAS-on:
${CP} ${FILESDIR}/extra-patch-openblas-fix-arch.patch ${WRKSRC}/deps/patches/openblas-fix-arch.patch
post-patch-OPENBLAS-off:
echo "LIBBLAS= -lopenblas -L${LOCALBASE}/lib" >> ${WRKSRC}/Make.user
echo "LIBBLASNAME=libopenblas" >> ${WRKSRC}/Make.user
echo 'LIBLAPACK= $$(LIBBLAS)' >> ${WRKSRC}/Make.user
echo 'LIBLAPACKNAME= $$(LIBBLASNAME)' >> ${WRKSRC}/Make.user
post-configure-OPENBLAS-off:
${CC} ${CFLAGS} -lopenblas ${LDFLAGS} -o ${WRKSRC}/check_openblas \
${FILESDIR}/check_openblas.c
${WRKSRC}/check_openblas && ( \
echo "USE_BLAS64=1" >> ${WRKSRC}/Make.user \
) || ( \
echo "USE_BLAS64=0" >> ${WRKSRC}/Make.user \
)
post-install:
${RLN} ${STAGEDIR}${PREFIX}/${INSTALLDIR}/bin/julia ${STAGEDIR}${PREFIX}/bin/${PORTNAME}${PKGNAMESUFFIX}
${RLN} ${STAGEDIR}${PREFIX}/${INSTALLDIR}/man/man1/julia.1 ${STAGEDIR}${PREFIX}/man/man1/${PORTNAME}${PKGNAMESUFFIX}.1
# clean up for Pkg3.jl
.for file in .codecov.yml .travis.yml appveyor.yml bors.toml .gitignore source-extracted
${RM} ${STAGEDIR}${PREFIX}/${INSTALLDIR}/share/julia/stdlib/v${PORTVERSION:R}/Pkg/${file}
${RM} ${STAGEDIR}${PREFIX}/${INSTALLDIR}/share/julia/stdlib/v${PORTVERSION:R}/Pkg/ext/TOML/${file}
.endfor
post-install-DEBUG-on:
${RLN} ${STAGEDIR}${PREFIX}/${INSTALLDIR}/bin/julia-debug ${STAGEDIR}${PREFIX}/bin/${PORTNAME}${PKGNAMESUFFIX}-debug
post-install-DOCS-on:
${MV} ${STAGEDIR}${PREFIX}/${INSTALLDIR}/share/doc/julia ${STAGEDIR}${DOCSDIR}
${RMDIR} ${STAGEDIR}${PREFIX}/${INSTALLDIR}/share/doc
post-install-DOCS-off:
# remove empty dir
${RM} -r ${STAGEDIR}${PREFIX}/${INSTALLDIR}/share/doc
.include <bsd.port.mk>