Skip to content

LLVM on ARM64 #768

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 7 commits into from
Aug 8, 2019
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
Add linux-armhf, linux-arm64, and linux-ppc64le builds for LLVM
  • Loading branch information
saudet committed Aug 6, 2019
commit 19cad363487b3236335573195300e7527dabd746
14 changes: 11 additions & 3 deletions .travis.yml
Original file line number Diff line number Diff line change
Expand Up @@ -180,6 +180,10 @@ matrix:
env: PROJ=arpack-ng,cminpack,fftw,gsl OS=linux-armhf
install: true
script: ./ci/install-travis.sh
- os: linux
env: PROJ=llvm OS=linux-armhf
install: true
script: ./ci/install-travis.sh
- os: linux
env: PROJ=leptonica,tesseract OS=linux-armhf
install: true
Expand Down Expand Up @@ -210,15 +214,15 @@ matrix:
install: true
script: ./ci/install-arm.sh
- os: linux
env: PROJ=leptonica,tesseract OS=linux-arm64
env: PROJ=llvm OS=linux-arm64
install: true
script: ./ci/install-arm.sh
- os: linux
env: PROJ=cpu_features,systems OS=linux-arm64
env: PROJ=leptonica,tesseract OS=linux-arm64
install: true
script: ./ci/install-arm.sh
- os: linux
env: PROJ=llvm OS=linux-arm64
env: PROJ=cpu_features,systems OS=linux-arm64
install: true
script: ./ci/install-arm.sh

