chiark / gitweb /
Don't link against -lgc if not using garbage collection.
authorRichard Kettlewell <rjk@greenend.org.uk>
Tue, 17 Jul 2007 21:44:51 +0000 (22:44 +0100)
committerRichard Kettlewell <rjk@greenend.org.uk>
Tue, 17 Jul 2007 21:44:51 +0000 (22:44 +0100)
18 files changed:
clients/Makefile.am
clients/disorder.c
clients/disorderfm.c
clients/test-eclient.c
disobedience/Makefile.am
disobedience/disobedience.c
lib/Makefile.am
lib/mem.c
lib/mem.h
lib/memgc.c [new file with mode: 0644]
server/Makefile.am
server/cgimain.c
server/deadlock.c
server/disorderd.c
server/dump.c
server/rescan.c
server/speaker.c
server/trackname.c

index aaf0efb49833f3016907d8c6ec30b061e6b0310b..b197b90f11213457e8f8fe6c3ced7bbdf2b6d91d 100644 (file)
@@ -23,18 +23,21 @@ noinst_PROGRAMS=test-eclient filename-bytes
 
 AM_CPPFLAGS=-I${top_srcdir}/lib -I../lib
 
-disorder_SOURCES=disorder.c authorize.c authorize.h
+disorder_SOURCES=disorder.c authorize.c authorize.h \
+       ../lib/memgc.c
 disorder_LDADD=$(LIBOBJS) ../lib/libdisorder.a \
        $(LIBDL) $(LIBGC) $(LIBGCRYPT) $(LIBPCRE)
 disorder_DEPENDENCIES=$(LIBOBJS) ../lib/libdisorder.a
 
-disorderfm_SOURCES=disorderfm.c
+disorderfm_SOURCES=disorderfm.c \
+       ../lib/memgc.c
 disorderfm_LDADD=$(LIBOBJS) ../lib/libdisorder.a $(LIBGC) $(LIBICONV)
 disorderfm_DEPENDENCIES=$(LIBOBJS) ../lib/libdisorder.a
 
 filename_bytes_SOURCES=filename-bytes.c
 
-test_eclient_SOURCES=test-eclient.c
+test_eclient_SOURCES=test-eclient.c \
+       ../lib/memgc.c
 test_eclient_LDADD=../lib/libdisorder.a \
        $(LIBDL) $(LIBGC) $(LIBGCRYPT) $(LIBPCRE)
 test_eclient_DEPENDENCIES=../lib/libdisorder.a
