[PATCH input-synaptics 4/5] Revert "build: collapse all Makefile.am files into a single non-recursive one."

Gaetan Nadon memsize at videotron.ca
Tue Jul 5 13:49:30 PDT 2011


This reverts commit 39afe69ad7d2258d4043044d1283bd6e311e48da.

1. For such a small module, the build time improvement is most likely
negligible. At least, I'd like to see some timings proving it's
worthiness before seeing the patch go back in.

2. This kind of change would need a thorough review. The need to
operate the build from a single toplevel Makefile is a significant
change. The two most noticeable issues for me are that collapsing all
the Makefiles could easily cause namespacing issues with the
variables, and operating on files outside the current directory can
introduce subtle bugs. I feel that the non-recursive style is
generally less robust than the standard recursive make scheme.

3. It's unlike all the other X.org modules. This isn't a showstopper
for me, but the recursive style is well understood here and you've
beaten all the modules into a consistent format that makes build bugs
unique to specific modules less likely.

Acked-by: Dan Nicholson <dbn.lists at gmail.com>

To give a concrete example for #3 above, the 175 man pages are much
easier maintained using a very similar makefile in the man directory
of all X.Org module.

The cost of maintaining a single makefile is much higher. Every target
in the makefile has to be reviewed and tested when changes are made.
Not everyone has the all the skills to handle widely different targets
such as man pages, DocBook/XML, librairies, C code, distribution hooks,
and so on.

Acked-by: Daniel Stone <daniel at fooishbar.org>
Signed-off-by: Gaetan Nadon <memsize at videotron.ca>
---
 .gitignore          |    3 --
 Makefile.am         |   95 +-------------------------------------------------
 conf/Makefile.am    |   27 ++++++++++++++
 configure.ac        |    6 +++
 include/Makefile.am |   21 +++++++++++
 man/Makefile.am     |   47 +++++++++++++++++++++++++
 src/Makefile.am     |   52 ++++++++++++++++++++++++++++
 test/.gitignore     |    6 +++
 test/Makefile.am    |   15 ++++++++
 tools/.gitignore    |    3 ++
 tools/Makefile.am   |   31 ++++++++++++++++
 11 files changed, 210 insertions(+), 96 deletions(-)
 create mode 100644 conf/Makefile.am
 create mode 100644 include/Makefile.am
 create mode 100644 man/Makefile.am
 create mode 100644 src/Makefile.am
 create mode 100644 test/.gitignore
 create mode 100644 test/Makefile.am
 create mode 100644 tools/.gitignore
 create mode 100644 tools/Makefile.am

diff --git a/.gitignore b/.gitignore
index 2f191c3..c496323 100644
--- a/.gitignore
+++ b/.gitignore
@@ -76,6 +76,3 @@ core
 #		Edit the following section as needed
 # For example, !report.pc overrides *.pc. See 'man gitignore'
 # 
-eventcomm-test
-synclient
-syndaemon
diff --git a/Makefile.am b/Makefile.am
index 7cedc61..edd28a6 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -18,104 +18,13 @@
 #  IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
 #  CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 
+SUBDIRS = include src man tools conf test
 MAINTAINERCLEANFILES = ChangeLog INSTALL
 
 pkgconfigdir = $(libdir)/pkgconfig
 pkgconfig_DATA = xorg-synaptics.pc
 
