diff options
author | Gaetan Nadon <memsize@videotron.ca> | 2011-06-28 17:13:30 -0400 |
---|---|---|
committer | Gaetan Nadon <memsize@videotron.ca> | 2011-07-05 16:39:33 -0400 |
commit | cb6818b6230ca43ddaabfb8f16feaef9ae3ef68e (patch) | |
tree | 5655a8906908858bc59e6c0bfff624f5ff33bd29 | |
parent | bb604aca58f9c718601a22290176e201e92d36ab (diff) |
Revert "build: collapse all Makefile.am files into a single non-recursive one."
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@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@fooishbar.org>
Signed-off-by: Gaetan Nadon <memsize@videotron.ca>
-rw-r--r-- | .gitignore | 3 | ||||
-rw-r--r-- | Makefile.am | 95 | ||||
-rw-r--r-- | conf/Makefile.am | 27 | ||||
-rw-r--r-- | configure.ac | 6 | ||||
-rw-r--r-- | include/Makefile.am | 21 | ||||
-rw-r--r-- | man/Makefile.am | 47 | ||||
-rw-r--r-- | src/Makefile.am | 52 | ||||
-rw-r--r-- | test/.gitignore | 6 | ||||
-rw-r--r-- | test/Makefile.am | 15 | ||||
-rw-r--r-- | tools/.gitignore | 3 | ||||
-rw-r--r-- | tools/Makefile.am | 31 |
11 files changed, 210 insertions, 96 deletions
@@ -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@_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 -@DRIVER_NAME@_drv_la_LDFLAGS = -module -avoid-version -shared -@DRIVER_NAME@_drv_la_CPPFLAGS = -I$(top_srcdir)/include -@DRIVER_NAME@_drv_la_CFLAGS = $(XORG_CFLAGS) - -@DRIVER_NAME@_drv_la_SOURCES = src/@DRIVER_NAME@.c src/synapticsstr.h \ - src/synproto.h \ - src/properties.c - -if BUILD_PS2COMM -@DRIVER_NAME@_drv_la_SOURCES += \ - src/alpscomm.c \ - src/ps2comm.c src/ps2comm.h -endif - -if BUILD_EVENTCOMM -@DRIVER_NAME@_drv_la_SOURCES += \ - src/eventcomm.c src/eventcomm.h -endif - -if BUILD_PSMCOMM -@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@.man -driverman_DATA = $(driverman_PRE:man=@DRIVER_MAN_SUFFIX@) - -EXTRA_DIST = man/@DRIVER_NAME@.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@.man +driverman_DATA = $(driverman_PRE:man=@DRIVER_MAN_SUFFIX@) + +EXTRA_DIST = @DRIVER_NAME@.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. +@DRIVER_NAME@_drv_la_LTLIBRARIES = @DRIVER_NAME@_drv.la +@DRIVER_NAME@_drv_la_LDFLAGS = -module -avoid-version +@DRIVER_NAME@_drv_ladir = @inputdir@ + +AM_CPPFLAGS = -I$(top_srcdir)/include +AM_CFLAGS = $(XORG_CFLAGS) + +@DRIVER_NAME@_drv_la_SOURCES = @DRIVER_NAME@.c synapticsstr.h \ + synproto.h \ + properties.c + +if BUILD_PS2COMM +@DRIVER_NAME@_drv_la_SOURCES += \ + alpscomm.c \ + ps2comm.c ps2comm.h +endif + +if BUILD_EVENTCOMM +@DRIVER_NAME@_drv_la_SOURCES += \ + eventcomm.c eventcomm.h +endif + +if BUILD_PSMCOMM +@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) |