summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBent Bisballe Nyeng <deva@aasimon.org>2013-01-04 10:47:29 +0100
committerBent Bisballe Nyeng <deva@aasimon.org>2013-01-04 10:47:29 +0100
commit4117304567ceb9454599a4e2889f09443382f74a (patch)
tree10cc3a89e8a90a5d8002d28e6c809148360a6e38
parenta650e7a58ae25d32510894f6efbe78ef659db774 (diff)
Make compilable throgh both c and c++ and linkable with both using debug.hpp if c++ app links with debug compield with c compiler.
-rw-r--r--.gitignore10
-rw-r--r--Makefile21
-rw-r--r--debug.hpp39
-rw-r--r--main_simple.cc67
4 files changed, 134 insertions, 3 deletions
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..3be04e2
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,10 @@
+debug-complete
+debug-complete-cpp
+debug-filter
+debug-minimal
+debug-mutex
+debug-obj
+debug-simple
+debug-syslog
+debug.o
+main_simple.o
diff --git a/Makefile b/Makefile
index c397c53..45b6460 100644
--- a/Makefile
+++ b/Makefile
@@ -1,29 +1,44 @@
include Makefile.files
CFLAGS=-Werror -Wall -D_FORTIFY_SOURCE=2 -g -O2
+CXXFLAGS=$(CFLAGS)
-all: complete complete-cpp simple syslog filter mutex minimal
+all: complete obj simple syslog filter mutex minimal
complete:
gcc ${CFLAGS} ${DEBUG_SOURCES} main_complete.c -o debug-complete -DWITH_DBG_SYSLOG -DWITH_DBG_FILTER -DWITH_DBG_MUTEX
+ g++ ${CXXFLAGS} ${DEBUG_SOURCES} main_complete.c -o debug-complete -DWITH_DBG_SYSLOG -DWITH_DBG_FILTER -DWITH_DBG_MUTEX
-complete-cpp:
- g++ ${CFLAGS} ${DEBUG_SOURCES} main_complete.c -o debug-complete-cpp -DWITH_DBG_SYSLOG -DWITH_DBG_FILTER -DWITH_DBG_MUTEX
+obj:
+# Compile debug as c prog and link with c++ program (use debug.hpp)
+ g++ ${CXXFLAGS} main_simple.cc -c
+ gcc ${CFLAGS} debug.c -c
+ g++ main_simple.o debug.o -o debug-obj
+
+# Compile debug as c++ prog and link with c++ program
+ g++ ${CXXFLAGS} main_simple.c -c
+ g++ ${CXXFLAGS} debug.c -c
+ g++ main_simple.o debug.o -o debug-obj
simple:
gcc ${CFLAGS} debug.c main_simple.c -o debug-simple
+ g++ ${CXXFLAGS} debug.c main_simple.c -o debug-simple
minimal:
gcc ${CFLAGS} debug.c main_minimal.c -o debug-minimal
+ g++ ${CXXFLAGS} debug.c main_minimal.c -o debug-minimal
syslog:
gcc ${CFLAGS} debug.c debug_syslog.c main_syslog.c -o debug-syslog -DWITH_DBG_SYSLOG
+ g++ ${CXXFLAGS} debug.c debug_syslog.c main_syslog.c -o debug-syslog -DWITH_DBG_SYSLOG
filter:
gcc ${CFLAGS} debug.c debug_filter.c main_filter.c -o debug-filter -DWITH_DBG_FILTER
+ g++ ${CXXFLAGS} debug.c debug_filter.c main_filter.c -o debug-filter -DWITH_DBG_FILTER
mutex:
gcc ${CFLAGS} debug.c main_mutex.c -o debug-mutex -DWITH_DBG_MUTEX
+ g++ ${CXXFLAGS} debug.c main_mutex.c -o debug-mutex -DWITH_DBG_MUTEX
clean:
rm -f debug_{complete,complete-cpp,simple,syslog,filter,mutex,minimal} \ No newline at end of file
diff --git a/debug.hpp b/debug.hpp
new file mode 100644
index 0000000..fb82878
--- /dev/null
+++ b/debug.hpp
@@ -0,0 +1,39 @@
+/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
+/* vim: set et sw=2 ts=2: */
+/***************************************************************************
+ * debug.hpp
+ *
+ * Thu Nov 1 13:38:47 CET 2012
+ * Copyright 2012 Bent Bisballe Nyeng
+ * deva@aasimon.org
+ ****************************************************************************/
+
+/*
+ * This file is part of Debug Module.
+ *
+ * Debug Module is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * Debug Module is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Debug Module; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
+ */
+#ifndef __DEBUG_MODULE_DEBUG_HPP__
+#define __DEBUG_MODULE_DEBUG_HPP__
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+#include "debug.h"
+#ifdef __cplusplus
+}
+#endif
+
+#endif/*__DEBUG_MODULE_DEBUG_HPP__*/
diff --git a/main_simple.cc b/main_simple.cc
new file mode 100644
index 0000000..0df78d7
--- /dev/null
+++ b/main_simple.cc
@@ -0,0 +1,67 @@
+/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
+/* vim: set et sw=2 ts=2: */
+/***************************************************************************
+ * main.cc
+ *
+ * Fri Dec 7 09:35:45 CET 2012
+ * Copyright 2012 Bent Bisballe Nyeng
+ * deva@aasimon.org
+ ****************************************************************************/
+
+/*
+ * This file is part of Debug Module.
+ *
+ * Debug Module is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * Debug Module is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Debug Module; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
+ */
+#include "debug.hpp"
+
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <fcntl.h>
+
+#include <stdio.h>
+
+int main(int argc, char *argv[])
+{
+ int fd = open("/tmp/my.log", O_CREAT | O_RDWR, 0777);
+ if(fd == -1) {
+ return 1;
+ }
+
+ dbg_status_t status = dbg_init(DBG_FLAG_OUTPUT_TO_FILE |
+ DBG_FLAG_OUTPUT_TO_FD |
+ DBG_FLAG_OUTPUT_TO_STDOUT |
+ DBG_FLAG_OUTPUT_TO_STDERR |
+ 0,
+ DBG_OPTION_FD, fd,
+ DBG_OPTION_FILENAME, "/tmp/my2.log",
+ DBG_OPTION_STDOUT_NO_DATE, 0,
+ DBG_OPTION_END);
+
+ if(status != DBG_STATUS_OK) {
+ printf("Error: %d\n", status);
+ return 1;
+ }
+
+ INFO(example, "We are up and running");
+
+ DEBUG(example, "Or are we %d?", 42);
+
+ DEBUG(foo, "Or are we %d?", 42);
+
+ dbg_close();
+
+ return 0;
+}