From 2a5cf5021b56bc92c9953d2c82e8c90502d22c97 Mon Sep 17 00:00:00 2001 From: Bartosz Golaszewski Date: Fri, 13 Sep 2019 10:20:53 +0200 Subject: [PATCH] build: use autotools This removes the hand-crafted Makefile in favor of standardized autotools build configuration. This is done to allow for easy cross-compilation of this project. Upstream-Status: Submitted Signed-off-by: Bartosz Golaszewski --- .gitignore | 17 ++++++++++++ Makefile | 66 --------------------------------------------- Makefile.am | 10 +++++++ configure.ac | 36 +++++++++++++++++++++++++ include/Makefile.am | 9 +++++++ man/Makefile.am | 7 +++++ obj/.gitkeep | 0 src/Makefile.am | 13 +++++++++ 8 files changed, 92 insertions(+), 66 deletions(-) delete mode 100644 Makefile create mode 100644 Makefile.am create mode 100644 configure.ac create mode 100644 include/Makefile.am create mode 100644 man/Makefile.am delete mode 100644 obj/.gitkeep create mode 100644 src/Makefile.am diff --git a/.gitignore b/.gitignore index af88e94..4e7355a 100644 --- a/.gitignore +++ b/.gitignore @@ -3,3 +3,20 @@ obj/*.o man/*.1 man/*.xml test/GLOB* +*.o + +# autotools stuff +.deps/ +Makefile +Makefile.in +aclocal.m4 +autom4te.cache/ +autostuff/ +config.h +config.h.in +config.h.in~ +config.log +config.status +configure +m4/ +stamp-h1 diff --git a/Makefile b/Makefile deleted file mode 100644 index 6264da0..0000000 --- a/Makefile +++ /dev/null @@ -1,66 +0,0 @@ -TARGET = unclutter -VERSION = 1.5 -SDIR = src -IDIR = include -ODIR = obj - -INSTALL = install -PREFIX = /usr - -BINDIR = $(PREFIX)/bin -MANDIR = $(PREFIX)/share/man/man1 -LICENSEDIR = $(PREFIX)/share/licenses/$(TARGET) - -CC = gcc -LD = $(CC) -PKG_CONFIG = pkg-config - -CPPFLAGS += -D'__VERSION="${VERSION}"' "-I$(IDIR)" - -CFLAGS += -std=gnu99 -CFLAGS += -Wall -Wundef -Wshadow -Wformat-security - -LDFLAGS += $(shell $(PKG_CONFIG) --libs x11 xi xfixes) -# libev has no pkg-config support -LDFLAGS += -lev - -INCS = $(wildcard $(IDIR)/*.h) -SRCS = $(wildcard $(SDIR)/*.c) -OBJS = $(patsubst %,$(ODIR)/%,$(notdir $(SRCS:.c=.o))) - -MANS = man/unclutter-xfixes.1 - -.NOTPARALLEL: - -.PHONY: all -all: clean $(TARGET) mans - -.PHONY: $(TARGET) -$(TARGET): $(OBJS) - $(LD) $(OBJS) $(LDFLAGS) -o "$(TARGET)" - -$(ODIR)/%.o: $(SDIR)/%.c $(INCS) - $(CC) $(CPPFLAGS) $(CFLAGS) -o "$@" -c "$<" - -.PHONY: install -install: $(TARGET) mans - $(INSTALL) -Dm 0755 "$(TARGET)" "$(DESTDIR)$(BINDIR)/$(TARGET)" - $(INSTALL) -Dm 0644 man/unclutter-xfixes.1 "$(DESTDIR)$(MANDIR)/unclutter.1" - $(INSTALL) -Dm 0644 -t "$(DESTDIR)$(LICENSEDIR)/" LICENSE - -.PHONY: uninstall -uninstall: - $(RM) "$(DESTDIR)$(BINDIR)/$(TARGET)" - $(RM) "$(DESTDIR)$(MANDIR)/unclutter.1" - $(RM) "$(DESTDIR)$(LICENSEDIR)/LICENSE" - -.PHONY: mans -mans: $(MANS) - -$(MANS): %.1: %.man - a2x --no-xmllint -f manpage "$<" - -.PHONY: clean -clean: - $(RM) $(TARGET) $(OBJS) - $(RM) man/*.1 man/*.xml diff --git a/Makefile.am b/Makefile.am new file mode 100644 index 0000000..38ecaa1 --- /dev/null +++ b/Makefile.am @@ -0,0 +1,10 @@ +ACLOCAL_AMFLAGS = -I m4 +AUTOMAKE_OPTIONS = foreign +SUBDIRS = include src + +if HAS_A2X +SUBDIRS += man +endif + +licensedir = $(datadir)/licenses/unclutter +license_DATA = LICENSE diff --git a/configure.ac b/configure.ac new file mode 100644 index 0000000..1d59197 --- /dev/null +++ b/configure.ac @@ -0,0 +1,36 @@ +AC_PREREQ(2.61) + +AC_INIT([unclutter-xfixes], 1.6) +AC_DEFINE_UNQUOTED([VERSION], ["$PACKAGE_VERSION"]) + +AC_CONFIG_AUX_DIR([autostuff]) +AC_CONFIG_MACRO_DIRS([m4]) +AM_INIT_AUTOMAKE([foreign subdir-objects]) + +m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES([yes])]) + +AC_CONFIG_SRCDIR([src]) +AC_CONFIG_HEADER([config.h]) + +AM_PROG_AR +AC_PROG_CC +AC_PROG_INSTALL + +# libev has no pkg-config support +AC_CHECK_HEADERS([ev.h], [], [AC_MSG_ERROR([ev.h not found - please install libev])]) + +PKG_CHECK_MODULES([X11], [x11 xi xfixes]) + +AC_CHECK_PROG([has_a2x], [a2x], [true], [false]) +AM_CONDITIONAL([HAS_A2X], [test "x$has_a2x" = xtrue]) +if test "x$has_a2x" = xfalse +then + AC_MSG_NOTICE([a2x not found - needed to generate man pages]) +fi + +AC_CONFIG_FILES([Makefile + include/Makefile + src/Makefile + man/Makefile]) + +AC_OUTPUT diff --git a/include/Makefile.am b/include/Makefile.am new file mode 100644 index 0000000..90d8bbc --- /dev/null +++ b/include/Makefile.am @@ -0,0 +1,9 @@ +noinst_HEADERS = \ + all.h \ + cursor.h \ + event.h \ + extensions.h \ + externals.h \ + globals.h \ + types.h \ + util.h diff --git a/man/Makefile.am b/man/Makefile.am new file mode 100644 index 0000000..7856e6a --- /dev/null +++ b/man/Makefile.am @@ -0,0 +1,7 @@ +unclutter-xfixes.1: + a2x --no-xmllint -f manpage unclutter-xfixes.man + +dist_man1_MANS = unclutter-xfixes.1 + +clean-local: + rm -f unclutter-xfixes.1 diff --git a/obj/.gitkeep b/obj/.gitkeep deleted file mode 100644 index e69de29..0000000 diff --git a/src/Makefile.am b/src/Makefile.am new file mode 100644 index 0000000..c7f0729 --- /dev/null +++ b/src/Makefile.am @@ -0,0 +1,13 @@ +AM_CFLAGS = -D'__VERSION="${VERSION}"' "-I$(top_srcdir)/include" +AM_CFLAGS += -std=gnu99 -Wall -Wundef -Wshadow -Wformat-security +AM_CFLAGS += $(X11_CFLAGS) +AM_LDFLAGS = -lev $(X11_LIBS) + +bin_PROGRAMS = unclutter + +unclutter_SOURCES = \ + cursor.c \ + event.c \ + extensions.c \ + unclutter.c \ + util.c -- 2.21.0