Ivan Maidanski [Fri, 19 Jul 2019 17:42:38 +0000 (20:42 +0300)]
Build gccpp library by Makefile.direct, NT_MAKEFILE and WCC_MAKEFILE
* Makefile.direct: Update header comment about all, gc.a (base_lib),
c++, check, check-cpp targets.
* Makefile.direct (CXX): Refine comment.
* Makefile.direct (all): Depend also on c++.
* Makefile.direct (bsd-libgccpp.a): New target (duplicates bsd-libgc.a
one).
* Makefile.direct (bsd-libgc.a): Add a rename of gccpp.a to
bsd-libgccpp.a.
* Makefile.direct (BSD-pkg-install): Copy bsd-libgccpp.a file to
libgccpp.a, install the latter one.
* Makefile.direct (test_cpp): Depend on c++ instead of gc_cpp.o; pass
gccpp.a (instead of gc_cpp.o) to $(CXX).
* Makefile.direct (gccpp.a): New target (duplicates c++ one).
* Makefile.direct (c++): Do not depend on gc_cpp.h and base_lib;
create gccpp.a instead of updating gc.a.
* Makefile.direct (clean): Delete *.a files instead of gc.a.
* Makefile.direct (check): Depend also on test_cpp$(EXEEXT); run also
test_cpp.
* NT_MAKEFILE (LINK_GC, LINK_DLL_FLAGS): Remove variable.
* NT_MAKEFILE (OBJS): Remove gc_cpp.obj.
* NT_MAKEFILE (all, test_cpp.exe): Depend also on gccpp.lib.
* WCC_MAKEFILE (all, test_cpp.exe): Likewise.
* NT_MAKEFILE (gccpp.lib): New target (depending on gc_cpp.obj).
* WCC_MAKEFILE (gccpp.lib): Likewise.
* WCC_MAKEFILE [MAKE_AS_DLL] (gccpp.dll): Likewise.
* NT_MAKEFILE (test_cpp.exe): Pass gccpp.lib to $(link).
* WCC_MAKEFILE [MAKE_AS_LIB] (MAKE_AS_LIB): Set to -DGC_NOT_DLL.
* WCC_MAKEFILE (gc.lib): Do not depend gc_cpp.obj.
* WCC_MAKEFILE [MAKE_AS_DLL] (gc.lib): Do not add gc_cpp.obj to gc.lib.
* WCC_MAKEFILE [MAKE_AS_DLL] (gc.dll): Specify "op case".
Ivan Maidanski [Wed, 17 Jul 2019 08:52:26 +0000 (11:52 +0300)]
Update README.cmake regarding Unix, C++ and tests
Issue #105 (bdwgc).
* doc/README.cmake: Mention that Unix targets are also supported;
remove not that support is not yet complete; update the list of
supported targets (that CMake is able to generate for); use Visual
Studio 9 instead of Visual Studio 8 in the examples; document
enable_cplusplus and build_tests options; provide an example with
--config option; change "build" artifacts folder to "out" one in
the example.
Ivan Maidanski [Wed, 17 Jul 2019 08:39:26 +0000 (11:39 +0300)]
Remove gc.mak script (MS VC)
Issue #105 (bdwgc).
CMake script or NT_MAKEFILE should be used instead of gc.mak.
* ChangeLog (8.1.0): Remove item about gc.mak.
* Makefile.am (EXTRA_DIST): Remove gc.mak.
* gc.mak: Remove file.
* doc/README.win32 (Threads): Remove gc.mak usage information; mention
that CMake script is the preferred way of building for Windows.
Ivan Maidanski [Sun, 7 Jul 2019 12:56:12 +0000 (15:56 +0300)]
Do not build tests by default (Makefile.direct and other Makefiles)
This is to match the behavior of configure-based Makefile and the
CMake script. Tests are built and executed now by `make check`.
* BCC_MAKEFILE (all): Depend on gc.lib only (instead of gctest, de
and test_cpp).
* OS2_MAKEFILE (all): Likewise.
* BCC_MAKEFILE (check): New target to build and run the tests (de is
not executed).
* NT_MAKEFILE (check): Likewise.
* Makefile.direct (all): Remove dependency on gctest.
* NT_MAKEFILE (all): Remove dependency on gctest, de and test_cpp; add
dependency on gc.lib.
* OS2_MAKEFILE (check): New target to build and run gctest and
cordtest.
* README.QUICK (INSTALLATION): Change "make test" to "make check".
* README.md (Installation and Portability): Likewise.
* doc/README.arm.cross: Likewise.
* SMakefile.amiga (all): Depend on gc.lib and cord.lib only (instead
of gctest, setjmp_t, cordtest).
* SMakefile.amiga (test): Rename to "check".
* WCC_MAKEFILE (all): Remove dependency on gctest and test_cpp.
* digimars.mak (targets): Likewise.
* WCC_MAKEFILE (check): New symbolic target to build and run gctest
and test_cpp.
* digimars.mak (check): Likewise.
* digimars.mak (gc.lib): New target (depend on gc.dll target).
* doc/README.win32 (Watcom compiler): Remove information that wmake
compiles the tests by default.
* doc/README.win64: Update information about tests building.
Ivan Maidanski [Sat, 6 Jul 2019 05:57:41 +0000 (08:57 +0300)]
Support enable_werror option in CMake script
Issue #281 (bdwgc).
* CMakeLists.txt (enable_werror): New option (OFF by default).
* CMakeLists.txt: Specify add_compile_options to report all warnings;
add TODO about pedantic.
* CMakeLists.txt [enable_werror]: Specify add_compile_options to treat
all warnings as errors.
* CMakeLists.txt [enable_werror && APPLE]: Specify add_compile_options
to ignore deprecated declarations, e.g.
_dyld_bind_fully_image_containing_address.
Ivan R [Fri, 14 Jun 2019 09:24:47 +0000 (11:24 +0200)]
Fix 'ISO C++17 does not allow dynamic exception spec' clang-8 error
Issue #287 (bdwgc).
Before this patch, clang 8 (and -std=c++1z) fails for gc_cpp.cc.
The error message produced is: ISO C++17 does not allow dynamic
exception specifications.
The "dynamic exception" syntax was declared deprecated in C++11 and
removed in C++17.
Ivan Maidanski [Fri, 21 Jun 2019 20:47:47 +0000 (23:47 +0300)]
Fix 'while clause does not guard' GCC warning in GC_parse_map_entry
* os_dep.c [DYNAMIC_LOADING && USE_PROC_FOR_LIBRARIES || IA64
|| INCLUDE_LINUX_THREAD_DESCR || REDIRECT_MALLOC] (GC_parse_map_entry):
Fix "while" statements indentation; place just one "while" statement on
a line.
Ivan Maidanski [Fri, 21 Jun 2019 20:33:32 +0000 (23:33 +0300)]
Fix fread failure after enable_incremental if malloc is redirected (Linux)
The failure is observed in cord refill_cache() executed by cordtest,
fread() fails with EFAULT. The fix is to disable MPROTECT_VDB on Linux
when REDIRECT_MALLOC is defined.
* include/private/gcconfig.h [(M68K || I386 || ALPHA || IA64 || AARCH64
|| ARM32 || X86_64 || HEXAGON) && LINUX] (MPROTECT_VDB): Do not define
if REDIRECT_MALLOC.
Ivan Maidanski [Fri, 21 Jun 2019 09:24:26 +0000 (12:24 +0300)]
Do not use Manual VDB mode if C malloc is redirected
(fix of commit 06009b0a0)
* misc.c [!GC_DISABLE_INCREMENTAL && (REDIRECT_MALLOC
|| REDIRECT_MALLOC_IN_HEADER)] (GC_init, GC_enable_incremental):
Do not set GC_manual_vdb to true.
Ivan Maidanski [Tue, 18 Jun 2019 08:46:32 +0000 (11:46 +0300)]
Build gc as a shared library by default (CMake)
Issue #281 (bdwgc).
* CMakeLists.txt (BUILD_SHARED_LIBS): Document option and set default to ON.
* CMakeLists.txt: Remove commented out ADD_LIBRARY for atomic_ops.
* CMakeLists.txt [BUILD_SHARED_LIBS] (SRC): Override to extra/gc.c.
* CMakeLists.txt [BUILD_SHARED_LIBS] (GC_DLL): Define macro.
* CMakeLists.txt [!BUILD_SHARED_LIBS] (GC_NOT_DLL): Define macro not only
for tests but also for gc library.
* CMakeLists.txt (gc): Remove STATIC in add_library specification.
Ivan Maidanski [Fri, 14 Jun 2019 07:12:47 +0000 (10:12 +0300)]
Restrict CMake project to C-only language unless enable_cplusplus
Issue #281 (bdwgc).
* CMakeLists.txt (enable_cplusplus): Move option to above project
command.
* CMakeLists.txt [!enable_cplusplus] (project): Specify C as the only
project language.
Maya Rashish [Thu, 6 Jun 2019 02:43:51 +0000 (05:43 +0300)]
Get rid of some non-ELF ifdefs
(code refactoring)
Issue #283 (bdwgc).
Linux started switching to ELF in 1995 (Linux-2.0), due to the previous
a.out being really bad.
NetBSD has used ELF since 2002 (NetBSD 1.6), it's OK to let it go now.
FreeBSD switched to ELF in FreeBSD 3.0 (1998).
Victor Romero [Thu, 6 Jun 2019 07:24:28 +0000 (10:24 +0300)]
Do not build the tests by default (CMake)
Issue #281 (bdwgc).
build_cord and build_tests options are introduced in the CMake script.
* CMakeLists.txt (build_cord): Add option (on by default); add comment.
* CMakeLists.txt (build_tests): Add option (off by default).
* CMakeLists.txt (cord): Specify add_subdirectory only if build_cord.
* CMakeLists.txt (tests): Specify add_subdirectory only if build_tests.
* cord/CMakeLists.txt: Skip cordtest and de tests unless build_tests.
Ivan Maidanski [Wed, 5 Jun 2019 06:53:15 +0000 (09:53 +0300)]
Turn off C++ API in CMake script by default
Issue #281 (bdwgc).
This is to match the behavior of configure script.
Now, -Denable_cplusplus=ON should be passed to cmake to enable C++ API.
* CMakeLists.txt (enable_cplusplus): Add option (off by default);
remove TODO.
* CMakeLists.txt (SRC): Add gc_cpp.cc only if enable_cplusplus.
* tests/CMakeLists.txt (leak_test.c, test.c): Set CXX langunage
property only if enable_cplusplus.
* tests/CMakeLists.txt [enable_cplusplus]: Add TODO to add test_cpp as
a test.
Ivan Maidanski [Thu, 30 May 2019 20:57:46 +0000 (23:57 +0300)]
Fix 'GC_old_bus_handler defined but not used' compiler warning
* os_dep.c [!DARWIN && !MSWIN32 && !MSWINCE] (GC_old_bus_handler):
Define variable only if FREEBSD or HPUX, or HURD, or LINUX.
* os_dep.c [!DARWIN && !MSWIN32 && !MSWINCE && (HPUX || HURD
|| FREEBSD)] (GC_dirty_init): Do not set GC_old_bus_handler_used_si
to FALSE (because it is already initialized to FALSE).
Ivan Maidanski [Wed, 29 May 2019 08:16:04 +0000 (11:16 +0300)]
Fix 'unused function GC_lock' compiler warning
* include/private/gc_locks.h [GC_PTHREADS && !USE_SPIN_LOCK] (GC_lock):
Declare only if USE_PTHREAD_LOCKS and (GC_ASSERTIONS or
not NO_PTHREAD_TRYLOCK).
* pthread_support.c [!USE_SPIN_LOCK] (GC_lock): Define only if
USE_PTHREAD_LOCKS and (not NO_PTHREAD_TRYLOCK or GC_ASSERTIONS).