From b20bf92abae5e03cc3bb16ecda7450a4346876c6 Mon Sep 17 00:00:00 2001 From: Leon-Degel-Koehn Date: Thu, 22 Jan 2026 18:02:10 +0100 Subject: [PATCH] Add LFortran as compiler to build options Provides the necessary changes to use LFortran as the compiler for this project to the extend that it currently can. Please note the corresponding issue to gain further information on how to use this. It provides a compilation script and references the required mpi wrapper library. --- cmake/SetBuildOptions.cmake | 7 ++++++- src/externals/gptl/CMakeLists.txt | 2 +- src/externals/gptl/Makefile | 1 - src/externals/gptl/perf_utils.F90 | 3 --- 4 files changed, 7 insertions(+), 6 deletions(-) diff --git a/cmake/SetBuildOptions.cmake b/cmake/SetBuildOptions.cmake index c6b932369c..e70ec0456b 100644 --- a/cmake/SetBuildOptions.cmake +++ b/cmake/SetBuildOptions.cmake @@ -12,12 +12,12 @@ endif() # Check if MPI is present. This should succeed if # the compilers were set to mpifort and mpicc. -find_package(MPI REQUIRED) # Set default compiler = GNU if none was specified. if(NOT COMPILER) set(COMPILER "${CMAKE_Fortran_COMPILER_ID}" CACHE STRING "Choose compiler toolchain." FORCE) set_property(CACHE COMPILER PROPERTY STRINGS "GNU" "Intel") + set_property(CACHE COMPILER PROPERTY STRINGS "GNU" "Intel" "LFortran") endif() # Set compiler specific flags. @@ -44,6 +44,11 @@ elseif(COMPILER STREQUAL "Intel" OR COMPILER STREQUAL "IntelLLVM") set(CMAKE_Fortran_FLAGS_DEBUG "-O0 -g -fpe0 -check all") endif() set(CMAKE_Fortran_FLAGS_RELEASE "-O2 -debug minimal") +elseif(COMPILER STREQUAL "LFortran") + add_compile_definitions(CPRLFORTRAN) + # There is an issue, some modules require --cpp as a flag in their compilation + # some flat out break, if we put --cpp + # set(CMAKE_Fortran_FLAGS "--cpp") else() message(FATAL_ERROR "COMPILER='${COMPILER}' is not supported.") endif() diff --git a/src/externals/gptl/CMakeLists.txt b/src/externals/gptl/CMakeLists.txt index f882ded14d..f9dbd7c3b1 100644 --- a/src/externals/gptl/CMakeLists.txt +++ b/src/externals/gptl/CMakeLists.txt @@ -9,7 +9,7 @@ SET(TIMING_INCLUDE_DIRS ${CMAKE_CURRENT_SOURCE_DIR} CACHE STRING "") INCLUDE_DIRECTORIES(${TIMING_INCLUDE_DIRS}) -ADD_DEFINITIONS(-DINCLUDE_CMAKE_FCI -DHAVE_MPI) +ADD_DEFINITIONS(-DINCLUDE_CMAKE_FCI) SET(SRCS_C GPTLget_memusage.c GPTLprint_memusage.c diff --git a/src/externals/gptl/Makefile b/src/externals/gptl/Makefile index 69372aea4e..8ea75c0f29 100644 --- a/src/externals/gptl/Makefile +++ b/src/externals/gptl/Makefile @@ -32,7 +32,6 @@ ifeq ($(strip $(MPILIB)), mpi-serial) else CC := $(MPICC) FC := $(MPIFC) - CPPDEFS += -DHAVE_MPI endif ifdef CPRE FPPDEFS := $(patsubst -D%,$(CPRE)%,$(CPPDEFS)) diff --git a/src/externals/gptl/perf_utils.F90 b/src/externals/gptl/perf_utils.F90 index 3aa29e80fb..d0430ded1c 100644 --- a/src/externals/gptl/perf_utils.F90 +++ b/src/externals/gptl/perf_utils.F90 @@ -164,9 +164,6 @@ SUBROUTINE shr_sys_flush(unit) call flush(unit) #endif #endif -#if (defined AIX) - call flush_(unit) -#endif END SUBROUTINE shr_sys_flush