diff options
author | Raul Infante-Sainz <infantesainz@gmail.com> | 2019-03-29 10:49:31 +0000 |
---|---|---|
committer | Raul Infante-Sainz <infantesainz@gmail.com> | 2019-03-29 10:49:31 +0000 |
commit | d26372bb074b1e4ac5ff758d7716129975fe4963 (patch) | |
tree | 333eb3e460e3d8872feb587ac9893eab22074288 /reproduce/src | |
parent | 12648438cf9f75738cef045fd02f4093eab7990d (diff) |
Disabling ATLAS shared libraries on Mac OS
The Makefile that build the shared libraries comes from Arch Linux so it
does not work easily on Mac. But the full ATLAS build goes successfully
for static libraries. For now we are disabling shared libraries on Mac.
Python was built explicity with `clang' on Mac.
Diffstat (limited to 'reproduce/src')
-rw-r--r-- | reproduce/src/make/dependencies-python.mk | 14 | ||||
-rw-r--r-- | reproduce/src/make/dependencies.mk | 54 |
2 files changed, 26 insertions, 42 deletions
diff --git a/reproduce/src/make/dependencies-python.mk b/reproduce/src/make/dependencies-python.mk index fe82175..c7f861b 100644 --- a/reproduce/src/make/dependencies-python.mk +++ b/reproduce/src/make/dependencies-python.mk @@ -293,18 +293,14 @@ $(ibdir)/python3: $(tdir)/python-$(python-version).tar.gz \ $(ilidir)/libffi # On Mac systems, the build complains about `clang' specific # features, so we can't use our own GCC build here. -# if [ x$(on_mac_os) = xyes ]; then \ -# export CC=clang; \ -# export CXX=clang++; \ -# fi; \ - + if [ x$(on_mac_os) = xyes ]; then \ + export CC=clang; \ + export CXX=clang++; \ + fi; \ $(call gbuild, $<, Python-$(python-version),, \ - --enable-optimizations \ --without-ensurepip \ --with-system-ffi \ - --enable-shared \ - --with-threads \ - --with-lto ) \ + --enable-shared) \ && v=$$(echo $(python-version) | awk 'BEGIN{FS="."} \ {printf "%d.%d\n", $$1, $$2}') \ && ln -s $(ildir)/python$$v $(ildir)/python \ diff --git a/reproduce/src/make/dependencies.mk b/reproduce/src/make/dependencies.mk index 02fe18a..9953311 100644 --- a/reproduce/src/make/dependencies.mk +++ b/reproduce/src/make/dependencies.mk @@ -44,10 +44,7 @@ ilidir = $(BDIR)/dependencies/installed/lib/built # Define the top-level programs to build (installed in `.local/bin'). top-level-programs = astnoisechisel flock metastore unzip zip -ifneq ($(on_mac_os),yes) -withatlas = atlas -endif -top-level-libraries = freetype $(withatlas) +top-level-libraries = freetype atlas all: $(ddir)/texlive-versions.tex \ $(foreach p, $(top-level-programs), $(ibdir)/$(p)) \ $(foreach p, $(top-level-libraries), $(ilidir)/$(p)) @@ -263,27 +260,25 @@ $(ilidir)/libtiff: $(tdir)/tiff-$(libtiff-version).tar.gz \ $(ilidir)/atlas: $(tdir)/atlas-$(atlas-version).tar.bz2 \ $(tdir)/lapack-$(lapack-version).tar.gz - if [ x$(on_mac_os) = xyes ]; then - echo; echo; - echo "ATLAS build instructions not yet working on Mac" - exit 1 - fi - # Get the operating system specific features (how to get # CPU frequency and the library suffixes). To make the steps # more readable, the different library version suffixes are # named with a single character: `s' for no version in the # name, `m' for the major version suffix, and `f' for the # full version suffix. + # GCC in Mac OS doesn't work. To work around this issue, on Mac + # systems we force ATLAS to use `clang' instead of `gcc'. if [ x$(on_mac_os) = xyes ]; then s=dylib m=3.dylib f=3.6.1.dylib core=$$(sysctl hw.cpufrequency | awk '{print $$2/1000000}') + clangflag="--force-clang=$(ibdir)/clang" else s=so m=so.3 f=so.3.6.1 + clangflag= core=$$(cat /proc/cpuinfo | grep "cpu MHz" \ | head -n 1 \ | sed "s/.*: \([0-9.]*\).*/\1/") @@ -308,45 +303,38 @@ $(ilidir)/atlas: $(tdir)/atlas-$(atlas-version).tar.bz2 \ && rm -rf build \ && mkdir build \ && cd build \ - && ../configure -b 64 -D c -DPentiumCPS=$$core \ + && echo ../configure -b 64 -D c -DPentiumCPS=$$core \ --with-netlib-lapack-tarfile=$(word 2, $^) \ --cripple-atlas-performance \ - -Fa alg -fPIC --shared \ - -C xc $(ibdir)/gcc \ - -C gc $(ibdir)/gcc \ - -C if $(ibdir)/gfortran \ - -C ic $(ibdir)/gcc \ - -C dm $(ibdir)/gcc \ - -C sm $(ibdir)/gcc \ - -C dk $(ibdir)/gcc \ - -C sk $(ibdir)/gcc \ + -Fa alg -fPIC --shared $$clangflag \ --prefix=$(idir) \ && make \ - && cd lib && make -f $$sharedmk && cd .. \ && if [ "x$(on_mac_os)" != xyes ]; then \ - for l in lib/*.$$s*; do \ - patchelf --set-rpath $(ildir) $$l; done \ + cd lib && make -f $$sharedmk && cd .. \ + && for l in lib/*.$$s*; do \ + patchelf --set-rpath $(ildir) $$l; done \ + && cp -d lib/*.$$s* $(ildir) \ + && ln -fs $(ildir)/libblas.$$s $(ildir)/libblas.$$m \ + && ln -fs $(ildir)/libf77blas.$$s $(ildir)/libf77blas.$$m \ + && ln -fs $(ildir)/liblapack.$$f $(ildir)/liblapack.$$s \ + && ln -fs $(ildir)/liblapack.$$f $(ildir)/liblapack.$$m; \ fi \ - && make install \ - && cp -d lib/*.$$s* $(ildir) \ - && ln -fs $(ildir)/libblas.$$s $(ildir)/libblas.$$m \ - && ln -fs $(ildir)/libf77blas.$$s $(ildir)/libf77blas.$$m \ - && ln -fs $(ildir)/liblapack.$$f $(ildir)/liblapack.$$s \ - && ln -fs $(ildir)/liblapack.$$f $(ildir)/liblapack.$$m; + && make install # We need to check the existance of `libptlapack.a', but we can't # do this in the `&&' steps above (it will conflict). So we'll do # the check after seeing if `libtatlas.so' is installed, then we'll # finalize the build (delete the untarred directory). - if [ -e $(ildir)/libtatlas.$$s ]; then \ + if [ "x$(on_mac_os)" != xyes ]; then \ [ -e lib/libptlapack.a ] && cp lib/libptlapack.a $(ildir); \ cd $(ddir); \ rm -rf ATLAS; \ - echo "Atlas is built" > $@; \ - else \ - echo; echo "ATLAS wasn't installed!!!!"; exit 1; \ fi + # We'll check the full installation with the static library (not + # currently building shared library on Mac. + if [ -f $(ildir)/libatlas.a ]; then echo "Atlas is built" > $@; fi + |