#! /bin/bash

# Run this script as SU to install fftw-3.3.4 in /share/apps/fftw-3.3.4/intel
# works for CENTOS7 and Rocks Linux cluster

# Mandatory requirement:

# /share/apps/intel/impi/4.1.0.024/intel64/bin/mpiicc 
# /share/apps/openmpi-1.8.5/intel/lib 
# /share/apps/openmpi-1.8.5/intel/include 

# fftw3 will then be installed in /share/apps/fftw-3.3.4/intel

# I have to install texinfo.x86_64 in CENTOS7 before this script can work properly
yum install texinfo.x86_64
apt-get install texinfo.x86_64

mkdir /share/apps/configrepo
cd /share/apps/configrepo
wget http://www2.fizik.usm.my/configrepo/howto/fftw/fftw-3.3.4.tar.gz
tar -zxvf fftw-3.3.4.tar.gz
cp -r fftw-3.3.4 fftw-3.3.4_intel
cd fftw-3.3.4_intel
make distclean


#worked
#./configure --prefix=/share/apps/fftw-3.3.4/intel --with-g77-wrappers  --enable-threads --enable-openmp CC=/share/apps/intel/impi/4.1.0.024/bin64/mpicc  CXX='/share/apps/intel/impi/4.1.0.024/bin64/mpiicpc' CPP='/share/apps/intel/impi/4.1.0.024/bin64/mpiicpc -E' CXXCPP='/share/apps/intel/impi/4.1.0.024/bin64/mpiicpc -E' F77=ifort FFLAGS='-O3 -xSSE4.2 -ip -mp1 -m64 -shared-intel' FC=ifort  CFLAGS='-L/share/apps/intel/impi/4.1.0.024/lib64 -I/share/apps/intel/impi/4.1.0.024/include' --enable-shared --enable-float 

./configure --with-g77-wrappers --enable-threads --enable-openmp CC=/share/apps/openmpi-1.8.5/intel/bin/mpicc  FC=/share/apps/openmpi-1.8.5/intel/bin/mpif90 F77=/share/apps/openmpi-1.8.5/intel/bin/mpif77 MPICC=/share/apps/openmpi-1.8.5/intel/bin/mpicc --prefix=/share/apps/fftw-3.3.4/intel --enable-mpi CFLAGS='-L/share/apps/openmpi-1.8.5/intel/lib -lmpi -I/share/apps/openmpi-1.8.5/intel/include'

-lstdc++

./configure --with-g77-wrappers --enable-threads --enable-openmp CC=/share/apps/openmpi-1.8.5/intel/bin/mpicc  FC='ifort' F77=ifort MPICC=/share/apps/openmpi-1.8.5/intel/bin/mpicc --prefix=/share/apps/fftw-3.3.4/intel --enable-mpi 


./configure --prefix=/share/apps/fftw-3.3.4/intel --with-g77-wrappers  --enable-threads --enable-openmp CC=/share/apps/intel/impi/4.1.0.024/bin64/mpicc  CXX='/share/apps/intel/impi/4.1.0.024/bin64/mpiicpc' CPP='/share/apps/intel/impi/4.1.0.024/bin64/mpiicpc -E' CXXCPP='/share/apps/intel/impi/4.1.0.024/bin64/mpiicpc -E' F77=ifort FFLAGS='-O3 -xSSE4.2 -ip -mp1 -m64 -shared-intel' FC=ifort  CFLAGS='-L/share/apps/intel/impi/4.1.0.024/lib64 -I/share/apps/intel/impi/4.1.0.024/include' CPPFLAGS="-L/share/apps/intel/impi/4.1.0.024/lib64 -I/share/apps/intel/impi/4.1.0.024/include" --enable-shared --enable-float

./configure --prefix=/share/apps/fftw-3.3.4/intel --with-g77-wrappers  --enable-threads --enable-openmp --enable-shared --enable-float CC=/share/apps/intel/impi/4.1.0.024/bin64/mpicc CXX=icpc   FC=/share/apps/intel/impi/4.1.0.024/bin64/mpiifort CFLAGS='-L/share/apps/intel/impi/4.1.0.024/lib64 -I/share/apps/intel/impi/4.1.0.024/include' F77='ifort' FCLAGS='-L/share/apps/intel/impi/4.1.0.024/lib64 -I/share/apps/intel/impi/4.1.0.024/include' FFLAGS='-O3 -xSSE4.2 -ip -mp1 -m64 -shared-intel -L/share/apps/intel/impi/4.1.0.024/lib64 -I/share/apps/intel/impi/4.1.0.024/include'


#./configure --with-g77-wrappers --enable-threads --enable-openmp CC="icc"  FC='ifort' MPICC=/share/apps/intel/impi/4.1.0.024/intel64/bin/mpiicc --prefix=/share/apps/fftw-3.3.4/intel --enable-mpi CFLAGS='-L/share/apps/openmpi-1.8.5/intel/lib -lmpi -I/share/apps/openmpi-1.8.5/intel/include -lstdc++'

#./configure --with-g77-wrappers --enable-threads --enable-openmp CC="icc"  FC='ifort' MPICC=/share/apps/mpich2/3.1.4/intel/bin/mpicc --prefix=/share/apps/fftw-3.3.4/intel --enable-mpi CFLAGS='-L/share/apps/mpich2/3.1.4/intel/lib -lmpi -I/share/apps/mpich2/3.1.4/intel/include' 
#-lstdc++'

#./configure --with-g77-wrappers --enable-mpi --enable-threads --enable-openmp CXX="/share/apps/mpich2/3.1.4/intel/bin/mpicxx" CC="/share/apps/mpich2/3.1.4/intel/bin/mpicc" CPP="/share/apps/mpich2/3.1.4/intel/bin/mpic++ -E" CXXCPP="/share/apps/mpich2/3.1.4/intel/bin/mpicxx -E" FC='ifort' --prefix=/share/apps/fftw-3.3.4/intel


make
# make check  # as user
make install  #exectute this as su
## make installcheck  #execute this as user



