From 7e982cf603da8fe3a1cd290d28bb00c7f60d1be0 Mon Sep 17 00:00:00 2001 From: Sebastian Huber Date: Fri, 29 Aug 2014 11:01:39 +0200 Subject: [PATCH] Add file to ensure some C++ compatibility --- Makefile | 56 +++++++++++++++-------------- freebsd-to-rtems.py | 58 ++++++++++++++++-------------- rtemsbsd/rtems/rtems-bsd-cxx.cc | 64 +++++++++++++++++++++++++++++++++ 3 files changed, 125 insertions(+), 53 deletions(-) create mode 100644 rtemsbsd/rtems/rtems-bsd-cxx.cc diff --git a/Makefile b/Makefile index bc959dd8..a5d4c678 100644 --- a/Makefile +++ b/Makefile @@ -5,31 +5,33 @@ include $(RTEMS_MAKEFILE_PATH)/Makefile.inc include $(RTEMS_CUSTOM) include $(PROJECT_ROOT)/make/leaf.cfg -CFLAGS += -ffreestanding -CFLAGS += -fno-common -CFLAGS += -Irtemsbsd/include -CFLAGS += -Irtemsbsd/$(RTEMS_CPU)/include -CFLAGS += -Ifreebsd/sys -CFLAGS += -Ifreebsd/sys/$(RTEMS_CPU)/include -CFLAGS += -Ifreebsd/sys/contrib/altq -CFLAGS += -Ifreebsd/sys/contrib/pf -CFLAGS += -Icopied/rtemsbsd/$(RTEMS_CPU)/include -CFLAGS += -Ifreebsd/include -CFLAGS += -Ifreebsd/lib/libc/include -CFLAGS += -Ifreebsd/lib/libc/isc/include -CFLAGS += -Ifreebsd/lib/libc/resolv -CFLAGS += -Ifreebsd/lib/libutil -CFLAGS += -Ifreebsd/lib/libkvm -CFLAGS += -Ifreebsd/lib/libmemstat -CFLAGS += -Ifreebsd/lib/libipsec -CFLAGS += -ImDNSResponder/mDNSCore -CFLAGS += -ImDNSResponder/mDNSShared -CFLAGS += -ImDNSResponder/mDNSPosix -CFLAGS += -Itestsuite/include -CFLAGS += -Wall -CFLAGS += -Wno-format +COMMON_FLAGS += -ffreestanding +COMMON_FLAGS += -fno-common +COMMON_FLAGS += -Irtemsbsd/include +COMMON_FLAGS += -Irtemsbsd/$(RTEMS_CPU)/include +COMMON_FLAGS += -Ifreebsd/sys +COMMON_FLAGS += -Ifreebsd/sys/$(RTEMS_CPU)/include +COMMON_FLAGS += -Ifreebsd/sys/contrib/altq +COMMON_FLAGS += -Ifreebsd/sys/contrib/pf +COMMON_FLAGS += -Icopied/rtemsbsd/$(RTEMS_CPU)/include +COMMON_FLAGS += -Ifreebsd/include +COMMON_FLAGS += -Ifreebsd/lib/libc/include +COMMON_FLAGS += -Ifreebsd/lib/libc/isc/include +COMMON_FLAGS += -Ifreebsd/lib/libc/resolv +COMMON_FLAGS += -Ifreebsd/lib/libutil +COMMON_FLAGS += -Ifreebsd/lib/libkvm +COMMON_FLAGS += -Ifreebsd/lib/libmemstat +COMMON_FLAGS += -Ifreebsd/lib/libipsec +COMMON_FLAGS += -ImDNSResponder/mDNSCore +COMMON_FLAGS += -ImDNSResponder/mDNSShared +COMMON_FLAGS += -ImDNSResponder/mDNSPosix +COMMON_FLAGS += -Itestsuite/include +COMMON_FLAGS += -Wall +COMMON_FLAGS += -Wno-format +COMMON_FLAGS += -MT $@ -MD -MP -MF $(basename $@).d +CFLAGS += $(COMMON_FLAGS) CFLAGS += -std=gnu99 -CFLAGS += -MT $@ -MD -MP -MF $(basename $@).d +CXXFLAGS += $(COMMON_FLAGS) NEED_DUMMY_PIC_IRQ=yes TEST_NETWORK_CONFIG = testsuite/include/rtems/bsd/test/network-config.h @@ -46,6 +48,8 @@ D_FILES = LIB = libbsd.a LIB_GEN_FILES = LIB_C_FILES = +LIB_CXX_FILES = +LIB_CXX_FILES += rtemsbsd/rtems/rtems-bsd-cxx.cc LIB_C_FILES += rtemsbsd/local/bus_if.c LIB_C_FILES += rtemsbsd/local/cryptodev_if.c LIB_C_FILES += rtemsbsd/local/device_if.c @@ -1431,9 +1435,9 @@ LIB_C_FILES += mDNSResponder/mDNSPosix/mDNSUNP.c ifeq ($(NEED_DUMMY_PIC_IRQ),yes) CFLAGS += -I rtems-dummy-pic-irq/include endif -LIB_O_FILES = $(LIB_C_FILES:%.c=%.o) +LIB_O_FILES = $(LIB_C_FILES:%.c=%.o) $(LIB_CXX_FILES:%.cc=%.o) O_FILES += $(LIB_O_FILES) -D_FILES += $(LIB_C_FILES:%.c=%.d) +D_FILES += $(LIB_C_FILES:%.c=%.d) $(LIB_CXX_FILES:%.cc=%.d) all: $(LIB) $(TESTS) $(TEST_NETWORK_CONFIG) $(NET_TESTS) diff --git a/freebsd-to-rtems.py b/freebsd-to-rtems.py index 6bbb361c..3d21a388 100755 --- a/freebsd-to-rtems.py +++ b/freebsd-to-rtems.py @@ -411,31 +411,33 @@ class ModuleManager: 'include $(RTEMS_CUSTOM)\n' \ 'include $(PROJECT_ROOT)/make/leaf.cfg\n' \ '\n' \ - 'CFLAGS += -ffreestanding\n' \ - 'CFLAGS += -fno-common\n' \ - 'CFLAGS += -Irtemsbsd/include\n' \ - 'CFLAGS += -Irtemsbsd/$(RTEMS_CPU)/include\n' \ - 'CFLAGS += -Ifreebsd/sys\n' \ - 'CFLAGS += -Ifreebsd/sys/$(RTEMS_CPU)/include\n' \ - 'CFLAGS += -Ifreebsd/sys/contrib/altq\n' \ - 'CFLAGS += -Ifreebsd/sys/contrib/pf\n' \ - 'CFLAGS += -Icopied/rtemsbsd/$(RTEMS_CPU)/include\n' \ - 'CFLAGS += -Ifreebsd/include\n' \ - 'CFLAGS += -Ifreebsd/lib/libc/include\n' \ - 'CFLAGS += -Ifreebsd/lib/libc/isc/include\n' \ - 'CFLAGS += -Ifreebsd/lib/libc/resolv\n' \ - 'CFLAGS += -Ifreebsd/lib/libutil\n' \ - 'CFLAGS += -Ifreebsd/lib/libkvm\n' \ - 'CFLAGS += -Ifreebsd/lib/libmemstat\n' \ - 'CFLAGS += -Ifreebsd/lib/libipsec\n' \ - 'CFLAGS += -ImDNSResponder/mDNSCore\n' \ - 'CFLAGS += -ImDNSResponder/mDNSShared\n' \ - 'CFLAGS += -ImDNSResponder/mDNSPosix\n' \ - 'CFLAGS += -Itestsuite/include\n' \ - 'CFLAGS += -Wall\n' \ - 'CFLAGS += -Wno-format\n' \ + 'COMMON_FLAGS += -ffreestanding\n' \ + 'COMMON_FLAGS += -fno-common\n' \ + 'COMMON_FLAGS += -Irtemsbsd/include\n' \ + 'COMMON_FLAGS += -Irtemsbsd/$(RTEMS_CPU)/include\n' \ + 'COMMON_FLAGS += -Ifreebsd/sys\n' \ + 'COMMON_FLAGS += -Ifreebsd/sys/$(RTEMS_CPU)/include\n' \ + 'COMMON_FLAGS += -Ifreebsd/sys/contrib/altq\n' \ + 'COMMON_FLAGS += -Ifreebsd/sys/contrib/pf\n' \ + 'COMMON_FLAGS += -Icopied/rtemsbsd/$(RTEMS_CPU)/include\n' \ + 'COMMON_FLAGS += -Ifreebsd/include\n' \ + 'COMMON_FLAGS += -Ifreebsd/lib/libc/include\n' \ + 'COMMON_FLAGS += -Ifreebsd/lib/libc/isc/include\n' \ + 'COMMON_FLAGS += -Ifreebsd/lib/libc/resolv\n' \ + 'COMMON_FLAGS += -Ifreebsd/lib/libutil\n' \ + 'COMMON_FLAGS += -Ifreebsd/lib/libkvm\n' \ + 'COMMON_FLAGS += -Ifreebsd/lib/libmemstat\n' \ + 'COMMON_FLAGS += -Ifreebsd/lib/libipsec\n' \ + 'COMMON_FLAGS += -ImDNSResponder/mDNSCore\n' \ + 'COMMON_FLAGS += -ImDNSResponder/mDNSShared\n' \ + 'COMMON_FLAGS += -ImDNSResponder/mDNSPosix\n' \ + 'COMMON_FLAGS += -Itestsuite/include\n' \ + 'COMMON_FLAGS += -Wall\n' \ + 'COMMON_FLAGS += -Wno-format\n' \ + 'COMMON_FLAGS += -MT $@ -MD -MP -MF $(basename $@).d\n' \ + 'CFLAGS += $(COMMON_FLAGS)\n' \ 'CFLAGS += -std=gnu99\n' \ - 'CFLAGS += -MT $@ -MD -MP -MF $(basename $@).d\n' \ + 'CXXFLAGS += $(COMMON_FLAGS)\n' \ 'NEED_DUMMY_PIC_IRQ=yes\n' \ '\n' \ 'TEST_NETWORK_CONFIG = testsuite/include/rtems/bsd/test/network-config.h\n' \ @@ -451,7 +453,9 @@ class ModuleManager: '\n' \ 'LIB = libbsd.a\n' \ 'LIB_GEN_FILES =\n' \ - 'LIB_C_FILES =\n' + 'LIB_C_FILES =\n' \ + 'LIB_CXX_FILES =\n' \ + 'LIB_CXX_FILES += rtemsbsd/rtems/rtems-bsd-cxx.cc\n' for m in self.modules: if m.conditionalOn != "none": data += 'ifneq ($(' + m.conditionalOn + '),yes)\n' @@ -471,9 +475,9 @@ class ModuleManager: 'ifeq ($(NEED_DUMMY_PIC_IRQ),yes)\n' \ 'CFLAGS += -I rtems-dummy-pic-irq/include\n' \ 'endif\n' \ - 'LIB_O_FILES = $(LIB_C_FILES:%.c=%.o)\n' \ + 'LIB_O_FILES = $(LIB_C_FILES:%.c=%.o) $(LIB_CXX_FILES:%.cc=%.o)\n' \ 'O_FILES += $(LIB_O_FILES)\n' \ - 'D_FILES += $(LIB_C_FILES:%.c=%.d)\n' \ + 'D_FILES += $(LIB_C_FILES:%.c=%.d) $(LIB_CXX_FILES:%.cc=%.d)\n' \ '\n' \ 'all: $(LIB) $(TESTS) $(TEST_NETWORK_CONFIG) $(NET_TESTS)\n' \ '\n' \ diff --git a/rtemsbsd/rtems/rtems-bsd-cxx.cc b/rtemsbsd/rtems/rtems-bsd-cxx.cc new file mode 100644 index 00000000..db97b84d --- /dev/null +++ b/rtemsbsd/rtems/rtems-bsd-cxx.cc @@ -0,0 +1,64 @@ +/* + * Copyright (c) 2014 embedded brains GmbH. All rights reserved. + * + * embedded brains GmbH + * Dornierstr. 4 + * 82178 Puchheim + * Germany + * + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ + +#define __STDC_LIMIT_MACROS +#define __STDC_CONSTANT_MACROS + +extern "C" { + +#include + +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include + +#include +#include +#include +#include +#include +#include +#include + +} + +/* + * Just make sure that these header files are C++ compatible to enable network + * interface drivers in C++. + */