#	$OpenBSD: Makefile,v 1.4 2020/09/22 02:09:02 jsg Exp $

LIB=	vulkan_radeon

NOPROFILE=

SRCS=	radv_amdgpu_bo.c \
	radv_amdgpu_cs.c \
	radv_amdgpu_surface.c \
	radv_amdgpu_winsys.c \
	radv_android.c \
	radv_cmd_buffer.c \
	radv_debug.c \
	radv_device.c \
	radv_descriptor_set.c \
	radv_formats.c \
	radv_image.c \
	radv_llvm_helper.cpp \
	radv_meta.c \
	radv_meta_blit.c \
	radv_meta_blit2d.c \
	radv_meta_buffer.c \
	radv_meta_bufimage.c \
	radv_meta_clear.c \
	radv_meta_copy.c \
	radv_meta_decompress.c \
	radv_meta_fast_clear.c \
	radv_meta_fmask_expand.c \
	radv_meta_resolve.c \
	radv_meta_resolve_cs.c \
	radv_meta_resolve_fs.c \
	radv_nir_lower_ycbcr_textures.c \
	radv_nir_to_llvm.c \
	radv_pass.c \
	radv_pipeline.c \
	radv_pipeline_cache.c \
	radv_shader.c \
	radv_shader_args.c \
	radv_shader_info.c \
	radv_query.c \
	radv_util.c \
	radv_wsi.c \
	si_cmd_buffer.c \

SRCS+=	radv_entrypoints.c \
	radv_extensions.c \
	vk_format_table.c

.include "../Makefile.inc"

CFLAGS+=	${C_VIS_ARGS} ${NO_OVERRIDE_INIT_ARGS}
CXXFLAGS+=	${CXX_VIS_ARGS}

LLVM_CXXFLAGS!= llvm-config --cxxflags
CXXFLAGS+=	${LLVM_CXXFLAGS}

CPPFLAGS+=	-I${MESA_SRC}/src/amd/vulkan \
		-I${MESA_SRC}/src/gallium/include \
		-I${MESA_SRC}/src/gallium/auxiliary \
		-I${MESA_SRC}/src/vulkan/util \
		-I${MESA_SRC}/src/vulkan/wsi \
		-I${MESA_SRC}/src/amd \
		-I${MESA_SRC}/src/amd/common \
		-I${MESA_SRC}/src/amd/compiler \
		-I${MESA_SRC}/src/amd/llvm \
		-I${MESA_SRC}/src/compiler \
		-I${MESA_SRC}/src/compiler/nir \
		-I${MESA_SRC}/src/mesa \
		-I${MESA_SRC}/generated/src \
		-I${MESA_SRC}/generated/src/util \
		-I${MESA_SRC}/generated/src/compiler/nir \
		-I${MESA_SRC}/generated/src/amd/common \
		-I${MESA_SRC}/generated/src/amd/vulkan \
		-I${MESA_SRC}/generated/src/vulkan/util \
		-DVK_USE_PLATFORM_XCB_KHR \
		-DVK_USE_PLATFORM_XLIB_KHR \
		-DVK_USE_PLATFORM_DISPLAY_KHR \
		-DVK_USE_PLATFORM_XLIB_XRANDR_EXT

.if "${MACHINE_ARCH}" == "amd64"
VKARCH=x86_64
.else
VKARCH=${MACHINE_ARCH}
.endif

install: beforeinstall
	${INSTALL} ${INSTALL_COPY} ${INSTALL_STRIP} \
	    -o ${LIBOWN} -g ${LIBGRP} -m ${LIBMODE} \
	    lib${LIB}.so ${DESTDIR}${X11BASE}/lib
	${INSTALL} ${INSTALL_COPY} -o ${BINOWN} -g ${BINGRP} -m ${BINMODE} \
	    ${MESA_SRC}/generated/src/amd/vulkan/radeon_icd.json \
	    ${DESTDIR}${X11BASE}/share/vulkan/icd.d/radeon_icd.${VKARCH}.json

obj: _xenocara_obj

beforeinstall:
	rm -f ${DESTDIR}${LIBDIR}/lib${LIB}.la

.include <bsd.lib.mk>
.include <bsd.xorg.mk>

SLIBS=	libamd_common \
	libamd_common_llvm \
	libaddrlib \
	libvulkan_wsi \
	libvulkan_util \
	libxmlconfig \
	libmesa_util \
	libmesa_format \
	libaco \
	libnir \
	libcompiler

LDADD+=		-Wl,--as-needed -Wl,--allow-shlib-undefined -Wl,--start-group
.for slib in ${SLIBS}
LDADD+=		${.CURDIR}/../${slib}/${__objdir}/${slib}.a
.endfor

LDADD+=		-lelf -lLLVM -lpthread -lexpat -lz -lm
LDADD+=		-L${X11BASE}/lib -ldrm -ldrm_amdgpu \
		-lxcb-dri3 -lxcb-xfixes -lxcb-randr -lXrandr -lxcb -lX11-xcb \
		-lX11 -lxcb-dri2 -lxcb-present -lxcb-sync \
		-lxshmfence

LDADD+=		-Wl,--gc-sections \
		-Wl,--end-group

all:	lib${LIB}.so

lib${LIB}.so: ${SOBJS} ${DPADD}
	${CXX} -shared -Wl,-soname,lib${LIB}.so ${PICFLAG} -o ${.TARGET} \
	    `echo ${SOBJS} | tr ' ' '\n' | sort -R` ${LDADD}

CLEANFILES+= lib${LIB}.so

.PATH: ${MESA_SRC}/src/amd/vulkan
.PATH: ${MESA_SRC}/src/amd/vulkan/layers
.PATH: ${MESA_SRC}/src/amd/vulkan/winsys/amdgpu
.PATH: ${MESA_SRC}/src/amd/vulkan/winsys/null
.PATH: ${MESA_SRC}/generated/src/amd/vulkan
