jcs's openbsd hax
openbsd
1# $OpenBSD: Makefile,v 1.36 2021/11/14 00:45:38 guenther Exp $
2
3OBJS= crt0.o gcrt0.o
4OBJS+= crtbegin.o crtend.o
5OBJS+= crtbeginS.o crtendS.o
6OBJS+= rcrt0.o
7SRCS= crt0.c crtbegin.c crtbeginS.c crtend.c crtendS.c
8
9CFLAGS+= -I${.CURDIR}/${MACHINE_CPU}
10CFLAGS+= -I${.CURDIR}/../../libexec/ld.so
11CFLAGS+= -I${.CURDIR}/../../libexec/ld.so/${MACHINE_CPU}
12
13# XXX "use -fno-omit-frame-pointer; the reason is almost crazy; pr#287"
14.if ${MACHINE_ARCH} == "amd64" || ${MACHINE_ARCH} == "i386"
15CFLAGS+= -fno-omit-frame-pointer
16.endif
17
18.ifdef NOPIC
19PICFLAG=
20.elif ${MACHINE_ARCH} == "powerpc" || ${MACHINE_ARCH} == "sparc64"
21# The objects for shared libraries need to work for all possible
22# libraries, so force big PIC where it matters.
23# Arguably m88k should do this too, but maybe there aren't any
24# libraries big enough to need it there?
25PICFLAG= -fPIC
26.endif
27
28.if exists(${.CURDIR}/${MACHINE_CPU}/boot_md.h)
29CFLAGS+= -DBOOT_H=\"boot_md.h\"
30.else
31CFLAGS+= -DBOOT_H=\"boot.h\"
32.endif
33
34RCFLAGS=-DRCRT0
35# amd64 can access the stack protector before relocation has occurred.
36# Other archs aren't so lucky
37.if ${MACHINE_ARCH} != "amd64"
38RCFLAGS+=-fno-stack-protector
39.endif
40
41# Prevent use of builtins in _dl_boot_bind().
42.if ${MACHINE_CPU} == "mips64" || ${MACHINE_CPU} == "powerpc"
43RCFLAGS+=-fno-builtin
44.endif
45
46.if ${MACHINE_CPU} == "powerpc64"
47RCFLAGS+= -mno-vsx -mno-altivec
48.endif
49
50# Prevent use of jump tables in _dl_boot_bind().
51.if ${MACHINE_CPU} == "mips64" || ${MACHINE_CPU} == "powerpc" || \
52 ${MACHINE_CPU} == "powerpc64"
53RCFLAGS+=-fno-jump-tables
54.endif
55
56DEPS = ${OBJS:.o=.d}
57DFLAGS += -MF ${.TARGET:R}.d
58
59all: ${OBJS}
60
61crt0.o: crt0.c
62 @echo ${COMPILE.c} ${.CURDIR}/crt0.c -o ${.TARGET}
63 @${COMPILE.c} ${DFLAGS} ${.CURDIR}/crt0.c -o ${.TARGET}.o
64 @${LD} -x -r -o ${.TARGET} ${.TARGET}.o
65 @rm -f ${.TARGET}.o
66
67gcrt0.o: crt0.c
68 @echo ${COMPILE.c} -DMCRT0 ${.CURDIR}/crt0.c -o ${.TARGET}
69 @${COMPILE.c} ${DFLAGS} -DMCRT0 ${.CURDIR}/crt0.c -o ${.TARGET}.o
70 @${LD} -x -r -o ${.TARGET} ${.TARGET}.o
71 @rm -f ${.TARGET}.o
72
73rcrt0.o: crt0.c
74 @echo ${COMPILE.c} ${RCFLAGS} ${.CURDIR}/crt0.c -o ${.TARGET}
75 @${COMPILE.c} ${DFLAGS} ${RCFLAGS} ${.CURDIR}/crt0.c -o ${.TARGET}.o
76 @${LD} -x -r -o ${.TARGET} ${.TARGET}.o
77 @rm -f ${.TARGET}.o
78
79crtbegin.o: crtbegin.c
80 @echo ${COMPILE.c} ${.CURDIR}/crtbegin.c -o ${.TARGET}
81 @${COMPILE.c} ${DFLAGS} ${.CURDIR}/crtbegin.c -o ${.TARGET}.o
82 @${LD} -x -r -o ${.TARGET} ${.TARGET}.o
83 @rm -f ${.TARGET}.o
84
85crtbeginS.o: crtbeginS.c
86 @echo ${COMPILE.c} ${PICFLAG} ${.CURDIR}/crtbeginS.c -o ${.TARGET}
87 @${COMPILE.c} ${DFLAGS} ${PICFLAG} ${.CURDIR}/crtbeginS.c -o ${.TARGET}.o
88 @${LD} -x -r -o ${.TARGET} ${.TARGET}.o
89 @rm -f ${.TARGET}.o
90
91crtend.o: crtend.c
92 @echo ${COMPILE.c} ${.CURDIR}/crtend.c -o ${.TARGET}
93 @${COMPILE.c} ${DFLAGS} ${.CURDIR}/crtend.c -o ${.TARGET}.o
94 @${LD} -x -r -o ${.TARGET} ${.TARGET}.o
95 @rm -f ${.TARGET}.o
96
97crtendS.o: crtendS.c
98 @echo ${COMPILE.c} ${PICFLAG} ${.CURDIR}/crtendS.c -o ${.TARGET}
99 @${COMPILE.c} ${DFLAGS} ${PICFLAG} ${.CURDIR}/crtendS.c -o ${.TARGET}.o
100 @${LD} -x -r -o ${.TARGET} ${.TARGET}.o
101 @rm -f ${.TARGET}.o
102
103realinstall:
104 ${INSTALL} ${INSTALL_COPY} -o ${BINOWN} -g ${BINGRP} -m 444 ${OBJS} \
105 ${DESTDIR}/usr/lib
106
107.include <bsd.prog.mk>