Edit

IABSD.fr/ports/lang/crystal/Makefile

Branch :

  • Show log

    Commit

  • Author : jcs
    Date : 2026-06-22 17:51:30
    Hash : 79c37f75
    Message : update to crystal-1.20.1 and shards-0.20.0 switch to llvm 22 use kqueue backend since libevent backend hangs while compiling remove myself as maintainer

  • lang/crystal/Makefile
  • # Hopefully ${CLANG_ARCHS} at some point.
    ONLY_FOR_ARCHS=	amd64
    
    USE_NOBTCFI =	Yes
    
    V =		1.20.1
    V_SHARDS =	0.20.0
    V_MOLINILLO =	0.2.2
    
    DIST_TUPLE =	github crystal-lang crystal ${V} . \
    		github crystal-lang shards v${V_SHARDS} shards-${V_SHARDS} \
    		github crystal-lang crystal-molinillo v${V_MOLINILLO} shards-${V_SHARDS}/lib/molinillo
    
    COMMENT =	statically typed object oriented language
    DISTNAME =	crystal-${V}
    CATEGORIES =	lang
    
    HOMEPAGE =	https://crystal-lang.org/
    
    # Apache 2.0
    PERMIT_PACKAGE = Yes
    
    WANTLIB +=	${COMPILER_LIBCXX} c gc
    WANTLIB +=	iconv m pcre2-8 yaml-0 llvm${MODCLANG_VERSION}/lib/LLVM
    
    #
    # crystal-X-OpenBSDX.X.tar.gz is an archive of a bootstrap compiler object
    # (crystal.o) which can be cross-compiled on another platform by installing the
    # current version of Crystal there, then checking out the source for that
    # version, applying patches included in this port, and running:
    #
    # 	make crystal FLAGS="--cross-compile --target amd64-unknown-openbsd7.9"
    #
    # The result will be built at .build/crystal.o
    #
    
    SITES =		https://jcs.org/distfiles/
    DISTFILES =	crystal-${V}-OpenBSD7.9.tar.gz
    
    # Build requires llvm-config from ports, not from base.  When changing
    # MODCLANG_VERSION, keep paths in patches/ in sync here and in bootstrap
    # environment.
    MODULES =	lang/clang
    MODCLANG_VERSION = 22
    MODCLANG_RUNDEP= yes
    COMPILER =	ports-clang
    LLVM_CONFIG =	llvm-config-${MODCLANG_VERSION}
    
    LIB_DEPENDS =	converters/libiconv \
    		devel/boehm-gc \
    		devel/pcre2 \
    		devel/libyaml \
    		${MODCLANG_LIB_DEPENDS}
    
    USE_GMAKE =	Yes
    ALL_TARGET =	crystal release=1
    TEST_TARGET =	smoke_test
    SUBST_VARS =	MODCLANG_VERSION
    
    do-build:
    	mkdir -p ${WRKSRC}/.build
    	# Link the compiler from the pre-built bootstrap object
    	cd ${WRKSRC} && CXX=${CXX} LLVM_CONFIG=${LLVM_CONFIG} \
    		${MAKE_PROGRAM} llvm_ext
    	cd ${WRKSRC} && ${CXX} -rdynamic -o ${WRKBUILD}/.build/crystal \
    		${WRKSRC}/../crystal.o \
    		${WRKSRC}/src/llvm/ext/llvm_ext.o \
    		`(${LLVM_CONFIG} --libs --system-libs --ldflags 2> /dev/null)` \
    		-L${LOCALBASE}/lib -liconv -lpcre2-8 -lgc -lyaml -Wl,-z,nobtcfi
    	cd ${WRKSRC}/shards-${V_SHARDS} && \
    		env LD_LIBRARY_PATH=${LOCALBASE}/llvm${MODCLANG_VERSION}/lib \
    		CRYSTAL_PATH=lib:${WRKSRC}/src:${WRKSRC}/crystal-molinillo-${V_MOLINILLO}/src \
    		CRYSTAL=${WRKSRC}/.build/crystal \
    		${MAKE_PROGRAM}
    
    do-install:
    	${INSTALL_DATA_DIR} ${PREFIX}/lib/crystal
    	${INSTALL_PROGRAM} ${WRKSRC}/.build/crystal ${PREFIX}/libexec/crystal
    	cd ${WRKSRC}/src && pax -rw . ${PREFIX}/lib/crystal/
    	${INSTALL_PROGRAM} ${WRKSRC}/shards-${V_SHARDS}/bin/shards \
    		${PREFIX}/bin
    	${SUBST_PROGRAM} ${FILESDIR}/crystal ${PREFIX}/bin/crystal
    	@chmod ${BINMODE} ${PREFIX}/bin/crystal
    
    do-test:
    	# this will break if WRKSRC is a symlink
    	cd ${WRKSRC}; \
    		ulimit -s 5120 -d 6291456 && \
    		CRYSTAL_PATH="lib:${WRKSRC}/src" \
    		${MAKE_PROGRAM} ${TEST_TARGET}
    
    .include <bsd.port.mk>