index f7b413025f14411178227e42e0f68b2059b3055b..d2e35126b7df673617d097b2fab6cdbd93e1677b 100644 (file)
@@ -501,7 +501,7 @@ int main(int argc, char **argv) {
   int status = 0;
   struct vector args;
 
-  mem_init(1);
+  mem_init();
   if(!setlocale(LC_CTYPE, "")) fatal(errno, "error calling setlocale");
   while((n = getopt_long(argc, argv, "hVc:dHL", options, 0)) >= 0) {
     switch(n) {
index c0e21015033753da54694d8de44af644e0a6aaf1..ccb2472783068fda484c13c2b5a47d80da06d5a4 100644 (file)
@@ -351,7 +351,7 @@ int main(int argc, char **argv) {
   int n;
   struct pattern *p;
 
-  mem_init(1);
+  mem_init();
   if(!setlocale(LC_CTYPE, "")) fatal(errno, "error calling setlocale");
   while((n = getopt_long(argc, argv, "hVdf:t:i:e:ET:u:wlscn", options, 0)) >= 0) {
     switch(n) {
index 3c2e92e1043e5fbcfd7a03a5fac666b02ad9dd56..fa8eb5a79d80a60ead424511428b5977560115cb 100644 (file)
@@ -163,7 +163,7 @@ static void recent_completed(void *v, struct queue_entry *q) {
 
 int main(int argc, char **argv) {
   assert(argc > 0);
-  mem_init(1);
+  mem_init();
   debugging = 0;                       /* turn on for even more verbosity */
   if(config_read()) fatal(0, "config_read failed");
   tracks = &argv[1];
index 7d500ed8cfb0be479ecdb5392fe24e1213dfa01d..11298d89d0825129549d14aaa9e085712d708858 100644 (file)
@@ -24,7 +24,8 @@ AM_CPPFLAGS=-I${top_srcdir}/lib -I../lib
 AM_CFLAGS=$(GLIB_CFLAGS) $(GTK_CFLAGS)
 
 disobedience_SOURCES=disobedience.h disobedience.c client.c queue.c    \
-                 choose.c misc.c style.h control.c properties.c menu.c
+                 choose.c misc.c style.h control.c properties.c menu.c \
+       ../lib/memgc.c
 disobedience_LDADD=../lib/libdisorder.a $(LIBPCRE) $(LIBGC) $(LIBGCRYPT)
 disobedience_LDFLAGS=$(GTK_LIBS)
 
index 7c6ef3dc9d6e0a7d1a03eb724785d8b359f22305..e0a987aa746f96f5cd0983cebc30bbe0e9c3cf25 100644 (file)
@@ -319,7 +319,7 @@ int main(int argc, char **argv) {
   int n;
   disorder_eclient *logclient;
 
-  mem_init(1);
+  mem_init();
   if(!setlocale(LC_CTYPE, "")) fatal(errno, "error calling setlocale");
   gtk_init(&argc, &argv);
   gtk_rc_parse_string(style);
index d9135cadb02822f9e318ee9c54e3937db59dcd1d..ece2b3b90cacd5cfaafcd7f9b2c110bb952e49b4 100644 (file)
@@ -1,4 +1,3 @@
-
 #
 # This file is part of DisOrder.
 # Copyright (C) 2004, 2005, 2006, s007 Richard Kettlewell
@@ -78,7 +77,7 @@ defs.o: definitions.h
 defs.lo: definitions.h
 
 test_SOURCES=test.c
-test_LDADD=libdisorder.a $(LIBPCRE) $(LIBGC) $(LIBICONV)
+test_LDADD=libdisorder.a $(LIBPCRE) $(LIBICONV)
 test_DEPENDENCIES=libdisorder.a
 
 check: test
index 2b4848d205738b525f58e5f1102a1b4583590c1e..c2dd40cf6baf13b9d11099fd02f455bcbdbae32e 100644 (file)
--- a/lib/mem.c
+++ b/lib/mem.c
@@ -1,6 +1,6 @@
 /*
  * This file is part of DisOrder.
- * Copyright (C) 2004, 2005, 2006 Richard Kettlewell
+ * Copyright (C) 2004, 2005, 2006, 2007 Richard Kettlewell
  *
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
@@ -21,7 +21,9 @@
 #include <config.h>
 #include "types.h"
 
+#if GC
 #include <gc.h>
+#endif
 #include <errno.h>
 #include <string.h>
 #include <stdio.h>
 
 #include "disorder.h"
 
-static void *(*do_malloc)(size_t) = GC_malloc;
-static void *(*do_realloc)(void *, size_t) = GC_realloc;
-static void *(*do_malloc_atomic)(size_t) = GC_malloc_atomic;
-static void (*do_free)(void *) = GC_free;
-
 static void *malloc_and_zero(size_t n) {
   void *ptr = malloc(n);
 
@@ -46,10 +43,23 @@ static void *malloc_and_zero(size_t n) {
   return ptr;
 }
 
-void mem_init(int gc) {
+#if GC
+static void *(*do_malloc)(size_t) = GC_malloc;
+static void *(*do_realloc)(void *, size_t) = GC_realloc;
+static void *(*do_malloc_atomic)(size_t) = GC_malloc_atomic;
+static void (*do_free)(void *) = GC_free;
+#else
+static void *(*do_malloc)(size_t) = malloc_and_zero;
+static void *(*do_realloc)(void *, size_t) = realloc;
+static void *(*do_malloc_atomic)(size_t) = malloc;
+static void (*do_free)(void *) = free;
+#endif
+
+void mem_init(void) {
+#if GC
   const char *e;
   
-  if(!gc || ((e = getenv("DISORDER_GC")) && !strcmp(e, "no"))) {
+  if(((e = getenv("DISORDER_GC")) && !strcmp(e, "no"))) {
     do_malloc = malloc_and_zero;
     do_malloc_atomic = malloc;
     do_realloc = realloc;
@@ -58,6 +68,7 @@ void mem_init(int gc) {
     GC_init();
     assert(GC_all_interior_pointers);
   }
+#endif
 }
 
 void *xmalloc(size_t n) {
index d8dc9d975051718b56679ff112391a9df4290437..20f40f659f115d6764b76e1d7e9a3c2f185e90f0 100644 (file)
--- a/lib/mem.h
+++ b/lib/mem.h
@@ -27,9 +27,8 @@
 
 #include <stdarg.h>
 
-void mem_init(int gc);
-/* initialize memory management.  Set GC to 1 if garbage collection is
- * desired. */
+void mem_init(void);
+/* initialize memory management. */
 
 void *xmalloc(size_t);
 void *xrealloc(void *, size_t);
diff --git a/lib/memgc.c b/lib/memgc.c
new file mode 100644 (file)
index 0000000..1fbb30f
--- /dev/null
@@ -0,0 +1,22 @@
+/*
+ * This file is part of DisOrder.
+ * Copyright (C) 2007 Richard Kettlewell
+ *
+ * This program 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 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program 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 this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
+ * USA
+ */
+
+#define GC 1
+#include "mem.c"
index 9b9d094107a400468c3dbfd9a9ea13807274c8ce..4b01707c18d38ad259d8c6e1b9fa76097bf4d0f9 100644 (file)
@@ -30,7 +30,8 @@ disorderd_SOURCES=disorderd.c                         \
        play.c play.h                                   \
        server.c server.h                               \
        state.c state.h                                 \
-       trackdb.c trackdb.h trackdb-int.h exports.c
+       trackdb.c trackdb.h trackdb-int.h exports.c     \
+       ../lib/memgc.c
 disorderd_LDADD=$(LIBOBJS) ../lib/libdisorder.a \
        $(LIBPCRE) $(LIBDB) $(LIBAO) $(LIBGC) $(LIBGCRYPT) $(LIBICONV)
 disorderd_LDFLAGS=-export-dynamic
@@ -39,38 +40,40 @@ disorderd_DEPENDENCIES=../lib/libdisorder.a
 disorder_deadlock_SOURCES=deadlock.c                    \
        trackdb.c trackdb.h
 disorder_deadlock_LDADD=$(LIBOBJS) ../lib/libdisorder.a \
-       $(LIBDB) $(LIBPCRE) $(LIBGC) $(LIBICONV)
+       $(LIBDB) $(LIBPCRE) $(LIBICONV)
 disorder_deadlock_DEPENDENCIES=../lib/libdisorder.a
 
 disorder_speaker_SOURCES=speaker.c
 disorder_speaker_LDADD=$(LIBOBJS) ../lib/libdisorder.a \
-       $(LIBASOUND) $(LIBGC) $(LIBPCRE) $(LIBICONV)
+       $(LIBASOUND) $(LIBPCRE) $(LIBICONV)
 disorder_speaker_DEPENDENCIES=../lib/libdisorder.a
 
 disorder_rescan_SOURCES=rescan.c                        \
        api.c api-server.c                              \
-       trackdb.c trackdb.h exports.c
+       trackdb.c trackdb.h exports.c                   \
+       ../lib/memgc.c
 disorder_rescan_LDADD=$(LIBOBJS) ../lib/libdisorder.a \
        $(LIBDB) $(LIBGC) $(LIBPCRE) $(LIBICONV)
 disorder_rescan_LDFLAGS=-export-dynamic
 disorder_rescan_DEPENDENCIES=../lib/libdisorder.a
 
-disorder_dump_SOURCES=dump.c                           \
-        trackdb.c trackdb.h
+disorder_dump_SOURCES=dump.c                                   \
+        trackdb.c trackdb.h                            \
+       ../lib/memgc.c
 disorder_dump_LDADD=$(LIBOBJS) ../lib/libdisorder.a \
-       $(LIBPCRE) $(LIBDB) $(LIBGC) $(LIBICONV)
+       $(LIBPCRE) $(LIBDB) $(LIBICONV) $(LIBGC)
 disorder_dump_DEPENDENCIES=$(LIBOBJS) ../lib/libdisorder.a
 
 disorder_cgi_SOURCES=dcgi.c dcgi.h                     \
        api.c api-client.c api-client.h                 \
        cgi.c cgi.h cgimain.c exports.c
 disorder_cgi_LDADD=../lib/libdisorder.a \
-       $(LIBPCRE) $(LIBGC) $(LIBGCRYPT) $(LIBDL)
+       $(LIBPCRE) $(LIBGCRYPT) $(LIBDL)
 disorder_cgi_LDFLAGS=-export-dynamic
 disorder_cgi_DEPENDENCIES=../lib/libdisorder.a
 
 trackname_SOURCES=trackname.c
-trackname_LDADD=../lib/libdisorder.a $(LIBGC) $(LIBPCRE) $(LIBICONV)
+trackname_LDADD=../lib/libdisorder.a $(LIBPCRE) $(LIBICONV)
 trackname_DEPENDENCIES=../lib/libdisorder.a
 
 install-exec-hook:
index bc189d7235fc174412faacf13b040cf78b6fe952..467ed59b618dc1fd84d6d52e7ae5b6e5acbb40c2 100644 (file)
@@ -45,7 +45,6 @@ int main(int argc, char **argv) {
   dcgi_state s;
   cgi_sink output;
 
-  mem_init(0);
   if(argc > 0) progname = argv[0];
   cgi_parse();
   if((conf = getenv("DISORDER_CONFIG"))) configfile = xstrdup(conf);
index 5fd745d9a223e174db5e3279e7587408d76e9ff5..f6ae42016fb85512963c02ca78fe7919ad9354e6 100644 (file)
@@ -78,7 +78,6 @@ int main(int argc, char **argv) {
   int n, err, aborted;
 
   set_progname(argv);
-  mem_init(0);
   if(!setlocale(LC_CTYPE, "")) fatal(errno, "error calling setlocale");
   while((n = getopt_long(argc, argv, "hVc:dD", options, 0)) >= 0) {
     switch(n) {
index 50f8b8ffed056f6a77b29027edd201def16bfad6..774ab6d1c5db8adfb63f226d70aff74b1f48b367 100644 (file)
@@ -184,7 +184,7 @@ static void volumecheck_after(long offset) {
   int initial_rescan = 1;
 
   set_progname(argv);
-  mem_init(1);
+  mem_init();
   if(!setlocale(LC_CTYPE, "")) fatal(errno, "error calling setlocale");
   /* garbage-collect PCRE's memory */
   pcre_malloc = xmalloc;
index f007f5471c95433d9965867f40c818a02dfbae63..5809b829c6fd0b61ea5374b9726b9f4f37fbc6ce 100644 (file)
@@ -390,7 +390,7 @@ int main(int argc, char **argv) {
   char *tmp;
   FILE *fp;
 
-  mem_init(1);
+  mem_init();
   while((n = getopt_long(argc, argv, "hVc:dDutsrRaP", options, 0)) >= 0) {
     switch(n) {
     case 'h': help();
index a2f26781386384568d730b3eef04738254dc546c..4c768a3077144d0f68a65c6a5d9eb2a16000301b 100644 (file)
@@ -306,7 +306,7 @@ int main(int argc, char **argv) {
   struct sigaction sa;
   
   set_progname(argv);
-  mem_init(1);
+  mem_init();
   if(!setlocale(LC_CTYPE, "")) fatal(errno, "error calling setlocale");
   while((n = getopt_long(argc, argv, "hVc:dD", options, 0)) >= 0) {
     switch(n) {
index 1cdbd288bed231c4f6705016aa615650bb17e56f..be783afd7c8958f43909720e59af1f3f6990ba81 100644 (file)
@@ -663,7 +663,6 @@ int main(int argc, char **argv) {
 #endif
 
   set_progname(argv);
-  mem_init(0);
   if(!setlocale(LC_CTYPE, "")) fatal(errno, "error calling setlocale");
   while((n = getopt_long(argc, argv, "hVc:dD", options, 0)) >= 0) {
     switch(n) {
index 743ac069037bc1b83d45a58c9d1cf9b1307bd89e..e06df66136e75c0228dadc908a5d9fcb47bda824 100644 (file)
@@ -66,7 +66,6 @@ int main(int argc, char **argv) {
   int n;
   const char *s;
 
-  mem_init(0);
   if(!setlocale(LC_CTYPE, "")) fatal(errno, "error calling setlocale");
   while((n = getopt_long(argc, argv, "hVc:d", options, 0)) >= 0) {
     switch(n) {