srcdir= .
VPATH= $(srcdir)
-# Atomic_ops installation directory. If this doesn't exist, we create
-# it from the included libatomic_ops distribution.
+# Path to atomic_ops source.
AO_SRC_DIR=$(srcdir)/libatomic_ops
-AO_INSTALL_DIR=$(srcdir)/libatomic_ops-install
-CFLAGS= -O -I$(srcdir)/include -I$(AO_INSTALL_DIR)/include -DATOMIC_UNCOLLECTABLE -DNO_EXECUTE_PERMISSION -DALL_INTERIOR_POINTERS
+CFLAGS_EXTRA=
+CFLAGS= -O -I$(srcdir)/include -I$(AO_SRC_DIR)/src \
+ -DATOMIC_UNCOLLECTABLE -DNO_EXECUTE_PERMISSION -DALL_INTERIOR_POINTERS \
+ $(CFLAGS_EXTRA)
# To build the parallel collector on Linux, add to the above:
# -DGC_LINUX_THREADS -DPARALLEL_MARK -DTHREAD_LOCAL_ALLOC
malloc.o stubborn.o checksums.o pthread_support.o pthread_stop_world.o \
darwin_stop_world.o typd_mlc.o ptr_chck.o mallocx.o gcj_mlc.o specific.o \
gc_dlopen.o backgraph.o win32_threads.o pthread_start.o \
- thread_local_alloc.o fnlz_mlc.o
+ thread_local_alloc.o fnlz_mlc.o atomic_ops.o atomic_ops_sysdeps.o
CSRCS= reclaim.c allchblk.c misc.c alloc.c mach_dep.c os_dep.c mark_rts.c \
headers.c mark.c obj_map.c pcr_interface.c blacklst.c finalize.c \
BCC_MAKEFILE EMX_MAKEFILE WCC_MAKEFILE Makefile.dj \
PCR-Makefile SMakefile.amiga \
digimars.mak Makefile.direct NT_STATIC_THREADS_MAKEFILE \
- NT_X64_STATIC_THREADS_MAKEFILE NT_X64_THREADS_MAKEFILE \
- build_atomic_ops.sh build_atomic_ops.sh.cygwin
+ NT_X64_STATIC_THREADS_MAKEFILE NT_X64_THREADS_MAKEFILE
OTHER_FILES= tools/setjmp_t.c tools/callprocs.sh extra/MacOS.c \
extra/Mac_files/datastart.c extra/Mac_files/dataend.c \
# the SHELL environment variable.
SHELL= /bin/sh
-SPECIALCFLAGS = -I$(srcdir)/include -I$(AO_INSTALL_DIR)/include
+SPECIALCFLAGS = -I$(srcdir)/include -I$(AO_SRC_DIR)/src
# Alternative flags to the C compiler for mach_dep.c.
# Mach_dep.c often doesn't like optimization, and it's
# not time-critical anyway.
all: gc.a gctest
-# if AO_INSTALL_DIR doesn't exist, we assume that it is pointing to
-# the default location, and we need to build
-$(AO_INSTALL_DIR):
- CC=$(CC) MAKE=$(MAKE) $(srcdir)/build_atomic_ops.sh
+atomic_ops.o: $(AO_SRC_DIR)/src/atomic_ops.c
+ $(CC) $(CFLAGS) -c -o $@ $<
+
+atomic_ops_sysdeps.o: $(AO_SRC_DIR)/src/atomic_ops_sysdeps.S
+ $(CC) $(CFLAGS) -c -o $@ $<
LEAKFLAGS=$(CFLAGS) -DFIND_LEAK
$(srcdir)/include/private/gc_hdrs.h $(srcdir)/include/private/gc_locks.h \
$(srcdir)/include/gc.h $(srcdir)/include/gc_pthread_redirects.h \
$(srcdir)/include/private/gcconfig.h $(srcdir)/include/gc_typed.h \
- $(srcdir)/include/gc_config_macros.h $(AO_INSTALL_DIR)
+ $(srcdir)/include/gc_config_macros.h
mark.o typd_mlc.o finalize.o ptr_chck.o: $(srcdir)/include/gc_mark.h \
$(srcdir)/include/private/gc_pmark.h
base_lib gc.a: $(OBJS) dyn_load.o $(UTILS)
echo > base_lib
rm -f dont_ar_1
- cp $(AO_INSTALL_DIR)/lib/libatomic_ops.a gc.a
./if_mach SPARC SOLARIS touch dont_ar_1
./if_mach SPARC SOLARIS $(AR) rus gc.a $(OBJS) dyn_load.o
./if_mach M68K AMIGA touch dont_ar_1
# SunOS5 shared library version of the collector
sunos5gc.so: $(OBJS) dyn_load_sunos53.o
- $(CC) -G -o sunos5gc.so $(OBJS) dyn_load_sunos53.o $(AO_INSTALL_DIR)/lib/libatomic_ops.a -ldl
+ $(CC) -G -o sunos5gc.so $(OBJS) dyn_load_sunos53.o -ldl
ln sunos5gc.so libgc.so
# Alpha/OSF shared library version of the collector
# If an optimized setjmp_test generates a segmentation fault,
# odds are your compiler is broken. Gctest may still work.
# Try compiling setjmp_t.c unoptimized.
-setjmp_test: $(srcdir)/tools/setjmp_t.c $(srcdir)/include/gc.h $(UTILS) $(AO_INSTALL_DIR)
+setjmp_test: $(srcdir)/tools/setjmp_t.c $(srcdir)/include/gc.h $(UTILS)
$(CC) $(CFLAGS) -o setjmp_test $(srcdir)/tools/setjmp_t.c
test: KandRtest cord/cordtest
#We assume this is being done from source directory.
dist gc.tar: $(SRCS) $(DOC_FILES) $(OTHER_FILES) add_gc_prefix gcname
- cd $(AO_SRC_DIR); $(MAKE) dist
rm -f `./gcname`
ln -s . `./gcname`
./add_gc_prefix $(SRCS) $(DOC_FILES) $(OTHER_FILES) > /tmp/gc.tar-files