1207cda961
Originally, hack.c was compiled into a shard object with just -shared -nostdlib. This assumed that ${CC} did not require any additional flags for ABIs, cross-building, etc. When kern.post.mk was created in r89509 by reducing duplication in kernel Makefile.<arch> files, the -shared flag was moved into a HACK_EXTRA_FLAGS variable so that sparc64 could override it with -Wl,-shared. The sparc64 hack was removed in r111650, but HACK_EXTRA_FLAGS was left in place. Over time, we have started support toolchains that require flags to support alternate ABIs on MIPS and PowerPC and started (ab)using HACK_EXTRA_FLAGS to set only those flags. I need to fix risc-v to pass -mno-relax to the hack.c build for lld in llvm 10, and the patches to support cross-build from non-FreeBSD hosts need to include -target for clang in CFLAGS for hack.c. Rather than adding more hacks into HACK_EXTRA_FLAGS, just use the full set of CFLAGS with hack.c. Reviewed by: kib, arichardson MFC after: 1 month Sponsored by: DARPA Differential Revision: https://reviews.freebsd.org/D23362
83 lines
1.7 KiB
Makefile
83 lines
1.7 KiB
Makefile
# Makefile.powerpc -- with config changes.
|
|
# Copyright 1990 W. Jolitz
|
|
# from: @(#)Makefile.i386 7.1 5/10/91
|
|
# $FreeBSD$
|
|
#
|
|
# Makefile for FreeBSD
|
|
#
|
|
# This makefile is constructed from a machine description:
|
|
# config machineid
|
|
# Most changes should be made in the machine description
|
|
# /sys/powerpc/conf/``machineid''
|
|
# after which you should do
|
|
# config machineid
|
|
# Generic makefile changes should be made in
|
|
# /sys/conf/Makefile.powerpc
|
|
# after which config should be rerun for all machines.
|
|
#
|
|
|
|
# Which version of config(8) is required.
|
|
%VERSREQ= 600012
|
|
|
|
STD8X16FONT?= iso
|
|
|
|
.if !defined(S)
|
|
.if exists(./@/.)
|
|
S= ./@
|
|
.else
|
|
S= ../../..
|
|
.endif
|
|
.endif
|
|
|
|
LDSCRIPT_NAME?= ldscript.${MACHINE_ARCH}
|
|
|
|
.include "$S/conf/kern.pre.mk"
|
|
|
|
INCLUDES+= -I$S/contrib/libfdt
|
|
|
|
.if "${MACHINE_ARCH}" == "powerpcspe"
|
|
# Force __SPE__, since the builtin will be removed later with -mno-spe
|
|
CFLAGS.gcc+= -mabi=spe -D__SPE__
|
|
CFLAGS.clang+= -mspe -D__SPE__ -m32
|
|
.endif
|
|
CFLAGS+= -msoft-float
|
|
CFLAGS.gcc+= -Wa,-many
|
|
|
|
# Apply compiler-specific DPAA exceptions.
|
|
.if "${COMPILER_TYPE}" == "clang"
|
|
DPAAWARNFLAGS += \
|
|
-Wno-error=parentheses-equality \
|
|
-Wno-error=self-assign \
|
|
-Wno-error=incompatible-pointer-types-discards-qualifiers \
|
|
-Wno-error=non-literal-null-conversion \
|
|
-Wno-error=enum-conversion
|
|
.elif "${COMPILER_TYPE}" == "gcc" && ${COMPILER_VERSION} >= 50200
|
|
DPAAWARNFLAGS += \
|
|
-Wno-error=redundant-decls \
|
|
-Wno-error=int-in-bool-context
|
|
.endif
|
|
|
|
# Build position-independent kernel
|
|
CFLAGS+= -fPIC
|
|
LDFLAGS+= -pie
|
|
|
|
.if !empty(DDB_ENABLED)
|
|
CFLAGS+= -fno-omit-frame-pointer
|
|
.endif
|
|
|
|
%BEFORE_DEPEND
|
|
|
|
%OBJS
|
|
|
|
%FILES.c
|
|
|
|
%FILES.s
|
|
|
|
%FILES.m
|
|
|
|
%CLEAN
|
|
|
|
%RULES
|
|
|
|
.include "$S/conf/kern.post.mk"
|