Skip to content

Commit 5d3498f

Browse files
add option to build from source on macOS and Linux
1 parent d3d3a27 commit 5d3498f

File tree

2 files changed

+66
-31
lines changed

2 files changed

+66
-31
lines changed

deps/build.jl

Lines changed: 65 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -1,35 +1,70 @@
11
using BinaryProvider
22

3-
if Sys.isapple()
4-
run(`brew update`)
5-
run(`brew install gcc@8 fftw mpfr`)
6-
const libfasttransforms = joinpath(dirname(@__DIR__), "deps", "libfasttransforms.dylib")
7-
GCC = BinaryProvider.detect_compiler_abi().gcc_version
8-
println("Building with ", GCC, ".")
9-
const release = "https://github.com/MikaelSlevinsky/FastTransforms/releases/download/v0.2.7/libfasttransforms.v0.2.7"
10-
if GCC == :gcc4
11-
download(release*".gcc-4.9.dylib", libfasttransforms)
12-
elseif GCC == :gcc5
13-
download(release*".gcc-5.dylib", libfasttransforms)
14-
elseif GCC == :gcc6
15-
download(release*".gcc-6.dylib", libfasttransforms)
16-
elseif GCC == :gcc7
17-
download(release*".gcc-7.dylib", libfasttransforms)
18-
elseif GCC == :gcc8
19-
download(release*".gcc-8.dylib", libfasttransforms)
20-
elseif GCC == :gcc9
21-
download(release*".gcc-9.dylib", libfasttransforms)
3+
if arch(platform_key_abi()) != :x86_64
4+
@warn "FastTransforms has only been tested on x86_64 architectures."
5+
end
6+
7+
ft_build_from_source = get(ENV, "FT_BUILD_FROM_SOURCE", "false")
8+
9+
if ft_build_from_source == "true"
10+
println("Building from source.")
11+
if Sys.isapple()
12+
script = raw"""
13+
brew update
14+
brew install gcc@8 fftw mpfr
15+
rm -rf FastTransforms
16+
git clone -b v0.2.7 https://github.com/MikaelSlevinsky/FastTransforms.git FastTransforms
17+
cd FastTransforms
18+
make lib CC=gcc-8 FT_USE_APPLEBLAS=1
19+
cd ..
20+
ln -sf FastTransforms/libfasttransforms.dylib libfasttransforms.dylib
21+
"""
22+
run(`/bin/bash -c $(script)`)
23+
elseif Sys.islinux()
24+
script = raw"""
25+
sudo apt-get update
26+
sudo add-apt-repository ppa:ubuntu-toolchain-r/test
27+
sudo apt-get install gcc-8 libblas-dev libopenblas-base libfftw3-dev libmpfr-dev
28+
rm -rf FastTransforms
29+
git clone -b v0.2.7 https://github.com/MikaelSlevinsky/FastTransforms.git FastTransforms
30+
cd FastTransforms
31+
make lib CC=gcc-8
32+
cd ..
33+
ln -sf FastTransforms/libfasttransforms.so libfasttransforms.so
34+
"""
35+
run(`/bin/bash -c $(script)`)
2236
else
23-
@warn "Please ensure you have a version of gcc from gcc-4.9 to gcc-9."
37+
@warn "FastTransforms could not be built from source with the current build.jl script. Have you considered filing an issue? https://github.com/JuliaApproximation/FastTransforms.jl/issues"
2438
end
25-
elseif Sys.islinux()
26-
run(`sudo add-apt-repository ppa:ubuntu-toolchain-r/test`)
27-
run(`sudo apt-get update`)
28-
run(`sudo apt-get install gcc-8 libblas-dev libopenblas-base libfftw3-dev libmpfr-dev`)
29-
const libfasttransforms = joinpath(dirname(@__DIR__), "deps", "libfasttransforms.so")
30-
if arch(platform_key_abi()) != :x86_64
31-
@warn "FastTransforms only has compiled binaries for x86_64 architectures."
32-
else
39+
else
40+
println("Installing by downloading binaries.")
41+
if Sys.isapple()
42+
run(`brew update`)
43+
run(`brew install gcc@8 fftw mpfr`)
44+
const libfasttransforms = joinpath(dirname(@__DIR__), "deps", "libfasttransforms.dylib")
45+
GCC = BinaryProvider.detect_compiler_abi().gcc_version
46+
println("Building with ", GCC, ".")
47+
const release = "https://github.com/MikaelSlevinsky/FastTransforms/releases/download/v0.2.7/libfasttransforms.v0.2.7"
48+
if GCC == :gcc4
49+
download(release*".gcc-4.9.dylib", libfasttransforms)
50+
elseif GCC == :gcc5
51+
download(release*".gcc-5.dylib", libfasttransforms)
52+
elseif GCC == :gcc6
53+
download(release*".gcc-6.dylib", libfasttransforms)
54+
elseif GCC == :gcc7
55+
download(release*".gcc-7.dylib", libfasttransforms)
56+
elseif GCC == :gcc8
57+
download(release*".gcc-8.dylib", libfasttransforms)
58+
elseif GCC == :gcc9
59+
download(release*".gcc-9.dylib", libfasttransforms)
60+
else
61+
@warn "Please ensure you have a version of gcc from gcc-4.9 to gcc-9."
62+
end
63+
elseif Sys.islinux()
64+
run(`sudo add-apt-repository ppa:ubuntu-toolchain-r/test`)
65+
run(`sudo apt-get update`)
66+
run(`sudo apt-get install gcc-8 libblas-dev libopenblas-base libfftw3-dev libmpfr-dev`)
67+
const libfasttransforms = joinpath(dirname(@__DIR__), "deps", "libfasttransforms.so")
3368
GCC = BinaryProvider.detect_compiler_abi().gcc_version
3469
println("Building with ", GCC, ".")
3570
const release = "https://github.com/MikaelSlevinsky/FastTransforms/releases/download/v0.2.7/libfasttransforms.v0.2.7"
@@ -48,7 +83,7 @@ elseif Sys.islinux()
4883
else
4984
@warn "Please ensure you have a version of gcc from gcc-4.9 to gcc-9."
5085
end
86+
else
87+
@warn "FastTransforms could not be installed by downloading binaries. Have you tried building from source?"
5188
end
52-
else
53-
@warn "FastTransforms is not properly installed."
5489
end

src/libfasttransforms.jl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ const libfasttransforms = joinpath(dirname(@__DIR__), "deps", "libfasttransforms
1717

1818
if !(find_library(libfasttransforms) libfasttransforms)
1919
error("FastTransforms is not properly installed. Please run Pkg.build(\"FastTransforms\") ",
20-
"and restart Julia. You may need to manually build if the package is in development mode.")
20+
"and restart Julia.")
2121
end
2222

2323
function ft_fftw_plan_with_nthreads(n::Integer)

0 commit comments

Comments
 (0)