Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion applications/lfric_atm/build/fortran/crayftn.mk
Original file line number Diff line number Diff line change
Expand Up @@ -10,4 +10,4 @@ $(info Project specials for Cray compiler)

export FFLAGS_UM_PHYSICS = -s real64

include $(PROJECT_DIR)/build/fortran/crayftn/$(PROFILE).mk
include $(PROJECT_DIR)/build/fortran/crayftn/$(PROFILE).mk
188 changes: 152 additions & 36 deletions applications/linear_model/Makefile
Original file line number Diff line number Diff line change
@@ -1,15 +1,19 @@
##############################################################################
# (c) Crown copyright 2023-2024 Met Office. All rights reserved.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Im not sure what the policy is but I think the start date here should not change.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The makefile was copied from lfric_atm which has a start date of 2017. Happy to be advised by the code reviewer.

# (c) Crown copyright 2017-2026 Met Office. All rights reserved.
# The file LICENCE, distributed with this code, contains details of the terms
# under which the code may be used.
##############################################################################

PROJECT_NAME = linear_model

export PROFILE ?= fast-debug

# Select option for PSyclone transformation. Select "none" for no transformation.
export PSYCLONE_TRANSFORMATION ?= minimum

# This makefile is almost identical to the lfric_atm makefile, but with
# additions for the linear code.

# This top level makefile is very order sensitive. Source code extraction and
# generation must happen in a certain order. Due to this we turn off
# multithreading for this file only. Any called recursively (i.e. with $(MAKE))
Expand All @@ -19,63 +23,86 @@ export PSYCLONE_TRANSFORMATION ?= minimum

export PROJECT_DIR := $(realpath $(dir $(lastword $(MAKEFILE_LIST))))

# The lfric_atm application project directory is used for the
# optimisation options.
# This is because it must be possible for the linear_model code to be in
# the same exectuable as the nonlinear lfric_atm code, as is done in jedi.
# Therefore the linear_model uses exactly the same optimisation
# options as lfric_atm. Pointing to the lfric_atm options
# means that the linear_model is always aligned with lfric_atm, even
# if the lfric_atm options are updated.
export LFRIC_ATM_DIR := $(APPS_ROOT_DIR)/applications/lfric_atm

export EXTERNAL_DYNAMIC_LIBRARIES = shum
Comment thread
ss421 marked this conversation as resolved.

# List of functions from shumlib that may be used by developers during debugging
export IGNORE_DEPENDENCIES = c_shum_byteswap \
f_shum_field_mod \
f_shum_file_mod \
f_shum_is_nan_mod \
f_shum_is_inf_mod \
f_shum_is_denormal_mod

export EXTRA_ROSE_META = jules
export META_DIR = $(WORKING_DIR)/../rose-meta
export ROSE_META_DIRS = $(APPS_ROOT_DIR)/rose-meta $(META_DIR)

# The physics components are extracted and built, even though they are not
# actually used by the linear_model app. This is to ensure that the code runs
# with the #ifdef UM_PHYSICS set to true, hence enabling both the linear
# and nonlinear lfric_atm code to be run in the same executable.
# Note - socrates_interface must come before jules_interface as there are dependencies on each other.
export INTERNAL_DEPENDENCIES = $(CORE_ROOT_DIR)/infrastructure \
$(CORE_ROOT_DIR)/components/driver \
$(CORE_ROOT_DIR)/components/science \
$(CORE_ROOT_DIR)/components/inventory \
$(CORE_ROOT_DIR)/components/lfric-xios \
$(APPS_ROOT_DIR)/science/gungho \
$(APPS_ROOT_DIR)/science/linear
$(APPS_ROOT_DIR)/science/shared \
$(APPS_ROOT_DIR)/interfaces/socrates_interface \
$(APPS_ROOT_DIR)/interfaces/jules_interface \
$(APPS_ROOT_DIR)/interfaces/physics_schemes_interface

META_VN ?= HEAD
META_FILE_DIR = $(PROJECT_DIR)/rose-meta/lfric-$(PROJECT_NAME)/$(META_VN)
META_VN ?= HEAD
export META_FILE_DIR = $(PROJECT_DIR)/rose-meta/lfric-$(PROJECT_NAME)/$(META_VN)