-sdk_HEADERS = include/synaptics.h include/synaptics-properties.h
-
-input_LTLIBRARIES = @DRIVER_NAME at _drv.la
-
-# -module lets us name the module exactly how we want
-# -avoid-version prevents gratuitous .0.0.0 version numbers on the end
-# -shared avoid building the static archive
- at DRIVER_NAME@_drv_la_LDFLAGS = -module -avoid-version -shared
- at DRIVER_NAME@_drv_la_CPPFLAGS = -I$(top_srcdir)/include
- at DRIVER_NAME@_drv_la_CFLAGS = $(XORG_CFLAGS)
-
- at DRIVER_NAME@_drv_la_SOURCES = src/@DRIVER_NAME at .c src/synapticsstr.h \
-	src/synproto.h \
-	src/properties.c
-
-if BUILD_PS2COMM
- at DRIVER_NAME@_drv_la_SOURCES += \
-	src/alpscomm.c \
-	src/ps2comm.c src/ps2comm.h
-endif
-
-if BUILD_EVENTCOMM
- at DRIVER_NAME@_drv_la_SOURCES += \
-	src/eventcomm.c src/eventcomm.h
-endif
-
-if BUILD_PSMCOMM
- at DRIVER_NAME@_drv_la_SOURCES += \
-	src/psmcomm.c
-endif
-
-bin_PROGRAMS = synclient syndaemon
-
-synclient_SOURCES = tools/synclient.c
-synclient_CFLAGS = -I$(top_srcdir)/include $(XORG_CFLAGS) $(XI_CFLAGS)
-synclient_LDADD = $(XI_LIBS)
-
-syndaemon_SOURCES = tools/syndaemon.c
-syndaemon_CFLAGS = -I$(top_srcdir)/include $(XORG_CFLAGS) $(XI_CFLAGS) $(XTST_CFLAGS)
-syndaemon_LDADD = $(XI_LIBS) $(XTST_LIBS)
-
-if HAS_XORG_CONF_DIR
-dist_config_DATA = conf/50-synaptics.conf
-else
-fdidir = $(datadir)/hal/fdi/policy/20thirdparty
-dist_fdi_DATA = conf/11-x11-synaptics.fdi
-endif
-
-if ENABLE_UNIT_TESTS
-if BUILD_EVENTCOMM
-check_PROGRAMS = eventcomm-test
-
-eventcomm_test_CPPFLAGS = -I$(top_srcdir)/src -I$(top_srcdir)/include
-eventcomm_test_CFLAGS = $(XORG_CFLAGS) $(CWARNFLAGS)
-eventcomm_test_SOURCES = test/eventcomm-test.c\
-			 src/eventcomm.c \
-			 test/fake-symbols.c test/fake-symbols.h
-
-TESTS = $(check_PROGRAMS)
-endif
-endif
-
-synclientmandir = $(APP_MAN_DIR)
-synclientman_PRE = man/synclient.man
-synclientman_DATA = $(synclientman_PRE:man=@APP_MAN_SUFFIX@)
-
-syndaemonmandir = $(APP_MAN_DIR)
-syndaemonman_PRE = man/syndaemon.man
-syndaemonman_DATA = $(syndaemonman_PRE:man=@APP_MAN_SUFFIX@)
-
-drivermandir = $(DRIVER_MAN_DIR)
-driverman_PRE = man/@DRIVER_NAME at .man
-driverman_DATA = $(driverman_PRE:man=@DRIVER_MAN_SUFFIX@)
-
-EXTRA_DIST = man/@DRIVER_NAME at .man man/synclient.man man/syndaemon.man
-
-CLEANFILES = $(driverman_DATA) $(synclientman_DATA) $(syndaemonman_DATA)
-
-SUFFIXES = .$(DRIVER_MAN_SUFFIX) .man
-
-.PHONY: ChangeLog INSTALL mandir
-
-mandir:
-	$(MKDIR_P) man
-
-# String replacements in MAN_SUBSTS now come from xorg-macros.m4 via configure
-.man.$(DRIVER_MAN_SUFFIX):
-	@$(MKDIR_P) man
-	$(AM_V_GEN)$(SED) $(MAN_SUBSTS) < $< > $@
-
-.man.$(APP_MAN_SUFFIX):
-	@$(MKDIR_P) man
-	$(AM_V_GEN)$(SED) $(MAN_SUBSTS) < $< > $@
+.PHONY: ChangeLog INSTALL
 
 INSTALL:
 	$(INSTALL_CMD)
diff --git a/conf/Makefile.am b/conf/Makefile.am
new file mode 100644
index 0000000..38d2a01
--- /dev/null
+++ b/conf/Makefile.am
@@ -0,0 +1,27 @@
+#  Copyright 2005 Adam Jackson.
+#
+#  Permission is hereby granted, free of charge, to any person obtaining a
+#  copy of this software and associated documentation files (the "Software"),
+#  to deal in the Software without restriction, including without limitation
+#  on the rights to use, copy, modify, merge, publish, distribute, sub
+#  license, and/or sell copies of the Software, and to permit persons to whom
+#  the Software is furnished to do so, subject to the following conditions:
+#
+#  The above copyright notice and this permission notice (including the next
+#  paragraph) shall be included in all copies or substantial portions of the
+#  Software.
+#
+#  THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+#  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+#  FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.  IN NO EVENT SHALL
+#  ADAM JACKSON BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
+#  IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+#  CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+
+if HAS_XORG_CONF_DIR
+dist_config_DATA = 50-synaptics.conf
+else
+fdidir = $(datadir)/hal/fdi/policy/20thirdparty
+dist_fdi_DATA = 11-x11-synaptics.fdi
+endif
diff --git a/configure.ac b/configure.ac
index e5427cd..2fe5289 100644
--- a/configure.ac
+++ b/configure.ac
@@ -147,6 +147,12 @@ fi
 # -----------------------------------------------------------------------------
 
 AC_CONFIG_FILES([Makefile
+                src/Makefile
+                man/Makefile
+                tools/Makefile
+                conf/Makefile
+                include/Makefile
+                test/Makefile
                 xorg-synaptics.pc])
 AC_OUTPUT
 
diff --git a/include/Makefile.am b/include/Makefile.am
new file mode 100644
index 0000000..f078e5e
--- /dev/null
+++ b/include/Makefile.am
@@ -0,0 +1,21 @@
+#  Copyright 2005 Adam Jackson.
+#
+#  Permission is hereby granted, free of charge, to any person obtaining a
+#  copy of this software and associated documentation files (the "Software"),
+#  to deal in the Software without restriction, including without limitation
+#  on the rights to use, copy, modify, merge, publish, distribute, sub
+#  license, and/or sell copies of the Software, and to permit persons to whom
+#  the Software is furnished to do so, subject to the following conditions:
+#
+#  The above copyright notice and this permission notice (including the next
+#  paragraph) shall be included in all copies or substantial portions of the
+#  Software.
+#
+#  THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+#  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+#  FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.  IN NO EVENT SHALL
+#  ADAM JACKSON BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
+#  IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+#  CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+sdk_HEADERS = synaptics.h synaptics-properties.h
diff --git a/man/Makefile.am b/man/Makefile.am
new file mode 100644
index 0000000..8d56fe0
--- /dev/null
+++ b/man/Makefile.am
@@ -0,0 +1,47 @@
+# $Id$
+#
+# Copyright 2005 Sun Microsystems, Inc.  All rights reserved.
+#
+# Permission is hereby granted, free of charge, to any person obtaining a
+# copy of this software and associated documentation files (the "Software"),
+# to deal in the Software without restriction, including without limitation
+# the rights to use, copy, modify, merge, publish, distribute, sublicense,
+# and/or sell copies of the Software, and to permit persons to whom the
+# Software is furnished to do so, subject to the following conditions:
+#
+# The above copyright notice and this permission notice (including the next
+# paragraph) shall be included in all copies or substantial portions of the
+# Software.
+#
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
+# THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+# DEALINGS IN THE SOFTWARE.
+#
+
+synclientmandir = $(APP_MAN_DIR)
+synclientman_PRE = synclient.man
+synclientman_DATA = $(synclientman_PRE:man=@APP_MAN_SUFFIX@)
+
+syndaemonmandir = $(APP_MAN_DIR)
+syndaemonman_PRE = syndaemon.man
+syndaemonman_DATA =$(syndaemonman_PRE:man=@APP_MAN_SUFFIX@)
+
+drivermandir = $(DRIVER_MAN_DIR)
+driverman_PRE = @DRIVER_NAME at .man
+driverman_DATA = $(driverman_PRE:man=@DRIVER_MAN_SUFFIX@)
+
+EXTRA_DIST = @DRIVER_NAME at .man synclient.man syndaemon.man
+
+CLEANFILES = $(driverman_DATA) $(synclientman_DATA) $(syndaemonman_DATA)
+
+SUFFIXES = .$(DRIVER_MAN_SUFFIX) .man
+
+# String replacements in MAN_SUBSTS now come from xorg-macros.m4 via configure
+.man.$(DRIVER_MAN_SUFFIX):
+	$(AM_V_GEN)$(SED) $(MAN_SUBSTS) < $< > $@
+.man.$(APP_MAN_SUFFIX):
+	$(AM_V_GEN)$(SED) $(MAN_SUBSTS) < $< > $@
diff --git a/src/Makefile.am b/src/Makefile.am
new file mode 100644
index 0000000..5e04670
--- /dev/null
+++ b/src/Makefile.am
@@ -0,0 +1,52 @@
+#  Copyright 2005 Adam Jackson.
+#
+#  Permission is hereby granted, free of charge, to any person obtaining a
+#  copy of this software and associated documentation files (the "Software"),
+#  to deal in the Software without restriction, including without limitation
+#  on the rights to use, copy, modify, merge, publish, distribute, sub
+#  license, and/or sell copies of the Software, and to permit persons to whom
+#  the Software is furnished to do so, subject to the following conditions:
+#
+#  The above copyright notice and this permission notice (including the next
+#  paragraph) shall be included in all copies or substantial portions of the
+#  Software.
+#
+#  THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+#  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+#  FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.  IN NO EVENT SHALL
+#  ADAM JACKSON BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
+#  IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+#  CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+
+# this is obnoxious:
+# -module lets us name the module exactly how we want
+# -avoid-version prevents gratuitous .0.0.0 version numbers on the end
+# _ladir passes a dummy rpath to libtool so the thing will actually link
+# TODO: -nostdlib/-Bstatic/-lgcc platform magic, not installing the .a, etc.
+ at DRIVER_NAME@_drv_la_LTLIBRARIES = @DRIVER_NAME at _drv.la
+ at DRIVER_NAME@_drv_la_LDFLAGS = -module -avoid-version
+ at DRIVER_NAME@_drv_ladir = @inputdir@
+
+AM_CPPFLAGS = -I$(top_srcdir)/include
+AM_CFLAGS = $(XORG_CFLAGS)
+
+ at DRIVER_NAME@_drv_la_SOURCES = @DRIVER_NAME at .c synapticsstr.h \
+	synproto.h \
+	properties.c
+
+if BUILD_PS2COMM
+ at DRIVER_NAME@_drv_la_SOURCES += \
+	alpscomm.c \
+	ps2comm.c ps2comm.h
+endif
+
+if BUILD_EVENTCOMM
+ at DRIVER_NAME@_drv_la_SOURCES += \
+	eventcomm.c eventcomm.h
+endif
+
+if BUILD_PSMCOMM
+ at DRIVER_NAME@_drv_la_SOURCES += \
+	psmcomm.c
+endif
diff --git a/test/.gitignore b/test/.gitignore
new file mode 100644
index 0000000..a59f751
--- /dev/null
+++ b/test/.gitignore
@@ -0,0 +1,6 @@
+#		Add & Override patterns for xf86-input-synaptics
+#
+#		Edit the following section as needed
+# For example, !report.pc overrides *.pc. See 'man gitignore'
+
+eventcomm-test
diff --git a/test/Makefile.am b/test/Makefile.am
new file mode 100644
index 0000000..5dd8cdb
--- /dev/null
+++ b/test/Makefile.am
@@ -0,0 +1,15 @@
+if ENABLE_UNIT_TESTS
+AM_CPPFLAGS = -I$(top_srcdir)/src -I$(top_srcdir)/include
+AM_CFLAGS = $(XORG_CFLAGS) $(CWARNFLAGS)
+fake_syms = fake-symbols.c fake-symbols.h
+
+if BUILD_EVENTCOMM
+noinst_PROGRAMS = eventcomm-test
+
+eventcomm_test_SOURCES = eventcomm-test.c\
+			 $(top_srcdir)/src/eventcomm.c \
+			 $(fake_syms)
+endif
+
+TESTS = $(noinst_PROGRAMS)
+endif
diff --git a/tools/.gitignore b/tools/.gitignore
new file mode 100644
index 0000000..f3b80fc
--- /dev/null
+++ b/tools/.gitignore
@@ -0,0 +1,3 @@
+#		Add & Override for this directory and it's subdirectories
+synclient
+syndaemon
diff --git a/tools/Makefile.am b/tools/Makefile.am
new file mode 100644
index 0000000..c74a5e3
--- /dev/null
+++ b/tools/Makefile.am
@@ -0,0 +1,31 @@
+#  Copyright 2008 Red Hat, Inc.
+#
+#  Permission is hereby granted, free of charge, to any person obtaining a
+#  copy of this software and associated documentation files (the "Software"),
+#  to deal in the Software without restriction, including without limitation
+#  on the rights to use, copy, modify, merge, publish, distribute, sub
+#  license, and/or sell copies of the Software, and to permit persons to whom
+#  the Software is furnished to do so, subject to the following conditions:
+#
+#  The above copyright notice and this permission notice (including the next
+#  paragraph) shall be included in all copies or substantial portions of the
+#  Software.
+#
+#  THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+#  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+#  FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.  IN NO EVENT SHALL
+#  ADAM JACKSON BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
+#  IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+#  CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+bin_PROGRAMS = synclient syndaemon
+
+AM_CPPFLAGS = -I$(top_srcdir)/include $(XORG_CFLAGS)
+
+synclient_SOURCES = synclient.c
+synclient_CFLAGS = $(XI_CFLAGS)
+synclient_LDADD = $(XI_LIBS)
+
+syndaemon_SOURCES = syndaemon.c
+syndaemon_CFLAGS = $(XI_CFLAGS) $(XTST_CFLAGS)
+syndaemon_LDADD = $(XI_LIBS) $(XTST_LIBS)
-- 
1.7.4.1



More information about the xorg-devel mailing list