From c90a97adc49e844d884a4422e99570526fd92485 Mon Sep 17 00:00:00 2001 From: Philipp Stephani Date: Mon, 12 Jun 2017 16:09:37 +0200 Subject: [PATCH] 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. --- .gitignore | 1 - configure.ac | 4 +-- test/Makefile.in | 2 +- .../emacs-module/{Makefile => Makefile.in} | 25 +++++++++++-------- 4 files changed, 18 insertions(+), 14 deletions(-) rename test/data/emacs-module/{Makefile => Makefile.in} (72%) 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.in similarity index 72% rename from test/data/emacs-module/Makefile rename to test/data/emacs-module/Makefile.in index bfeddb0472f..427d1aaa07c 100644 --- a/test/data/emacs-module/Makefile +++ b/test/data/emacs-module/Makefile.in @@ -1,3 +1,5 @@ +### @configure_input@ + # Test GNU Emacs modules. # Copyright 2015-2017 Free Software Foundation, Inc. @@ -17,25 +19,28 @@ # You should have received a copy of the GNU General Public License # along with GNU Emacs. If not, see . -ROOT = ../../.. +SHELL = @SHELL@ -CC = gcc -LD = gcc -LDFLAGS = +top_srcdir = @top_srcdir@ +VPATH = $(srcdir) +CC = @CC@ +CFLAGS = @CFLAGS@ +CPPFLAGS = @CPPFLAGS@ +SO = @MODULES_SUFFIX@ -# 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 +FPIC_CFLAGS = else -CFLAGS = -std=c11 -ggdb3 -Wall -fPIC +FPIC_CFLAGS = -fPIC endif all: mod-test$(SO) %$(SO): %.o - $(LD) -shared $(LDFLAGS) -o $@ $< + $(CC) -shared $(LDFLAGS) -o $@ $< %.o: %.c - $(CC) $(CFLAGS) -I$(ROOT)/src -c $< + $(CC) $(CPPFLAGS) $(CFLAGS) $(FPIC_CFLAGS) -I$(top_srcdir)/src -c -o $@ $< + +%.o: $(srcdir)/emacs-module.[ch] -- 2.39.2