# Check PSyclone transformation option is valid
ifneq ("$(PSYCLONE_TRANSFORMATION)","none")
export OPTIMISATION_PATH ?= $(wildcard optimisation/$(PSYCLONE_TRANSFORMATION))
export OPTIMISATION_PATH ?= $(wildcard $(LFRIC_ATM_DIR)/optimisation/$(PSYCLONE_TRANSFORMATION))
ifeq ("$(wildcard $(OPTIMISATION_PATH)/psykal/global.py)","")
$(error PSyclone transformation dir "$(PSYCLONE_TRANSFORMATION)" does not have a global.py script)
endif
endif

.PHONY: default
default: build

.PHONY: documentation doc docs
documentation doc docs: document-api
$(Q)echo > /dev/null

include $(CORE_ROOT_DIR)/infrastructure/build/lfric.mk
include $(INTERNAL_DEPENDENCIES:=/build/import.mk)
include build/project.mk

##############################################################################
# Documentation
#
.PHONY: document-api
document-api: PROJECT = linear_model
document-api: DOCUMENT_DIR ?= $(PROJECT_DIR)/documents/api
document-api: CONFIG_DIR = documentation
document-api: SOURCE_DIR = source
document-api: WORKING_DIR := $(WORKING_DIR)/api
document-api: api-documentation
# Include transmute list only if not using minimum or no transformations
ifeq ($(filter "$(PSYCLONE_TRANSFORMATION)", "none" "minimum"),)
include build/psyclone_transmute_file_list.mk
endif

##############################################################################
# Build
#
.PHONY: build
build: export BIN_DIR ?= $(PROJECT_DIR)/bin
build: export CXX_LINK = TRUE
build: export PROGRAMS := $(basename $(notdir $(shell find source -maxdepth 1 -name '*.[Ff]90' -print)))
build: export CXX_LINK = YES
build: export PROGRAMS := $(basename $(notdir $(shell find source -maxdepth 1 -name '*.[Ff]90' -exec egrep -l "^\s*program" {} \;)))
build: export PROJECT = $(PROJECT_NAME)
build: export SCRATCH_DIR := $(WORKING_DIR)/..
build: export WORKING_DIR := $(WORKING_DIR)

