108 lines
3.1 KiB
Makefile
108 lines
3.1 KiB
Makefile
# $OpenBSD: Makefile,v 1.36 2021/11/14 00:45:38 guenther Exp $
|
|
|
|
OBJS= crt0.o gcrt0.o
|
|
OBJS+= crtbegin.o crtend.o
|
|
OBJS+= crtbeginS.o crtendS.o
|
|
OBJS+= rcrt0.o
|
|
SRCS= crt0.c crtbegin.c crtbeginS.c crtend.c crtendS.c
|
|
|
|
CFLAGS+= -I${.CURDIR}/${MACHINE_CPU}
|
|
CFLAGS+= -I${.CURDIR}/../../libexec/ld.so
|
|
CFLAGS+= -I${.CURDIR}/../../libexec/ld.so/${MACHINE_CPU}
|
|
|
|
# XXX "use -fno-omit-frame-pointer; the reason is almost crazy; pr#287"
|
|
.if ${MACHINE_ARCH} == "amd64" || ${MACHINE_ARCH} == "i386"
|
|
CFLAGS+= -fno-omit-frame-pointer
|
|
.endif
|
|
|
|
.ifdef NOPIC
|
|
PICFLAG=
|
|
.elif ${MACHINE_ARCH} == "powerpc" || ${MACHINE_ARCH} == "sparc64"
|
|
# The objects for shared libraries need to work for all possible
|
|
# libraries, so force big PIC where it matters.
|
|
# Arguably m88k should do this too, but maybe there aren't any
|
|
# libraries big enough to need it there?
|
|
PICFLAG= -fPIC
|
|
.endif
|
|
|
|
.if exists(${.CURDIR}/${MACHINE_CPU}/boot_md.h)
|
|
CFLAGS+= -DBOOT_H=\"boot_md.h\"
|
|
.else
|
|
CFLAGS+= -DBOOT_H=\"boot.h\"
|
|
.endif
|
|
|
|
RCFLAGS=-DRCRT0
|
|
# amd64 can access the stack protector before relocation has occurred.
|
|
# Other archs aren't so lucky
|
|
.if ${MACHINE_ARCH} != "amd64"
|
|
RCFLAGS+=-fno-stack-protector
|
|
.endif
|
|
|
|
# Prevent use of builtins in _dl_boot_bind().
|
|
.if ${MACHINE_CPU} == "mips64" || ${MACHINE_CPU} == "powerpc"
|
|
RCFLAGS+=-fno-builtin
|
|
.endif
|
|
|
|
.if ${MACHINE_CPU} == "powerpc64"
|
|
RCFLAGS+= -mno-vsx -mno-altivec
|
|
.endif
|
|
|
|
# Prevent use of jump tables in _dl_boot_bind().
|
|
.if ${MACHINE_CPU} == "mips64" || ${MACHINE_CPU} == "powerpc" || \
|
|
${MACHINE_CPU} == "powerpc64"
|
|
RCFLAGS+=-fno-jump-tables
|
|
.endif
|
|
|
|
DEPS = ${OBJS:.o=.d}
|
|
DFLAGS += -MF ${.TARGET:R}.d
|
|
|
|
all: ${OBJS}
|
|
|
|
crt0.o: crt0.c
|
|
@echo ${COMPILE.c} ${.CURDIR}/crt0.c -o ${.TARGET}
|
|
@${COMPILE.c} ${DFLAGS} ${.CURDIR}/crt0.c -o ${.TARGET}.o
|
|
@${LD} -x -r -o ${.TARGET} ${.TARGET}.o
|
|
@rm -f ${.TARGET}.o
|
|
|
|
gcrt0.o: crt0.c
|
|
@echo ${COMPILE.c} -DMCRT0 ${.CURDIR}/crt0.c -o ${.TARGET}
|
|
@${COMPILE.c} ${DFLAGS} -DMCRT0 ${.CURDIR}/crt0.c -o ${.TARGET}.o
|
|
@${LD} -x -r -o ${.TARGET} ${.TARGET}.o
|
|
@rm -f ${.TARGET}.o
|
|
|
|
rcrt0.o: crt0.c
|
|
@echo ${COMPILE.c} ${RCFLAGS} ${.CURDIR}/crt0.c -o ${.TARGET}
|
|
@${COMPILE.c} ${DFLAGS} ${RCFLAGS} ${.CURDIR}/crt0.c -o ${.TARGET}.o
|
|
@${LD} -x -r -o ${.TARGET} ${.TARGET}.o
|
|
@rm -f ${.TARGET}.o
|
|
|
|
crtbegin.o: crtbegin.c
|
|
@echo ${COMPILE.c} ${.CURDIR}/crtbegin.c -o ${.TARGET}
|
|
@${COMPILE.c} ${DFLAGS} ${.CURDIR}/crtbegin.c -o ${.TARGET}.o
|
|
@${LD} -x -r -o ${.TARGET} ${.TARGET}.o
|
|
@rm -f ${.TARGET}.o
|
|
|
|
crtbeginS.o: crtbeginS.c
|
|
@echo ${COMPILE.c} ${PICFLAG} ${.CURDIR}/crtbeginS.c -o ${.TARGET}
|
|
@${COMPILE.c} ${DFLAGS} ${PICFLAG} ${.CURDIR}/crtbeginS.c -o ${.TARGET}.o
|
|
@${LD} -x -r -o ${.TARGET} ${.TARGET}.o
|
|
@rm -f ${.TARGET}.o
|
|
|
|
crtend.o: crtend.c
|
|
@echo ${COMPILE.c} ${.CURDIR}/crtend.c -o ${.TARGET}
|
|
@${COMPILE.c} ${DFLAGS} ${.CURDIR}/crtend.c -o ${.TARGET}.o
|
|
@${LD} -x -r -o ${.TARGET} ${.TARGET}.o
|
|
@rm -f ${.TARGET}.o
|
|
|
|
crtendS.o: crtendS.c
|
|
@echo ${COMPILE.c} ${PICFLAG} ${.CURDIR}/crtendS.c -o ${.TARGET}
|
|
@${COMPILE.c} ${DFLAGS} ${PICFLAG} ${.CURDIR}/crtendS.c -o ${.TARGET}.o
|
|
@${LD} -x -r -o ${.TARGET} ${.TARGET}.o
|
|
@rm -f ${.TARGET}.o
|
|
|
|
realinstall:
|
|
${INSTALL} ${INSTALL_COPY} -o ${BINOWN} -g ${BINGRP} -m 444 ${OBJS} \
|
|
${DESTDIR}/usr/lib
|
|
|
|
.include <bsd.prog.mk>
|