summaryrefslogtreecommitdiff
path: root/dmake/dbug/dbug.mk
diff options
context:
space:
mode:
Diffstat (limited to 'dmake/dbug/dbug.mk')
-rw-r--r--dmake/dbug/dbug.mk66
1 files changed, 66 insertions, 0 deletions
diff --git a/dmake/dbug/dbug.mk b/dmake/dbug/dbug.mk
new file mode 100644
index 000000000000..09aa82d7f37d
--- /dev/null
+++ b/dmake/dbug/dbug.mk
@@ -0,0 +1,66 @@
+# Set the proper macros based on whether we are making the debugging version
+# or not. The valid parameters to this file are:
+#
+# DEBUG=1 ==> enable the making of the DBUG version
+# DBMALLOC=1 ==> enable DBUG version with extensive MALLOC checking
+#
+# DB_CFLAGS ==> CFLAGS is set to this value at the end if DEBUG=1
+# DB_LDFLAGS ==> LDFLAGS is set to this at the end if DEBUG=1
+# DB_LDLIBS ==> LDLIBS is set to this at end if DEBUG=1
+#
+# The non debug versions of the above three macros are:
+#
+# NDB_CFLAGS
+# NDB_LDFLAGS
+# NDB_LDLIBS
+#
+# One of the set of three should have values set appropriately prior to
+# sourcing this file.
+
+.IF $(DEBUG)
+ DBUG_SRC += dbug.c
+ DB_CFLAGS += -Idbug/dbug
+
+ .SETDIR=dbug/dbug : $(DBUG_SRC)
+
+ # If DBMALLOC is requested (ie non-NULL) then include the sources for
+ # compilation. BSD 4.3 needs the getwd.c source compiled in due to a bug
+ # in the clib getwd routine.
+ .IF $(DBMALLOC)
+ # Serious bug in bsd43 getwd.c would free a string and then use its
+ # value. The DBMALLOC code clears a string when it is free'd so the
+ # value was no longer valid and the returned path for the current
+ # directory was now completely wrong.
+ .IF $(OSRELEASE) == bsd43
+ GETWD_SRC += getwd.c
+ .SETDIR=dbug : $(GETWD_SRC)
+ .END
+
+ MLC_SRC += malloc.c free.c realloc.c calloc.c string.c\
+ mlc_chk.c mlc_chn.c memory.c tostring.c m_perror.c\
+ m_init.c mallopt.c dump.c
+
+ .SETDIR=dbug/malloc : $(MLC_SRC)
+
+ DB_CFLAGS += -Idbug/malloc
+ .END
+
+ SRC += $(DBUG_SRC) $(MLC_SRC) $(GETWD_SRC)
+ HDR += db.h
+
+ LDFLAGS += $(DB_LDFLAGS)
+ LDLIBS += $(DB_LDLIBS)
+
+ __.SILENT !:= $(.SILENT)
+ .SILENT !:= yes
+ TARGET := db$(TARGET)
+ OBJDIR := $(OBJDIR).dbg
+ .SILENT !:= $(__.SILENT)
+
+ CFLAGS += $(DB_CFLAGS)
+ .KEEP_STATE := _dbstate.mk
+.ELSE
+ CFLAGS += $(NDB_CFLAGS)
+ LDFLAGS += $(NDB_LDFLAGS)
+ LDLIBS += $(NDB_LDLIBS)
+.END