build: export LDFLAGS_GROUPS = OPENMP
ifeq "$(PROFILE)" "full-debug"
build: export FFLAG_GROUPS = OPENMP DEBUG WARNINGS INIT RUNTIME NO_OPTIMISATION FORTRAN_STANDARD
build: export FFLAG_GROUPS = OPENMP DEBUG WARNINGS INIT RUNTIME NO_OPTIMISATION
else ifeq "$(PROFILE)" "fast-debug"
build: export FFLAG_GROUPS = OPENMP DEBUG WARNINGS FASTD_INIT FASTD_RUNTIME SAFE_OPTIMISATION FORTRAN_STANDARD
# Use fast-debug environment vars from build/fortran/*.mk configs
build: export FFLAG_GROUPS = OPENMP DEBUG WARNINGS FASTD_INIT FASTD_RUNTIME SAFE_OPTIMISATION
else ifeq "$(PROFILE)" "production"
build: export FFLAG_GROUPS = OPENMP DEBUG WARNINGS RISKY_OPTIMISATION
else
Expand All @@ -88,6 +115,25 @@ build: ALWAYS
$(Q)for SUBPROJECT in $(INTERNAL_DEPENDENCIES) ; do \
$(MAKE) $(QUIET_ARG) -f $$SUBPROJECT/build/import.mk ; done
$(call MESSAGE,========================================)
$(call MESSAGE,Extracting coupled_interface component)
$(call MESSAGE,========================================)
$Q$(MAKE) $(QUIET_ARG) -f $(LFRIC_BUILD)/extract.mk \
SOURCE_DIR=$(APPS_ROOT_DIR)/interfaces/coupled_interface/source
$(call MESSAGE,========================================)
$(call MESSAGE,Extracting Gungho dynamical core)
$(call MESSAGE,========================================)
$Q$(MAKE) $(QUIET_ARG) -f $(LFRIC_BUILD)/extract.mk \
SOURCE_DIR=$(APPS_ROOT_DIR)/science/gungho/source
$(call MESSAGE,========================================)
$(call MESSAGE,Extracting Linear)
$(call MESSAGE,========================================)
$Q$(MAKE) $(QUIET_ARG) -f $(LFRIC_BUILD)/extract.mk \
SOURCE_DIR=$(APPS_ROOT_DIR)/science/linear/source
$(call MESSAGE,========================================)
$(call MESSAGE,Extracting UM physics )
$(call MESSAGE,========================================)
$Q$(MAKE) $(QUIET_ARG) -f $(APPS_ROOT_DIR)/build/extract/extract_physics.mk
$(call MESSAGE,========================================)
$(call MESSAGE,Extracting $(PROJECT_NAME))
$(call MESSAGE,========================================)
$Q$(MAKE) $(QUIET_ARG) -f $(LFRIC_BUILD)/extract.mk \
Expand All @@ -96,19 +142,59 @@ build: ALWAYS
$(call MESSAGE,Extracting External Rose Metadata)
$(call MESSAGE,========================================)
$Q$(MAKE) $(QUIET_ARG) -f $(APPS_ROOT_DIR)/build/extract/extract_meta.mk
$(call MESSAGE,=========================================================)
$(call MESSAGE,========================================)
$(call MESSAGE,Generating $(PROJECT) namelist loaders)
$(call MESSAGE,=========================================================)
$(call MESSAGE,========================================)
$Q$(MAKE) $(QUIET_ARG) -f $(LFRIC_BUILD)/configuration.mk \
PROJECT=$(PROJECT) \
SOURCE_DIR=source \
SOURCE_DIR=$(APPS_ROOT_DIR)/science/gungho/source \
META_FILE_DIR=$(META_FILE_DIR)
$(call MESSAGE,========================================)
$(call MESSAGE,PSycloning interface components)
$(call MESSAGE,========================================)
$Q$(MAKE) $(QUIET_ARG) -f $(LFRIC_BUILD)/psyclone/psyclone_psykal.mk \
SOURCE_DIR=$(APPS_ROOT_DIR)/interfaces/coupled_interface/source
$Q$(MAKE) $(QUIET_ARG) -f $(LFRIC_BUILD)/psyclone/psyclone_psykal.mk \
SOURCE_DIR=$(APPS_ROOT_DIR)/interfaces/jules_interface/source
$Q$(MAKE) $(QUIET_ARG) -f $(LFRIC_BUILD)/psyclone/psyclone_psykal.mk \
SOURCE_DIR=$(APPS_ROOT_DIR)/interfaces/socrates_interface/source
$Q$(MAKE) $(QUIET_ARG) -f $(LFRIC_BUILD)/psyclone/psyclone_psykal.mk \
SOURCE_DIR=$(APPS_ROOT_DIR)/interfaces/physics_schemes_interface/source
$(call MESSAGE,========================================)
$(call MESSAGE,PSycloning Gungho dynamical core)
$(call MESSAGE,========================================)
$Q$(MAKE) $(QUIET_ARG) -f $(LFRIC_BUILD)/psyclone/psyclone_psykal.mk \
SOURCE_DIR=$(APPS_ROOT_DIR)/science/gungho/source
$(call MESSAGE,========================================)
$(call MESSAGE,PSycloning Linear)
$(call MESSAGE,========================================)
$Q$(MAKE) $(QUIET_ARG) -f $(LFRIC_BUILD)/psyclone/psyclone_psykal.mk \
SOURCE_DIR=$(APPS_ROOT_DIR)/science/linear/source
$(call MESSAGE,========================================)
$(call MESSAGE,PSycloning $(PROJECT_NAME))
$(call MESSAGE,========================================)
$Q$(MAKE) $(QUIET_ARG) -f $(LFRIC_BUILD)/psyclone/psyclone_psykal.mk \
SOURCE_DIR=source \
OPTIMISATION_PATH=$(OPTIMISATION_PATH)
SOURCE_DIR=source
$(call MESSAGE,========================================)
$(call MESSAGE,Preprocess and PSyclone Transmute)
$(call MESSAGE,========================================)
# Note depending on site target requirements, either all source or specific source will be affected
# See application overrides and files exported there
$Q$(MAKE) $(QUIET_ARG) -f $(APPS_ROOT_DIR)/interfaces/build/pre_process_phys.mk \
SOURCE_DIR=$(WORKING_DIR) \
PSYCLONE_PHYSICS_FILES="$(PSYCLONE_PHYSICS_FILES)" \
PSYCLONE_DIRECTORIES="$(PSYCLONE_DIRECTORIES)" \
PSYCLONE_PHYSICS_EXCEPTION="$(PSYCLONE_PHYSICS_EXCEPTION)"
$Q$(MAKE) $(QUIET_ARG) -f $(APPS_ROOT_DIR)/interfaces/build/psyclone_transmute_pass.mk \
SOURCE_DIR=$(WORKING_DIR) \
OPTIMISATION_PATH_PSY=$(OPTIMISATION_PATH) \
PSYCLONE_PASS_NO_SCRIPT="$(PSYCLONE_PASS_NO_SCRIPT)"
$Q$(MAKE) $(QUIET_ARG) -f $(APPS_ROOT_DIR)/interfaces/build/psyclone_transmute.mk \
SOURCE_DIR=$(WORKING_DIR) \
OPTIMISATION_PATH_PSY=$(OPTIMISATION_PATH) \
PSYCLONE_PHYSICS_FILES="$(PSYCLONE_PHYSICS_FILES)" \
PSYCLONE_PASS_NO_SCRIPT="$(PSYCLONE_PASS_NO_SCRIPT)" \
PSYCLONE_DIRECTORIES="$(PSYCLONE_DIRECTORIES)" \
PSYCLONE_PHYSICS_EXCEPTION="$(PSYCLONE_PHYSICS_EXCEPTION)"
$(call MESSAGE,=========================================================)
$(call MESSAGE,Analysing $(PROJECT) build dependencies)
$(call MESSAGE,=========================================================)
Expand All @@ -118,15 +204,45 @@ build: ALWAYS
$(call MESSAGE,=========================================================)
$Q$(MAKE) $(QUIET_ARG) -C $(WORKING_DIR) -f $(LFRIC_BUILD)/compile.mk