Expand Down Expand Up @@ -246,6 +250,10 @@ matrix:
env: PROJ=arpack-ng,cminpack,fftw,gsl OS=linux-ppc64le
install: true
script: ./ci/install-ppc.sh
- os: linux
env: PROJ=llvm OS=linux-ppc64le
install: true
script: ./ci/install-ppc.sh
- os: linux
env: PROJ=leptonica,tesseract OS=linux-ppc64le
install: true
Expand Down
51 changes: 36 additions & 15 deletions llvm/cppbuild.sh
Original file line number Diff line number Diff line change
Expand Up @@ -29,42 +29,63 @@ case $PLATFORM in
linux-x86)
export CC="gcc -m32"
export CXX="g++ -m32"
$CMAKE -DCMAKE_INSTALL_PREFIX=../.. -DLLVM_BUILD_LLVM_DYLIB=ON -DLLVM_LINK_LLVM_DYLIB=ON -DCMAKE_BUILD_TYPE=Release -DLLVM_TARGETS_TO_BUILD=host -DLIBXML2_LIBRARIES= -DLLVM_INCLUDE_TESTS=OFF ..
$CMAKE -DCMAKE_INSTALL_PREFIX=../.. -DLLVM_BUILD_LLVM_DYLIB=ON -DLLVM_LINK_LLVM_DYLIB=ON -DCMAKE_BUILD_TYPE=Release -DLLVM_TARGETS_TO_BUILD=host -DLLVM_ENABLE_LIBXML2=OFF -DLLVM_INCLUDE_TESTS=OFF ..
make -j $MAKEJ
make install > /dev/null
;;
linux-x86_64)
export CC="gcc -m64"
export CXX="g++ -m64"
$CMAKE -DCMAKE_INSTALL_PREFIX=../.. -DLLVM_BUILD_LLVM_DYLIB=ON -DLLVM_LINK_LLVM_DYLIB=ON -DCMAKE_BUILD_TYPE=Release -DLLVM_TARGETS_TO_BUILD=host -DLIBXML2_LIBRARIES= -DLLVM_INCLUDE_TESTS=OFF ..
$CMAKE -DCMAKE_INSTALL_PREFIX=../.. -DLLVM_BUILD_LLVM_DYLIB=ON -DLLVM_LINK_LLVM_DYLIB=ON -DCMAKE_BUILD_TYPE=Release -DLLVM_TARGETS_TO_BUILD=host -DLLVM_ENABLE_LIBXML2=OFF -DLLVM_INCLUDE_TESTS=OFF ..
make -j $MAKEJ
make install > /dev/null
;;
linux-armhf)
mkdir -p ../tblgen
cd ../tblgen
$CMAKE -DCMAKE_BUILD_TYPE=Release -DLLVM_TARGETS_TO_BUILD=host -DLLVM_ENABLE_LIBXML2=OFF -DLLVM_INCLUDE_TESTS=OFF ..
make -j $MAKEJ llvm-tblgen clang-tblgen
TBLGEN=`pwd`
cd ../build
CC="arm-linux-gnueabihf-gcc" CXX="arm-linux-gnueabihf-g++" $CMAKE -DCMAKE_CROSSCOMPILING=True -DLLVM_TEMPORARILY_ALLOW_OLD_TOOLCHAIN=ON -DCMAKE_INSTALL_PREFIX=../.. -DLLVM_TABLEGEN="$TBLGEN/bin/llvm-tblgen" -DCLANG_TABLEGEN="$TBLGEN/bin/clang-tblgen" -DCMAKE_C_FLAGS="-march=armv6 -mfpu=vfp -mfloat-abi=hard" -DCMAKE_CXX_FLAGS="-march=armv6 -mfpu=vfp -mfloat-abi=hard" -DLLVM_BUILD_LLVM_DYLIB=ON -DLLVM_LINK_LLVM_DYLIB=ON -DCMAKE_BUILD_TYPE=Release -DLLVM_DEFAULT_TARGET_TRIPLE=arm-linux-gnueabihf -DLLVM_TARGET_ARCH=ARM -DLLVM_TARGETS_TO_BUILD=ARM -DLLVM_ENABLE_LIBXML2=OFF -DLLVM_INCLUDE_TESTS=OFF ..
make -j $MAKEJ
make install > /dev/null
;;
linux-arm64)
$CMAKE -DCMAKE_INSTALL_PREFIX=../.. -DLLVM_BUILD_LLVM_DYLIB=ON -DLLVM_LINK_LLVM_DYLIB=ON -DCMAKE_BUILD_TYPE=Release -DLLVM_TARGETS_TO_BUILD=host -DLIBXML2_LIBRARIES= -DLLVM_INCLUDE_TESTS=OFF ..
mkdir -p ../tblgen
cd ../tblgen
$CMAKE -DCMAKE_BUILD_TYPE=Release -DLLVM_TARGETS_TO_BUILD=host -DLLVM_ENABLE_LIBXML2=OFF -DLLVM_INCLUDE_TESTS=OFF ..
make -j $MAKEJ llvm-tblgen clang-tblgen
TBLGEN=`pwd`
cd ../build
CC="aarch64-linux-gnu-gcc" CXX="aarch64-linux-gnu-g++" $CMAKE -DCMAKE_CROSSCOMPILING=True -DLLVM_TEMPORARILY_ALLOW_OLD_TOOLCHAIN=ON -DCMAKE_INSTALL_PREFIX=../.. -DLLVM_TABLEGEN="$TBLGEN/bin/llvm-tblgen" -DCLANG_TABLEGEN="$TBLGEN/bin/clang-tblgen" -DLLVM_BUILD_LLVM_DYLIB=ON -DLLVM_LINK_LLVM_DYLIB=ON -DCMAKE_BUILD_TYPE=Release -DLLVM_DEFAULT_TARGET_TRIPLE=aarch64-linux-gnu -DLLVM_TARGET_ARCH=ARM,AArch64 -DLLVM_TARGETS_TO_BUILD=ARM,AArch64 -DLLVM_ENABLE_LIBXML2=OFF -DLLVM_INCLUDE_TESTS=OFF ..
make -j $MAKEJ
make install > /dev/null
;;
linux-ppc64le)
mkdir -p ../tblgen
cd ../tblgen
$CMAKE -DCMAKE_BUILD_TYPE=Release -DLLVM_TARGETS_TO_BUILD=host -DLLVM_ENABLE_LIBXML2=OFF -DLLVM_INCLUDE_TESTS=OFF ..
make -j $MAKEJ llvm-tblgen clang-tblgen
TBLGEN=`pwd`
cd ../build
CC="powerpc64le-linux-gnu-gcc" CXX="powerpc64le-linux-gnu-g++" $CMAKE -DCMAKE_CROSSCOMPILING=True -DLLVM_TEMPORARILY_ALLOW_OLD_TOOLCHAIN=ON -DCMAKE_INSTALL_PREFIX=../.. -DLLVM_TABLEGEN="$TBLGEN/bin/llvm-tblgen" -DCLANG_TABLEGEN="$TBLGEN/bin/clang-tblgen" -DLLVM_BUILD_LLVM_DYLIB=ON -DLLVM_LINK_LLVM_DYLIB=ON -DCMAKE_BUILD_TYPE=Release -DLLVM_DEFAULT_TARGET_TRIPLE=powerpc64le-linux-gnu -DLLVM_TARGET_ARCH=PowerPC -DLLVM_TARGETS_TO_BUILD=PowerPC -DLLVM_ENABLE_LIBXML2=OFF -DLLVM_INCLUDE_TESTS=OFF ..
make -j $MAKEJ
make install > /dev/null
;;
# linux-armhf)
# export CC_FLAGS="clang -target arm -march=armv7 -mfloat-abi=hard"
# export CXX_FLAGS="-target arm -march=armv7 -mfloat-abi=hard"
# $CMAKE -DCMAKE_INSTALL_PREFIX=../.. -DLLVM_BUILD_LLVM_DYLIB=ON -DLLVM_LINK_LLVM_DYLIB=ON -DCMAKE_BUILD_TYPE=Release -DLLVM_TARGETS_TO_BUILD=host -DLIBXML2_LIBRARIES= -DLLVM_INCLUDE_TESTS=OFF ..
# make -j $MAKEJ
# make install > /dev/null
# ;;
macosx-*)
$CMAKE -DCMAKE_INSTALL_PREFIX=../.. -DLLVM_BUILD_LLVM_DYLIB=ON -DLLVM_LINK_LLVM_DYLIB=ON -DCMAKE_BUILD_TYPE=Release -DLLVM_TARGETS_TO_BUILD=host -DLIBXML2_LIBRARIES= -DLLVM_INCLUDE_TESTS=OFF ..
$CMAKE -DCMAKE_INSTALL_PREFIX=../.. -DLLVM_BUILD_LLVM_DYLIB=ON -DLLVM_LINK_LLVM_DYLIB=ON -DCMAKE_BUILD_TYPE=Release -DLLVM_TARGETS_TO_BUILD=host -DLLVM_ENABLE_LIBXML2=OFF -DLLVM_INCLUDE_TESTS=OFF ..
make -j $MAKEJ
make install > /dev/null
;;
windows-x86)
$CMAKE -G "Visual Studio 14 2015" -DLLVM_TEMPORARILY_ALLOW_OLD_TOOLCHAIN=ON -DLLVM_USE_CRT_RELEASE=MD -DCMAKE_INSTALL_PREFIX=../.. -DCMAKE_BUILD_TYPE=Release -DLLVM_TARGETS_TO_BUILD=host -DLLVM_ENABLE_DIA_SDK=OFF -DLIBXML2_LIBRARIES= -DLLVM_INCLUDE_TESTS=OFF -DPYTHON_EXECUTABLE="C:/Python27/python.exe" ..
$CMAKE -G "Visual Studio 14 2015" -DLLVM_TEMPORARILY_ALLOW_OLD_TOOLCHAIN=ON -DLLVM_USE_CRT_RELEASE=MD -DCMAKE_INSTALL_PREFIX=../.. -DCMAKE_BUILD_TYPE=Release -DLLVM_TARGETS_TO_BUILD=host -DLLVM_ENABLE_DIA_SDK=OFF -DLLVM_ENABLE_LIBXML2=OFF -DLLVM_INCLUDE_TESTS=OFF -DPYTHON_EXECUTABLE="C:/Python27/python.exe" ..
MSBuild.exe INSTALL.vcxproj //p:Configuration=Release //p:CL_MPCount=$MAKEJ
cd Release/lib/
[ -f LLVM.lib ] || lib.exe /OUT:LLVM.lib LLVM*.lib
[ -f clang.lib ] || lib.exe /OUT:clang.lib clang*.lib
cd ../..
$CMAKE -G "Visual Studio 14 2015" -DLLVM_USE_CRT_RELEASE=MD -DCMAKE_INSTALL_PREFIX=../.. -DLLVM_BUILD_LLVM_DYLIB=ON -DLLVM_LINK_LLVM_DYLIB=ON -DCMAKE_BUILD_TYPE=Release -DLLVM_TARGETS_TO_BUILD=host -DLLVM_ENABLE_DIA_SDK=OFF -DLIBXML2_LIBRARIES= -DLLVM_INCLUDE_TESTS=OFF -DPYTHON_EXECUTABLE="C:/Python27/python.exe" ..
$CMAKE -G "Visual Studio 14 2015" -DLLVM_USE_CRT_RELEASE=MD -DCMAKE_INSTALL_PREFIX=../.. -DLLVM_BUILD_LLVM_DYLIB=ON -DLLVM_LINK_LLVM_DYLIB=ON -DCMAKE_BUILD_TYPE=Release -DLLVM_TARGETS_TO_BUILD=host -DLLVM_ENABLE_DIA_SDK=OFF -DLLVM_ENABLE_LIBXML2=OFF -DLLVM_INCLUDE_TESTS=OFF -DPYTHON_EXECUTABLE="C:/Python27/python.exe" ..
MSBuild.exe INSTALL.vcxproj //p:Configuration=Release //p:CL_MPCount=$MAKEJ
cd ../../lib
[ -f LLVM.lib ] || lib.exe /OUT:LLVM.lib LLVM*.lib
Expand All @@ -73,13 +94,13 @@ case $PLATFORM in
cd ../llvm-$LLVM_VERSION.src/build
;;
windows-x86_64)
$CMAKE -G "Visual Studio 14 2015 Win64" -DLLVM_TEMPORARILY_ALLOW_OLD_TOOLCHAIN=ON -Thost=x64 -DLLVM_USE_CRT_RELEASE=MD -DCMAKE_INSTALL_PREFIX=../.. -DCMAKE_BUILD_TYPE=Release -DLLVM_TARGETS_TO_BUILD=host -DLLVM_ENABLE_DIA_SDK=OFF -DLIBXML2_LIBRARIES= -DLLVM_INCLUDE_TESTS=OFF -DPYTHON_EXECUTABLE="C:/Python27/python.exe" ..
$CMAKE -G "Visual Studio 14 2015 Win64" -DLLVM_TEMPORARILY_ALLOW_OLD_TOOLCHAIN=ON -Thost=x64 -DLLVM_USE_CRT_RELEASE=MD -DCMAKE_INSTALL_PREFIX=../.. -DCMAKE_BUILD_TYPE=Release -DLLVM_TARGETS_TO_BUILD=host -DLLVM_ENABLE_DIA_SDK=OFF -DLLVM_ENABLE_LIBXML2=OFF -DLLVM_INCLUDE_TESTS=OFF -DPYTHON_EXECUTABLE="C:/Python27/python.exe" ..
MSBuild.exe INSTALL.vcxproj //p:Configuration=Release //p:CL_MPCount=$MAKEJ
cd Release/lib/
[ -f LLVM.lib ] || lib.exe /OUT:LLVM.lib LLVM*.lib
[ -f clang.lib ] || lib.exe /OUT:clang.lib clang*.lib
cd ../..
$CMAKE -G "Visual Studio 14 2015 Win64" -Thost=x64 -DLLVM_USE_CRT_RELEASE=MD -DCMAKE_INSTALL_PREFIX=../.. -DLLVM_BUILD_LLVM_DYLIB=ON -DLLVM_LINK_LLVM_DYLIB=ON -DCMAKE_BUILD_TYPE=Release -DLLVM_TARGETS_TO_BUILD=host -DLLVM_ENABLE_DIA_SDK=OFF -DLIBXML2_LIBRARIES= -DLLVM_INCLUDE_TESTS=OFF -DPYTHON_EXECUTABLE="C:/Python27/python.exe" ..
$CMAKE -G "Visual Studio 14 2015 Win64" -Thost=x64 -DLLVM_USE_CRT_RELEASE=MD -DCMAKE_INSTALL_PREFIX=../.. -DLLVM_BUILD_LLVM_DYLIB=ON -DLLVM_LINK_LLVM_DYLIB=ON -DCMAKE_BUILD_TYPE=Release -DLLVM_TARGETS_TO_BUILD=host -DLLVM_ENABLE_DIA_SDK=OFF -DLLVM_ENABLE_LIBXML2=OFF -DLLVM_INCLUDE_TESTS=OFF -DPYTHON_EXECUTABLE="C:/Python27/python.exe" ..
MSBuild.exe INSTALL.vcxproj //p:Configuration=Release //p:CL_MPCount=$MAKEJ
cd ../../lib
[ -f LLVM.lib ] || lib.exe /OUT:LLVM.lib LLVM*.lib
Expand Down
16 changes: 15 additions & 1 deletion llvm/platform/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -38,12 +38,24 @@
<version>${project.version}</version>
<classifier>${javacpp.platform.linux-x86_64}</classifier>
</dependency>
<dependency>
<groupId>${project.groupId}</groupId>
<artifactId>${javacpp.moduleId}</artifactId>
<version>${project.version}</version>
<classifier>${javacpp.platform.linux-armhf}</classifier>
</dependency>
<dependency>
<groupId>${project.groupId}</groupId>
<artifactId>${javacpp.moduleId}</artifactId>
<version>${project.version}</version>
<classifier>${javacpp.platform.linux-arm64}</classifier>
</dependency>
<dependency>
<groupId>${project.groupId}</groupId>
<artifactId>${javacpp.moduleId}</artifactId>
<version>${project.version}</version>
<classifier>${javacpp.platform.linux-ppc64le}</classifier>
</dependency>
<dependency>
<groupId>${project.groupId}</groupId>
<artifactId>${javacpp.moduleId}</artifactId>
Expand Down Expand Up @@ -74,7 +86,7 @@
<configuration>
<archive>
<manifestEntries>
<Class-Path>${javacpp.moduleId}.jar ${javacpp.moduleId}-linux-x86.jar ${javacpp.moduleId}-linux-x86_64.jar ${javacpp.moduleId}-linux-arm64.jar ${javacpp.moduleId}-macosx-x86_64.jar ${javacpp.moduleId}-windows-x86.jar ${javacpp.moduleId}-windows-x86_64.jar</Class-Path>
<Class-Path>${javacpp.moduleId}.jar ${javacpp.moduleId}-linux-x86.jar ${javacpp.moduleId}-linux-x86_64.jar ${javacpp.moduleId}-linux-armhf.jar ${javacpp.moduleId}-linux-arm64.jar ${javacpp.moduleId}-linux-ppc64le.jar ${javacpp.moduleId}-macosx-x86_64.jar ${javacpp.moduleId}-windows-x86.jar ${javacpp.moduleId}-windows-x86_64.jar</Class-Path>
</manifestEntries>
</archive>
</configuration>
Expand Down Expand Up @@ -121,7 +133,9 @@
module org.bytedeco.${javacpp.moduleId}.platform {
requires org.bytedeco.${javacpp.moduleId}.linux.x86;
requires org.bytedeco.${javacpp.moduleId}.linux.x86_64;
requires org.bytedeco.${javacpp.moduleId}.linux.armhf;
requires org.bytedeco.${javacpp.moduleId}.linux.arm64;
requires org.bytedeco.${javacpp.moduleId}.linux.ppc64le;
requires org.bytedeco.${javacpp.moduleId}.macosx.x86_64;
requires org.bytedeco.${javacpp.moduleId}.windows.x86;
requires org.bytedeco.${javacpp.moduleId}.windows.x86_64;
Expand Down
2 changes: 1 addition & 1 deletion llvm/src/main/java/org/bytedeco/llvm/presets/LLVM.java
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@
"<llvm-c/DisassemblerTypes.h>", "<llvm-c/Disassembler.h>", "<llvm-c/Initialization.h>", "<llvm-c/IRReader.h>", "<llvm-c/Linker.h>", "<llvm-c/LinkTimeOptimizer.h>",
"<llvm-c/lto.h>", "<llvm-c/Object.h>", "<llvm-c/Target.h>", "<llvm-c/TargetMachine.h>", "<llvm-c/ExecutionEngine.h>",
"<llvm-c/Transforms/IPO.h>", "<llvm-c/Transforms/PassManagerBuilder.h>", "<llvm-c/Transforms/Scalar.h>", "<llvm-c/Transforms/Utils.h>", "<llvm-c/Transforms/Vectorize.h>"},
compiler = "cpp11", link = {"LLVM-8", "LTO"}), @Platform(value = {"macosx", "windows"}, link = {"LTO", "LLVM"}) })
compiler = "cpp11", link = {"LLVM-8", "LTO@.8"}), @Platform(value = {"macosx", "windows"}, link = {"LTO", "LLVM"}) })
public class LLVM implements InfoMapper {
static { Loader.checkVersion("org.bytedeco", "llvm"); }

Expand Down
6 changes: 3 additions & 3 deletions llvm/src/main/java/org/bytedeco/llvm/presets/clang.java
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
/*
* Copyright (C) 2015-2017 Samuel Audet
* Copyright (C) 2015-2019 Samuel Audet
*
* Licensed either under the Apache License, Version 2.0, or (at your option)
* under the terms of the GNU General Public License as published by
Expand All @@ -26,10 +26,10 @@
import org.bytedeco.javacpp.tools.*;

@Properties(inherit = LLVM.class, target = "org.bytedeco.llvm.clang", global = "org.bytedeco.llvm.global.clang", value = {@Platform(
value = {"linux-x86", "macosx", "windows"},
value = {"linux", "macosx", "windows"},
include = {"<clang-c/Platform.h>", "<clang-c/CXErrorCode.h>", "<clang-c/CXString.h>", "<clang-c/CXCompilationDatabase.h>",
"<clang-c/BuildSystem.h>", "<clang-c/Index.h>", "<clang-c/Documentation.h>"},
compiler = "cpp11", link = "clang"), @Platform(value = "windows", link = "libclang") })
compiler = "cpp11", link = "clang@.8"), @Platform(value = "windows", link = "libclang") })
public class clang implements InfoMapper {
public void map(InfoMap infoMap) {
infoMap.put(new Info("CINDEX_LINKAGE", "CINDEX_VERSION_STRING").cppTypes().annotations())
Expand Down