1 # $NetBSD: Makefile,v 1.17 2025/11/13 19:53:33 mrg Exp $ 2 3 USE_SHLIBDIR= yes 4 REQUIRETOOLS= yes 5 NOLINT= # defined 6 7 LIB= gcc_s 8 NOSTATICLIB= # defined 9 NOPROFILE= # defined 10 NOPICINSTALL= # defined 11 12 .include "../../../Makefile.gcc_path" 13 .include <bsd.own.mk> 14 15 .if ${MKGCC} != "no" 16 17 .cc: # disable .cc->NULL transform 18 19 SHLIB_MAJOR= 1 20 SHLIB_MINOR= 0 21 22 LDFLAGS+= -nodefaultlibs -Wl,-z -Wl,nodelete 23 LDFLAGS+= -Wl,--version-script=${.OBJDIR}/libgcc.map 24 25 # XXX handle this better? GCC 4.8 moved them. 26 .if ${MACHINE} == "emips" 27 LIB2ADD_HACK+= ${GNUHOSTDIST}/gcc/config/floatunsidf.c \ 28 ${GNUHOSTDIST}/gcc/config/floatunsisf.c 29 .endif 30 31 # XXXGCC5 GCC 5.3 has all these in libgcc and we have them in libc. 32 .if ${MACHINE_MIPS64} 33 LIB2ADD_EDITED= ${G_LIB2ADD:T:Nfloatsisf.c:Nfloatunsisf.c:Nfloatsidf.c:Nfloatunsidf.c:Nfixsfsi.c:Nextendsfdf2.c:Naddsf3.c:Nmulsf3.c:Ndivsf3.c:Nadddf3.c:Nsubdf3.c:Nmuldf3.c:Ndivdf3.c:Nfixdfsi.c:S/.asm/.S/} 34 .else 35 LIB2ADD_EDITED= ${G_LIB2ADD:T:S/.asm/.S/} 36 .endif 37 38 SRCS+= ${LIB2FUNCS} ${LIB2DIVMOD} ${LIB2_EH} ${LIB2_EHASM} \ 39 ${LIB2ADD_EDITED} \ 40 ${LIB2ADD_HACK:T:S/.asm/.S/} \ 41 ${G_LIB2ADD_ST:T} ${LIB1ASMFUNCS} 42 43 # Find just built libgcc.a 44 LIBGCCOBJDIR!= cd ${.CURDIR}/../libgcc && ${PRINTOBJDIR} 45 LDADD+= -L${LIBGCCOBJDIR} -lgcc 46 47 COPTS.unwind-dw2.c += -Wno-stack-protector 48 49 DPADD+= libgcc.map 50 CLEANFILES+= libgcc.map 51 52 .include <bsd.lib.mk> 53 54 .if ${MKPICLIB} != "no" 55 LIBGCC_S_OBJS= ${SOBJS} 56 .else 57 LIBGCC_S_OBJS= ${OBJS} 58 .endif 59 60 LIBGCC_STD_VER_IN= ${GNUHOSTDIST}/libgcc/libgcc-std.ver.in 61 CLEANFILES+= libgcc-std.ver 62 63 libgcc-std.ver: ${LIBGCC_STD_VER_IN} 64 ${_MKTARGET_CREATE} 65 ${TOOL_SED} -e 's/__PFX__/__/g' -e 's/__FIXPTPFX__/__/g' < ${LIBGCC_STD_VER_IN} > ${.TARGET}.tmp 66 mv ${.TARGET}.tmp ${.TARGET} 67 68 libgcc.map: ${LIBGCC_S_OBJS} ${G_SHLIB_MKMAP} ${G_SHLIB_MAPFILES} 69 { \ 70 ${NM} ${G_SHLIB_NM_FLAGS} ${LIBGCC_S_OBJS}; \ 71 echo %%; \ 72 for f in ${G_SHLIB_MAPFILES}; do \ 73 if [ -f ${.OBJDIR}/$${f} ]; then \ 74 cat ${.OBJDIR}/$${f}; \ 75 else \ 76 cat $${f}; \ 77 fi; \ 78 done | \ 79 ${TOOL_SED} -e "/^[ ]*#/d" \ 80 -e 's/^%\(if\|else\|elif\|endif\|define\)/#\1/' | \ 81 ${CC} ${G_LIBGCC2_CFLAGS} ${G_INCLUDES} -E -xassembler-with-cpp -; \ 82 } | ${TOOL_AWK} -f ${G_SHLIB_MKMAP} > ${.TARGET}.tmp 83 mv ${.TARGET}.tmp ${.TARGET} 84 85 .else 86 .include <bsd.prog.mk> # do nothing 87 .endif 88