diff --git a/trunk/82bf2c727ba1d3c461fa360aaae176608eb9349b.patch b/trunk/82bf2c727ba1d3c461fa360aaae176608eb9349b.patch new file mode 100644 index 0000000..4f02001 --- /dev/null +++ b/trunk/82bf2c727ba1d3c461fa360aaae176608eb9349b.patch @@ -0,0 +1,56 @@ +From 82bf2c727ba1d3c461fa360aaae176608eb9349b Mon Sep 17 00:00:00 2001 +From: Raymond Toy +Date: Sat, 25 Aug 2018 16:51:35 -0700 +Subject: [PATCH] Add support for compiling with clang on x86/linux + +Add `Config.x86_linux_clang` to use clang instead of gcc to build +cmucl. update `create-target.sh` so that it sets the motif variant +correctly when using `Config.x86_linux_clang` + +See issue #68. + +With this config, Fedora 28 successfully builds cmucl and passes all +the tests. +--- + bin/create-target.sh | 2 +- + src/lisp/Config.x86_linux_clang | 15 +++++++++++++++ + 2 files changed, 16 insertions(+), 1 deletion(-) + create mode 100644 src/lisp/Config.x86_linux_clang + +diff --git a/bin/create-target.sh b/bin/create-target.sh +index 400a2e52b..c1b763056 100755 +--- a/bin/create-target.sh ++++ b/bin/create-target.sh +@@ -83,7 +83,7 @@ case $uname_s in + hp700*) motif_variant=hpux_cc ;; + pmax_mach) motif_variant=pmax_mach ;; + sgi*) motif_variant=irix ;; +- x86_linux|linux*) motif_variant=x86 ;; ++ x86_linux*|linux*) motif_variant=x86 ;; + esac + } + [ -f src/motif/server/Config.$motif_variant ] || quit "No such motif-variant could be found: Config.$motif_variant" +diff --git a/src/lisp/Config.x86_linux_clang b/src/lisp/Config.x86_linux_clang +new file mode 100644 +index 000000000..cbfb4306a +--- /dev/null ++++ b/src/lisp/Config.x86_linux_clang +@@ -0,0 +1,15 @@ ++# -*- Mode: makefile -*- ++include Config.x86_common ++ ++CC = clang ++CPPFLAGS += -m32 -D__NO_CTYPE -D_GNU_SOURCE ++CFLAGS += -march=pentium4 -mfpmath=sse -mtune=generic ++ ++UNDEFSYMPATTERN = -Xlinker -u -Xlinker & ++ASSEM_SRC += linux-stubs.S ++OS_SRC += Linux-os.c elf.c ++OS_LIBS = -ldl ++OS_LINK_FLAGS = -m32 -rdynamic -Xlinker --export-dynamic -Xlinker -Map -Xlinker foo ++OS_LINK_FLAGS += -Wl,-z,noexecstack ++ ++EXEC_FINAL_OBJ = exec-final.o +-- +2.18.1 + diff --git a/trunk/PKGBUILD b/trunk/PKGBUILD index a621bd0..e760980 100644 --- a/trunk/PKGBUILD +++ b/trunk/PKGBUILD @@ -3,29 +3,32 @@ # Maintainer: Juergen Hoetzel pkgname=cmucl -pkgver=21b -pkgrel=2 +pkgver=21c +pkgrel=1 pkgdesc="CMU Common Lisp" depends_i686=('glibc' 'openmotif') depends_x86_64=('lib32-glibc' 'openmotif') provides=('common-lisp') -makedepends=('sed' 'bc') +makedepends=('sed' 'bc' 'clang') license=('custom') #license PublicDomain source=("https://common-lisp.net/project/cmucl/downloads/release/${pkgver}/cmucl-src-${pkgver}.tar.bz2" - "https://common-lisp.net/project/cmucl/downloads/release/${pkgver}/cmucl-src-${pkgver}.tar.bz2.asc" + "https://common-lisp.net/project/cmucl/downloads/release/${pkgver}/cmucl-src-${pkgver}.tar.bz2.asc" "https://common-lisp.net/project/cmucl/downloads/release/${pkgver}/cmucl-${pkgver}-x86-linux.tar.bz2" - "https://common-lisp.net/project/cmucl/downloads/release/${pkgver}/cmucl-${pkgver}-x86-linux.tar.bz2.asc") -sha256sums=('6f9ea5920d38d6881cee85d976565b3a6070bf6473dd64254e0e9f2f23625875' + "https://common-lisp.net/project/cmucl/downloads/release/${pkgver}/cmucl-${pkgver}-x86-linux.tar.bz2.asc" + 82bf2c727ba1d3c461fa360aaae176608eb9349b.patch) +sha256sums=('3435963b594d44b5ca0e12674222b40fb00b3c44ea0226fead5d66041369a74d' 'SKIP' - 'eaccb1d676dbf40c5327ae5c61a7a638e4c12525b1e4118535582ffb7c59638e' - 'SKIP') + 'f94a79ca4c2918cc4e7bdc58c934c98e56accc3c08f7cccde70ade02ab438105' + 'SKIP' + '6cb5b7921bee5c5cba19939de635870f56f1bce662d457aeccde29878a4d0ebc') validpgpkeys=('0EF50ED55514BFF6B72B9DAC06CE3819086C750B') # "Raymond Toy url="https://www.cons.org/cmucl/" arch=('x86_64') prepare() { cd "${srcdir}" + patch -p1 -i 82bf2c727ba1d3c461fa360aaae176608eb9349b.patch if [[ $CARCH == "i686" ]]; then sed -i 's|i386\*|i686\*|' bin/build-all.sh @@ -36,13 +39,13 @@ build() { cd "${srcdir}" export CMUCLLIB="${srcdir}"/lib/cmucl/lib # Build using binary-dist lisp - ./bin/build-all.sh -o "${srcdir}"/bin/lisp + ./bin/build-all.sh -o "${srcdir}"/bin/lisp -C x86_linux_clang } package() { cd "${srcdir}" # install distribution - ./bin/make-dist.sh -I "${pkgdir}"/usr -M share/man/man1 linux-4 + ./bin/make-dist.sh -I "${pkgdir}"/usr -M share/man/man1 -V 21c linux-4 # move docs mv "${pkgdir}"/usr/doc "${pkgdir}"/usr/share/ # backwards compatibility