Skip to content

Commit a077242

Browse files
add support for all support gfortran input types (there are a lot.)
two variables define the two classes of, one that uses cpp, one that does not use cpp. their suffixes also may change the language (eg, .F90 is the cpp-processed Fortran-90 suffix, where as .f08 is the no-cpp Fortran-2008 suffix.) update the current .f/.F rules to match on more suffixes and add the missing parts for some. to support building libgfortran, add ${FOPTS.${.IMPSRC:T}} support like we do for C/C++, etc.
1 parent 6329a9c commit a077242

2 files changed

Lines changed: 54 additions & 20 deletions

File tree

share/mk/bsd.lib.mk

Lines changed: 43 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
# $NetBSD: bsd.lib.mk,v 1.425 2025/12/19 03:07:26 christos Exp $
1+
# $NetBSD: bsd.lib.mk,v 1.426 2026/01/18 08:30:33 mrg Exp $
22
# @(#)bsd.lib.mk 8.3 (Berkeley) 4/22/94
33

44
.include <bsd.init.mk>
@@ -154,9 +154,9 @@ SHLIB_FULLVERSION=${SHLIB_MAJOR}
154154
# add additional suffixes not exported.
155155
# .po is used for profiling object files.
156156
# .pico is used for PIC object files.
157-
.SUFFIXES: .out .a .ln .pico .po .go .o .s .S .c .cc .cpp .cxx .C .m .F .f .r .y .l .cl .p .h
157+
.SUFFIXES: .out .a .ln .pico .po .go .o .s .S .c .cc .cpp .cxx .C .m .r .y .l .cl .p .h
158158
.SUFFIXES: .sh .m4 .m
159-
159+
.SUFFIXES: ${_FORTRAN_SUFFIXES_NOCPP} ${_FORTRAN_SUFFIXES_CPP}
160160

161161
# Set PICFLAGS to cc flags for producing position-independent code,
162162
# if not already set.
@@ -298,34 +298,65 @@ LIBSTRIPSHLIBOBJS= yes
298298
${OBJCOPY} ${OBJCOPYLIBFLAGS} ${.TARGET}
299299
.endif
300300

301-
.f.o:
301+
${_FORTRAN_SUFFIXES_NOCPP:=.o}:
302+
${_MKTARGET_COMPILE}
303+
${COMPILE.f} ${FOPTS.${.IMPSRC:T}} ${.IMPSRC} ${OBJECT_TARGET}
304+
${CTFCONVERT_RUN}
305+
.if defined(LIBSTRIPFOBJS)
306+
${OBJCOPY} ${OBJCOPYLIBFLAGS} ${.TARGET}
307+
.endif
308+
309+
${_FORTRAN_SUFFIXES_NOCPP:=.po}:
310+
${_MKTARGET_COMPILE}
311+
${COMPILE.f} ${PROFFLAGS} ${FOPTS.${.IMPSRC:T}} ${PGFLAGS} ${.IMPSRC} ${OBJECT_TARGET}
312+
${CTFCONVERT_RUN}
313+
.if defined(LIBSTRIPFOBJS)
314+
${OBJCOPY} ${OBJCOPYLIBFLAGS} ${.TARGET}
315+
.endif
316+
317+
${_FORTRAN_SUFFIXES_NOCPP:=.go}:
318+
${_MKTARGET_COMPILE}
319+
${COMPILE.f} ${DEBUGFLAGS} ${FOPTS.${.IMPSRC:T}} -g ${.IMPSRC} -o ${.TARGET}
320+
321+
${_FORTRAN_SUFFIXES_NOCPP:=.pico}:
322+
${_MKTARGET_COMPILE}
323+
${COMPILE.f} ${FOPTS.${.IMPSRC:T}} ${PICFLAGS} ${.IMPSRC} -o ${.TARGET}
324+
.if defined(LIBSTRIPFOBJS)
325+
${OBJCOPY} ${OBJCOPYLIBFLAGS} ${.TARGET}
326+
.endif
327+
328+
${_FORTRAN_SUFFIXES_NOCPP:=.ln}:
329+
${_MKTARGET_COMPILE}
330+
@echo Skipping lint for Fortran libraries.
331+
332+
${_FORTRAN_SUFFIXES_CPP:=.o}:
302333
${_MKTARGET_COMPILE}
303-
${COMPILE.f} ${.IMPSRC} ${OBJECT_TARGET}
334+
${COMPILE.F} ${FOPTS.${.IMPSRC:T}} ${.IMPSRC} ${OBJECT_TARGET}
304335
${CTFCONVERT_RUN}
305336
.if defined(LIBSTRIPFOBJS)
306337
${OBJCOPY} ${OBJCOPYLIBFLAGS} ${.TARGET}
307338
.endif
308339

