📄 makefile
字号:
# Performance impact untested.# -DGC_USE_LD_WRAP in combination with the old flags listed in README.linux# causes the collector some system and pthread calls in a more transparent# fashion than the usual macro-based approach. Requires GNU ld, and# currently probably works only with Linux.# -DTHREAD_LOCAL_ALLOC defines GC_local_malloc(), GC_local_malloc_atomic()# and GC_local_gcj_malloc(). Needed for gc_gcj.h interface. These allocate# in a way that usually does not involve acquisition of a global lock.# Currently requires -DGC_LINUX_THREADS, but should be easy to port to# other pthreads environments. Recommended for multiprocessors.# -DUSE_COMPILER_TLS causes thread local allocation to use compiler-supported# "__thread" thread-local variables. This is the default in HP/UX. It# may help performance on recent Linux installations. (It failed for# me on RedHat 8, but appears to work on RedHat 9.)# -DPARALLEL_MARK allows the marker to run in multiple threads. Recommended# for multiprocessors. Currently requires Linux on X86 or IA64, though# support for other Posix platforms should be fairly easy to add,# if the thread implementation is otherwise supported.# -DNO_GETENV prevents the collector from looking at environment variables.# These may otherwise alter its configuration, or turn off GC altogether.# I don't know of a reason to disable this, except possibly if the# resulting process runs as a privileged user?# -DUSE_GLOBAL_ALLOC. Win32 only. Use GlobalAlloc instead of# VirtualAlloc to allocate the heap. May be needed to work around# a Windows NT/2000 issue. Incompatible with USE_MUNMAP.# See README.win32 for details.# -DMAKE_BACK_GRAPH. Enable GC_PRINT_BACK_HEIGHT environment variable.# See README.environment for details. Experimental. Limited platform# support. Implies DBG_HDRS_ALL. All allocation should be done using# the debug interface.# -DSTUBBORN_ALLOC allows allocation of "hard to change" objects, and thus# makes incremental collection easier. Was enabled by default until 6.0.# Rarely used, to my knowledge.# -DHANDLE_FORK attempts to make GC_malloc() work in a child process fork()ed# from a multithreaded parent. Currently only supported by pthread_support.c.# (Similar code should work on Solaris or Irix, but it hasn't been tried.)# -DTEST_WITH_SYSTEM_MALLOC causes gctest to allocate (and leak) large chunks# of memory with the standard system malloc. This will cause the root# set and collected heap to grow significantly if malloced memory is# somehow getting traced by the collector. This has no impact on the# generated library; it only affects the test.# -DPOINTER_MASK=0x... causes candidate pointers to be ANDed with the# given mask before being considered. If either this or the following# macro is defined, it will be assumed that all pointers stored in# the heap need to be processed this way. Stack and register pointers# will be considered both with and without processing.# These macros are normally needed only to support systems that use# high-order pointer tags. EXPERIMENTAL.# -DPOINTER_SHIFT=n causes the collector to left shift candidate pointers# by the indicated amount before trying to interpret them. Applied# after POINTER_MASK. EXPERIMENTAL. See also the preceding macro.#CXXFLAGS= $(CFLAGS) AR= arRANLIB= ranlibOBJS= alloc.o reclaim.o allchblk.o misc.o mach_dep.o os_dep.o mark_rts.o headers.o mark.o obj_map.o blacklst.o finalize.o new_hblk.o dbg_mlc.o malloc.o stubborn.o checksums.o solaris_threads.o aix_irix_threads.o pthread_support.o pthread_stop_world.o darwin_stop_world.o typd_mlc.o ptr_chck.o mallocx.o solaris_pthreads.o gcj_mlc.o specific.o gc_dlopen.o backgraph.o win32_threads.oCSRCS= 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 new_hblk.c real_malloc.c dyn_load.c dbg_mlc.c malloc.c stubborn.c checksums.c solaris_threads.c aix_irix_threads.c pthread_support.c pthread_stop_world.c darwin_stop_world.c typd_mlc.c ptr_chck.c mallocx.c solaris_pthreads.c gcj_mlc.c specific.c gc_dlopen.c backgraph.c win32_threads.cCORD_SRCS= cord/cordbscs.c cord/cordxtra.c cord/cordprnt.c cord/de.c cord/cordtest.c include/cord.h include/ec.h include/private/cord_pos.h cord/de_win.c cord/de_win.h cord/de_cmds.h cord/de_win.ICO cord/de_win.RCCORD_OBJS= cord/cordbscs.o cord/cordxtra.o cord/cordprnt.oSRCS= $(CSRCS) mips_sgi_mach_dep.s rs6000_mach_dep.s alpha_mach_dep.S \ sparc_mach_dep.S include/gc.h include/gc_typed.h \ include/private/gc_hdrs.h include/private/gc_priv.h \ include/private/gcconfig.h include/private/gc_pmark.h \ include/gc_inl.h include/gc_inline.h include/gc_mark.h \ threadlibs.c if_mach.c if_not_there.c gc_cpp.cc include/gc_cpp.h \ gcname.c include/weakpointer.h include/private/gc_locks.h \ gcc_support.c mips_ultrix_mach_dep.s include/gc_alloc.h \ include/new_gc_alloc.h include/gc_allocator.h \ include/javaxfc.h sparc_sunos4_mach_dep.s sparc_netbsd_mach_dep.s \ include/private/solaris_threads.h include/gc_backptr.h \ hpux_test_and_clear.s include/gc_gcj.h \ include/gc_local_alloc.h include/private/dbg_mlc.h \ include/private/specific.h powerpc_darwin_mach_dep.s \ include/leak_detector.h include/gc_amiga_redirects.h \ include/gc_pthread_redirects.h ia64_save_regs_in_stack.s \ include/gc_config_macros.h include/private/pthread_support.h \ include/private/pthread_stop_world.h include/private/darwin_semaphore.h \ include/private/darwin_stop_world.h $(CORD_SRCS)DOC_FILES= README.QUICK doc/README.Mac doc/README.MacOSX doc/README.OS2 \ doc/README.amiga doc/README.cords doc/debugging.html \ doc/README.dj doc/README.hp doc/README.linux doc/README.rs6000 \ doc/README.sgi doc/README.solaris2 doc/README.uts \ doc/README.win32 doc/barrett_diagram doc/README \ doc/README.contributors doc/README.changes doc/gc.man \ doc/README.environment doc/tree.html doc/gcdescr.html \ doc/README.autoconf doc/README.macros doc/README.ews4800 \ doc/README.DGUX386 doc/README.arm.cross doc/leak.html \ doc/scale.html doc/gcinterface.html doc/README.darwin \ doc/simple_example.htmlTESTS= tests/test.c tests/test_cpp.cc tests/trace_test.c \ tests/leak_test.c tests/thread_leak_test.c tests/middle.cGNU_BUILD_FILES= configure.in Makefile.am configure acinclude.m4 \ libtool.m4 install-sh configure.host Makefile.in \ aclocal.m4 config.sub config.guess \ include/Makefile.am include/Makefile.in \ doc/Makefile.am doc/Makefile.in \ ltmain.sh mkinstalldirs depcomp missingOTHER_MAKEFILES= OS2_MAKEFILE NT_MAKEFILE NT_THREADS_MAKEFILE gc.mak \ BCC_MAKEFILE EMX_MAKEFILE WCC_MAKEFILE Makefile.dj \ PCR-Makefile SMakefile.amiga Makefile.DLLs \ digimars.mak Makefile.direct NT_STATIC_THREADS_MAKEFILE# Makefile and Makefile.direct are copies of each other.OTHER_FILES= Makefile setjmp_t.c callprocs pc_excludes \ MacProjects.sit.hqx MacOS.c \ Mac_files/datastart.c Mac_files/dataend.c \ Mac_files/MacOS_config.h Mac_files/MacOS_Test_config.h \ add_gc_prefix.c gc_cpp.cpp \ version.h AmigaOS.c \ $(TESTS) $(GNU_BUILD_FILES) $(OTHER_MAKEFILES)CORD_INCLUDE_FILES= $(srcdir)/include/gc.h $(srcdir)/include/cord.h \ $(srcdir)/include/ec.h $(srcdir)/include/private/cord_pos.hUTILS= if_mach if_not_there threadlibs# Libraries needed for curses applications. Only needed for de.CURSES= -lcurses -ltermlib# The following is irrelevant on most systems. But a few# versions of make otherwise fork the shell specified in# the SHELL environment variable.SHELL= /bin/shSPECIALCFLAGS = -I$(srcdir)/include# 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.# Set SPECIALCFLAGS to -q nodirect_code on Encore.all: gc.a gctestLEAKFLAGS=$(CFLAGS) -DFIND_LEAKBSD-pkg-all: bsd-libgc.a bsd-libleak.absd-libgc.a: $(MAKE) CFLAGS="$(CFLAGS)" clean c++-t mv gc.a bsd-libgc.absd-libleak.a: $(MAKE) -f Makefile.direct CFLAGS="$(LEAKFLAGS)" clean c++-nt mv gc.a bsd-libleak.aBSD-pkg-install: BSD-pkg-all ${CP} bsd-libgc.a libgc.a ${INSTALL_DATA} libgc.a ${PREFIX}/lib ${INSTALL_DATA} gc.h gc_cpp.h ${PREFIX}/include ${INSTALL_MAN} doc/gc.man ${PREFIX}/man/man3/gc.3pcr: PCR-Makefile include/private/gc_private.h include/private/gc_hdrs.h \include/private/gc_locks.h include/gc.h include/private/gcconfig.h \mach_dep.o $(SRCS) $(MAKE) -f PCR-Makefile depend $(MAKE) -f PCR-Makefile$(OBJS) tests/test.o dyn_load.o dyn_load_sunos53.o: \ $(srcdir)/include/private/gc_priv.h \ $(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 Makefile# The dependency on Makefile is needed. Changing# options such as -DSILENT affects the size of GC_arrays,# invalidating all .o files that rely on gc_priv.hmark.o typd_mlc.o finalize.o ptr_chck.o: $(srcdir)/include/gc_mark.h $(srcdir)/include/private/gc_pmark.hspecific.o pthread_support.o: $(srcdir)/include/private/specific.hsolaris_threads.o solaris_pthreads.o: $(srcdir)/include/private/solaris_threads.hdbg_mlc.o gcj_mlc.o: $(srcdir)/include/private/dbg_mlc.htests/test.o: tests $(srcdir)/tests/test.c $(CC) $(CFLAGS) -c $(srcdir)/tests/test.c mv test.o tests/test.otests: mkdir testsbase_lib gc.a: $(OBJS) dyn_load.o $(UTILS) echo > base_lib rm -f dont_ar_1 ./if_mach SPARC SUNOS5 touch dont_ar_1 ./if_mach SPARC SUNOS5 $(AR) rus gc.a $(OBJS) dyn_load.o ./if_mach M68K AMIGA touch dont_ar_1 ./if_mach M68K AMIGA $(AR) -vrus gc.a $(OBJS) dyn_load.o ./if_not_there dont_ar_1 $(AR) ru gc.a $(OBJS) dyn_load.o ./if_not_there dont_ar_1 $(RANLIB) gc.a || cat /dev/null# ignore ranlib failure; that usually means it doesn't exist, and isn't neededcords: $(CORD_OBJS) cord/cordtest $(UTILS) rm -f dont_ar_3 ./if_mach SPARC SUNOS5 touch dont_ar_3 ./if_mach SPARC SUNOS5 $(AR) rus gc.a $(CORD_OBJS) ./if_mach M68K AMIGA touch dont_ar_3 ./if_mach M68K AMIGA $(AR) -vrus gc.a $(CORD_OBJS) ./if_not_there dont_ar_3 $(AR) ru gc.a $(CORD_OBJS) ./if_not_there dont_ar_3 $(RANLIB) gc.a || cat /dev/nullgc_cpp.o: $(srcdir)/gc_cpp.cc $(srcdir)/include/gc_cpp.h $(srcdir)/include/gc.h Makefile $(CXX) -c $(CXXFLAGS) $(srcdir)/gc_cpp.cctest_cpp: $(srcdir)/tests/test_cpp.cc $(srcdir)/include/gc_cpp.h gc_cpp.o $(srcdir)/include/gc.h \base_lib $(UTILS) rm -f test_cpp ./if_mach HP_PA HPUX $(CXX) $(CXXFLAGS) -o test_cpp $(srcdir)/tests/test_cpp.cc gc_cpp.o gc.a -ldld `./threadlibs` ./if_not_there test_cpp $(CXX) $(CXXFLAGS) -o test_cpp $(srcdir)/tests/test_cpp.cc gc_cpp.o gc.a `./threadlibs`c++-t: c++ ./test_cpp 1c++-nt: c++ @echo "Use ./test_cpp 1 to test the leak library"
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -