From 4fa84f64e47daed1de10f5db2f090cd38d1253cc Mon Sep 17 00:00:00 2001 From: Helmut Eller Date: Mon, 8 Sep 2025 17:30:04 +0200 Subject: [PATCH] Adjust configure.ac and src/Makefile.in for in-tree MPS --- configure.ac | 36 ++++++++++++++---------------------- src/Makefile.in | 10 ++++++++-- 2 files changed, 22 insertions(+), 24 deletions(-) diff --git a/configure.ac b/configure.ac index ed69d9cd024..18b617c0e1f 100644 --- a/configure.ac +++ b/configure.ac @@ -5554,34 +5554,26 @@ if test "${with_gpm}" != "no"; then fi AC_SUBST([LIBGPM]) -### Use -lmps if available, unless '--with-mps=no'. AC_SUBST([HAVE_MPS]) HAVE_MPS=no -LIBMPS= +MPSOBJ= IGCOBJ= MPS_CFLAGS= +MPS_CONFIG= if test "${with_mps}" != "no"; then - AC_CHECK_HEADER([mps.h], - [AC_CHECK_LIB([mps], [mps_arena_create], [HAVE_MPS=yes], [], [$LIB_PTHREAD])]) - - if test "${HAVE_MPS}" = "yes"; then - IGCOBJ="igc.o" - AC_DEFINE([HAVE_MPS], [1], - [Define to 1 if you have the mps library (-lmps).]) - if test "${with_mps}" = "debug"; then - LIBMPS="-lmps-debug $LIB_PTHREAD" - else - LIBMPS="-lmps $LIB_PTHREAD" - fi - # Force -fno-omit-frame-pointer to avoid register scanning bug: - # https://github.com/Ravenbrook/mps/pull/38 - MPS_CFLAGS="-fno-omit-frame-pointer" - else - AC_MSG_ERROR([The MPS library libmps is missing]): + HAVE_MPS=yes + IGCOBJ="igc.o" + MPSOBJ="mps.o" + AC_DEFINE([HAVE_MPS], [1], [Define to build with MPS.]) + if test "${with_mps}" = "debug"; then + MPS_CONFIG=-DCONFIG_VAR_COOL fi + # Force -fno-omit-frame-pointer to avoid register scanning bug: + # https://github.com/Ravenbrook/mps/pull/38 + MPS_CFLAGS="-fno-omit-frame-pointer -I\$(top_srcdir)/mps/code" fi - +# FIXME: update for in-tree MPS if test "$REALLY_ANDROID" = "yes" && test "$with_mps" != "no"; then HAVE_MPS=no ndk_SEARCH_MODULE([mps], [MPS], [HAVE_MPS=yes]) @@ -5599,9 +5591,9 @@ if test "$REALLY_ANDROID" = "yes" && test "$with_mps" != "no"; then fi fi AC_SUBST([MPS_CFLAGS]) -AC_SUBST([LIBMPS]) +AC_SUBST([MPSOBJ]) AC_SUBST([IGCOBJ]) - +AC_SUBST([MPS_CONFIG]) dnl Check for malloc/malloc.h on darwin AC_CHECK_HEADERS_ONCE([malloc/malloc.h]) diff --git a/src/Makefile.in b/src/Makefile.in index 9715d73c046..c0e9ba8230f 100644 --- a/src/Makefile.in +++ b/src/Makefile.in @@ -345,8 +345,9 @@ FONT_OBJ=@FONT_OBJ@ CM_OBJ=@CM_OBJ@ LIBGPM = @LIBGPM@ -LIBMPS = @LIBMPS@ +MPSOBJ = @MPSOBJ@ IGCOBJ = @IGCOBJ@ +MPS_CONFIG= @MPS_CONFIG@ LIBSELINUX_LIBS = @LIBSELINUX_LIBS@ LIBSELINUX_CFLAGS = @LIBSELINUX_CFLAGS@ @@ -499,7 +500,8 @@ VMLIMIT_OBJ=@VMLIMIT_OBJ@ RALLOC_OBJ=@RALLOC_OBJ@ ## List of object files that make-docfile should not be told about. -otherobj= $(TERMCAP_OBJ) $(GMALLOC_OBJ) $(RALLOC_OBJ) $(WIDGET_OBJ) $(LIBOBJS) +otherobj= $(TERMCAP_OBJ) $(GMALLOC_OBJ) $(RALLOC_OBJ) $(WIDGET_OBJ) \ + $(LIBOBJS) $(MPSOBJ) ## All object files linked into temacs. $(VMLIMIT_OBJ) should be first. ALLOBJS = $(VMLIMIT_OBJ) $(obj) $(otherobj) @@ -699,6 +701,10 @@ LIBEGNU_ARCHIVE = $(lib)/libgnu.a $(LIBEGNU_ARCHIVE): $(config_h) $(MAKE) -C $(dir $@) all +mps.o: $(config_h) + $(AM_V_CC)cd $(top_srcdir)/mps/code && \ + $(CC) $(CFLAGS) $(MPS_CONFIG) -c mps.c -o $(abspath $@) + ifeq ($(HAVE_PDUMPER),yes) MAKE_PDUMPER_FINGERPRINT = $(libsrc)/make-fingerprint$(EXEEXT) else