[Midnightbsd-cvs] src [10867] trunk/gnu/lib/libgcc/Makefile: add other architectures

laffer1 at midnightbsd.org laffer1 at midnightbsd.org
Wed Jun 13 18:42:08 EDT 2018


Revision: 10867
          http://svnweb.midnightbsd.org/src/?rev=10867
Author:   laffer1
Date:     2018-06-13 18:42:07 -0400 (Wed, 13 Jun 2018)
Log Message:
-----------
add other architectures

Modified Paths:
--------------
    trunk/gnu/lib/libgcc/Makefile

Modified: trunk/gnu/lib/libgcc/Makefile
===================================================================
--- trunk/gnu/lib/libgcc/Makefile	2018-06-13 22:33:39 UTC (rev 10866)
+++ trunk/gnu/lib/libgcc/Makefile	2018-06-13 22:42:07 UTC (rev 10867)
@@ -1,6 +1,7 @@
-# $MidnightBSD: src/gnu/lib/libgcc/Makefile,v 1.8 2011/10/22 18:57:55 laffer1 Exp $
-# $FreeBSD: src/gnu/lib/libgcc/Makefile,v 1.58 2007/08/14 20:49:57 kan Exp $
-GCCDIR=	${.CURDIR}/../../../contrib/gcc4
+# $MidnightBSD$
+# $FreeBSD: stable/10/gnu/lib/libgcc/Makefile 300321 2016-05-20 19:05:33Z emaste $
+
+GCCDIR=	${.CURDIR}/../../../contrib/gcc
 GCCLIB=	${.CURDIR}/../../../contrib/gcclibs
 
 SHLIB_NAME=	libgcc_s.so.1
@@ -15,6 +16,10 @@
 
 .include "${.CURDIR}/../../usr.bin/cc/Makefile.tgt"
 
+.if ${TARGET_CPUARCH} == "arm" && ${MK_ARM_EABI} != "no"
+CFLAGS+=	-DTARGET_ARM_EABI
+.endif
+
 .PATH: ${GCCDIR}/config/${GCC_CPU} ${GCCDIR}/config ${GCCDIR}
 
 CFLAGS+=	-DIN_GCC -DIN_LIBGCC2 -D__GCC_FLOAT_NOT_NEEDED \
@@ -24,23 +29,27 @@
 		-I${.CURDIR}/../../usr.bin/cc/cc_tools
 
 LDFLAGS+=	-nodefaultlibs
+DPADD+=		${LIBC}
 LDADD+=		-lc
 
-OBJS=		# added to below in various ways depending on TARGET_CPUARCH
+SOBJS=		# added to below in various ways depending on TARGET_CPUARCH
 
 #---------------------------------------------------------------------------
 #
-# When upgrading GCC, get the following defintions straight from Makefile.in
+# Library members defined in libgcc2.c.
+# When upgrading GCC, obtain the following list from mklibgcc.in
 #
-# Library members defined in libgcc2.c.
 LIB2FUNCS= _muldi3 _negdi2 _lshrdi3 _ashldi3 _ashrdi3 \
-	_cmpdi2 _ucmpdi2 _clear_cache \
+	_cmpdi2 _ucmpdi2 \
 	_enable_execute_stack _trampoline __main _absvsi2 _absvdi2 _addvsi3 \
 	_addvdi3 _subvsi3 _subvdi3 _mulvsi3 _mulvdi3 _negvsi2 _negvdi2 _ctors \
 	_ffssi2 _ffsdi2 _clz _clzsi2 _clzdi2 _ctzsi2 _ctzdi2 _popcount_tab \
 	_popcountsi2 _popcountdi2 _paritysi2 _paritydi2 _powisf2 _powidf2 \
 	_powixf2 _powitf2 _mulsc3 _muldc3 _mulxc3 _multc3 _divsc3 _divdc3 \
-	_divxc3 _divtc3
+	_divxc3 _divtc3 _bswapsi2 _bswapdi2
+.if ${COMPILER_TYPE} != "clang" || ${TARGET_CPUARCH} != "arm"
+LIB2FUNCS+= _clear_cache
+.endif
 
 # The floating-point conversion routines that involve a single-word integer.
 .for mode in sf df xf
@@ -48,10 +57,13 @@
 .endfor
 
 # Likewise double-word routines.
+.if ${TARGET_CPUARCH} != "arm" || ${MK_ARM_EABI} == "no"
+# These are implemented in an ARM specific file but will not be filtered out
 .for mode in sf df xf tf
 LIB2FUNCS+= _fix${mode}di _fixuns${mode}di
 LIB2FUNCS+= _floatdi${mode} _floatundi${mode}
 .endfor
