]> granicus.if.org Git - gc/commitdiff
Build gccpp library by Makefile.direct, NT_MAKEFILE and WCC_MAKEFILE
authorIvan Maidanski <ivmai@mail.ru>
Fri, 19 Jul 2019 17:42:38 +0000 (20:42 +0300)
committerIvan Maidanski <ivmai@mail.ru>
Fri, 19 Jul 2019 17:42:38 +0000 (20:42 +0300)
* 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".

Makefile.direct
NT_MAKEFILE
WCC_MAKEFILE

index 7f0f07f39617d760b59e3285da53dcd33995a915..c3e501af1aceace4a12f3cdf13389fdc31e8f2a7 100644 (file)
@@ -2,13 +2,13 @@
 # to build the collector.
 #
 # Primary targets:
-# gc.a - builds basic library
-# c++ - adds C++ interface to library
+# all - builds gc.a, gccpp.a
+# base_lib - builds gc.a only (basic library)
+# c++ - builds gccpp.a only (C++ interface to library)
 # cords - adds cords (heavyweight strings) to library
-# check - prints porting information, then builds basic version of gc.a,
-#       and runs some tests of collector and cords.  Does not add cords or
-#       c++ interface to gc.a
-# check-cpp - runs C++ test without adding C++ (and cords) interface to gc.a
+# check - same as "all" but also prints porting information, and runs some
+#         tests of collector and cords
+# check-cpp - builds gc.a and gccpp.a, runs C++ only test
 # cord/de - builds dumb editor based on cords.
 
 ABI_FLAG=
@@ -25,7 +25,7 @@ CC=cc $(ABI_FLAG)
 # Compiler executable name.  For EMX, replace to "gcc".
 
 CXX=g++ $(ABI_FLAG)
-# Needed only for "make c++", which adds the c++ interface.
+# Needed only for "make c++", which builds the C++ interface.
 
 AS=as $(AS_ABI_FLAG)
 # The above doesn't work with gas, which doesn't run cpp.
@@ -143,7 +143,7 @@ SPECIALCFLAGS= -I$(srcdir)/include -I$(AO_SRC_DIR)/src $(CFLAGS_FOR_PIC)
 # not time-critical anyway.
 # Set SPECIALCFLAGS to -q nodirect_code on Encore.
 
-all: base_lib
+all: base_lib c++
 
 atomic_ops.o: $(AO_SRC_DIR)/src/atomic_ops.c
        $(CC) $(CFLAGS) -c -o $@ $(AO_SRC_DIR)/src/atomic_ops.c
@@ -156,9 +156,10 @@ LEAKFLAGS= $(CFLAGS) -DFIND_LEAK
 
 BSD-pkg-all: bsd-libgc.a bsd-libleak.a
 
-bsd-libgc.a:
+bsd-libgc.a bsd-libgccpp.a:
        $(MAKE) -f Makefile.direct CFLAGS="$(CFLAGS)" clean c++-t
        mv gc.a bsd-libgc.a
+       mv gccpp.a bsd-libgccpp.a
 
 bsd-libleak.a:
        $(MAKE) -f Makefile.direct CFLAGS="$(LEAKFLAGS)" clean c++-nt
@@ -167,6 +168,8 @@ bsd-libleak.a:
 BSD-pkg-install: BSD-pkg-all
        ${CP} bsd-libgc.a libgc.a
        ${INSTALL_DATA} libgc.a ${PREFIX}/lib
+       ${CP} bsd-libgccpp.a libgccpp.a
+       ${INSTALL_DATA} libgccpp.a ${PREFIX}/lib
        ${INSTALL_DATA} gc.h gc_cpp.h ${PREFIX}/include
        ${INSTALL_MAN} doc/gc.man ${PREFIX}/man/man3/gc.3
 
@@ -223,10 +226,10 @@ gc_cpp.o: $(srcdir)/gc_cpp.cc $(srcdir)/include/gc_cpp.h $(srcdir)/include/gc.h
        $(CXX) -c $(CXXFLAGS) $(srcdir)/gc_cpp.cc
 
 test_cpp$(EXEEXT): $(srcdir)/tests/test_cpp.cc $(srcdir)/include/gc_cpp.h \
-  $(srcdir)/include/gc.h gc_cpp.o base_lib $(UTILS)
+  $(srcdir)/include/gc.h c++ base_lib $(UTILS)
        rm -f test_cpp$(EXEEXT)
