Compile checksums.c only if --with-checksums is given (configure)
authorIvan Maidanski <ivmai@mail.ru>
Fri, 9 Jun 2017 16:42:54 +0000 (19:42 +0300)
committerIvan Maidanski <ivmai@mail.ru>
Fri, 9 Jun 2017 16:42:54 +0000 (19:42 +0300)
New configure option (--with-checksums) is added, mainly to workaround
'checksums.a has no symbols' link warning (observed on Darwin).

* Makefile.am [!SINGLE_GC_OBJ] (libgc_la_SOURCES): Do not add checksums.c
unless CHECKSUMS.
* configure.ac (checksums): New AC_ARG_WITH.
* configure.ac [with_checksums && (enable_munmap || THREADS!=none)]:
Issue AC_MSG_ERROR.
* configure.ac (CHECKSUMS): New AC_DEFINE and AM_CONDITIONAL if
with_checksums.

Makefile.am
configure.ac

index c2c5402..4d0174b 100644 (file)
@@ -69,7 +69,7 @@ else
 
 EXTRA_DIST += extra/gc.c
 libgc_la_SOURCES = \
-    allchblk.c alloc.c blacklst.c checksums.c dbg_mlc.c \
+    allchblk.c alloc.c blacklst.c dbg_mlc.c \
     dyn_load.c finalize.c gc_dlopen.c gcj_mlc.c headers.c \
     mach_dep.c malloc.c mallocx.c mark.c mark_rts.c misc.c new_hblk.c \
     obj_map.c os_dep.c ptr_chck.c reclaim.c specific.c stubborn.c typd_mlc.c
@@ -99,6 +99,10 @@ if MAKE_BACK_GRAPH
 libgc_la_SOURCES += backgraph.c
 endif
 
+if CHECKSUMS
+libgc_la_SOURCES += checksums.c
+endif
+
 if ENABLE_DISCLAIM
 libgc_la_SOURCES += fnlz_mlc.c
 endif
index 309fb70..603773d 100644 (file)
@@ -908,6 +908,22 @@ else
     fi
 fi
 
+AC_ARG_WITH([checksums],
+    [AS_HELP_STRING([--with-checksums],
+                    [Report on erroneously cleared dirty bits and
+                     unexpectedly altered stubborn objects, at
+                     substantial performance cost; use only for debugging
+                     of the incremental collector])])
+if test x$with_checksums = xyes; then
+    if test x$enable_munmap != x -o x$THREADS != xnone; then
+        AC_MSG_ERROR([CHECKSUMS not compatible with USE_MUNMAP or threads])
+    fi
+    AC_DEFINE([CHECKSUMS], 1,
+              [Erroneously cleared dirty bits checking.  Use only for
+               debugging of the incremental collector.])
+fi
+AM_CONDITIONAL([CHECKSUMS], test x$with_checksums = xyes)
+
 AM_CONDITIONAL(USE_LIBDIR, test -z "$with_cross_host")
 
 AC_ARG_ENABLE(werror, [--enable-werror Pass -Werror to the C compiler],