diff options
author | Toni Uhlig <matzeton@googlemail.com> | 2023-07-16 10:39:26 +0200 |
---|---|---|
committer | Toni Uhlig <matzeton@googlemail.com> | 2023-07-16 10:39:26 +0200 |
commit | 0883ee7ce77df4649f8a4fc10bd22164649e2883 (patch) | |
tree | 322e038874217119d4215c4c9308dafedfb06de8 /Makefile | |
parent | b31e4bc16d1df62b50c6f77a77041f9e7b6c906d (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-- | Makefile | 55 |
1 files changed, 48 insertions, 7 deletions
@@ -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 |