xref: /netbsd/external/mit/xorg/lib/pixman/Makefile (revision a2cfd181)
1#	$NetBSD: Makefile,v 1.42 2022/12/17 09:46:21 mrg Exp $
2
3NOLINT=	1	# defined
4
5.include <bsd.own.mk>
6
7LIB=		pixman-1
8
9DIST=	${X11SRCDIR.pixman}/pixman
10.PATH:	${DIST}
11
12SRCS=					\
13	pixman.c			\
14	pixman-access.c			\
15	pixman-access-accessors.c	\
16	pixman-bits-image.c		\
17	pixman-combine32.c		\
18	pixman-combine-float.c		\
19	pixman-conical-gradient.c	\
20	pixman-edge.c			\
21	pixman-edge-accessors.c		\
22	pixman-fast-path.c		\
23	pixman-filter.c			\
24	pixman-glyph.c			\
25	pixman-general.c		\
26	pixman-gradient-walker.c	\
27	pixman-image.c			\
28	pixman-implementation.c		\
29	pixman-linear-gradient.c	\
30	pixman-matrix.c			\
31	pixman-noop.c			\
32	pixman-radial-gradient.c	\
33	pixman-region16.c		\
34	pixman-region32.c		\
35	pixman-solid-fill.c		\
36	pixman-timer.c			\
37	pixman-trap.c			\
38	pixman-utils.c
39
40SRCS+=					\
41	pixman-x86.c			\
42	pixman-mips.c			\
43	pixman-arm.c			\
44	pixman-ppc.c
45
46# XXX
47
48# missing: HAVE_GCC_VECTOR_EXTENSIONS
49
50.if ${MACHINE_ARCH} == "i386" || ${MACHINE_ARCH} == "x86_64"
51. if ${MACHINE_ARCH} == "i386"
52SRCS+= pixman-mmx.c
53COPTS.pixman-mmx.c=	-mmmx -fvisibility=hidden
54.  if defined(HAVE_LLVM)
55COPTS.pixman-mmx.c+=	-Wno-error=attributes
56.  endif
57#CPPFLAGS+=		-DUSE_X86_MMX
58MKDEPFLAGS+=		-mmmx
59. endif
60SRCS+=	pixman-sse2.c pixman-ssse3.c
61COPTS.pixman-sse2.c=	-msse2 -fvisibility=hidden
62COPTS.pixman-ssse3.c=	-msse3 -mssse3 -fvisibility=hidden
63#CPPFLAGS+=		-DUSE_SSE2 -DUSE_SSSE3
64MKDEPFLAGS+=		-msse2 -msse3 -mssse3 -fvisibility=hidden
65.endif
66
67.if ${MACHINE_ARCH} == "powerpc"
68SRCS+=	pixman-vmx.c
69COPTS.pixman-vmx.c=	-maltivec
70#CPPFLAGS+=		-DUSE_VMX
71MKDEPFLAGS+=		-maltivec
72.endif
73
74.if !empty(MACHINE_ARCH:Mearm*)
75# ARM SIMD
76SRCS+=		pixman-arm-simd.c 		\
77		pixman-arm-simd-asm.S		\
78		pixman-arm-simd-asm-scaled.S
79# ARM NEON
80SRCS+=		pixman-arm-neon.c		\
81		pixman-arm-neon-asm.S		\
82		pixman-arm-neon-asm-bilinear.S
83
84AFLAGS+=	${${ACTIVE_CC} == "clang" :? -fno-integrated-as :}
85# ARM iwMMX
86#SRCS+=		pixman-mmx.c
87#COPTS.pixman-mmx.c=	-mcpu=iwmmxt
88.endif
89
90.if !empty(MACHINE_ARCH:Maarch64*)
91# XXX not yet; new pixman bad on arm64.
92# ARM64 NEON
93#SRCS+=		pixman-arm-neon.c			\
94#		pixman-arma64-neon-asm.S		\
95#		pixman-arma64-neon-asm-bilinear.S
96#CPPFLAGS+=	-DUSE_ARM_A64_NEON
97#
98# XXX: not sure if needed?
99#AFLAGS+=	${${ACTIVE_CC} == "clang" :? -fno-integrated-as :}
100.endif
101
102.if !empty(MACHINE_ARCH:Mmips*64el) && empty(COPTS:M-march=*)
103# Loongson MMI
104SRCS+=		pixman-mmx.c
105#CPPFLAGS+=	-DUSE_LOONGSON_MMI
106# SIMD instructions use floatpoint registers so we need to enable their use
107COPTS.pixman-mmx.c=	-march=loongson2f -mhard-float -Wa,-mhard-float
108.endif
109
110.if ${MACHINE_CPU} == "sh3"
111# XXX pixman-fast-path.c:1204:1: internal compiler error: Segmentation fault
112COPTS.pixman-fast-path.c+=	-O1
113.endif
114
115.include "Makefile.cflags"
116
117INCS=	pixman.h pixman-version.h
118INCSDIR=${X11INCDIR}/pixman-1
119
120# With pixman 0.28.3, HAVE_PTHREAD_SETSPECIFIC is much faster than TLS
121CPPFLAGS+=	-DHAVE_PTHREAD_SETSPECIFIC
122#CPPFLAGS+=	-DTLS=__thread
123
124LIBDPLIBS=	m	${.CURDIR}/../../../../../lib/libm
125
126PKGCONFIG=	pixman-1
127PKGDIST=	pixman
128
129.include <bsd.x11.mk>
130.include <bsd.lib.mk>
131