##############################################################################
# Pat_build step - This runs after the build step as relies on exe

# Pass $(PROJECT_NAME) which is exe name linear_model which pat_report needs
pat_build: build
$(call MESSAGE,=========================================================)
$(call MESSAGE, Begin Pat Build of $(PROJECT_NAME) executable)
$(call MESSAGE,=========================================================)
bash $(PAT_BUILD_PATH) $(PROJECT_NAME)
$(call MESSAGE,=========================================================)
$(call MESSAGE, Pat Build of $(PROJECT_NAME) complete as $(PROJECT_NAME)+pat)
$(call MESSAGE,=========================================================)

##############################################################################
# Unit tests
#
unit-tests:
$(call MESSAGE,Testing,"There are no unit tests.")


##############################################################################
# Integration tests
#
integration-tests:
$(call MESSAGE,Testing,"There are no integration tests.")


##############################################################################
# Clean
#
.PHONY: clean
clean: ALWAYS
$(call MESSAGE,Removing,"$(PROJECT_NAME) work space")
$(Q)-if [ $(WORKING_DIR) != *[\*]* ] && [ -d $(WORKING_DIR) ] ; then rm -r $(WORKING_DIR) ; fi
$(call MESSAGE,Removing,"$(PROJECT_NAME) documents")
$(Q)if [ -d documents ] ; then rm -r documents; fi
$(call MESSAGE,Removing,"$(PROJECT_NAME) binaries")
clean: partial-clean
$(call MESSAGE,Removing,"UM work space")
$(Q)-rm -r $(WORKING_DIR)

.PHONY: partial-clean pclean
partial-clean pclean: ALWAYS
$(call MESSAGE,Removing,"LFRic atmosphere workspace")
$(Q)-rm -r $(WORKING_DIR)
$(call MESSAGE,Removing,"LFRic atmosphere binaries")
$(Q)-if [ -d bin ] ; then rm -r bin ; fi
$(Q)-if [ -d test ] ; then rm -r test ; fi
45 changes: 45 additions & 0 deletions applications/linear_model/build/compile_options.mk
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
##############################################################################
# (c) Crown copyright 2017-2026 Met Office. All rights reserved.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

