Revert "build: collapse all Makefile.am files into a single non-recursive one."

This reverts commit 39afe69ad7.

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>
This commit is contained in:
Gaetan Nadon
2011-06-28 17:13:30 -04:00
parent bb604aca58
commit cb6818b623
11 changed files with 210 additions and 96 deletions

View File

@@ -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)