From 31e1b3c6df72929e5368bbad91937cddec07644b Mon Sep 17 00:00:00 2001 From: Andri Yngvason Date: Sun, 6 Oct 2019 15:00:14 +0000 Subject: [PATCH] Add Makefile --- Makefile | 22 ++++++++++++++++++++++ common.mk | 50 ++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 72 insertions(+) create mode 100644 Makefile create mode 100644 common.mk diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..170393e --- /dev/null +++ b/Makefile @@ -0,0 +1,22 @@ +DEPENDENCIES := libuv egl glesv2 + +EXEC := wayvnc + +SOURCES := \ + src/main.c \ + src/render.c \ + +include common.mk + +VERSION=0.0.0 + +ifndef DONT_STRIP + INSTALL_STRIP := -s --strip-program=$(STRIP) +endif + +$(BUILD_DIR)/%.o: src/%.c | $(BUILD_DIR) ; $(CC_OBJ) +$(BUILD_DIR)/$(EXEC): $(OBJECTS) | $(BUILD_DIR) ; $(LINK_EXE) + +.PHONY: install +install: $(EXEC) + install $(INSTALL_STRIP) -Dt $(DESTDIR)$(PREFIX)/bin $(BUILD_DIR)/$(EXEC) diff --git a/common.mk b/common.mk new file mode 100644 index 0000000..5023e9c --- /dev/null +++ b/common.mk @@ -0,0 +1,50 @@ +MACHINE := $(shell $(CC) -dumpmachine) +ARCH := $(firstword $(subst -, ,$(MACHINE))) +BUILD_DIR ?= build-$(MACHINE) + +PREFIX ?= /usr/local + +ifeq ($(ARCH),x86_64) + ARCH_CFLAGS := -mavx +else +ifeq ($(ARCH),arm) + ARCH_CFLAGS := -mfpu=neon +endif # end arm block +endif # end x86_64 block + +ifeq (, $(shell which $(MACHINE)-strip 2>/dev/null)) + STRIP ?= strip +else + STRIP ?= $(MACHINE)-strip +endif + +ifeq (, $(shell which $(MACHINE)-pkg-config 2>/dev/null)) + PKGCONFIG ?= pkg-config +else + PKGCONFIG ?= $(MACHINE)-pkg-config +endif + +CFLAGS ?= -g -O3 $(ARCH_CFLAGS) -flto -DNDEBUG +LDFLAGS ?= -flto + +CFLAGS += -std=gnu11 -D_GNU_SOURCE -Iinclude + +CC_OBJ = $(CC) -c $(CFLAGS) $< -o $@ -MMD -MP -MF $(@:.o=.deps) +LINK_EXE = $(CC) $^ $(LDFLAGS) -o $@ + +CFLAGS += $(foreach dep,$(DEPENDENCIES),$(shell $(PKGCONFIG) --cflags $(dep))) +LDFLAGS += $(foreach dep,$(DEPENDENCIES),$(shell $(PKGCONFIG) --libs $(dep))) +OBJECTS := $(SOURCES:src/%.c=$(BUILD_DIR)/%.o) + +$(BUILD_DIR): ; mkdir -p $(BUILD_DIR) + +.PHONY: clean +clean: ; rm -rf $(BUILD_DIR) + +-include $(BUILD_DIR)/*.deps + +.SUFFIXES: +.SECONDARY: + +# This clears the default target set by this file +.DEFAULT_GOAL :=