If its a new file - should it just be 2026?

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Not sure. It was copied from lfric_atm, which started with 2017. Happy to be advised by code reviewer.

# The file LICENCE, distributed with this code, contains details of the terms
# under which the code may be used.
##############################################################################

# NOTE: Import of compile options from LFRic infrastructure is temporarily
# suspended here as a workaround for #2340 in which application of the
# -qoverride-limits option was preventing compilation of a UKCA module.
# include $(LFRIC_BUILD)/compile_options.mk

$(info UM physics specific compile options)

include $(PROJECT_DIR)/build/fortran/$(FORTRAN_COMPILER).mk

casim/%.o: private FFLAGS_EXTRA = $(FFLAGS_UM_PHYSICS)
ukca/%.o: private FFLAGS_EXTRA = $(FFLAGS_UM_PHYSICS)
jules/%.o: private FFLAGS_EXTRA = $(FFLAGS_UM_PHYSICS)
socrates/%.o: private FFLAGS_EXTRA = $(FFLAGS_UM_PHYSICS)
legacy/%.o: private FFLAGS_EXTRA = $(FFLAGS_UM_PHYSICS)
AC_assimilation/%.o: private FFLAGS_EXTRA = $(FFLAGS_UM_PHYSICS)
aerosols/%.o: private FFLAGS_EXTRA = $(FFLAGS_UM_PHYSICS)
atmosphere_service/%.o: private FFLAGS_EXTRA = $(FFLAGS_UM_PHYSICS)
boundary_layer/%.o: private FFLAGS_EXTRA = $(FFLAGS_UM_PHYSICS)
carbon/%.o: private FFLAGS_EXTRA = $(FFLAGS_UM_PHYSICS)
convection/%.o: private FFLAGS_EXTRA = $(FFLAGS_UM_PHYSICS)
diffusion_and_filtering/%.o: private FFLAGS_EXTRA = $(FFLAGS_UM_PHYSICS)
dynamics/%.o: private FFLAGS_EXTRA = $(FFLAGS_UM_PHYSICS)
dynamics_advection/%.o: private FFLAGS_EXTRA = $(FFLAGS_UM_PHYSICS)
electric/%.o: private FFLAGS_EXTRA = $(FFLAGS_UM_PHYSICS)
free_tracers/%.o: private FFLAGS_EXTRA = $(FFLAGS_UM_PHYSICS)
gravity_wave_drag/%.o: private FFLAGS_EXTRA = $(FFLAGS_UM_PHYSICS)
idealised/%.o: private FFLAGS_EXTRA = $(FFLAGS_UM_PHYSICS)
large_scale_cloud/%.o: private FFLAGS_EXTRA = $(FFLAGS_UM_PHYSICS)
large_scale_precipitation/%.o: private FFLAGS_EXTRA = $(FFLAGS_UM_PHYSICS)
PWS_diagnostics/%.o: private FFLAGS_EXTRA = $(FFLAGS_UM_PHYSICS)
radiation_control/%.o: private FFLAGS_EXTRA = $(FFLAGS_UM_PHYSICS)
stochastic_physics/%.o: private FFLAGS_EXTRA = $(FFLAGS_UM_PHYSICS)
tracer_advection/%.o: private FFLAGS_EXTRA = $(FFLAGS_UM_PHYSICS)
%/limited_area_constants_mod.o: private FFLAGS_EXTRA = $(FFLAGS_INTEL_FIX_ARG)

$(info Disable warnings-turned-error caused by undeclared external functions - see ifort.mk)
%mpi_mod.o: private FFLAGS_EXTRA = $(FFLAGS_INTEL_EXTERNALS)
socrates/src/radiance_core/%.o: private FFLAGS_EXTRA = $(FFLAGS_INTEL_EXTERNALS)
socrates/src/interface_core/%.o: private FFLAGS_EXTRA = $(FFLAGS_INTEL_EXTERNALS)
13 changes: 13 additions & 0 deletions applications/linear_model/build/fortran/crayftn.mk
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
##############################################################################
# (c) Crown copyright 2017 Met Office. All rights reserved.
# The file LICENCE, distributed with this code, contains details of the terms
# under which the code may be used.
##############################################################################
# Various things specific to the Cray Fortran compiler.
##############################################################################

