blob: 25771168ce5eb9ee907032dbc13a47e4b8113c26 [file] [log] [blame]
From 2a5cf5021b56bc92c9953d2c82e8c90502d22c97 Mon Sep 17 00:00:00 2001
From: Bartosz Golaszewski <bgolaszewski@baylibre.com>
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 <bgolaszewski@baylibre.com>
---
.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