From 4117304567ceb9454599a4e2889f09443382f74a Mon Sep 17 00:00:00 2001 From: Bent Bisballe Nyeng Date: Fri, 4 Jan 2013 10:47:29 +0100 Subject: Make compilable throgh both c and c++ and linkable with both using debug.hpp if c++ app links with debug compield with c compiler. --- .gitignore | 10 +++++++++ Makefile | 21 +++++++++++++++--- debug.hpp | 39 ++++++++++++++++++++++++++++++++++ main_simple.cc | 67 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 4 files changed, 134 insertions(+), 3 deletions(-) create mode 100644 .gitignore create mode 100644 debug.hpp create mode 100644 main_simple.cc 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 +#include +#include + +#include + +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; +} -- cgit v1.2.3