$(info Project specials for Cray compiler)

export FFLAGS_UM_PHYSICS = -s real64

include $(PROJECT_DIR)/build/fortran/crayftn/$(PROFILE).mk
55 changes: 55 additions & 0 deletions applications/linear_model/build/fortran/crayftn/fast-debug.mk
Original file line number Diff line number Diff line change
@@ -0,0 +1,55 @@
##############################################################################
# (c) Crown copyright 2025 Met Office. All rights reserved.
# The file LICENCE, distributed with this code, contains details of the terms
# under which the code may be used.
##############################################################################
##############################################################################
# Various things specific to fast-debug lfric_atm when using the
# Cray Fortran compiler.
# To override flags specified in LFRic Core, use
# FFLAGS_SAFE_OPTIMISATION, to add an additional flag to what is specified
# in Core, use FFLAGS_EXTRA. If you need to add debugging flags to a module,
# modify FFLAGS_DEBUG for the target module.
# All flag modification should be `private` so they are not inherited by
# submodules.
##############################################################################

# ==========================================================================
# NON-DEBUG FLAGS
# ==========================================================================
# UKCA
%ukca_emiss_mode_mod.o: private FFLAGS_SAFE_OPTIMISATION = -O0
%ukca_step_control_mod.o: private FFLAGS_SAFE_OPTIMISATION = -O0

# UM
%parcel_ascent_5a.o: private FFLAGS_EXTRA = $(FFLAGS_UM_PHYSICS) -hvector0

# LFRic Apps
%aerosol_ukca_alg_mod_psy.o: private FFLAGS_SAFE_OPTIMISATION = -O0
%bl_exp_alg_mod_psy.o: private FFLAGS_SAFE_OPTIMISATION = -O0
%bl_imp_alg_mod_psy.o: private FFLAGS_SAFE_OPTIMISATION = -O0
%conv_comorph_alg_mod_psy.o: private FFLAGS_SAFE_OPTIMISATION = -O0
%conv_comorph_kernel_mod.o: private FFLAGS_SAFE_OPTIMISATION = -O0
%conv_gr_alg_mod_psy.o: private FFLAGS_SAFE_OPTIMISATION = -O0
%gungho_model_mod.o: private FFLAGS_SAFE_OPTIMISATION = -O0
%init_aerosol_fields_alg_mod_psy.o: private FFLAGS_SAFE_OPTIMISATION = -O0
%jules_extra_kernel_mod.o: private FFLAGS_SAFE_OPTIMISATION = -O0
large_scale_precipitation/%.o: private FFLAGS_SAFE_OPTIMISATION = -O2 -hfp0 -hflex_mp=strict

# ==========================================================================
# DEBUG FLAGS
# ==========================================================================
# UKCA
%ukca_emiss_mode_mod.o: private FFLAGS_DEBUG = -G0
%ukca_step_control_mod.o: private FFLAGS_DEBUG = -G0

# LFRic Apps
%aerosol_ukca_alg_mod_psy.o: private FFLAGS_DEBUG = -G0
%bl_exp_alg_mod_psy.o: private FFLAGS_DEBUG = -G0
%bl_imp_alg_mod_psy.o: private FFLAGS_DEBUG = -G0
%conv_comorph_alg_mod_psy.o: private FFLAGS_DEBUG = -G0
%conv_comorph_kernel_mod.o: private FFLAGS_DEBUG = -G0
%conv_gr_alg_mod_psy.o: private FFLAGS_DEBUG = -G0
%gungho_model_mod.o: private FFLAGS_DEBUG = -G0
%init_aerosol_fields_alg_mod_psy.o: private FFLAGS_DEBUG = -G0
%jules_extra_kernel_mod.o: private FFLAGS_DEBUG = -G0
Loading
Loading