Refactored common hook code into new NickelHook library (#64)
This commit is contained in:
133
Makefile
133
Makefile
@@ -1,126 +1,19 @@
|
||||
CROSS_COMPILE = arm-nickel-linux-gnueabihf-
|
||||
MOC = moc
|
||||
CC = $(CROSS_COMPILE)gcc
|
||||
CXX = $(CROSS_COMPILE)g++
|
||||
PKG_CONFIG = $(CROSS_COMPILE)pkg-config
|
||||
STRIP = $(CROSS_COMPILE)strip
|
||||
include NickelHook/NickelHook.mk
|
||||
|
||||
DESTDIR =
|
||||
override PKGCONF += Qt5Widgets
|
||||
override LIBRARY := src/libnm.so
|
||||
override SOURCES += src/action.c src/action_c.c src/action_cc.cc src/config.c src/generator.c src/generator_c.c src/kfmon.c src/nickelmenu.cc src/util.c
|
||||
override CFLAGS += -Wall -Wextra -Werror -fvisibility=hidden
|
||||
override CXXFLAGS += -Wall -Wextra -Werror -Wno-missing-field-initializers -isystemlib -fvisibility=hidden -fvisibility-inlines-hidden
|
||||
override KOBOROOT += res/doc:/mnt/onboard/.adds/nm/doc
|
||||
|
||||
ifneq ($(if $(MAKECMDGOALS),$(if $(filter-out clean gitignore install koboroot,$(MAKECMDGOALS)),YES,NO),YES),YES)
|
||||
$(info -- Skipping configure)
|
||||
else
|
||||
PTHREAD_CFLAGS := -pthread
|
||||
PTHREAD_LIBS := -pthread
|
||||
|
||||
define pkgconf =
|
||||
$(if $(filter-out undefined,$(origin $(1)_CFLAGS) $(origin $(1)_LIBS)) \
|
||||
,$(info -- Using provided CFLAGS and LIBS for $(2)) \
|
||||
,$(if $(shell $(PKG_CONFIG) --exists $(2) >/dev/null 2>/dev/null && echo y) \
|
||||
,$(info -- Found $(2) ($(shell $(PKG_CONFIG) --modversion $(2))) with pkg-config) \
|
||||
$(eval $(1)_CFLAGS := $(shell $(PKG_CONFIG) --silence-errors --cflags $(2))) \
|
||||
$(eval $(1)_LIBS := $(shell $(PKG_CONFIG) --silence-errors --libs $(2))) \
|
||||
$(if $(3) \
|
||||
,$(if $(shell $(PKG_CONFIG) $(3) $(2) >/dev/null 2>/dev/null && echo y) \
|
||||
,$(info .. Satisfies constraint $(3)) \
|
||||
,$(info .. Does not satisfy constraint $(3)) \
|
||||
$(error Dependencies do not satisfy constraints)) \
|
||||
,) \
|
||||
,$(info -- Could not automatically detect $(2) with pkg-config. Please specify $(1)_CFLAGS and/or $(1)_LIBS manually) \
|
||||
$(error Missing dependencies)))
|
||||
endef
|
||||
|
||||
$(call pkgconf,QT5CORE,Qt5Core)
|
||||
$(call pkgconf,QT5WIDGETS,Qt5Widgets)
|
||||
|
||||
CFLAGS ?= -O2 -march=armv7-a -mtune=cortex-a8 -mfpu=neon -mfloat-abi=hard -mthumb
|
||||
CXXFLAGS ?= -O2 -march=armv7-a -mtune=cortex-a8 -mfpu=neon -mfloat-abi=hard -mthumb
|
||||
LDFLAGS ?= -Wl,--as-needed
|
||||
|
||||
override CFLAGS += -std=gnu11 -Wall -Wextra -Werror
|
||||
override CXXFLAGS += -std=gnu++11 -Wall -Wextra -Werror
|
||||
override LDFLAGS += -Wl,--no-undefined -Wl,-rpath,/usr/local/Kobo -Wl,-rpath,/usr/local/Qt-5.2.1-arm/lib
|
||||
|
||||
NM_VERSION := $(shell git describe --tags --always --dirty)
|
||||
# Only use it if we got something useful out of git describe...
|
||||
ifdef NM_VERSION
|
||||
override CPPFLAGS += -DNM_VERSION='"$(NM_VERSION)"'
|
||||
endif
|
||||
override SKIPCONFIGURE += strip
|
||||
strip:
|
||||
$(STRIP) --strip-unneeded src/libnm.so
|
||||
.PHONY: strip
|
||||
|
||||
ifeq ($(NM_UNINSTALL_CONFIGDIR),1)
|
||||
$(info -- NM_UNINSTALL_CONFIGDIR... enabled)
|
||||
override CPPFLAGS += -DNM_UNINSTALL_CONFIGDIR
|
||||
else
|
||||
$(info -- NM_UNINSTALL_CONFIGDIR... disabled)
|
||||
endif
|
||||
override CPPFLAGS += -DNM_UNINSTALL_CONFIGDIR
|
||||
endif
|
||||
|
||||
define GITIGNORE_HEAD
|
||||
# make gitignore
|
||||
|
||||
# KDevelop
|
||||
.kdev4/
|
||||
NickelMenu.kdev4
|
||||
.kateconfig
|
||||
|
||||
# VSCode
|
||||
.vscode/
|
||||
|
||||
# clangd
|
||||
compile_flags.txt
|
||||
|
||||
# Build artifacts
|
||||
endef
|
||||
export GITIGNORE_HEAD
|
||||
|
||||
all: src/libnm.so
|
||||
|
||||
strip: src/libnm.so
|
||||
$(STRIP) --strip-unneeded $(CURDIR)/src/libnm.so
|
||||
|
||||
clean:
|
||||
rm -f $(GENERATED)
|
||||
|
||||
gitignore:
|
||||
echo "$${GITIGNORE_HEAD}" > .gitignore
|
||||
echo '$(GENERATED)' | \
|
||||
sed 's/ /\n/g' | \
|
||||
sed 's/^./\/&/' >> .gitignore
|
||||
|
||||
install:
|
||||
install -Dm644 src/libnm.so $(DESTDIR)/usr/local/Kobo/imageformats/libnm.so
|
||||
install -Dm644 res/doc $(DESTDIR)/mnt/onboard/.adds/nm/doc
|
||||
|
||||
koboroot:
|
||||
tar cvzf KoboRoot.tgz --show-transformed --owner=root --group=root --mode="u=rwX,go=rX" --transform="s,src/libnm.so,./usr/local/Kobo/imageformats/libnm.so," --transform="s,res/doc,./mnt/onboard/.adds/nm/doc," src/libnm.so res/doc
|
||||
|
||||
.PHONY: all strip clean gitignore install koboroot
|
||||
override GENERATED += KoboRoot.tgz
|
||||
|
||||
src/libnm.so: override CFLAGS += $(PTHREAD_CFLAGS) -fvisibility=hidden -fPIC
|
||||
src/libnm.so: override CXXFLAGS += $(PTHREAD_CFLAGS) $(QT5CORE_CFLAGS) $(QT5WIDGETS_CFLAGS) -fvisibility=hidden -fvisibility-inlines-hidden -fPIC
|
||||
src/libnm.so: override LDFLAGS += $(PTHREAD_LIBS) $(QT5CORE_LIBS) $(QT5WIDGETS_LIBS) -ldl -Wl,-soname,libnm.so
|
||||
src/libnm.so: src/qtplugin.o src/init.o src/config.o src/dlhook.o src/failsafe.o src/menu.o src/kfmon.o src/action.o src/action_c.o src/action_cc.o src/generator.o src/generator_c.o src/util.o
|
||||
|
||||
override LIBRARIES += src/libnm.so
|
||||
override MOCS += src/qtplugin.moc
|
||||
|
||||
define patw =
|
||||
$(foreach dir,src res,$(dir)/*$(1))
|
||||
endef
|
||||
define rpatw =
|
||||
$(patsubst %$(1),%$(2),$(foreach w,$(call patw,$(1)),$(wildcard $(w))))
|
||||
endef
|
||||
|
||||
$(LIBRARIES): src/%.so:
|
||||
$(CXX) $(CPPFLAGS) $(CXXFLAGS) -shared -o $@ $^ $(LDFLAGS)
|
||||
$(MOCS): %.moc: %.h
|
||||
$(MOC) $< -o $@
|
||||
$(patsubst %.moc,%.o,$(MOCS)): %.o: %.moc
|
||||
$(CXX) -xc++ $(CPPFLAGS) $(CXXFLAGS) -c $< -o $@
|
||||
$(call rpatw,.c,.o): %.o: %.c
|
||||
$(CC) $(CPPFLAGS) $(CFLAGS) -c $< -o $@
|
||||
$(call rpatw,.cc,.o): %.o: %.cc
|
||||
$(CXX) $(CPPFLAGS) $(CXXFLAGS) -c $< -o $@
|
||||
|
||||
override GENERATED += $(LIBRARIES) $(MOCS) $(patsubst %.moc,%.o,$(MOCS)) $(call rpatw,.c,.o) $(call rpatw,.cc,.o)
|
||||
include NickelHook/NickelHook.mk
|
||||
|
||||
Reference in New Issue
Block a user