# Common flags
##############
#
# -ffree-line-length-none : Needed for IRPF90 which produces long lines
# -lblas -llapack         : Link with libblas and liblapack libraries provided by the system
# -I .                    : Include the curent directory (Mandatory)
#
# --ninja                 : Allow the utilisation of ninja. (Mandatory)
# --align=32              : Align all provided arrays on a 32-byte boundary
#
#
[COMMON]
FC           : gfortran -ffree-line-length-none -I . -g -fPIC
LAPACK_LIB   : -llapack -lblas
IRPF90       : irpf90
IRPF90_FLAGS : --ninja --align=32 --assert

# Global options
################
#
# 1 : Activate
# 0 : Deactivate
#
[OPTION]
MODE    : DEBUG      ; [ OPT | PROFILE | DEBUG ] : Chooses the section below
CACHE   : 0          ; Enable cache_compile.py
OPENMP  : 1          ; Append OpenMP flags

# Optimization flags
####################
#
# -Ofast                  : Disregard strict standards compliance. Enables all -O3 optimizations.
#                           It also enables optimizations that are not valid
#                           for all standard-compliant programs.  It turns on
#                           -ffast-math and the Fortran-specific
#                           -fno-protect-parens and -fstack-arrays.
[OPT]
FCFLAGS : -Ofast -march=native


# Profiling flags
#################
#
[PROFILE]
FC      : -p -g
FCFLAGS : -Ofast  -fimplicit-none


# Debugging flags
#################
#
# -fcheck=all  : Checks uninitialized variables,  array subscripts, etc...
# -g           : Extra debugging information
#
[DEBUG]
FCFLAGS : -Ofast -fcheck=all -g -Waliasing -Wampersand -Wconversion -Wsurprising -Wintrinsics-std -Wno-tabs -Wintrinsic-shadow -Wline-truncation -Wreal-q-constant


# OpenMP flags
#################
#
[OPENMP]
FC           : -fopenmp
IRPF90_FLAGS : --openmp