aboutsummaryrefslogtreecommitdiff
path: root/lang/julia11/Makefile
diff options
context:
space:
mode:
Diffstat (limited to 'lang/julia11/Makefile')
-rw-r--r--lang/julia11/Makefile184
1 files changed, 184 insertions, 0 deletions
diff --git a/lang/julia11/Makefile b/lang/julia11/Makefile
new file mode 100644
index 000000000000..f01af9e04e69
--- /dev/null
+++ b/lang/julia11/Makefile
@@ -0,0 +1,184 @@
+# Created by: Iblis Lin <iblis@hs.ntnu.edu.tw>
+# $FreeBSD$
+
+PORTNAME= julia
+PORTVERSION= 1.1.0
+DISTVERSIONSUFFIX= -full
+CATEGORIES= lang math
+MASTER_SITES= https://github.com/JuliaLang/julia/releases/download/v${PORTVERSION}/
+PKGNAMESUFFIX= 11
+
+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
+
+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_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.3\
+ (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= libopenblasp.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:
+ ${GMAKE} -C ${WRKSRC}/deps extract
+ ${GMAKE} -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= -lopenblasp -L${LOCALBASE}/lib" >> ${WRKSRC}/Make.user
+ echo "LIBBLASNAME=libopenblasp" >> ${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>