+.endif
 
 LIB2ADD = $(LIB2FUNCS_EXTRA)
 LIB2ADD_ST = $(LIB2FUNCS_STATIC_EXTRA)
@@ -99,7 +111,56 @@
 #	Platform specific bits.
 #	When upgrading GCC, get the following definitions from config/<cpu>/t-*
 #
+.if ${TARGET_CPUARCH} == "arm"
+#	from config/arm/t-strongarm-elf
+CFLAGS+=	-Dinhibit_libc -fno-inline
+CFLAGS.clang+=	-fheinous-gnu-extensions
 
+LIB1ASMSRC =	lib1funcs.asm
+LIB1ASMFUNCS =  _dvmd_tls _bb_init_func
+.if ${MK_ARM_EABI} != "no"
+LIB2ADDEH =	unwind-arm.c libunwind.S pr-support.c unwind-c.c
+# Some compilers generate __aeabi_ functions libgcc_s is missing
+DPADD+=		${LIBGCC}
+LDADD+=		-lgcc
+.else
+LIB2FUNCS_EXTRA = floatunsidf.c floatunsisf.c
+.endif
+.endif
+
+.if ${TARGET_CPUARCH} == mips
+LIB2FUNCS_EXTRA = floatunsidf.c floatunsisf.c
+# ABIs other than o32 need this
+.if ${TARGET_ARCH} != "mips" && ${TARGET_ARCH} != "mipsel"
+LIB2FUNCS_EXTRA+= floatdidf.c fixunsdfsi.c
+LIB2FUNCS_EXTRA+= floatdisf.c floatundidf.c
+LIB2FUNCS_EXTRA+= fixsfdi.c floatundisf.c
+LIB2FUNCS_EXTRA+= fixdfdi.c fixunssfsi.c
+.endif
+.endif
+
+.if ${TARGET_CPUARCH} == "ia64"
+#	from config/ia64/t-ia64
+LIB1ASMSRC   = lib1funcs.asm
+LIB1ASMFUNCS = __divxf3 __divdf3 __divsf3 \
+	__divdi3 __moddi3 __udivdi3 __umoddi3 \
+	__divsi3 __modsi3 __udivsi3 __umodsi3 __save_stack_nonlocal \
+	__nonlocal_goto __restore_stack_nonlocal __trampoline \
+	_fixtfdi _fixunstfdi _floatditf
+LIB2ADDEH = unwind-ia64.c unwind-sjlj.c unwind-c.c
+.endif
+
+.if ${TARGET_ARCH} == "powerpc"
+#	from config/rs6000/t-ppccomm
+LIB2FUNCS_EXTRA = tramp.asm
+LIB2FUNCS_STATIC_EXTRA = eabi.asm
+.endif
+
+.if ${TARGET_ARCH} == "powerpc64"
+#	from config/rs6000/t-ppccomm
+LIB2FUNCS_EXTRA = tramp.asm
+.endif
+
 .if ${TARGET_CPUARCH} == "sparc64"
 #	from config/sparc/t-elf
 LIB1ASMSRC =   lb1spc.asm
@@ -126,7 +187,7 @@
 HIDE =  -fvisibility=hidden -DHIDE_EXPORTS
 CC_T =	${CC} -c ${CFLAGS} ${HIDE} -fPIC
 CC_P =	${CC} -c ${CFLAGS} ${HIDE} -p -fPIC
-CC_S =	${CC} -c ${CFLAGS} ${PICFLAG} -DSHARED
+CC_S =	${CC} -c ${CFLAGS} ${SHARED_CFLAGS} ${PICFLAG} -DSHARED
 
 #-----------------------------------------------------------------------
 #
@@ -147,7 +208,8 @@
 #
 # Floating point emulation functions
 #
-.if ${TARGET_CPUARCH} == "sparc64"
+.if ${TARGET_CPUARCH} == "armNOT_YET" || \
+    ${TARGET_CPUARCH} == "powerpc" || ${TARGET_CPUARCH} == "sparc64"
 
 FPBIT_CFLAGS =	-DFINE_GRAINED_LIBRARIES -DFLOAT
 DPBIT_CFLAGS =	-DFINE_GRAINED_LIBRARIES
@@ -166,7 +228,7 @@
 ${T}_OBJS_T =	${${T}_FUNCS:S/$/.o/}
 ${T}_OBJS_P =	${${T}_FUNCS:S/$/.po/}
 ${T}_OBJS_S =	${${T}_FUNCS:S/$/.So/}
