LOCAL_PATH = $(shell pwd)

LDFLAGS += -Wl,--no-as-needed -lstdc++ -lpthread  -ldl -lrt -ludev -L$(STAGING_DIR)/usr/lib
CFLAGS += -Wall -Wno-unknown-pragmas -Wno-format -Wno-format-security -Wno-error=unused-result \
          -O3 -fexceptions -fnon-call-exceptions -D_GNU_SOURCE -I$(STAGING_DIR)/usr/include
CFLAGS += -I$(STAGING_DIR)/usr/include/ -I$(STAGING_DIR)/usr/include/libdrm/
LIBDRM_CFLAGS = -Wl,-soname,libdrm_meson.so
LDFLAGS += -L$(STAGING_DIR)/usr/lib -L$(OUT_DIR) -ldrm

ifeq ($(HAVE_LIBLOG),1)
CFLAGS += -DMESON_LIBLOG
LDFLAGS += -llog
endif

meson_drm_SRCS = \
	$(LOCAL_PATH)/libdrm_meson_connector.c \
	$(LOCAL_PATH)/libdrm_meson_property.c \
	$(LOCAL_PATH)/meson_drm.c  \
	$(LOCAL_PATH)/meson_drm_async_commit.c \
	$(LOCAL_PATH)/meson_drm_kms.c  \
	$(LOCAL_PATH)/meson_drm_util.c  \
	$(LOCAL_PATH)/meson_drm_display.c  \
	$(LOCAL_PATH)/meson_drm_event.c  \
	$(LOCAL_PATH)/meson_drm_settings.c  \
	$(LOCAL_PATH)/meson_drm_log.c  \
	$(NULL)

meson_drm_HEADERS = \
	$(LOCAL_PATH) \
	$(NULL)

meson_drm_test_SRCS  = \
	$(LOCAL_PATH)/meson_drm_test.c \
	$(NULL)

meson_drm_display_test_SRCS  = \
	$(LOCAL_PATH)/meson_drm_display_test.c \
	$(NULL)

meson_drm_settings_test_SRCS  = \
	$(LOCAL_PATH)/meson_drm_settings_test.c \
	$(NULL)

OUT_DIR ?= .
# ---------------------------------------------------------------------
#  Build rules
BUILD_TARGETS = libdrm_meson.so meson_drm_test  meson_drm_display_test  meson_drm_settings_test
CLEAN_TARGETS = $(addprefix $(OUT_DIR)/, $(BUILD_TARGETS))

.PHONY: all install uninstall clean

all:$(BUILD_TARGETS)

$(OUT_DIR)/libdrm_meson.so: libdrm_meson.so

libdrm_meson.so: $(meson_drm_SRCS)
	$(CC) $(CFLAGS) $(LDFLAGS) -g -D_FILE_OFFSET_BITS=64 -Wall $(LIBDRM_CFLAGS) \
	-shared -fPIC -o $(OUT_DIR)/$@ $^ $(LDLIBS)

meson_drm_test: $(meson_drm_test_SRCS) $(OUT_DIR)/libdrm_meson.so
	$(CC) $(CFLAGS)  -I$(meson_drm_HEADERS) -L$(LOCAL_PATH) \
	-ldrm_meson $(LDFLAGS) -o $(OUT_DIR)/$@ $^ $(LDLIBS)

meson_drm_display_test: $(meson_drm_display_test_SRCS) $(OUT_DIR)/libdrm_meson.so
	$(CC) $(CFLAGS)  -I$(meson_drm_HEADERS) -L$(LOCAL_PATH) \
	-ldrm_meson $(LDFLAGS) -o $(OUT_DIR)/$@ $^ $(LDLIBS)

meson_drm_settings_test: $(meson_drm_settings_test_SRCS) $(OUT_DIR)/libdrm_meson.so
	$(CC) $(CFLAGS)  -I$(meson_drm_HEADERS) -L$(LOCAL_PATH) \
	-ldrm_meson $(LDFLAGS) -o $(OUT_DIR)/$@ $^ $(LDLIBS)

clean:
	rm -f *.o $(CLEAN_TARGETS)

install:
	install -m 0644 $(OUT_DIR)/libdrm_meson.so $(TARGET_DIR)/usr/lib
	install -m 755 $(OUT_DIR)/meson_drm_test $(TARGET_DIR)/usr/bin/
	install -m 755 $(OUT_DIR)/meson_drm_display_test $(TARGET_DIR)/usr/bin/
	install -m 755 $(OUT_DIR)/meson_drm_settings_test $(TARGET_DIR)/usr/bin/
	cp meson_drmif.h $(STAGING_DIR)/usr/include/
	cp meson_drm_util.h $(STAGING_DIR)/usr/include/
	install -D -m 0644 meson_drm_settings.h $(STAGING_DIR)/usr/include/libdrm_meson/meson_drm_settings.h
	install -D -m 0644 meson_drm_event.h $(STAGING_DIR)/usr/include/libdrm_meson/meson_drm_event.h
	install -D -m 0644 meson_drm_log.h $(STAGING_DIR)/usr/include/libdrm_meson/meson_drm_log.h

uninstall:
	rm -f $(TARGET_DIR)/usr/lib/libdrm_meson.so
	rm -f $(TARGET_DIR)/usr/bin/meson_drm_test
	rm -f $(TARGET_DIR)/usr/bin/meson_drm_display_test
	rm -f $(TARGET_DIR)/usr/bin/meson_drm_settings_test

