Home | History | Annotate | Line # | Download | only in libgfortran
      1  1.4  mrg #	$NetBSD: Makefile,v 1.4 2026/01/19 11:48:40 mrg Exp $
      2  1.1  mrg 
      3  1.1  mrg # XXX libgfortran also has a libcaf_single thing in here.
      4  1.1  mrg 
      5  1.4  mrg # XXX
      6  1.4  mrg NOLINT=	# defined
      7  1.4  mrg 
      8  1.1  mrg # This needs to be before bsd.init.mk
      9  1.1  mrg .if defined(BSD_MK_COMPAT_FILE)
     10  1.1  mrg .include <${BSD_MK_COMPAT_FILE}>
     11  1.1  mrg .endif
     12  1.1  mrg 
     13  1.1  mrg .include <bsd.init.mk>
     14  1.1  mrg 
     15  1.1  mrg LIB=		gfortran
     16  1.1  mrg 
     17  1.1  mrg # Match GCC 14.
     18  1.1  mrg SHLIB_MAJOR=	5
     19  1.1  mrg SHLIB_MINOR=	0
     20  1.1  mrg 
     21  1.1  mrg DIST=		${GCCDIST}
     22  1.1  mrg GNUHOSTDIST=    ${DIST}
     23  1.1  mrg GFORTRAN=	${DIST}/libgfortran
     24  1.1  mrg 
     25  1.1  mrg # These are earlier than included file paths, to avoid getting eg
     26  1.1  mrg # libbacktrace's read.c instead of io/read.c.
     27  1.1  mrg .PATH: ${DIST}/libgfortran
     28  1.1  mrg .PATH: ${DIST}/libgfortran/generated
     29  1.1  mrg .PATH: ${DIST}/libgfortran/intrinsics
     30  1.1  mrg .PATH: ${DIST}/libgfortran/runtime
     31  1.1  mrg .PATH: ${DIST}/libgfortran/io
     32  1.1  mrg .PATH: ${DIST}/libgfortran/ieee
     33  1.1  mrg .PATH: ${.CURDIR}/arch/${GCC_MACHINE_ARCH}
     34  1.1  mrg 
     35  1.1  mrg # remove prefixes, .inc and .h files
     36  1.1  mrg GFORTRAN_SRCS=	${G_libgfortran_la_SOURCES:C,^.*/,,:C,.*\.inc$,,:C,.*\.h$,,}
     37  1.1  mrg 
     38  1.1  mrg .include "../Makefile.gthr"
     39  1.1  mrg .include "${.CURDIR}/arch/${GCC_MACHINE_ARCH}/defs.mk"
     40  1.1  mrg .include "../libbacktrace/Makefile.sources"
     41  1.1  mrg 
     42  1.1  mrg GFORTRAN_BACKTRACE_SRCS=	${BACKTRACE_SRCS:backtrace.c=libbacktrace-backtrace.c}
     43  1.1  mrg 
     44  1.1  mrg BUILDSYMLINKS+= ${GNUHOSTDIST}/libbacktrace/backtrace.c libbacktrace-backtrace.c
     45  1.1  mrg 
     46  1.1  mrg # gcc builddir before libgcc
     47  1.1  mrg # libgcc builddir after libgcc
     48  1.1  mrg 
     49  1.1  mrg .if ${HAVE_QUADMATH} != no
     50  1.1  mrg CPPFLAGS_QUADMATH=-I${DIST}/libquadmath
     51  1.1  mrg .else
     52  1.1  mrg CPPFLAGS_QUADMATH=
     53  1.1  mrg .endif
     54  1.1  mrg 
     55  1.1  mrg .for _s in ${GFORTRAN_SRCS}
     56  1.1  mrg CPPFLAGS.${_s}+=	-I. \
     57  1.1  mrg 		-I${.CURDIR}/arch/${GCC_MACHINE_ARCH} \
     58  1.1  mrg 		-I${GFORTRAN} \
     59  1.1  mrg 		-I${GFORTRAN}/io \
     60  1.1  mrg 		-I${DIST}/gcc \
     61  1.1  mrg 		-I${DIST}/gcc/config \
     62  1.1  mrg 		${CPPFLAGS_QUADMATH} \
     63  1.1  mrg 		-I${DIST}/libgcc \
     64  1.1  mrg 		-I${DIST}/libbacktrace \
     65  1.1  mrg 		-I${DIST}/../lib/libbacktrace/arch/${GCC_MACHINE_ARCH} \
     66  1.1  mrg 		-I${.CURDIR}/arch/${GCC_MACHINE_ARCH}
     67  1.1  mrg .endfor
     68  1.1  mrg 
     69  1.1  mrg .for _s in ${GFORTRAN_BACKTRACE_SRCS}
     70  1.1  mrg CPPFLAGS.${_s}+=	-I. \
     71  1.1  mrg 		${BACKTRACE_CPPFLAGS}
     72  1.1  mrg .endfor
     73  1.1  mrg 
     74  1.1  mrg SRCS=		${GFORTRAN_SRCS} ${GFORTRAN_BACKTRACE_SRCS}
     75  1.1  mrg 
     76  1.1  mrg FFLAGS+=	-I. -fno-repack-arrays -fno-underscoring -I${.CURDIR}/arch/${GCC_MACHINE_ARCH}
     77  1.1  mrg 
     78  1.1  mrg LIBDPLIBS+=	m ${NETBSDSRCDIR}/lib/libm
     79  1.1  mrg .if ${HAVE_QUADMATH} != no
     80  1.1  mrg LIBDPLIBS+=	quadmath ${.CURDIR}/../libquadmath
     81  1.1  mrg .endif
     82  1.1  mrg 
     83  1.1  mrg DPSRCS+=	kinds.h kinds.inc c99_protos.inc fpu-target.inc \
     84  1.1  mrg 		selected_int_kind.inc selected_real_kind.inc
     85  1.1  mrg 
     86  1.1  mrg ${GFORTRAN_SRCS:M*.F90}: ${DPSRCS}
     87  1.1  mrg 
     88  1.1  mrg INTLIST='1 2 4 8 16'
     89  1.1  mrg REALLIST='4 8 10 16'
     90  1.1  mrg 
     91  1.1  mrg fpu-target.h: ${GFORTRAN}/${G_FPU_HOST_HEADER}
     92  1.1  mrg 	cp ${GFORTRAN}/${G_FPU_HOST_HEADER} $@
     93  1.1  mrg 
     94  1.1  mrg fpu-target.inc: fpu-target.h ${DIST}/gcc/fortran/libgfortran.h
     95  1.1  mrg 	${TOOL_GREP} -h '^#define GFC_FPE_' ${.ALLSRC} > ${.TARGET}
     96  1.1  mrg 
     97  1.1  mrg c99_protos.inc: ${GFORTRAN}/c99_protos.h
     98  1.1  mrg 	${TOOL_GREP} '^#' < ${.ALLSRC} > ${.TARGET} || rm ${.TARGET}
     99  1.1  mrg LIBS+=	${BACKENDOBJ}/libbackend.a
    100  1.1  mrg kinds.h: ${GFORTRAN}/mk-kinds-h.sh
    101  1.1  mrg 	${HOST_SH} ${GFORTRAN}/mk-kinds-h.sh \
    102  1.1  mrg 		    ${INTLIST} \
    103  1.1  mrg 		    ${REALLIST} \
    104  1.1  mrg 		    "${FC} ${FFLAGS}" \
    105  1.1  mrg 		    no > \
    106  1.1  mrg 	    ${.TARGET} || rm ${.TARGET}
    107  1.1  mrg 
    108  1.1  mrg kinds.inc: kinds.h ${GFORTRAN}/kinds-override.h
    109  1.1  mrg 	cat kinds.h ${GFORTRAN}/kinds-override.h | \
    110  1.1  mrg 		    ${TOOL_GREP} '^#' | \
    111  1.1  mrg 		    ${TOOL_GREP} -v include > \
    112  1.1  mrg 	    ${.TARGET} || rm ${.TARGET}
    113  1.1  mrg 
    114  1.1  mrg selected_int_kind.inc: ${GFORTRAN}/mk-sik-inc.sh
    115  1.1  mrg 	${HOST_SH} ${GFORTRAN}/mk-sik-inc.sh \
    116  1.1  mrg 		    ${INTLIST} \
    117  1.1  mrg 		    "${FC} ${FFLAGS}" > \
    118  1.1  mrg 	    ${.TARGET} || rm ${.TARGET}
    119  1.1  mrg 
    120  1.1  mrg selected_real_kind.inc: ${GFORTRAN}/mk-srk-inc.sh
    121  1.1  mrg 	${HOST_SH} ${GFORTRAN}/mk-srk-inc.sh \
    122  1.1  mrg 		    ${REALLIST} \
    123  1.1  mrg 		    "${FC} ${FFLAGS}" > \
    124  1.1  mrg 	    ${.TARGET} || rm ${.TARGET}
    125  1.1  mrg 
    126  1.1  mrg fpu.c: fpu-target.h
    127  1.1  mrg 
    128  1.1  mrg COPTS.date_and_time.c+=	${CC_WNO_FORMAT_TRUNCATION}
    129  1.1  mrg COPTS.list_read.c+=	-Wno-error=pointer-arith
    130  1.1  mrg COPTS.transfer.c+=	-Wno-error=pointer-arith
    131  1.1  mrg COPTS.write.c+=		-Wno-error=pointer-arith
    132  1.1  mrg 
    133  1.1  mrg # ieee_arithmetic needs ieee_exceptions.mod to be already built
    134  1.1  mrg ieee_arithmetic.o ieee_arithmetic.pico ieee_arithmetic.po ieee_arithmetic.go: ieee_exceptions.pico ieee_exceptions.po ieee_exceptions.o ieee_exceptions.go
    135  1.1  mrg 
    136  1.1  mrg # these .mod's gets built multiple times, so serialise those
    137  1.1  mrg .for _mod in ieee_arithmetic ieee_exceptions ieee_features
    138  1.1  mrg ${_mod}.mod: ${_mod}.o
    139  1.1  mrg ${_mod}.o: ${_mod}.pico
    140  1.1  mrg ${_mod}.pico: ${_mod}.po
    141  1.1  mrg ${_mod}.po: ${_mod}.go
    142  1.1  mrg .endfor
    143  1.1  mrg 
    144  1.1  mrg CLEANFILES+=	fpu-target.h fpu-target.inc c99_protos.inc \
    145  1.1  mrg 		kinds.h kinds.inc \
    146  1.1  mrg 		selected_int_kind.inc selected_real_kind.inc \
    147  1.1  mrg 		ieee_arithmetic.mod ieee_exceptions.mod ieee_features.mod
    148  1.1  mrg 
    149  1.1  mrg .for _f in ${G_i_matmul_c:C,^.*/,,}
    150  1.1  mrg FOPTS.${_f}+=	-ffast-math -ftree-vectorize -funroll-loops --param max-unroll-times=4
    151  1.1  mrg .endfor
    152  1.1  mrg 
    153  1.1  mrg #.if ${MACHINE} == "amd64"
    154  1.1  mrg .for _f in ${G_i_matmulavx128_c:C,^.*/,,}
    155  1.1  mrg FOPTS.${_f}+=	-ffast-math -ftree-vectorize -funroll-loops --param max-unroll-times=4 -mprefer-avx128
    156  1.1  mrg .endfor
    157  1.1  mrg #.endif
    158  1.1  mrg 
    159  1.1  mrg .for _f in ${G_i_matmull_c:C,^.*/,,}
    160  1.1  mrg FOPTS.${_f}+=	-funroll-loops
    161  1.1  mrg .endfor
    162  1.1  mrg 
    163  1.1  mrg .for _f in ${G_gfor_specific_src:C,^.*/,,}
    164  1.1  mrg FOPTS.${_f}+=	-fallow-leading-underscore -fbuilding-libgfortran
    165  1.1  mrg .endfor
    166  1.1  mrg 
    167  1.1  mrg .for _f in selected_real_kind.f90 selected_int_kind.f90
    168  1.1  mrg FOPTS.${_f}+=	-fallow-leading-underscore -fbuilding-libgfortran
    169  1.1  mrg .endfor
    170  1.1  mrg 
    171  1.1  mrg .for _f in ${G_gfor_ieee_src:C,^.*/,,}
    172  1.1  mrg FOPTS.${_f}+=	-Wno-unused-dummy-argument -Wno-c-binding-type -ffree-line-length-0 -fallow-leading-underscore -fsignaling-nans -fbuilding-libgfortran
    173  1.1  mrg .endfor
    174  1.1  mrg 
    175  1.1  mrg .for _f in ${G_gfor_ieee_helper_src:C,^.*/,,}
    176  1.1  mrg FOPTS.${_f}+=	-fsignaling-nans
    177  1.1  mrg .endfor
    178  1.1  mrg 
    179  1.1  mrg # Don't install these more than once.
    180  1.1  mrg .ifndef MLIBDIR
    181  1.1  mrg INCS=		${G_nodist_finclude_HEADERS}
    182  1.1  mrg INCSDIR=	${GCC_INCSDIR}/finclude
    183  1.1  mrg 
    184  1.1  mrg # This is where GCC looks for it.
    185  1.1  mrg FILES=		libgfortran.spec
    186  1.1  mrg FILESDIR=	${LIBDIR}
    187  1.1  mrg .endif
    188  1.1  mrg 
    189  1.2  mrg .if ${MACHINE} == "vax"
    190  1.2  mrg . for _f in unpack_i1.c unpack_i2.c unpack_i4.c unpack_i8.c unpack_r4.c unpack_r8.c unpack_c4.c unpack_c8.c
    191  1.2  mrg COPTS.${_f}+=	${CC_WNO_MAYBE_UNINITIALIZED}
    192  1.2  mrg . endfor
    193  1.2  mrg # Ugh infinity/nan stuff
    194  1.2  mrg . for _f in read.c erfc_scaled.c c99_functions.c trigd.c
    195  1.2  mrg COPTS.${_f}+=	-Wno-error
    196  1.2  mrg . endfor
    197  1.2  mrg .endif
    198  1.2  mrg 
    199  1.2  mrg # XXX
    200  1.3  mrg .if ${MACHINE} == "riscv"
    201  1.2  mrg COPTS.ISO_Fortran_binding.c+=	-Wno-error=format
    202  1.2  mrg .endif
    203  1.2  mrg 
    204  1.1  mrg .include <bsd.lib.mk>
    205