309-
.f.po:
340+
${_FORTRAN_SUFFIXES_CPP:=.po}:
310341
${_MKTARGET_COMPILE}
311-
${COMPILE.f} ${PROFFLAGS} ${PGFLAGS} ${.IMPSRC} ${OBJECT_TARGET}
342+
${COMPILE.F} ${PROFFLAGS} ${FOPTS.${.IMPSRC:T}} ${PGFLAGS} ${.IMPSRC} ${OBJECT_TARGET}
312343
${CTFCONVERT_RUN}
313344
.if defined(LIBSTRIPFOBJS)
314345
${OBJCOPY} ${OBJCOPYLIBFLAGS} ${.TARGET}
315346
.endif
316347

317-
.f.go:
348+
${_FORTRAN_SUFFIXES_CPP:=.go}:
318349
${_MKTARGET_COMPILE}
319-
${COMPILE.f} ${DEBUGFLAGS} -g ${.IMPSRC} -o ${.TARGET}
350+
${COMPILE.F} ${DEBUGFLAGS} ${FOPTS.${.IMPSRC:T}} -g ${.IMPSRC} -o ${.TARGET}
320351

321-
.f.pico:
352+
${_FORTRAN_SUFFIXES_CPP:=.pico}:
322353
${_MKTARGET_COMPILE}
323-
${COMPILE.f} ${PICFLAGS} ${.IMPSRC} -o ${.TARGET}
354+
${COMPILE.F} ${FOPTS.${.IMPSRC:T}} ${PICFLAGS} ${.IMPSRC} -o ${.TARGET}
324355
.if defined(LIBSTRIPFOBJS)
325356
${OBJCOPY} ${OBJCOPYLIBFLAGS} ${.TARGET}
326357
.endif
327358

328-
.f.ln:
359+
${_FORTRAN_SUFFIXES_CPP:=.ln}:
329360
${_MKTARGET_COMPILE}
330361
@echo Skipping lint for Fortran libraries.
331362

share/mk/sys.mk

Lines changed: 11 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
# $NetBSD: sys.mk,v 1.151 2026/01/07 16:56:46 christos Exp $
1+
# $NetBSD: sys.mk,v 1.152 2026/01/18 08:30:33 mrg Exp $
22
# @(#)sys.mk 8.2 (Berkeley) 3/21/94
33
#
44
# This file contains the basic rules for make(1) and is read first
@@ -7,7 +7,10 @@
77

88
unix?= We run NetBSD.
99

10-
.SUFFIXES: .a .o .ln .s .S .c .cc .cpp .cxx .C .f .F .r .p .l .y .sh
10+
.SUFFIXES: .a .o .ln .s .S .c .cc .cpp .cxx .C .r .p .l .y .sh
11+
_FORTRAN_SUFFIXES_NOCPP=.f .for .ftn .f90 .f95 .f03 .f08
12+
_FORTRAN_SUFFIXES_CPP= .F .FOR .fpp .FPP .FTN .F90 .F95 .F03 .F08
13+
.SUFFIXES: ${_FORTRAN_SUFFIXES_NOCPP} ${_FORTRAN_SUFFIXES_CPP}
1114

1215
.LIBS: .a
1316

@@ -155,22 +158,22 @@ YACC.y?= ${YACC} ${YFLAGS}
155158
rm -f ${.PREFIX}.o
156159

157160
# Fortran/Ratfor
158-
.f:
161+
${_FORTRAN_SUFFIXES_NOCPP}:
159162
${COMPILE_LINK.f} ${EXEC_TARGET} ${.IMPSRC} ${LDLIBS}
160-
.f.o:
163+
${_FORTRAN_SUFFIXES_NOCPP:=.o}:
161164
${COMPILE.f} ${.IMPSRC} ${OBJECT_TARGET}
162165
${CTFCONVERT_RUN}
163-
.f.a:
166+
${_FORTRAN_SUFFIXES_NOCPP:=.a}:
164167
${COMPILE.f} ${.IMPSRC}
165168
${AR} ${ARFLAGS} ${.TARGET} ${.PREFIX}.o
166169
rm -f ${.PREFIX}.o
167170

168-
.F:
171+
${_FORTRAN_SUFFIXES_CPP}:
169172
${COMPILE_LINK.F} ${EXEC_TARGET} ${.IMPSRC} ${LDLIBS}
170-
.F.o:
173+
${_FORTRAN_SUFFIXES_CPP:=.o}:
171174
${COMPILE.F} ${.IMPSRC} ${OBJECT_TARGET}
172175
${CTFCONVERT_RUN}
173-
.F.a:
176+
${_FORTRAN_SUFFIXES_CPP:=.a}:
174177
${COMPILE.F} ${.IMPSRC}
175178
${AR} ${ARFLAGS} ${.TARGET} ${.PREFIX}.o
176179
rm -f ${.PREFIX}.o

0 commit comments

Comments
 (0)