-OBJS +=		${${T}_FUNCS:S/$/.o/}
+SOBJS +=	${${T}_FUNCS:S/$/.So/}
 
 ${${T}_OBJS_T}: ${${T}_CFILE} ${COMMONHDRS}
 	${CC_T} ${${T}_CFLAGS} -DL${.PREFIX} -o ${.TARGET} ${.ALLSRC:M*.c}
@@ -181,9 +243,7 @@
 # Extra objects coming from separate files
 #
 .if !empty(LIB2ADD)
-OBJS  +=	${LIB2ADD:R:S/$/.o/}
 SOBJS +=	${LIB2ADD:R:S/$/.So/}
-POBJS +=	${LIB2ADD:R:S/$/.po/}
 .endif
 
 #-----------------------------------------------------------------------
@@ -209,7 +269,7 @@
 ASM_P =		${LIB1ASMFUNCS:S/$/.po/}
 ASM_S =		${LIB1ASMFUNCS:S/$/.So/}
 ASM_V =		${LIB1ASMFUNCS:S/$/.vis/}
-OBJS +=		${LIB1ASMFUNCS:S/$/.o/}
+SOBJS +=	${LIB1ASMFUNCS:S/$/.So/}
 
 ${ASM_T}: ${LIB1ASMSRC} ${.PREFIX}.vis
 	${CC} -x assembler-with-cpp -c ${CFLAGS} -DL${.PREFIX} \
@@ -223,7 +283,7 @@
 ${ASM_V}: ${LIB1ASMSRC}
 	${CC} -x assembler-with-cpp -c ${CFLAGS} -DL${.PREFIX} \
 	    -o ${.PREFIX}.vo ${.ALLSRC:N*.h}
-	( nm -pg ${.PREFIX}.vo | \
+	( ${NM} -pg ${.PREFIX}.vo | \
 		awk 'NF == 3 && $$2 !~ /^[UN]$$/ { print "\t.hidden ", $$3 }'\
 	) > ${.TARGET}
 
@@ -269,10 +329,13 @@
 SHLIB_MKMAP      = ${GCCDIR}/mkmap-symver.awk
 SHLIB_MKMAP_OPTS =
 SHLIB_MAPFILES   = ${GCCDIR}/libgcc-std.ver
+.if ${TARGET_CPUARCH} == "arm" && ${MK_ARM_EABI} != "no"
+SHLIB_MAPFILES  += ${GCCDIR}/config/arm/libgcc-bpabi.ver
+.endif
 VERSION_MAP      = libgcc.map
 
-libgcc.map: ${SHLIB_MKMAP} ${SHLIB_MAPFILES} ${SOBJS} ${OBJS:R:S/$/.So/}
-	(  nm -pg ${SOBJS};echo %% ; \
+libgcc.map: ${SHLIB_MKMAP} ${SHLIB_MAPFILES} ${SOBJS}
+	(  ${NM} -pg ${SOBJS};echo %% ; \
 	  cat ${SHLIB_MAPFILES} \
 	    | sed -e '/^[   ]*#/d' \
 	          -e 's/^%\(if\|else\|elif\|endif\|define\)/#\1/' \
@@ -288,8 +351,8 @@
 libgcc_eh.a:	${EH_OBJS_T}
 	@${ECHO} building static gcc_eh library
 	@rm -f ${.TARGET}
-	@${AR} cq ${.TARGET} `lorder ${EH_OBJS_T} | tsort -q`
-	${RANLIB} ${.TARGET}
+	${AR} ${ARFLAGS} ${.TARGET} `lorder ${EH_OBJS_T} | tsort -q`
+	${RANLIB} ${RANLIBFLAGS} ${.TARGET}
 
 all:	libgcc_eh.a
 
@@ -297,8 +360,8 @@
 libgcc_eh_p.a:	${EH_OBJS_P}
 	@${ECHO} building profiled gcc_eh library
 	@rm -f ${.TARGET}
-	@${AR} cq ${.TARGET} `lorder ${EH_OBJS_P} | tsort -q`
-	${RANLIB} ${.TARGET}
+	${AR} ${ARFLAGS} ${.TARGET} `lorder ${EH_OBJS_P} | tsort -q`
+	${RANLIB} ${RANLIBFLAGS} ${.TARGET}
 all:	libgcc_eh_p.a
 .endif
 



More information about the Midnightbsd-cvs mailing list