gkoehler 1da5f67e93 Use llvm-config from ports, not from base
Base has /usr/bin/llvm-config after the switch to LLVM 10, so crystal
would run the wrong llvm-config and fail to build (with a linker
error).  The bootstrap crystal.o needs LLVM 8.  Using llvm-config from
ports works for now, because ports devel/llvm is still LLVM 8.

ok sthen@
2020-08-03 20:36:28 +00:00

82 lines
2.5 KiB
Makefile

# $OpenBSD: Makefile,v 1.9 2020/08/03 20:36:28 gkoehler Exp $
# Hopefully ${CLANG_ARCHS} at some point.
ONLY_FOR_ARCHS= amd64
V = 0.30.1
V_SHARDS = 0.9.0
COMMENT = statically typed object oriented language
DISTNAME = crystal-${V}
CATEGORIES = lang
HOMEPAGE = https://crystal-lang.org/
MAINTAINER = Wesley Moxam <wes@wmoxam.com>
# Apache 2.0
PERMIT_PACKAGE = Yes
WANTLIB += ${COMPILER_LIBCXX} c event_core event_extra gc iconv
WANTLIB += m pcre yaml
# Requires a bootstrap compiler object (crystal.o) which can be built by:
# .build/crystal build --cross-compile \
# --target amd64-unknown-openbsd`uname -r` src/compiler/crystal.cr \
# -D i_know_what_im_doing
MASTER_SITES = https://github.com/crystal-lang/crystal/archive/
MASTER_SITES0 = https://wmoxam.com/public/
MASTER_SITES1 = https://github.com/crystal-lang/shards/archive/
DISTFILES = crystal-${V}{${V}}.tar.gz \
crystal-${V}-OpenBSD6.5.tar.gz:0 \
shards-${V}{v${V_SHARDS}}.tar.gz:1
# Build requires llvm-config from ports, not from base
COMPILER = ports-clang
LLVM_CONFIG = ${LOCALBASE}/bin/llvm-config
BUILD_DEPENDS = devel/llvm
RUN_DEPENDS = devel/llvm,-main
LIB_DEPENDS = converters/libiconv \
devel/boehm-gc \
devel/libevent2 \
devel/pcre \
devel/libyaml
USE_GMAKE = Yes
ALL_TARGET = crystal release=1
NO_TEST = Yes
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 libcrystal
cd ${WRKSRC} && ${CXX} -rdynamic -o ${WRKBUILD}/.build/crystal \
${WRKSRC}/../crystal.o \
${WRKSRC}/src/llvm/ext/llvm_ext.o \
${WRKSRC}/src/ext/sigfault.o \
-L${LOCALBASE}/lib \
`(${LLVM_CONFIG} --libs --system-libs --ldflags 2> /dev/null)` \
-lz -lpcre -lgc -lpthread -levent_core -levent_extra -lssl \
-lcrypto -liconv
# Use the compiler to re-compile the compiler
touch ${WRKSRC}/src/compiler/crystal.cr
cd ${WRKSRC}; \
ulimit -s 5120 -d 4096000 && \
CRYSTAL_CONFIG_PATH="lib:${TRUEPREFIX}/lib/crystal" \
CXX=${CXX} LLVM_CONFIG=${LLVM_CONFIG} \
${MAKE_PROGRAM} ${ALL_TARGET}
cd ${WRKSRC}/../shards-${V_SHARDS} && \
${MAKE_PROGRAM} CRYSTAL=${WRKSRC}/.build/crystal \
CRYSTAL_PATH=${WRKSRC}/src CRFLAGS=--release
do-install:
${INSTALL_DATA_DIR} ${PREFIX}/lib/crystal
${INSTALL_PROGRAM} ${WRKSRC}/.build/crystal ${PREFIX}/bin
cd ${WRKSRC}/src && pax -rw . ${PREFIX}/lib/crystal/
${INSTALL_PROGRAM} ${WRKSRC}/../shards-${V_SHARDS}/bin/shards \
${PREFIX}/bin
.include <bsd.port.mk>