Files
TRIMSP/fortran/Makefile
T
2026-06-19 17:14:53 +02:00

63 lines
1.8 KiB
Makefile

# Makefile for trimspNL
#
# 17-Jun-2002 TP, use standard f77 code; use ranlux random number
# generator of the CERN mathlib
# 4-Feb-2013 ZS, clean up makefile and include random number generator
# in the code. Use gfortran which is now a standard part of gcc.
# 18-Jun-2026 ZS, add explicit release/debug/profile build modes.
# 19-Jun-2026 ZS, add optional random number generators to improve speed
FC = gfortran
PROGRAM = trimspNL
SOURCE = trimspNL.F
CC = gcc
# Common fixed-form Fortran settings.
# .F files are preprocessed by gfortran; keep -std=gnu for legacy code.
# -ffixed-line-length-none avoids accidental truncation after column 72.
DIALECT = -std=gnu
COMMON_FLAGS = $(DIALECT) -ffixed-line-length-none -mcmodel=medium
WARN =
DEBUG =
OPT = -O3
prefix ?= /usr/local
CFLAGS ?= -O3 -Wall -Wextra
RNG_OBJS = rng_pcg32.o rng_xoshiro256starstar.o
FCFLAGS = $(COMMON_FLAGS) $(WARN) $(DEBUG) $(OPT)
PROFILE_FLAGS = $(COMMON_FLAGS) $(WARN) -O0 -g -pg \
-fno-omit-frame-pointer
DEBUG_FLAGS = $(COMMON_FLAGS) -O0 -g -Wall -Wextra -Wsurprising \
-fcheck=all -fbacktrace -ffpe-trap=invalid,zero,overflow
all: release
release : $(PROGRAM)
$(PROGRAM) : $(SOURCE) $(RNG_OBJS)
$(FC) $(FCFLAGS) -o $@ trimspNL.F $(RNG_OBJS)
rng_pcg32.o : rng_pcg32.c
$(CC) $(CFLAGS) -c -o $@ $<
rng_xoshiro256starstar.o : rng_xoshiro256starstar.c
$(CC) $(CFLAGS) -c -o $@ $<
$(PROGRAM)-debug : $(SOURCE) $(RNG_OBJS)
$(FC) $(DEBUG_FLAGS) -o $@ $(SOURCE) $(RNG_OBJS)
$(PROGRAM)-profile : $(SOURCE) $(RNG_OBJS)
$(FC) $(PROFILE_FLAGS) -o $@ trimspNL.F $(RNG_OBJS)
$(PROGRAM)-static : $(SOURCE) $(RNG_OBJS)
$(FC) $(FCFLAGS) -static -o $@ trimspNL.F $(RNG_OBJS)
clean:
rm -f *.o *~ \#* .#* trimspNL trimspNL-debug trimspNL-profile \
trimspNL-static gmon.out
install:
mv $(PROGRAM) $(prefix)/bin/.