From: Philipp Stephani Date: Mon, 12 Jun 2017 14:09:37 +0000 (+0200) Subject: Use Autoconf to generate the test module Makefile X-Git-Tag: emacs-26.0.90~521^2~113 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=c90a97adc49e844d884a4422e99570526fd92485;p=emacs.git Use Autoconf to generate the test module Makefile This makes it easier to pass compilation flags around. * configure.ac: Also build test module Makefile. * test/data/emacs-module/Makefile.in: New makefile template. * test/Makefile.in ($(test_module)): No longer necessary to pass @MODULES_SUFFIX@ around. * .gitignore: Test module Makefile can now be ignored. --- diff --git a/.gitignore b/.gitignore index 6dd21124e8c..1abefeb4326 100644 --- a/.gitignore +++ b/.gitignore @@ -34,7 +34,6 @@ InfoPlist.strings Makefile makefile !etc/refcards/Makefile -!test/data/emacs-module/Makefile !test/lisp/progmodes/flymake-resources/Makefile !test/manual/etags/Makefile !test/manual/etags/make-src/Makefile diff --git a/configure.ac b/configure.ac index 164454dff30..b4faf8ea178 100644 --- a/configure.ac +++ b/configure.ac @@ -5448,10 +5448,10 @@ dnl test/ is not present in release tarfiles. opt_makefile=test/Makefile if test -f "$srcdir/$opt_makefile.in"; then - SUBDIR_MAKEFILES="$SUBDIR_MAKEFILES $opt_makefile" + SUBDIR_MAKEFILES="$SUBDIR_MAKEFILES $opt_makefile test/data/emacs-module/Makefile" dnl Again, it's best not to use a variable. Though you can add dnl ", [], [opt_makefile='$opt_makefile']" and it should work. - AC_CONFIG_FILES([test/Makefile]) + AC_CONFIG_FILES([test/Makefile test/data/emacs-module/Makefile]) fi diff --git a/test/Makefile.in b/test/Makefile.in index 0c24c48e60e..13c0ac13f21 100644 --- a/test/Makefile.in +++ b/test/Makefile.in @@ -183,7 +183,7 @@ test_module_name := mod-test@MODULES_SUFFIX@ test_module := $(test_module_dir)/$(test_module_name) $(srcdir)/src/emacs-module-tests.log: $(test_module) $(test_module): $(srcdir)/../src/emacs-module.[ch] $(test_module_dir)/mod-test.c - $(MAKE) -C $(test_module_dir) $(test_module_name) SO=@MODULES_SUFFIX@ + $(MAKE) -C $(test_module_dir) $(test_module_name) endif ## Check that there is no 'automated' subdirectory, which would diff --git a/test/data/emacs-module/Makefile b/test/data/emacs-module/Makefile deleted file mode 100644 index bfeddb0472f..00000000000 --- a/test/data/emacs-module/Makefile +++ /dev/null @@ -1,41 +0,0 @@ -# Test GNU Emacs modules. - -# Copyright 2015-2017 Free Software Foundation, Inc. - -# This file is part of GNU Emacs. - -# GNU Emacs is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. - -# GNU Emacs is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. - -# You should have received a copy of the GNU General Public License -# along with GNU Emacs. If not, see . - -ROOT = ../../.. - -CC = gcc -LD = gcc -LDFLAGS = - -# On MS-Windows, say "make SO=.dll" to build the module -SO = .so -# -fPIC is a no-op on Windows, but causes a compiler warning -ifeq ($(SO),.dll) -CFLAGS = -std=c11 -ggdb3 -Wall -else -CFLAGS = -std=c11 -ggdb3 -Wall -fPIC -endif - -all: mod-test$(SO) - -%$(SO): %.o - $(LD) -shared $(LDFLAGS) -o $@ $< - -%.o: %.c - $(CC) $(CFLAGS) -I$(ROOT)/src -c $< diff --git a/test/data/emacs-module/Makefile.in b/test/data/emacs-module/Makefile.in new file mode 100644 index 00000000000..427d1aaa07c --- /dev/null +++ b/test/data/emacs-module/Makefile.in @@ -0,0 +1,46 @@ +### @configure_input@ + +# Test GNU Emacs modules. + +# Copyright 2015-2017 Free Software Foundation, Inc. + +# This file is part of GNU Emacs. + +# GNU Emacs is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. + +# GNU Emacs is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. + +# You should have received a copy of the GNU General Public License +# along with GNU Emacs. If not, see . + +SHELL = @SHELL@ + +top_srcdir = @top_srcdir@ +VPATH = $(srcdir) +CC = @CC@ +CFLAGS = @CFLAGS@ +CPPFLAGS = @CPPFLAGS@ +SO = @MODULES_SUFFIX@ + +# -fPIC is a no-op on Windows, but causes a compiler warning +ifeq ($(SO),.dll) +FPIC_CFLAGS = +else +FPIC_CFLAGS = -fPIC +endif + +all: mod-test$(SO) + +%$(SO): %.o + $(CC) -shared $(LDFLAGS) -o $@ $< + +%.o: %.c + $(CC) $(CPPFLAGS) $(CFLAGS) $(FPIC_CFLAGS) -I$(top_srcdir)/src -c -o $@ $< + +%.o: $(srcdir)/emacs-module.[ch]