blob: 74aeeed5d5bfc8be83989ceb120c9b77fe80fa0d [file] [log] [blame]
LOCAL_PATH = $(shell pwd)
MIN_GCC_VERSION = "10"
GCC_VERSION := "`$(CC) -dumpversion | cut -f1 -d'.'`"
IS_GCC_ABOVE_MIN_VERSION := $(shell expr "$(GCC_VERSION)" ">=" "$(MIN_GCC_VERSION)")
ifeq "$(IS_GCC_ABOVE_MIN_VERSION)" "1"
CFLAGS += -std=gnu++20
endif
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/
LDFLAGS += -L$(STAGING_DIR)/usr/lib -ldrm
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)
libdrm_meson.so: $(meson_drm_SRCS)
$(CC) $(CFLAGS) $(LDFLAGS) -g -D_FILE_OFFSET_BITS=64 -Wall \
-shared -fPIC -o $(OUT_DIR)/$@ $^ $(LDLIBS)
cp -f $(OUT_DIR)/libdrm_meson.so $(STAGING_DIR)/usr/lib/
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