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