mirror of
https://git.FreeBSD.org/ports.git
synced 2024-11-19 00:13:33 +00:00
273 lines
9.6 KiB
Makefile
273 lines
9.6 KiB
Makefile
PORTNAME= julia
|
|
DISTVERSION= 1.10.3
|
|
PORTREVISION= 1
|
|
DISTVERSIONSUFFIX= -full
|
|
CATEGORIES= lang math
|
|
MASTER_SITES= https://github.com/JuliaLang/${PORTNAME}/releases/download/v${DISTVERSION}/
|
|
DOCS_MASTER_SITES= https://www.unicode.org/Public/$(UNICODE_DATA_VERSION)/ucd/:unicode \
|
|
https://jp.pkg.julialang.org/registry/${JPKGUUID}/:jpkg \
|
|
https://github.com/JuliaBinaryWrappers/Expat_jll.jl/releases/download/Expat-v2.6.2+0/:afexpat \
|
|
https://github.com/JuliaBinaryWrappers/Git_jll.jl/releases/download/Git-v2.44.0+2/:afgit \
|
|
https://github.com/JuliaBinaryWrappers/Libiconv_jll.jl/releases/download/Libiconv-v1.17.0+0/:aflibiconv \
|
|
https://github.com/JuliaBinaryWrappers/OpenSSL_jll.jl/releases/download/OpenSSL-v3.0.13+1/:afopenssl
|
|
|
|
DISTFILES= ${DISTNAME}${EXTRACT_SUFX}
|
|
DOCS_DISTFILES= UnicodeData.txt:unicode \
|
|
Expat.v2.6.2.x86_64-unknown-freebsd.tar.gz:afexpat \
|
|
Git.v2.44.0.x86_64-unknown-freebsd.tar.gz:afgit \
|
|
Libiconv.v1.17.0.x86_64-unknown-freebsd.tar.gz:aflibiconv \
|
|
OpenSSL.v3.0.13.x86_64-unknown-freebsd.tar.gz:afopenssl \
|
|
${JPKGSHA1}:jpkg
|
|
EXTRACT_ONLY= ${DISTNAME}${EXTRACT_SUFX}
|
|
|
|
MAINTAINER= ports@FreeBSD.org
|
|
COMMENT= Implementation of Julia, a language for technical computing
|
|
WWW= https://julialang.org/
|
|
|
|
LICENSE= MIT
|
|
LICENSE_FILE= ${WRKSRC}/LICENSE.md
|
|
|
|
ONLY_FOR_ARCHS= amd64
|
|
ONLY_FOR_ARCHS_REASON= Has not been ported to this platform for freebsd
|
|
|
|
MY_DEPENDS= 7zz:archivers/7-zip \
|
|
ca_root_nss>=0:security/ca_root_nss \
|
|
gfortran${_GCC_VER}:lang/gcc${_GCC_VER}
|
|
BUILD_DEPENDS= patchelf:sysutils/patchelf \
|
|
cmake:devel/cmake-core \
|
|
${MY_DEPENDS}
|
|
|
|
LIB_DEPENDS= libcurl.so:ftp/curl \
|
|
libdSFMT.so:math/dsfmt \
|
|
libgit2.so:devel/libgit2 \
|
|
libgmp.so:math/gmp \
|
|
libnghttp2.so:www/libnghttp2 \
|
|
libmbedtls.so:security/mbedtls \
|
|
libmpfr.so:math/mpfr \
|
|
libopenlibm.so:math/openlibm \
|
|
libpcre2-8.so:devel/pcre2 \
|
|
libssh2.so:security/libssh2 \
|
|
libsuitesparseconfig.so:math/suitesparse-config \
|
|
libutf8proc.so:textproc/utf8proc \
|
|
libunwind.so:devel/libunwind \
|
|
libzstd.so:archivers/zstd
|
|
RUN_DEPENDS= ${MY_DEPENDS}
|
|
|
|
BUILD_DEPENDS_amd64= ittapi>0:devel/ittapi
|
|
BUILD_DEPENDS_i386= ittapi>0:devel/ittapi
|
|
|
|
# Do not set USES=fortran to avoid extra-linkage
|
|
USES= blaslapack:openblas compiler:c++17-lang cpe elfctl gmake \
|
|
perl5 python shebangfix
|
|
_GCC_VER= ${GCC_DEFAULT:S/.//}
|
|
|
|
CPE_VENDOR= julialang
|
|
|
|
ELF_FEATURES= +wxneeded:usr/bin/julia
|
|
|
|
USE_LDCONFIG= yes
|
|
|
|
MAKE_ARGS+= JULIA_DEBUG=Documenter VERBOSE=1 NO_GIT=1 \
|
|
USE_BINARYBUILDER=0 \
|
|
prefix=${PREFIX} \
|
|
USE_GPL_LIBS=0 \
|
|
ARCH=x86_64 \
|
|
JULIA_CPU_TARGET=generic \
|
|
USE_SYSTEM_BLAS=1 \
|
|
USE_SYSTEM_CSL=1 \
|
|
USE_SYSTEM_CURL=1 \
|
|
USE_SYSTEM_DSFMT=1 \
|
|
USE_SYSTEM_GMP=1 \
|
|
USE_SYSTEM_OPENLIBM=1 \
|
|
USE_SYSTEM_LAPACK=1 \
|
|
USE_SYSTEM_LIBGIT2=1 \
|
|
USE_SYSTEM_LIBSSH2=1 \
|
|
USE_SYSTEM_LIBUNWIND=1 \
|
|
USE_SYSTEM_LLD=1 \
|
|
USE_SYSTEM_MBEDTLS=1 \
|
|
USE_SYSTEM_MPFR=1 \
|
|
USE_SYSTEM_NGHTTP2=1 \
|
|
USE_SYSTEM_P7ZIP=1 \
|
|
USE_SYSTEM_PATCHELF=1 \
|
|
USE_SYSTEM_PCRE=1 \
|
|
USE_SYSTEM_UTF8PROC=1 \
|
|
USE_SYSTEM_ZLIB=0 \
|
|
CC=${CC} \
|
|
CXX=${CXX}
|
|
ALL_TARGET= default
|
|
INSTALL_TARGET= install
|
|
TEST_TARGET= test
|
|
|
|
CFLAGS+= -fpic
|
|
|
|
BINARY_ALIAS= python3=${PYTHON_CMD} gfortran=gfortran${_GCC_VER}
|
|
|
|
WRKSRC= ${WRKDIR}/julia-${DISTVERSION}
|
|
|
|
PLIST_SUB= VERSION="${PORTVERSION}" \
|
|
MINOR="${PORTVERSION:R}"
|
|
PORTDOCS= html
|
|
|
|
OPTIONS_DEFINE= DEBUG DOCS NATIVE
|
|
OPTIONS_DEFAULT= DOCS
|
|
OPTIONS_SUB= yes
|
|
|
|
NATIVE_DESC= Build with native CPU JIT tuning
|
|
NATIVE_MAKE_ARGS= JULIA_CPU_TARGET=native
|
|
|
|
DEBUG_VARS= ALL_TARGET=all
|
|
DEBUG_MAKE_ARGS= FORCE_ASSERTIONS=1 \
|
|
BUNDLE_DEBUG_LIBS=1
|
|
|
|
DOCS_MAKE_ENV+= JULIA_PKG_OFFLINE="true"
|
|
DOCS_VARS= ALL_TARGET+=docs \
|
|
INSTALL_TARGET+=install-docs
|
|
|
|
LATE_SHEBANG_GLOB= compile.jl generator.jl
|
|
|
|
.include <bsd.port.pre.mk>
|
|
|
|
.if ${ARCH} == amd64 || ${ARCH} == i386
|
|
MAKE_ARGS+= USE_SYSTEM_ITTAPI=1
|
|
.endif
|
|
|
|
.if ${PORT_OPTIONS:MDOCS}
|
|
USE_GITHUB= nodefault
|
|
UNICODE_DATA_VERSION= 13.0.0
|
|
GH_TUPLE= JuliaDocs:Documenter.jl:v1.4.1:documenter \
|
|
JuliaDocs:ANSIColoredPrinters.jl:v0.0.1:ansicoloredprinters \
|
|
JuliaCollections:AbstractTrees.jl:6f9cd4ad60dc579f7a3271950d4846610c2f340d:abstracttrees \
|
|
JuliaIO:CodecZlib.jl:v0.7.4:codeczlib \
|
|
JuliaDocs:DocStringExtensions.jl:v0.9.3:docstringextensions \
|
|
JuliaDocs:DocumenterInventoryWritingBackport.jl:v0.1.0:documenterinventorywritingbackport \
|
|
JuliaBinaryWrappers:Expat_jll.jl:Expat-v2.6.2+0:expatjll \
|
|
JuliaVersionControl:Git.jl:v1.3.1:git \
|
|
JuliaBinaryWrappers:Git_jll.jl:Git-v2.44.0+2:gitjll \
|
|
JuliaDocs:IOCapture.jl:v0.2.4:iocapture \
|
|
JuliaPackaging:JLLWrappers.jl:v1.5.0:jllwrappers \
|
|
JuliaIO:JSON.jl:v0.21.4:json \
|
|
KristofferC:LazilyInitializedFields.jl:3b6cc53c8780ebbe3ee209b8a8e6b8844ce284f2:lazilyinitializedfields \
|
|
JuliaBinaryWrappers:Libiconv_jll.jl:Libiconv-v1.17.0+0:libiconvjll \
|
|
JuliaDocs:MarkdownAST.jl:v0.1.2:markdownast \
|
|
JuliaBinaryWrappers:OpenSSL_jll.jl:OpenSSL-v3.0.13+1:openssljll \
|
|
JuliaData:Parsers.jl:v2.8.1:parsers \
|
|
JuliaLang:PrecompileTools.jl:v1.2.1:precompiletools \
|
|
JuliaPackaging:Preferences.jl:v1.4.3:preferences \
|
|
GunnarFarneback:RegistryInstances.jl:2796d959014475bc19e2dfa174179cdf02642d28:registryinstances \
|
|
JuliaIO:TranscodingStreams.jl:v0.10.8:transcodingstreams
|
|
DOCPKGDIR_documenter= Documenter
|
|
DOCPKGDIR_abstracttrees= AbstractTrees
|
|
DOCPKGDIR_ansicoloredprinters= ANSIColoredPrinters
|
|
DOCPKGDIR_codeczlib= CodecZlib
|
|
DOCPKGDIR_docstringextensions= DocStringExtensions
|
|
DOCPKGDIR_documenterinventorywritingbackport= DocumenterInventoryWritingBackport
|
|
DOCPKGDIR_expatjll= Expat_jll
|
|
DOCPKGDIR_git= Git
|
|
DOCPKGDIR_gitjll= Git_jll
|
|
DOCPKGDIR_iocapture= IOCapture
|
|
DOCPKGDIR_jllwrappers= JLLWrappers
|
|
DOCPKGDIR_json= JSON
|
|
DOCPKGDIR_lazilyinitializedfields= LazilyInitializedFields
|
|
DOCPKGDIR_libiconvjll= Libiconv_jll
|
|
DOCPKGDIR_markdownast= MarkdownAST
|
|
DOCPKGDIR_openssljll= OpenSSL_jll
|
|
DOCPKGDIR_parsers= Parsers
|
|
DOCPKGDIR_precompiletools= PrecompileTools
|
|
DOCPKGDIR_preferences= Preferences
|
|
DOCPKGDIR_registryinstances= RegistryInstances
|
|
DOCPKGDIR_transcodingstreams= TranscodingStreams
|
|
JPKGUUID= 23338594-aafe-5451-b93e-139f81909106
|
|
JPKGSHA1= 151ade91c9c8fcadd03fda2a9df961a173dae33d
|
|
ADIR_afexpat= f6cac9c7c81901bdea8226624199290c849eb8fd
|
|
ADIR_afgit= 9d10e86e65fcea93f0a73ac9ab7efbc9507ef246
|
|
ADIR_aflibiconv= 7f55b73b331bc9ab70cbd95a194c89feb3650f16
|
|
ADIR_afopenssl= f87ab68c6b682f7ab08df0745d5e38edb8e5bded
|
|
DARC_afexpat= Expat.v2.6.2.x86_64-unknown-freebsd.tar.gz
|
|
DARC_afgit= Git.v2.44.0.x86_64-unknown-freebsd.tar.gz
|
|
DARC_aflibiconv= Libiconv.v1.17.0.x86_64-unknown-freebsd.tar.gz
|
|
DARC_afopenssl= OpenSSL.v3.0.13.x86_64-unknown-freebsd.tar.gz
|
|
.endif
|
|
|
|
post-extract:
|
|
@${MKDIR} ${WRKSRC}/deps/srccache
|
|
${CP} ${FILESDIR}/llvm-patch-backport-version-fixes \
|
|
${WRKSRC}/deps/patches/llvm-version-fixes.patch
|
|
|
|
post-extract-DOCS-on:
|
|
@${MKDIR} ${WRKSRC}/doc/deps/registries
|
|
${CP} ${DISTDIR}/UnicodeData.txt \
|
|
${WRKSRC}/deps/srccache/UnicodeData-${UNICODE_DATA_VERSION}.txt
|
|
.for pkg in documenter ansicoloredprinters abstracttrees codeczlib \
|
|
docstringextensions documenterinventorywritingbackport expatjll \
|
|
git gitjll iocapture jllwrappers json lazilyinitializedfields \
|
|
libiconvjll markdownast openssljll parsers precompiletools \
|
|
preferences registryinstances transcodingstreams
|
|
@${MKDIR} ${WRKSRC}/doc/deps/packages/${DOCPKGDIR_${pkg}}
|
|
${TAR} -C ${WRKSRC}/doc/deps/packages/${DOCPKGDIR_${pkg}} \
|
|
--strip-components 1 \
|
|
-xf ${DISTDIR}/${DISTFILE_${pkg}}
|
|
.endfor
|
|
.for af in afexpat afgit aflibiconv afopenssl
|
|
@${MKDIR} ${WRKSRC}/doc/deps/artifacts/${ADIR_${af}}
|
|
${TAR} -C ${WRKSRC}/doc/deps/artifacts/${ADIR_${af}} \
|
|
-xf ${DISTDIR}/${DARC_${af}}
|
|
.endfor
|
|
${CP} ${DISTDIR}/${JPKGSHA1} \
|
|
${WRKSRC}/doc/deps/registries/General.tar.gz
|
|
${CAT} ${FILESDIR}/General.toml.in | \
|
|
${SED} 's/%%UUID%%/${JPKGUUID}/' | \
|
|
${SED} 's/%%SHA1%%/${JPKGSHA1}/' \
|
|
> ${WRKSRC}/doc/deps/registries/General.toml
|
|
|
|
pre-configure:
|
|
echo "override TAGGED_RELEASE_BANNER=\"FreeBSD port lang/${PORTNAME} 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
|
|
echo "LIBBLAS= -L${LOCALBASE}/lib -lopenblas" >> ${WRKSRC}/Make.user
|
|
echo "LIBBLASNAME=libopenblas" >> ${WRKSRC}/Make.user
|
|
echo 'LIBLAPACK= $$(LIBBLAS)' >> ${WRKSRC}/Make.user
|
|
echo 'LIBLAPACKNAME= $$(LIBBLASNAME)' >> ${WRKSRC}/Make.user
|
|
${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 \
|
|
)
|
|
|
|
pre-install:
|
|
${MAKE} SHEBANG_GLOB="${LATE_SHEBANG_GLOB}" fix-shebang
|
|
${CP} ${WRKSRC}/deps/srccache/cacert-2023-01-10.pem ${WRKSRC}/usr/share/julia/cert.pem
|
|
|
|
pre-install-DEBUG-on:
|
|
@(cd ${INSTALL_WRKSRC} && ${SETENVI} ${WRK_ENV} ${MAKE_ENV} ${FAKEROOT} \
|
|
${MAKE_CMD} ${MAKE_FLAGS} ${MAKEFILE} ${MAKE_ARGS} \
|
|
MAKECMDGOALS=debug install)
|
|
|
|
pre-install-DOCS-on:
|
|
${MKDIR} ${STAGEDIR}${DOCSDIR}
|
|
|
|
post-install:
|
|
.for file in .codecov.yml .travis.yml appveyor.yml bors.toml .gitignore source-extracted *.orig
|
|
${FIND} ${STAGEDIR}${DATADIR} -name "${file}" -delete
|
|
.endfor
|
|
.for dir in .ci .devcontainer .github
|
|
${FIND} ${STAGEDIR}${DATADIR} -name "${dir}" -type d -exec ${RM} -fr {} +
|
|
.endfor
|
|
${RM} ${STAGEDIR}${DATADIR}/base.cache
|
|
|
|
${STRIP_CMD} ${STAGEDIR}${PREFIX}/bin/julia
|
|
${STRIP_CMD} ${STAGEDIR}${PREFIX}/lib/libjulia.so*
|
|
.for bin in libccalltest.so libllvmcalltest.so libjulia-internal.so* libblastrampoline.so libuv.so* libz.so* libLLVM* sys.so libjulia-codegen.so*
|
|
${STRIP_CMD} ${STAGEDIR}${PREFIX}/lib/julia/${bin}
|
|
.endfor
|
|
.for bin in lld dsymutil
|
|
${STRIP_CMD} ${STAGEDIR}${PREFIX}/libexec/julia/${bin}
|
|
.endfor
|
|
|
|
@${MV} ${STAGEDIR}${ETCDIR}/startup.jl \
|
|
${STAGEDIR}${ETCDIR}/startup.jl.sample
|
|
|
|
.include <bsd.port.post.mk>
|