Building CalculiX with PaStiX on FreeBSD without CUDA

Thanks for sharing your findings!
I was able to build CalculiX with PaStiX (without CUDA) on macOS with minor modifications.
In case someone ends up here with the same intentions:

  • Use Kabbone’s version of PaStiX4CalculiX: GitHub - Kabbone/PaStiX4CalculiX
  • Install scotch, hwloc, openblas, lapack using hombrew
  • Make sure you have a python2 installation somewhere (I got mine using pyenv)
#!/bin/bash
if ! [[ -d build ]]; then
    mkdir build
fi
cd build

INSTALLPATH="./"
SCOTCHDIR="/opt/homebrew/Cellar/scotch/7.0.7"
HWLOCDIR="/opt/homebrew/Cellar/hwloc/2.12.0"
BLASDIR="/opt/homebrew/Cellar/openblas/0.3.29"
LAPACKDIR="/opt/homebrew/Cellar/lapack/3.12.1"

cmake \
	-DCMAKE_INSTALL_PREFIX=${INSTALLPATH} \
	-DCMAKE_BUILD_TYPE=Release \
	-DPASTIX_WITH_PARSEC=OFF \
	-DSCOTCH_DIR=${SCOTCHDIR} \
	-DHWLOC_DIR=${HWLOCDIR} \
	-DLAPACK_DIR=${LAPACKDIR} \
	-DBLAS_DIR=${BLASDIR} \
	-DPASTIX_ORDERING_SCOTCH=ON \
	-DCMAKE_C_COMPILER=gcc-14 \
	-DCMAKE_CXX_COMPILER=g++-14 \
	-DCMAKE_Fortran_COMPILER=gfortran-14 \
	-DCMAKE_C_FLAGS="-framework accelerate -fopenmp -Wno-error=implicit-function-declaration" \
	-DPASTIX_INT64=OFF \
	-DPYTHON_EXECUTABLE=python2.7 \
    ..

make -j4
make install

I additionally had to change the version number to 3.5 in some cmake files, since I was using a more recent cmake version:

cmake_minimum_required (VERSION 3.5)

(cmake will complain and show you the affected files)

And finally, here is my CalculiX Makefile:

PASTIX_DIR=../../PaStiX4CalculiX/build
SCOTCH_DIR=/opt/homebrew/Cellar/scotch/7.0.7
HWLOC_DIR=/opt/homebrew/Cellar/hwloc/2.12.0
BLAS_DIR=/opt/homebrew/Cellar/openblas/0.3.29
LAPACK_DIR=/opt/homebrew/Cellar/lapack/3.12.1

INCLUDES= \
  $(PASTIX_DIR)/include \

LIBS = \
  ../../arpack/libarpack_arm.a \
  $(PASTIX_DIR)/lib/libpastix.a \
  $(PASTIX_DIR)/lib/libpastix_kernels.a \
  $(PASTIX_DIR)/lib/libspm.a \
  $(SCOTCH_DIR)/lib/libscotch.dylib \
  $(SCOTCH_DIR)/lib/libscotcherrexit.dylib \
  $(HWLOC_DIR)/lib/libhwloc.dylib \
  $(LAPACK_DIR)/lib/liblapacke.dylib \
  -lpthread -lm -lc -L/opt/homebrew/opt/libomp/lib -lomp \
  -lstdc++ \
  -framework Accelerate

CFLAGS = -Wall -O3 -I $(INCLUDES) -DARCH="Linux" -DPASTIX -DARPACK -DMATRIXSTORAGE -DNETWORKOUT -Wno-error=implicit-function-declaration -Wno-error=int-conversion \
  -I$(PASTIX_DIR)/include \
  -I$(SCOTCH_DIR)/include \
  -I$(HWLOC_DIR)/include \
  -I$(BLAS_DIR)/include
FFLAGS = -Wall -O3 -fopenmp -cpp

CC=gcc-14
FC=gfortran-14

.c.o :
	$(CC) $(CFLAGS) -c $<
.f.o :
	$(FC) $(FFLAGS) -c $<

include Makefile.inc

SCCXMAIN = CalculiX.c

OCCXF = $(SCCXF:.f=.o)
OCCXC = $(SCCXC:.c=.o)
OCCXMAIN = $(SCCXMAIN:.c=.o)

CalculiX_PaStiX_i4: $(OCCXMAIN) libCalculiX.a
	$(CC) $(CFLAGS) -c CalculiX.c; $(FC) -o $@ $(OCCXMAIN) libCalculiX.a $(LIBS) -fopenmp

libCalculiX.a: $(OCCXF) $(OCCXC)
	ar vr $@ $?