aboutsummaryrefslogtreecommitdiff
path: root/Makefile
diff options
context:
space:
mode:
authorToni Uhlig <matzeton@googlemail.com>2023-07-16 10:39:26 +0200
committerToni Uhlig <matzeton@googlemail.com>2023-07-16 10:39:26 +0200
commit0883ee7ce77df4649f8a4fc10bd22164649e2883 (patch)
tree322e038874217119d4215c4c9308dafedfb06de8 /Makefile
parentb31e4bc16d1df62b50c6f77a77041f9e7b6c906d (diff)
Added flatcc (C flatbuffers implementation).
* lightweight && faster than protocol buffers as well as it's C implementation (protobuf-c) Signed-off-by: Toni Uhlig <matzeton@googlemail.com>
Diffstat (limited to 'Makefile')
-rw-r--r--Makefile55
1 files changed, 48 insertions, 7 deletions
diff --git a/Makefile b/Makefile
index 357c19a..998f7aa 100644
--- a/Makefile
+++ b/Makefile
@@ -4,6 +4,10 @@ endif
include $(DPP_ROOT)/Makefile.inc
+FLATBUFFERS_LIB = flatbuffers-build/lib/libflatccrt.a
+FLATBUFFERS_CFLAGS = -Iflatbuffers-build/include -Wno-misleading-indentation
+FLATBUFFERS_FLATC = flatbuffers-flatcc-build/bin/flatcc
+
DRIVER0_NAME = driver
DRIVER0_OBJECTS = examples/$(DRIVER0_NAME).o ksocket/ksocket.o ksocket/berkeley.o
DRIVER0_TARGET = $(DRIVER0_NAME).sys
@@ -16,6 +20,10 @@ DRIVER2_NAME = driver-protobuf-c-tcp
DRIVER2_OBJECTS = examples/$(DRIVER2_NAME).o ksocket/ksocket.o ksocket/berkeley.o protobuf-c/protobuf-c.o examples/example.pb-c.o
DRIVER2_TARGET = $(DRIVER2_NAME).sys
+DRIVER3_NAME = driver-flatbuffers
+DRIVER3_OBJECTS = examples/$(DRIVER3_NAME).o ksocket/ksocket.o ksocket/berkeley.o $(FLATBUFFERS_LIB)
+DRIVER3_TARGET = $(DRIVER3_NAME).sys
+
USERSPACE0_NAME = userspace_client
USERSPACE0_OBJECTS = examples/$(USERSPACE0_NAME).o
USERSPACE0_TARGET = $(USERSPACE0_NAME).exe
@@ -26,11 +34,11 @@ USERSPACE1_TARGET = $(USERSPACE1_NAME).exe
# mingw-w64-dpp related
CFLAGS_protobuf-c/protobuf-c.o = -Wno-unused-but-set-variable
-CUSTOM_CFLAGS = -I. -Wl,--exclude-all-symbols -DNDEBUG
+CUSTOM_CFLAGS = -I. -Iexamples $(FLATBUFFERS_CFLAGS) -Wl,--exclude-all-symbols -DNDEBUG
DRIVER_LIBS += -lnetio
USER_LIBS += -lws2_32
-all: $(DRIVER0_TARGET) $(DRIVER1_TARGET) $(DRIVER2_TARGET) $(USERSPACE0_TARGET) $(USERSPACE1_TARGET)
+all: deps $(DRIVER0_TARGET) $(DRIVER1_TARGET) $(DRIVER2_TARGET) $(DRIVER3_TARGET) $(USERSPACE0_TARGET) $(USERSPACE1_TARGET)
%.o: %.cpp
$(call BUILD_CPP_OBJECT,$<,$@)
@@ -47,12 +55,39 @@ $(DRIVER1_TARGET): $(DRIVER1_OBJECTS)
$(DRIVER2_TARGET): $(DRIVER2_OBJECTS)
$(call LINK_CPP_KERNEL_TARGET,$(DRIVER2_OBJECTS),$@)
+$(DRIVER3_TARGET): $(FLATBUFFERS_LIB) $(DRIVER3_OBJECTS)
+ $(call LINK_CPP_KERNEL_TARGET,$(DRIVER3_OBJECTS),$@)
+
$(USERSPACE0_TARGET): $(USERSPACE0_OBJECTS)
$(call LINK_CPP_USER_TARGET,$(USERSPACE0_OBJECTS),$@)
$(USERSPACE1_TARGET): $(USERSPACE1_OBJECTS)
$(call LINK_CPP_USER_TARGET,$(USERSPACE1_OBJECTS),$@)
+deps: $(FLATBUFFERS_LIB) $(FLATBUFFERS_FLATC)
+
+$(FLATBUFFERS_LIB):
+ cmake -S flatcc -B flatbuffers-build \
+ -DCMAKE_INSTALL_PREFIX=/ \
+ -DCMAKE_C_COMPILER="$(realpath $(CC))" \
+ -DCMAKE_SYSTEM_NAME="Windows" \
+ -DCMAKE_C_FLAGS='$(CFLAGS)' \
+ -DCMAKE_BUILD_TYPE=Release \
+ -DFLATCC_ALLOW_WERROR=ON -DFLATCC_COVERAGE=OFF -DFLATCC_CXX_TEST=OFF \
+ -DFLATCC_REFLECTION=OFF -DFLATCC_RTONLY=ON -DFLATCC_TEST=OFF -DFLATCC_INSTALL=ON \
+ -DFLATCC_GNU_POSIX_MEMALIGN=OFF
+ cmake --build flatbuffers-build
+ make -C flatbuffers-build install DESTDIR="$(realpath .)/flatbuffers-build"
+
+$(FLATBUFFERS_FLATC):
+ cmake -S flatcc -B flatbuffers-flatcc-build \
+ -DCMAKE_INSTALL_PREFIX=/ \
+ -DCMAKE_BUILD_TYPE=Release \
+ -DFLATCC_ALLOW_WERROR=ON -DFLATCC_COVERAGE=OFF -DFLATCC_CXX_TEST=OFF \
+ -DFLATCC_REFLECTION=OFF -DFLATCC_RTONLY=OFF -DFLATCC_TEST=OFF -DFLATCC_INSTALL=ON
+ cmake --build flatbuffers-flatcc-build
+ make -C flatbuffers-flatcc-build install DESTDIR="$(realpath .)/flatbuffers-flatcc-build"
+
generate:
@echo '=========================================='
@echo '= You need protobuf-c to make this work! ='
@@ -61,24 +96,30 @@ generate:
@echo
protoc-c --c_out=. examples/example.proto
-install: $(DRIVER0_TARGET) $(DRIVER1_TARGET) $(DRIVER2_TARGET) $(USERSPACE0_TARGET) $(USERSPACE1_TARGET)
+install: $(DRIVER0_TARGET) $(DRIVER1_TARGET) $(DRIVER2_TARGET) $(DRIVER3_TARGET) $(USERSPACE0_TARGET) $(USERSPACE1_TARGET)
$(call INSTALL_EXEC_SIGN,$(DRIVER0_TARGET))
$(call INSTALL_EXEC_SIGN,$(DRIVER1_TARGET))
$(call INSTALL_EXEC_SIGN,$(DRIVER2_TARGET))
+ $(call INSTALL_EXEC_SIGN,$(DRIVER3_TARGET))
$(call INSTALL_EXEC,$(USERSPACE0_TARGET))
$(call INSTALL_EXEC,$(USERSPACE1_TARGET))
$(INSTALL) 'examples/$(DRIVER0_NAME).bat' '$(DESTDIR)/'
$(INSTALL) 'examples/$(DRIVER1_NAME).bat' '$(DESTDIR)/'
$(INSTALL) 'examples/$(DRIVER2_NAME).bat' '$(DESTDIR)/'
+ $(INSTALL) 'examples/$(DRIVER3_NAME).bat' '$(DESTDIR)/'
clean:
- rm -f $(DRIVER0_OBJECTS) $(DRIVER1_OBJECTS) $(DRIVER2_OBJECTS)
+ rm -f $(DRIVER0_OBJECTS) $(DRIVER1_OBJECTS) $(DRIVER2_OBJECTS) $(DRIVER3_OBJECTS)
rm -f $(DRIVER0_TARGET) $(DRIVER0_TARGET).map \
$(DRIVER1_TARGET) $(DRIVER1_TARGET).map \
- $(DRIVER2_TARGET) $(DRIVER2_TARGET).map
+ $(DRIVER2_TARGET) $(DRIVER2_TARGET).map \
+ $(DRIVER3_TARGET) $(DRIVER3_TARGET).map
rm -f $(USERSPACE0_OBJECTS) $(USERSPACE1_OBJECTS)
rm -f $(USERSPACE0_TARGET) $(USERSPACE1_TARGET)
-.NOTPARALLEL: clean
-.PHONY: all install clean
+distclean: clean
+ rm -rf flatbuffers-build flatbuffers-flatcc-build
+
+.NOTPARALLEL: clean distclean
+.PHONY: all install clean distclean
.DEFAULT_GOAL := all