-       ./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$(EXEEXT) || $(CXX) $(CXXFLAGS) -o test_cpp$(EXEEXT) $(srcdir)/tests/test_cpp.cc gc_cpp.o gc.a `./threadlibs`
+       ./if_mach HP_PA HPUX $(CXX) $(CXXFLAGS) -o test_cpp $(srcdir)/tests/test_cpp.cc gc.a gccpp.a -ldld `./threadlibs`
+       ./if_not_there test_cpp$(EXEEXT) || $(CXX) $(CXXFLAGS) -o test_cpp$(EXEEXT) $(srcdir)/tests/test_cpp.cc gc.a gccpp.a `./threadlibs`
 
 check-cpp: test_cpp$(EXEEXT)
        ./test_cpp
@@ -237,14 +240,14 @@ c++-t: c++ test_cpp$(EXEEXT)
 c++-nt: c++
        @echo "Use ./test_cpp 1 to test the leak library"
 
-c++: gc_cpp.o $(srcdir)/include/gc_cpp.h base_lib $(UTILS)
+c++ gccpp.a: gc_cpp.o $(UTILS)
        rm -f dont_ar_4
        ./if_mach SPARC SOLARIS touch dont_ar_4
-       ./if_mach SPARC SOLARIS $(AR) rus gc.a gc_cpp.o
+       ./if_mach SPARC SOLARIS $(AR) rus gccpp.a gc_cpp.o
        ./if_mach M68K AMIGA touch dont_ar_4
-       ./if_mach M68K AMIGA $(AR) -vrus gc.a gc_cpp.o
-       ./if_not_there dont_ar_4 || $(AR) ru gc.a gc_cpp.o
-       ./if_not_there dont_ar_4 || $(RANLIB) gc.a || cat /dev/null
+       ./if_mach M68K AMIGA $(AR) -vrus gccpp.a gc_cpp.o
+       ./if_not_there dont_ar_4 || $(AR) ru gccpp.a gc_cpp.o
+       ./if_not_there dont_ar_4 || $(RANLIB) gccpp.a || cat /dev/null
        echo > c++
 
 dyn_load_sunos53.o: dyn_load.c
@@ -364,7 +367,7 @@ if_not_there$(EXEEXT): $(srcdir)/tools/if_not_there.c
        $(HOSTCC) $(HOSTCFLAGS) -o if_not_there$(EXEEXT) $(srcdir)/tools/if_not_there.c
 
 clean:
-       rm -f gc.a *.i *.o *.exe tests/*.o gctest gctest_dyn_link test_cpp \
+       rm -f *.a *.i *.o *.exe tests/*.o gctest gctest_dyn_link test_cpp \
              setjmp_test mon.out gmon.out a.out core if_not_there if_mach \
              base_lib c++ $(CORD_OBJS) cordtest de cords dont_ar_* threadlibs
        -rm -f *~
@@ -383,10 +386,11 @@ setjmp_test$(EXEEXT): $(srcdir)/tools/setjmp_t.c $(srcdir)/include/gc.h \
   $(UTILS)
        $(CC) $(CFLAGS) -o setjmp_test$(EXEEXT) $(srcdir)/tools/setjmp_t.c
 
-check: cordtest$(EXEEXT) gctest$(EXEEXT) setjmp_test$(EXEEXT)
+check: cordtest$(EXEEXT) gctest$(EXEEXT) setjmp_test$(EXEEXT) test_cpp$(EXEEXT)
        ./setjmp_test
        ./gctest
        ./cordtest
+       ./test_cpp
 
 # A synonym to "check" (for compatibility with older GC versions).
 test: check
index 2dcc89f5ec07153d27bbcb0ed59d0f0ab5eeb233..939becf6bcf66616417b7d3021bbe70a85f39d26 100644 (file)
@@ -58,12 +58,8 @@ CFLAGS_MT=$(cvarsmt) -DGC_THREADS -DTHREAD_LOCAL_ALLOC -DPARALLEL_MARK
 
 !IFDEF MAKE_AS_LIB
 CFLAGS_GCDLL=-DGC_NOT_DLL
-LINK_GC=lib /out:gc.lib
 !ELSE
 CFLAGS_GCDLL=-DGC_DLL
-LINK_DLL_FLAGS=kernel32.lib user32.lib /subsystem:windows /dll \
-  /INCREMENTAL:NO /pdb:"gc.pdb" /out:gc.dll /implib:gc.lib
-LINK_GC=$(link) $(ldebug) $(LINK_DLL_FLAGS)
 !ENDIF
 
 CFLAGS_SPECIFIC=$(CFLAGS_DEBUG) $(CFLAGS_GCDLL) $(CFLAGS_MT)
@@ -81,9 +77,9 @@ CFLAGS_DEFAULT=-DALL_INTERIOR_POINTERS -DENABLE_DISCLAIM -DGC_ATOMIC_UNCOLLECTAB
 AO_SRC_DIR=libatomic_ops/src
 AO_INCLUDE_DIR=$(AO_SRC_DIR)
 
-OBJS= misc.obj win32_threads.obj alloc.obj reclaim.obj allchblk.obj mach_dep.obj os_dep.obj mark_rts.obj headers.obj mark.obj obj_map.obj blacklst.obj finalize.obj new_hblk.obj dbg_mlc.obj fnlz_mlc.obj malloc.obj dyn_load.obj typd_mlc.obj ptr_chck.obj gc_cpp.obj gcj_mlc.obj mallocx.obj extra\msvc_dbg.obj thread_local_alloc.obj
+OBJS= misc.obj win32_threads.obj alloc.obj reclaim.obj allchblk.obj mach_dep.obj os_dep.obj mark_rts.obj headers.obj mark.obj obj_map.obj blacklst.obj finalize.obj new_hblk.obj dbg_mlc.obj fnlz_mlc.obj malloc.obj dyn_load.obj typd_mlc.obj ptr_chck.obj gcj_mlc.obj mallocx.obj extra\msvc_dbg.obj thread_local_alloc.obj
 
-all: gc.lib
+all: gc.lib gccpp.lib
 
 check: gctest.exe test_cpp.exe de.exe
        gctest.exe
@@ -99,8 +95,23 @@ check: gctest.exe test_cpp.exe de.exe
 
 $(OBJS) tests\test.obj: include\private\gc_priv.h include\private\gc_hdrs.h include\gc.h include\private\gcconfig.h include\private\gc_locks.h include\private\gc_pmark.h include\gc_mark.h include\gc_disclaim.h include\private\msvc_dbg.h
 
+!IFDEF MAKE_AS_LIB
+
+gc.lib: $(OBJS)
+       lib /out:gc.lib /MACHINE:$(CPU) $(OBJS)
+
+gccpp.lib: gc_cpp.obj
+       lib /out:gccpp.lib /MACHINE:$(CPU) gc_cpp.obj
+
+!ELSE
+
 gc.lib: $(OBJS)
-       $(LINK_GC) /MACHINE:$(CPU) $(OBJS)
+       $(link) $(ldebug) kernel32.lib user32.lib /subsystem:windows /dll /INCREMENTAL:NO /pdb:"gc.pdb" /out:gc.dll /implib:gc.lib /MACHINE:$(CPU) $(OBJS)
+
+gccpp.lib: gc_cpp.obj
+       $(link) $(ldebug) gc.lib /subsystem:windows /dll /INCREMENTAL:NO /pdb:"gccpp.pdb" /out:gccpp.dll /implib:gccpp.lib /MACHINE:$(CPU) gc_cpp.obj
+
+!ENDIF
 
 gctest.exe: gc.lib tests\test.obj
        $(link) /MACHINE:$(CPU) /INCREMENTAL:NO $(ldebug) $(lflags) user32.lib -out:$*.exe tests\test.obj gc.lib
@@ -127,8 +138,8 @@ test_cpp.cpp: tests\test_cpp.cc
 # This generates the C++ test executable.  The executable expects
 # a single numeric argument, which is the number of iterations.
 # The output appears in test_cpp.gc.log file.
-test_cpp.exe: test_cpp.obj include\gc_cpp.h include\gc.h gc.lib
-       $(link) /MACHINE:$(CPU) /INCREMENTAL:NO $(ldebug) $(lflags) user32.lib -out:test_cpp.exe test_cpp.obj gc.lib
+test_cpp.exe: test_cpp.obj include\gc_cpp.h include\gc.h gc.lib gccpp.lib
+       $(link) /MACHINE:$(CPU) /INCREMENTAL:NO $(ldebug) $(lflags) user32.lib -out:test_cpp.exe test_cpp.obj gc.lib gccpp.lib
 
 $(AO_SRC_DIR):
        tar xvfz $(AO_SRC_DIR).tar.gz
index c03b12e758b26fc667cf7edcb4d9eabc7f2eee67..fa9292942766632e04f9ee6954de630e73955f19 100644 (file)
@@ -59,7 +59,7 @@ DLLFLAG=-bd -DGC_DLL
 TEST_DLLFLAG=-DGC_DLL
 !else ifdef MAKE_AS_LIB
 DLLFLAG=
-TEST_DLLFLAG=
+TEST_DLLFLAG=-DGC_NOT_DLL
 !else
 !error Either MAKE_AS_LIB or MAKE_AS_DLL should be defined
 !endif
@@ -78,7 +78,7 @@ OBJS= alloc.obj reclaim.obj allchblk.obj misc.obj &
       dbg_mlc.obj malloc.obj dyn_load.obj &
       typd_mlc.obj ptr_chck.obj mallocx.obj fnlz_mlc.obj gcj_mlc.obj
 
-all: gc.lib
+all: gc.lib gccpp.lib
 
 check: gctest.exe test_cpp.exe .SYMBOLIC
         *gctest.exe
@@ -86,8 +86,8 @@ check: gctest.exe test_cpp.exe .SYMBOLIC
 
 !ifdef MAKE_AS_DLL
 
-gc.lib: gc.dll gc_cpp.obj
-        *wlib -b -c -n -p=512 $@ +gc.dll +gc_cpp.obj
+gc.lib: gc.dll
+        *wlib -b -c -n -p=512 $@ +gc.dll
 
 gc.dll: $(OBJS) .AUTODEPEND
         @%create $*.lnk
@@ -98,13 +98,39 @@ gc.dll: $(OBJS) .AUTODEPEND
 !else ifdef OS2
         @%append $*.lnk sys os2v2_dll
 !endif
+        @%append $*.lnk op case
         @%append $*.lnk name $*
         @for %i in ($(OBJS)) do @%append $*.lnk file '%i'
         *wlink @$*.lnk
+
+gccpp.lib: gccpp.dll
+        *wlib -b -c -n -p=512 $@ +gccpp.dll
+
+gccpp.dll: gc_cpp.obj gc.lib .AUTODEPEND
+        @%create $*.lnk
+!ifdef DOS4GW
+        @%append $*.lnk sys os2v2_dll
+!else ifdef MSWIN32
+        @%append $*.lnk sys nt_dll
+!else ifdef OS2
+        @%append $*.lnk sys os2v2_dll
+!endif
+        @%append $*.lnk op case
+        @%append $*.lnk name $*
+        @%append $*.lnk file 'gc_cpp.obj'
+        @%append $*.lnk library gc.lib
+        @%append $*.lnk library wr7$(CALLING)dll.lib
+        *wlink @$*.lnk
+
 !else
-gc.lib: $(OBJS) gc_cpp.obj
+
+gc.lib: $(OBJS)
         @%create $*.lb1
         @for %i in ($(OBJS)) do @%append $*.lb1 +'%i'
+        *wlib -b -c -n -p=512 $@ @$*.lb1
+
+gccpp.lib: gc_cpp.obj
+        @%create $*.lb1
         @%append $*.lb1 +'gc_cpp.obj'
         *wlib -b -c -n -p=512 $@ @$*.lb1
 
@@ -126,7 +152,8 @@ gctest.exe: test.obj gc.lib
         @%append $*.lnk file test.obj
         @%append $*.lnk library gc.lib
         *wlink @$*.lnk
-test_cpp.exe: test_cpp.obj gc.lib
+
+test_cpp.exe: test_cpp.obj gc.lib gccpp.lib
         %create $*.lnk
 !ifdef DOS4GW
         @%append $*.lnk sys dos4g
@@ -140,6 +167,7 @@ test_cpp.exe: test_cpp.obj gc.lib
         @%append $*.lnk name $*
         @%append $*.lnk file test_cpp.obj
         @%append $*.lnk library gc.lib
+        @%append $*.lnk library gccpp.lib
         *wlink @$*.lnk
 
 gc_cpp.obj: gc_cpp.cc .AUTODEPEND
@@ -155,7 +183,7 @@ test_cpp.obj: tests\test_cpp.cc .AUTODEPEND
 .cc.obj: .AUTODEPEND
         $(CXX) $(CXXFLAGS) $*.cc
 
-clean : .SYMBOLIC
+clean: .SYMBOLIC
     @if exist *.obj del *.obj
     @if exist *.map del *.map
     @if exist *.lnk del *.lnk