From 2f373c387c0ea73613e7415f916ff554175f52b1 Mon Sep 17 00:00:00 2001 From: Hevake Date: Wed, 16 Feb 2022 23:21:39 +0800 Subject: [PATCH 01/15] =?UTF-8?q?=E6=9B=B4=E6=96=B0cpp=5Ftbox?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/cpp_tbox | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/cpp_tbox b/apps/cpp_tbox index 26d5e77..cfbe198 160000 --- a/apps/cpp_tbox +++ b/apps/cpp_tbox @@ -1 +1 @@ -Subproject commit 26d5e7760398dfde589e0af0d4d432e2789f739f +Subproject commit cfbe198ef0a45381c962451372cf8f4737d78584 -- Gitee From ce7fcdcc40c05f3b6668a9f157e4efd63bc10cd7 Mon Sep 17 00:00:00 2001 From: Hevake Date: Thu, 24 Feb 2022 07:50:55 +0800 Subject: [PATCH 02/15] =?UTF-8?q?=E6=B7=BB=E5=8A=A0ASan=E7=9A=84=E6=94=AF?= =?UTF-8?q?=E6=8C=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- tools/build_env.mk | 27 +++++++++++++++++---------- 1 file changed, 17 insertions(+), 10 deletions(-) diff --git a/tools/build_env.mk b/tools/build_env.mk index cf717c7..8f1e944 100644 --- a/tools/build_env.mk +++ b/tools/build_env.mk @@ -9,22 +9,29 @@ export CONFIGURE_HELPER ?= $(TOP_DIR)/tools/configure_helper.sh export MAKE_PATCH ?= $(TOP_DIR)/tools/make_patch.sh export CONSTANT_DIR ?= $(PLATFORM_DIR)/constant_files -export STAGING_DIR ?= $(PLATFORM_DIR)/staging_files -export INSTALL_DIR ?= $(PLATFORM_DIR)/install_files +export STAGING_DIR ?= $(PLATFORM_DIR)/staging_files +export INSTALL_DIR ?= $(PLATFORM_DIR)/install_files -export STAGING_INCLUDE := $(STAGING_DIR)/include -export STAGING_LIB := $(STAGING_DIR)/lib +export STAGING_INCLUDE := $(STAGING_DIR)/include +export STAGING_LIB := $(STAGING_DIR)/lib export CONSTANT_INCLUDE := $(CONSTANT_DIR)/include -export CONSTANT_LIB := $(CONSTANT_DIR)/lib +export CONSTANT_LIB := $(CONSTANT_DIR)/lib export OUTPUT_DIR := $(PLATFORM_DIR)/output_files -INCLUDE_FLAGS := -I$(STAGING_INCLUDE) -I$(CONSTANT_INCLUDE) -LINK_FLAGS := -L$(STAGING_LIB) -L$(CONSTANT_LIB) +COMPILE_FLAGS := -I$(STAGING_INCLUDE) -I$(CONSTANT_INCLUDE) +LINK_FLAGS := -L$(STAGING_LIB) -L$(CONSTANT_LIB) -export CFLAGS := $(INCLUDE_FLAGS) -std=c99 -export CXXFLAGS := $(INCLUDE_FLAGS) -std=c++11 -export LDFLAGS := $(LINK_FLAGS) +ifeq ($(RELEASE), 1) +COMPILE_FLAGS += -O2 -Os +else +COMPILE_FLAGS += -fsanitize=address -fno-omit-frame-pointer -DDEBUG=1 -O0 -ggdb +LINK_FLAGS += -fsanitize=address -static-libasan +endif + +export CFLAGS := $(COMPILE_FLAGS) -std=c99 +export CXXFLAGS := $(COMPILE_FLAGS) -std=c++11 +export LDFLAGS := $(LINK_FLAGS) export AR := $(TOOLCHAIN_BIN_PREFIX)ar export AS := $(TOOLCHAIN_BIN_PREFIX)as -- Gitee From 66816e7fb6ad4a664783fee28b349fd87dcdf73a Mon Sep 17 00:00:00 2001 From: Hevake Date: Wed, 2 Mar 2022 20:13:47 +0800 Subject: [PATCH 03/15] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E5=AF=B9$(PLATFORM=5FD?= =?UTF-8?q?IR)/tools/prepare.sh=E7=9A=84=E6=89=A7=E8=A1=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Makefile | 7 +++++-- platforms/host/tools/prepare.sh | 0 2 files changed, 5 insertions(+), 2 deletions(-) create mode 100755 platforms/host/tools/prepare.sh diff --git a/Makefile b/Makefile index 5ffb10e..9e7c6a3 100644 --- a/Makefile +++ b/Makefile @@ -6,11 +6,14 @@ include tools/build_env.mk targets += third_party targets += apps -.PHONY: all test clean distclean $(targets) +.PHONY: all test clean distclean prepare $(targets) -all: $(targets) +all: prepare $(targets) ./tools/make_install.sh +prepare: + $(PLATFORM_DIR)/tools/prepare.sh + $(targets): $(MAKE) -C $@ diff --git a/platforms/host/tools/prepare.sh b/platforms/host/tools/prepare.sh new file mode 100755 index 0000000..e69de29 -- Gitee From fd465041090534ac2f46b10e5d8a1a7fbda42050 Mon Sep 17 00:00:00 2001 From: Hevake Date: Thu, 3 Mar 2022 21:54:17 +0800 Subject: [PATCH 04/15] =?UTF-8?q?=E4=BF=AE=E6=94=B9=20tools/build=5Fenv.mk?= =?UTF-8?q?=EF=BC=8C=E5=B0=86=20platforms/common/=20=E6=B7=BB=E5=8A=A0?= =?UTF-8?q?=E4=B8=BA=20COMMON=5FDIR?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- tools/build_env.mk | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/tools/build_env.mk b/tools/build_env.mk index 8f1e944..bf173af 100644 --- a/tools/build_env.mk +++ b/tools/build_env.mk @@ -8,10 +8,12 @@ export TOOLCHAIN_BIN_PREFIX ?= export CONFIGURE_HELPER ?= $(TOP_DIR)/tools/configure_helper.sh export MAKE_PATCH ?= $(TOP_DIR)/tools/make_patch.sh +export COMMON_DIR ?= $(TOP_DIR)/platforms/common export CONSTANT_DIR ?= $(PLATFORM_DIR)/constant_files export STAGING_DIR ?= $(PLATFORM_DIR)/staging_files export INSTALL_DIR ?= $(PLATFORM_DIR)/install_files +export COMMON_INCLUDE := $(COMMON_DIR)/include export STAGING_INCLUDE := $(STAGING_DIR)/include export STAGING_LIB := $(STAGING_DIR)/lib export CONSTANT_INCLUDE := $(CONSTANT_DIR)/include @@ -19,7 +21,7 @@ export CONSTANT_LIB := $(CONSTANT_DIR)/lib export OUTPUT_DIR := $(PLATFORM_DIR)/output_files -COMPILE_FLAGS := -I$(STAGING_INCLUDE) -I$(CONSTANT_INCLUDE) +COMPILE_FLAGS := -I$(STAGING_INCLUDE) -I$(CONSTANT_INCLUDE) -I$(COMMON_INCLUDE) LINK_FLAGS := -L$(STAGING_LIB) -L$(CONSTANT_LIB) ifeq ($(RELEASE), 1) -- Gitee From 0909c67a6d16624587080634d24c9f123b926a8c Mon Sep 17 00:00:00 2001 From: hevake_lcj Date: Tue, 19 Jul 2022 17:32:23 +0800 Subject: [PATCH 05/15] =?UTF-8?q?=E6=9B=B4=E6=96=B0=E4=BA=86cpp=5Ftbox?= =?UTF-8?q?=EF=BC=9B=E6=B7=BB=E5=8A=A0=E4=BA=86log=E6=A8=A1=E5=9D=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/Makefile | 1 + apps/cpp_tbox | 2 +- apps/log | 1 + 3 files changed, 3 insertions(+), 1 deletion(-) create mode 120000 apps/log diff --git a/apps/Makefile b/apps/Makefile index 957f6a5..d27ce67 100644 --- a/apps/Makefile +++ b/apps/Makefile @@ -1,6 +1,7 @@ apps += base event eventx util apps += network apps += terminal +apps += log apps += main apps += sample diff --git a/apps/cpp_tbox b/apps/cpp_tbox index cfbe198..0fac3d7 160000 --- a/apps/cpp_tbox +++ b/apps/cpp_tbox @@ -1 +1 @@ -Subproject commit cfbe198ef0a45381c962451372cf8f4737d78584 +Subproject commit 0fac3d757935d10b84b6c86e2e71bc3ee29f5ae3 diff --git a/apps/log b/apps/log new file mode 120000 index 0000000..27e89ff --- /dev/null +++ b/apps/log @@ -0,0 +1 @@ +cpp_tbox/log/ \ No newline at end of file -- Gitee From b3de488c975411b281de2c7caff9c70814c0aaa7 Mon Sep 17 00:00:00 2001 From: hevake_lcj Date: Tue, 19 Jul 2022 17:40:11 +0800 Subject: [PATCH 06/15] =?UTF-8?q?=E9=BB=98=E8=AE=A4=E4=B8=8D=E5=BC=80?= =?UTF-8?q?=E5=90=AFthird=5Fparty/=E4=B8=ADmosquitto,libevent,libev,cJSON?= =?UTF-8?q?=E5=BA=93=EF=BC=8C=E8=BF=99=E4=BA=9B=E4=B8=8D=E6=98=AF=E5=BF=85?= =?UTF-8?q?=E9=9C=80=E7=9A=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- third_party/Makefile | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/third_party/Makefile b/third_party/Makefile index 4fa9e8a..d675d30 100644 --- a/third_party/Makefile +++ b/third_party/Makefile @@ -4,11 +4,11 @@ export DESTDIR ?= $(STAGING_DIR) export prefix ?= export PREFIX ?= -targets += libevent -targets += libev targets += nlohmann -targets += cJSON -targets += mosquitto +#targets += mosquitto +#targets += libevent +#targets += libev +#targets += cJSON all test clean distclean: @for i in $(targets); do \ -- Gitee From 70e4c443a251ec22af1be2e3ada734cd8b7262f0 Mon Sep 17 00:00:00 2001 From: hevake_lcj Date: Tue, 19 Jul 2022 18:28:38 +0800 Subject: [PATCH 07/15] =?UTF-8?q?=E5=81=9A=E4=BA=86=E4=BA=9B=E5=B0=8F?= =?UTF-8?q?=E4=BC=98=E5=8C=96=EF=BC=8C=E5=88=A0=E9=99=A4=E4=BA=86apps/?= =?UTF-8?q?=E4=B8=8B=E7=9A=84=E8=BF=9E=E9=93=BE=E6=8E=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/Makefile | 13 ++++++++----- apps/base | 1 - apps/coroutine | 1 - apps/event | 1 - apps/eventx | 1 - apps/log | 1 - apps/main | 1 - apps/network | 1 - apps/sample | 1 - apps/sample/Makefile | 31 ++++++++++++++++++++++++++++++ apps/sample/README.md | 2 ++ apps/sample/app1/app.cpp | 39 ++++++++++++++++++++++++++++++++++++++ apps/sample/app1/app.h | 23 ++++++++++++++++++++++ apps/sample/app1/app.mk | 7 +++++++ apps/sample/app2/app.cpp | 39 ++++++++++++++++++++++++++++++++++++++ apps/sample/app2/app.h | 23 ++++++++++++++++++++++ apps/sample/app2/app.mk | 7 +++++++ apps/sample/app_main.cpp | 29 ++++++++++++++++++++++++++++ apps/sample/build_time.cpp | 12 ++++++++++++ apps/sample/default.conf | 14 ++++++++++++++ apps/terminal | 1 - apps/tools | 1 - apps/util | 1 - 23 files changed, 234 insertions(+), 16 deletions(-) delete mode 120000 apps/base delete mode 120000 apps/coroutine delete mode 120000 apps/event delete mode 120000 apps/eventx delete mode 120000 apps/log delete mode 120000 apps/main delete mode 120000 apps/network delete mode 120000 apps/sample create mode 100644 apps/sample/Makefile create mode 100644 apps/sample/README.md create mode 100644 apps/sample/app1/app.cpp create mode 100644 apps/sample/app1/app.h create mode 100644 apps/sample/app1/app.mk create mode 100644 apps/sample/app2/app.cpp create mode 100644 apps/sample/app2/app.h create mode 100644 apps/sample/app2/app.mk create mode 100644 apps/sample/app_main.cpp create mode 100644 apps/sample/build_time.cpp create mode 100644 apps/sample/default.conf delete mode 120000 apps/terminal delete mode 120000 apps/tools delete mode 120000 apps/util diff --git a/apps/Makefile b/apps/Makefile index d27ce67..57f49dc 100644 --- a/apps/Makefile +++ b/apps/Makefile @@ -1,8 +1,11 @@ -apps += base event eventx util -apps += network -apps += terminal -apps += log -apps += main +apps += cpp_tbox/base +apps += cpp_tbox/event +apps += cpp_tbox/eventx +apps += cpp_tbox/util +apps += cpp_tbox/network +apps += cpp_tbox/terminal +apps += cpp_tbox/log +apps += cpp_tbox/main apps += sample all test clean distclean: diff --git a/apps/base b/apps/base deleted file mode 120000 index cc11ec6..0000000 --- a/apps/base +++ /dev/null @@ -1 +0,0 @@ -cpp_tbox/base \ No newline at end of file diff --git a/apps/coroutine b/apps/coroutine deleted file mode 120000 index 7c8d184..0000000 --- a/apps/coroutine +++ /dev/null @@ -1 +0,0 @@ -cpp_tbox/coroutine \ No newline at end of file diff --git a/apps/event b/apps/event deleted file mode 120000 index 5329547..0000000 --- a/apps/event +++ /dev/null @@ -1 +0,0 @@ -cpp_tbox/event \ No newline at end of file diff --git a/apps/eventx b/apps/eventx deleted file mode 120000 index 30c23f3..0000000 --- a/apps/eventx +++ /dev/null @@ -1 +0,0 @@ -cpp_tbox/eventx \ No newline at end of file diff --git a/apps/log b/apps/log deleted file mode 120000 index 27e89ff..0000000 --- a/apps/log +++ /dev/null @@ -1 +0,0 @@ -cpp_tbox/log/ \ No newline at end of file diff --git a/apps/main b/apps/main deleted file mode 120000 index 8e06be6..0000000 --- a/apps/main +++ /dev/null @@ -1 +0,0 @@ -cpp_tbox/main \ No newline at end of file diff --git a/apps/network b/apps/network deleted file mode 120000 index 3827d30..0000000 --- a/apps/network +++ /dev/null @@ -1 +0,0 @@ -cpp_tbox/network \ No newline at end of file diff --git a/apps/sample b/apps/sample deleted file mode 120000 index c17dd4b..0000000 --- a/apps/sample +++ /dev/null @@ -1 +0,0 @@ -cpp_tbox/sample/ \ No newline at end of file diff --git a/apps/sample/Makefile b/apps/sample/Makefile new file mode 100644 index 0000000..6807b64 --- /dev/null +++ b/apps/sample/Makefile @@ -0,0 +1,31 @@ +EXE_NAME := sample + +CPP_SRC_FILES := app_main.cpp build_time.cpp +TEST_CPP_SRC_FILES := +TEST_LDFLAGS := + +CONF_FILES := default.conf + +include app1/app.mk +include app2/app.mk + +CXXFLAGS := -DLOG_MODULE_ID='"$(EXE_NAME)"' $(CXXFLAGS) +LDFLAGS += \ + -ltbox_main \ + -ltbox_terminal \ + -ltbox_network \ + -ltbox_eventx \ + -ltbox_eventx \ + -ltbox_event \ + -ltbox_log \ + -ltbox_util \ + -ltbox_base \ + -lpthread \ + -rdynamic + +TEST_LDFLAGS += $(LDFLAGS) + +pre_build : + touch build_time.cpp + +include ../cpp_tbox/tools/exe_common.mk diff --git a/apps/sample/README.md b/apps/sample/README.md new file mode 100644 index 0000000..9b9e290 --- /dev/null +++ b/apps/sample/README.md @@ -0,0 +1,2 @@ +这是一个单进程,多应用的示例。它有两个应用。 +两个应用虽运行在同一个进程里,但两者的代码分别在各自的子目录下,独立逻辑,不相干扰。 diff --git a/apps/sample/app1/app.cpp b/apps/sample/app1/app.cpp new file mode 100644 index 0000000..58531ab --- /dev/null +++ b/apps/sample/app1/app.cpp @@ -0,0 +1,39 @@ +#include "app.h" +#include + +namespace app1 { + +App::App(tbox::main::Context &ctx) : + Module("app1", ctx) +{ + LogTag(); +} + +App::~App() +{ + LogTag(); +} + +bool App::onInit(const tbox::Json &cfg) +{ + LogTag(); + return true; +} + +bool App::onStart() +{ + LogTag(); + return true; +} + +void App::onStop() +{ + LogTag(); +} + +void App::onCleanup() +{ + LogTag(); +} + +} diff --git a/apps/sample/app1/app.h b/apps/sample/app1/app.h new file mode 100644 index 0000000..b52f1fc --- /dev/null +++ b/apps/sample/app1/app.h @@ -0,0 +1,23 @@ +#ifndef TBOX_MAIN_EXAMPLE_APP1_H_20211226 +#define TBOX_MAIN_EXAMPLE_APP1_H_20211226 + +#include + +namespace app1 { + +class App : public tbox::main::Module +{ + public: + App(tbox::main::Context &ctx); + ~App(); + + protected: + virtual bool onInit(const tbox::Json &cfg) override; + virtual bool onStart() override; + virtual void onStop() override; + virtual void onCleanup() override; +}; + +} + +#endif //TBOX_MAIN_EXAMPLE_APP1_H_20211226 diff --git a/apps/sample/app1/app.mk b/apps/sample/app1/app.mk new file mode 100644 index 0000000..5b296fc --- /dev/null +++ b/apps/sample/app1/app.mk @@ -0,0 +1,7 @@ +CPP_SRC_FILES += app1/app.cpp +CC_SRC_FILES += +C_SRC_FILES += +LDFLAGS += + +TEST_CPP_SRC_FILES += +TEST_LDFLAGS += diff --git a/apps/sample/app2/app.cpp b/apps/sample/app2/app.cpp new file mode 100644 index 0000000..f7317c0 --- /dev/null +++ b/apps/sample/app2/app.cpp @@ -0,0 +1,39 @@ +#include "app.h" +#include + +namespace app2 { + +App::App(tbox::main::Context &ctx) : + Module("app2", ctx) +{ + LogTag(); +} + +App::~App() +{ + LogTag(); +} + +bool App::onInit(const tbox::Json &cfg) +{ + LogTag(); + return true; +} + +bool App::onStart() +{ + LogTag(); + return true; +} + +void App::onStop() +{ + LogTag(); +} + +void App::onCleanup() +{ + LogTag(); +} + +} diff --git a/apps/sample/app2/app.h b/apps/sample/app2/app.h new file mode 100644 index 0000000..1889d03 --- /dev/null +++ b/apps/sample/app2/app.h @@ -0,0 +1,23 @@ +#ifndef TBOX_MAIN_EXAMPLE_APP2_H_20211226 +#define TBOX_MAIN_EXAMPLE_APP2_H_20211226 + +#include + +namespace app2 { + +class App : public tbox::main::Module +{ + public: + App(tbox::main::Context &ctx); + ~App(); + + protected: + virtual bool onInit(const tbox::Json &cfg) override; + virtual bool onStart() override; + virtual void onStop() override; + virtual void onCleanup() override; +}; + +} + +#endif //TBOX_MAIN_EXAMPLE_APP2_H_20211226 diff --git a/apps/sample/app2/app.mk b/apps/sample/app2/app.mk new file mode 100644 index 0000000..6766a66 --- /dev/null +++ b/apps/sample/app2/app.mk @@ -0,0 +1,7 @@ +CPP_SRC_FILES += app2/app.cpp +CC_SRC_FILES += +C_SRC_FILES += +LDFLAGS += + +TEST_CPP_SRC_FILES += +TEST_LDFLAGS += diff --git a/apps/sample/app_main.cpp b/apps/sample/app_main.cpp new file mode 100644 index 0000000..4522160 --- /dev/null +++ b/apps/sample/app_main.cpp @@ -0,0 +1,29 @@ +#include + +#include "app1/app.h" +#include "app2/app.h" + +namespace tbox { +namespace main { + +void RegisterApps(Module &apps, Context &ctx) +{ + apps.add(new app1::App(ctx)); + apps.add(new app2::App(ctx)); +} + +std::string GetAppDescribe() +{ + return "This is a sample within two apps."; +} + +void GetAppVersion(int &major, int &minor, int &rev, int &build) +{ + major = 1; + minor = 0; + rev = 0; + build = 0; +} + +} +} diff --git a/apps/sample/build_time.cpp b/apps/sample/build_time.cpp new file mode 100644 index 0000000..f57a10f --- /dev/null +++ b/apps/sample/build_time.cpp @@ -0,0 +1,12 @@ +#include + +namespace tbox { +namespace main { + +std::string GetAppBuildTime() +{ + return __DATE__ " " __TIME__; +} + +} +} diff --git a/apps/sample/default.conf b/apps/sample/default.conf new file mode 100644 index 0000000..401584f --- /dev/null +++ b/apps/sample/default.conf @@ -0,0 +1,14 @@ +{ + "pid_file": "/tmp/sample.pid", + "thread_pool": { + "max": 5, + "min": 1 + }, + "telnetd": { + "bind": "/tmp/sample-telnetd.sock" + }, + "tcp_rpc": { + "bind": "/tmp/sample-rpc.sock" + } +} + diff --git a/apps/terminal b/apps/terminal deleted file mode 120000 index 6abdb88..0000000 --- a/apps/terminal +++ /dev/null @@ -1 +0,0 @@ -cpp_tbox/terminal \ No newline at end of file diff --git a/apps/tools b/apps/tools deleted file mode 120000 index 4a0aff4..0000000 --- a/apps/tools +++ /dev/null @@ -1 +0,0 @@ -cpp_tbox/tools \ No newline at end of file diff --git a/apps/util b/apps/util deleted file mode 120000 index f878e79..0000000 --- a/apps/util +++ /dev/null @@ -1 +0,0 @@ -cpp_tbox/util \ No newline at end of file -- Gitee From f667ba231d17f46b1f0863a31d5b4d32744e4958 Mon Sep 17 00:00:00 2001 From: hevake_lcj Date: Thu, 21 Jul 2022 11:44:15 +0800 Subject: [PATCH 08/15] =?UTF-8?q?=E5=B0=86third=5Fparty=E9=87=8D=E5=91=BD?= =?UTF-8?q?=E5=90=8D=E4=B8=BA3rd-party=EF=BC=9B=E5=B0=86apps/cpp=5Ftbox?= =?UTF-8?q?=E7=A7=BB=E5=88=B03rd-party=E9=87=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitmodules | 23 +- {third_party => 3rd-party}/Makefile | 9 + {third_party => 3rd-party}/cJSON/Makefile | 0 3rd-party/cJSON/src | 1 + 3rd-party/cpp-tbox | 1 + {third_party => 3rd-party}/libev/Makefile | 0 {third_party => 3rd-party}/libev/src | 0 {third_party => 3rd-party}/libevent/Makefile | 0 3rd-party/libevent/src | 1 + {third_party => 3rd-party}/mosquitto/Makefile | 0 .../mosquitto/patches/01-config.patch | 0 3rd-party/mosquitto/src | 1 + .../nlohmann/LICENSE.MIT | 0 {third_party => 3rd-party}/nlohmann/Makefile | 0 {third_party => 3rd-party}/nlohmann/json.hpp | 0 .../nlohmann/json_fwd.hpp | 0 Makefile | 6 +- apps/Makefile | 8 - apps/cpp_tbox | 1 - apps/sample/Makefile | 2 +- third_party/cJSON/src | 1 - third_party/libevent/src | 1 - third_party/mosquitto/src | 1 - tools/exe_common.mk | 146 ++++++++++++ tools/lib_common.mk | 225 ++++++++++++++++++ 25 files changed, 400 insertions(+), 27 deletions(-) rename {third_party => 3rd-party}/Makefile (67%) rename {third_party => 3rd-party}/cJSON/Makefile (100%) create mode 160000 3rd-party/cJSON/src create mode 160000 3rd-party/cpp-tbox rename {third_party => 3rd-party}/libev/Makefile (100%) rename {third_party => 3rd-party}/libev/src (100%) rename {third_party => 3rd-party}/libevent/Makefile (100%) create mode 160000 3rd-party/libevent/src rename {third_party => 3rd-party}/mosquitto/Makefile (100%) rename {third_party => 3rd-party}/mosquitto/patches/01-config.patch (100%) create mode 160000 3rd-party/mosquitto/src rename {third_party => 3rd-party}/nlohmann/LICENSE.MIT (100%) rename {third_party => 3rd-party}/nlohmann/Makefile (100%) rename {third_party => 3rd-party}/nlohmann/json.hpp (100%) rename {third_party => 3rd-party}/nlohmann/json_fwd.hpp (100%) delete mode 160000 apps/cpp_tbox delete mode 160000 third_party/cJSON/src delete mode 160000 third_party/libevent/src delete mode 160000 third_party/mosquitto/src create mode 100644 tools/exe_common.mk create mode 100644 tools/lib_common.mk diff --git a/.gitmodules b/.gitmodules index 72bf212..466449d 100644 --- a/.gitmodules +++ b/.gitmodules @@ -1,15 +1,16 @@ -[submodule "apps/cpp_tbox"] - path = apps/cpp_tbox +[submodule "3rd-party/cpp-tbox"] + path = 3rd-party/cpp-tbox url = git@gitee.com:cpp-master/cpp-tbox.git -[submodule "third_party/libevent/src"] - path = third_party/libevent/src + branch = develop +[submodule "3rd-party/libevent/src"] + path = 3rd-party/libevent/src url = https://github.com/libevent/libevent.git -[submodule "third_party/mosquitto/src"] - path = third_party/mosquitto/src +[submodule "3rd-party/libev/src"] + path = 3rd-party/libev/src + url = https://github.com/enki/libev.git +[submodule "3rd-party/mosquitto/src"] + path = 3rd-party/mosquitto/src url = https://github.com/eclipse/mosquitto.git -[submodule "third_party/cJSON/src"] - path = third_party/cJSON/src +[submodule "3rd-party/cJSON/src"] + path = 3rd-party/cJSON/src url = https://github.com/DaveGamble/cJSON.git -[submodule "third_party/libev/src"] - path = third_party/libev/src - url = https://github.com/enki/libev.git diff --git a/third_party/Makefile b/3rd-party/Makefile similarity index 67% rename from third_party/Makefile rename to 3rd-party/Makefile index d675d30..33ea58d 100644 --- a/third_party/Makefile +++ b/3rd-party/Makefile @@ -10,6 +10,15 @@ targets += nlohmann #targets += libev #targets += cJSON +targets += cpp-tbox/base \ + cpp-tbox/event \ + cpp-tbox/eventx \ + cpp-tbox/util \ + cpp-tbox/log \ + cpp-tbox/network \ + cpp-tbox/terminal \ + cpp-tbox/main \ + all test clean distclean: @for i in $(targets); do \ [ ! -d $$i ] || $(MAKE) -C $$i $@ || exit $$? ; \ diff --git a/third_party/cJSON/Makefile b/3rd-party/cJSON/Makefile similarity index 100% rename from third_party/cJSON/Makefile rename to 3rd-party/cJSON/Makefile diff --git a/3rd-party/cJSON/src b/3rd-party/cJSON/src new file mode 160000 index 0000000..b45f48e --- /dev/null +++ b/3rd-party/cJSON/src @@ -0,0 +1 @@ +Subproject commit b45f48e600671feade0b6bd65d1c69de7899f2be diff --git a/3rd-party/cpp-tbox b/3rd-party/cpp-tbox new file mode 160000 index 0000000..0e910d1 --- /dev/null +++ b/3rd-party/cpp-tbox @@ -0,0 +1 @@ +Subproject commit 0e910d15e28a2518e59bea3ff6b799f5c7796629 diff --git a/third_party/libev/Makefile b/3rd-party/libev/Makefile similarity index 100% rename from third_party/libev/Makefile rename to 3rd-party/libev/Makefile diff --git a/third_party/libev/src b/3rd-party/libev/src similarity index 100% rename from third_party/libev/src rename to 3rd-party/libev/src diff --git a/third_party/libevent/Makefile b/3rd-party/libevent/Makefile similarity index 100% rename from third_party/libevent/Makefile rename to 3rd-party/libevent/Makefile diff --git a/3rd-party/libevent/src b/3rd-party/libevent/src new file mode 160000 index 0000000..3e7a738 --- /dev/null +++ b/3rd-party/libevent/src @@ -0,0 +1 @@ +Subproject commit 3e7a73809ebfd0e111856eb0b395d6a0735b6c8b diff --git a/third_party/mosquitto/Makefile b/3rd-party/mosquitto/Makefile similarity index 100% rename from third_party/mosquitto/Makefile rename to 3rd-party/mosquitto/Makefile diff --git a/third_party/mosquitto/patches/01-config.patch b/3rd-party/mosquitto/patches/01-config.patch similarity index 100% rename from third_party/mosquitto/patches/01-config.patch rename to 3rd-party/mosquitto/patches/01-config.patch diff --git a/3rd-party/mosquitto/src b/3rd-party/mosquitto/src new file mode 160000 index 0000000..ff97fbf --- /dev/null +++ b/3rd-party/mosquitto/src @@ -0,0 +1 @@ +Subproject commit ff97fbfe94b304b86167b15a68d4ae1d4502642c diff --git a/third_party/nlohmann/LICENSE.MIT b/3rd-party/nlohmann/LICENSE.MIT similarity index 100% rename from third_party/nlohmann/LICENSE.MIT rename to 3rd-party/nlohmann/LICENSE.MIT diff --git a/third_party/nlohmann/Makefile b/3rd-party/nlohmann/Makefile similarity index 100% rename from third_party/nlohmann/Makefile rename to 3rd-party/nlohmann/Makefile diff --git a/third_party/nlohmann/json.hpp b/3rd-party/nlohmann/json.hpp similarity index 100% rename from third_party/nlohmann/json.hpp rename to 3rd-party/nlohmann/json.hpp diff --git a/third_party/nlohmann/json_fwd.hpp b/3rd-party/nlohmann/json_fwd.hpp similarity index 100% rename from third_party/nlohmann/json_fwd.hpp rename to 3rd-party/nlohmann/json_fwd.hpp diff --git a/Makefile b/Makefile index 9e7c6a3..aa3ae26 100644 --- a/Makefile +++ b/Makefile @@ -3,7 +3,7 @@ export TOP_DIR := $(PWD) include config.mk include tools/build_env.mk -targets += third_party +targets += 3rd-party targets += apps .PHONY: all test clean distclean prepare $(targets) @@ -24,8 +24,8 @@ test: $(targets) clean: rm -rf $(OUTPUT_DIR) - make -C third_party clean + make -C 3rd-party clean distclean: clean rm -rf $(INSTALL_DIR) $(STAGING_DIR) - make -C third_party distclean + make -C 3rd-party distclean diff --git a/apps/Makefile b/apps/Makefile index 57f49dc..471222e 100644 --- a/apps/Makefile +++ b/apps/Makefile @@ -1,11 +1,3 @@ -apps += cpp_tbox/base -apps += cpp_tbox/event -apps += cpp_tbox/eventx -apps += cpp_tbox/util -apps += cpp_tbox/network -apps += cpp_tbox/terminal -apps += cpp_tbox/log -apps += cpp_tbox/main apps += sample all test clean distclean: diff --git a/apps/cpp_tbox b/apps/cpp_tbox deleted file mode 160000 index 0fac3d7..0000000 --- a/apps/cpp_tbox +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 0fac3d757935d10b84b6c86e2e71bc3ee29f5ae3 diff --git a/apps/sample/Makefile b/apps/sample/Makefile index 6807b64..f3aa931 100644 --- a/apps/sample/Makefile +++ b/apps/sample/Makefile @@ -28,4 +28,4 @@ TEST_LDFLAGS += $(LDFLAGS) pre_build : touch build_time.cpp -include ../cpp_tbox/tools/exe_common.mk +include ${TOP_DIR}/tools/exe_common.mk diff --git a/third_party/cJSON/src b/third_party/cJSON/src deleted file mode 160000 index 203a0de..0000000 --- a/third_party/cJSON/src +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 203a0dec6ff06e3842fa23a1bc9825aecf56b381 diff --git a/third_party/libevent/src b/third_party/libevent/src deleted file mode 160000 index a9595cc..0000000 --- a/third_party/libevent/src +++ /dev/null @@ -1 +0,0 @@ -Subproject commit a9595ccd7d1d6c02836d2facda0ba10bf4b66a79 diff --git a/third_party/mosquitto/src b/third_party/mosquitto/src deleted file mode 160000 index 3cbe805..0000000 --- a/third_party/mosquitto/src +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 3cbe805e71ac41a2a20cc9b2ea6b3b619f49554a diff --git a/tools/exe_common.mk b/tools/exe_common.mk new file mode 100644 index 0000000..2ceddb9 --- /dev/null +++ b/tools/exe_common.mk @@ -0,0 +1,146 @@ +################################################################ +# ABOUT: +# This C++ library project Makefile's common part, which can be included +# into project's Makefile, to make Makefile is easy to maintain. +# +# HOW TO USE: +# before include this file. those variables need be specified. +# C_SRC_FILES, CC_SRC_FILES, CPP_SRC_FILES, CXXFLAGS, TEST_LDFLAGS +# OUTPUT_DIR, INSTALL_DIR +# +# TARGETS: +# all, test, clean, distclean, install, uninstall +################################################################ + +.PHONY: all print_complie_vars print_build_var print_test_vars clean distclean install uninstall pre_build post_build + +EXE_OUTPUT_DIR = $(OUTPUT_DIR)/$(EXE_NAME) + +STATIC_LIB := $(EXE_NAME) + +#TARGETS := pre_build print_vars build_exe post_build +TARGETS := pre_build build_exe post_build + +all: $(TARGETS) install + +print_vars: + @echo CXX=$(CXX) + @echo C_SRC_FILES=$(C_SRC_FILES) + @echo CC_SRC_FILES=$(CC_SRC_FILES) + @echo CPP_SRC_FILES=$(CPP_SRC_FILES) + @echo OUTPUT_DIR=$(OUTPUT_DIR) + @echo STAGING_DIR=$(STAGING_DIR) + @echo INSTALL_DIR=$(INSTALL_DIR) + +################################################################ +# exe +################################################################ + +CPP_SOURCE_TO_OBJECT = $(EXE_OUTPUT_DIR)/$(subst .cpp,.o,$(1)) +CC_SOURCE_TO_OBJECT = $(EXE_OUTPUT_DIR)/$(subst .cc,.o,$(1)) +C_SOURCE_TO_OBJECT = $(EXE_OUTPUT_DIR)/$(subst .c,.o,$(1)) + +OBJECTS := $(foreach src,$(CPP_SRC_FILES),$(call CPP_SOURCE_TO_OBJECT,$(src))) +OBJECTS += $(foreach src,$(CC_SRC_FILES),$(call CC_SOURCE_TO_OBJECT,$(src))) +OBJECTS += $(foreach src,$(C_SRC_FILES),$(call C_SOURCE_TO_OBJECT,$(src))) + +define CREATE_CPP_OBJECT +$(call CPP_SOURCE_TO_OBJECT,$(1)) : $(1) + @echo "\033[32mCXX $$^\033[0m" + @install -d $$(dir $$@) + @$(CXX) $(CXXFLAGS) -o $$@ -c $$^ +endef + +define CREATE_CC_OBJECT +$(call CC_SOURCE_TO_OBJECT,$(1)) : $(1) + @echo "\033[32mCXX $$^\033[0m" + @install -d $$(dir $$@) + @$(CXX) $(CXXFLAGS) -o $$@ -c $$^ +endef + +define CREATE_C_OBJECT +$(call C_SOURCE_TO_OBJECT,$(1)) : $(1) + @echo "\033[32mCXX $^\033[0m" + @install -d $$(dir $$@) + @$(CC) $(CFLAGS) -o $$@ -c $$^ +endef + +$(foreach src,$(CPP_SRC_FILES),$(eval $(call CREATE_CPP_OBJECT,$(src)))) +$(foreach src,$(CC_SRC_FILES),$(eval $(call CREATE_CC_OBJECT,$(src)))) +$(foreach src,$(C_SRC_FILES),$(eval $(call CREATE_C_OBJECT,$(src)))) + +print_exe_vars : + @echo CXXFLAGS=$(CXXFLAGS) + @echo EXE_NAME=$(EXE_NAME) + @echo OBJECTS=$(OBJECTS) + +$(EXE_OUTPUT_DIR)/$(EXE_NAME) : $(OBJECTS) + @echo "\033[35mBUILD $(EXE_NAME) \033[0m" + @install -d $(dir $@) + @$(CXX) -o $@ $(OBJECTS) $(LDFLAGS) -rdynamic + +#build_exe : print_exe_vars $(EXE_OUTPUT_DIR)/$(EXE_NAME) +build_exe : $(EXE_OUTPUT_DIR)/$(EXE_NAME) + +################################################################ +# test +################################################################ + +CPP_SOURCE_TO_TEST_OBJECT = $(EXE_OUTPUT_DIR)/$(subst .cpp,.oT,$(1)) +C_SOURCE_TO_TEST_OBJECT = $(EXE_OUTPUT_DIR)/$(subst .c,.oT,$(1)) + +TEST_OBJECTS := $(foreach src,$(TEST_CPP_SRC_FILES),$(call CPP_SOURCE_TO_TEST_OBJECT,$(src))) +TEST_CXXFLAGS := $(CXXFLAGS) + +define CREATE_CPP_TEST_OBJECT +$(call CPP_SOURCE_TO_TEST_OBJECT,$(1)) : $(1) + @echo "\033[32mCXX $$^\033[0m" + @install -d $$(dir $$@) + @$(CXX) $(TEST_CXXFLAGS) -o $$@ -c $$^ +endef + +$(foreach src,$(TEST_CPP_SRC_FILES),$(eval $(call CREATE_CPP_TEST_OBJECT,$(src)))) + +print_test_vars : + @echo TEST_CXXFLAGS=$(TEST_CXXFLAGS) + @echo TEST_OBJECTS=$(TEST_OBJECTS) + @echo TEST_LDFLAGS=$(TEST_LDFLAGS) + +$(EXE_OUTPUT_DIR)/test: $(TEST_OBJECTS) $(OBJECTS) + @echo "\033[35mBUILD test\033[0m" + @$(CXX) -o $@ $(TEST_OBJECTS) $(OBJECTS) $(TEST_LDFLAGS) -lgmock_main -lgmock -lgtest -lpthread + +#test : print_test_vars $(EXE_OUTPUT_DIR)/test +test : $(EXE_OUTPUT_DIR)/test + +################################################################ +# install and uninstall +################################################################ + +# install head files +SRC_CONF_TO_INSTALL_CONF = $(addprefix $(INSTALL_DIR)/etc/$(EXE_NAME)/,$(1)) + +define CREATE_INSTALL_CONF_TARGET +$(call SRC_CONF_TO_INSTALL_CONF,$(1)) : $(1) + @install -Dm 640 $$^ $$@ +endef + +$(foreach src,$(CONF_FILES),$(eval $(call CREATE_INSTALL_CONF_TARGET,$(src)))) + +INSTALL_CONFS := $(foreach src,$(CONF_FILES),$(call SRC_CONF_TO_INSTALL_CONF,$(src))) + +INSTALL_EXE := $(INSTALL_DIR)/bin/$(EXE_NAME) +$(INSTALL_EXE) : $(EXE_OUTPUT_DIR)/$(EXE_NAME) + @install -Dm 750 $^ $@ + +install: $(INSTALL_EXE) $(INSTALL_CONFS) + +uninstall: + rm -f $(INSTALL_DIR)/bin/$(EXE_NAME) + +################################################################ +# clean +################################################################ +clean: + -rm -f $(OBJECTS) + diff --git a/tools/lib_common.mk b/tools/lib_common.mk new file mode 100644 index 0000000..8da1c8e --- /dev/null +++ b/tools/lib_common.mk @@ -0,0 +1,225 @@ +################################################################ +# ABOUT: +# This C++ library project Makefile's common part, which can be included +# into project's Makefile, to make Makefile is easy to maintain. +# +# HOW TO USE: +# before include this file. those variables need be specified. +# LIB_VERSION_X, LIB_VERSION_Y, LIB_VERSION_Z, C_SRC_FILES, CC_SRC_FILES, CPP_SRC_FILES, CXXFLAGS, TEST_LDFLAGS +# OUTPUT_DIR, STAGING_DIR, INSTALL_DIR +# +# TARGETS: +# all, libxxx.a, libxxx.so.x.x.x, test, clean, distclean, install, uninstall +################################################################ + +.PHONY: all print_vars print_static_vars print_shared_vars print_test_vars clean distclean install uninstall pre_build post_build + +LIB_BASENAME = lib$(LIB_NAME)$(LIB_NAME_EXT) +LIB_OUTPUT_DIR = $(OUTPUT_DIR)/$(LIB_NAME) + +STATIC_LIB := $(LIB_BASENAME).a +SHARED_LIB := $(LIB_BASENAME).so.$(LIB_VERSION_X).$(LIB_VERSION_Y).$(LIB_VERSION_Z) + +ENABLE_STATIC_LIB ?= yes +ENABLE_SHARED_LIB ?= yes + +TARGETS := pre_build #print_vars + +ifeq ($(ENABLE_STATIC_LIB),yes) + TARGETS += build_static_lib +endif + +ifeq ($(ENABLE_SHARED_LIB),yes) + TARGETS += build_shared_lib +endif + +TARGETS += post_build + +all: $(TARGETS) install + +print_vars: + @echo CXX=$(CXX) + @echo C_SRC_FILES=$(C_SRC_FILES) + @echo CC_SRC_FILES=$(CC_SRC_FILES) + @echo CPP_SRC_FILES=$(CPP_SRC_FILES) + @echo OUTPUT_DIR=$(OUTPUT_DIR) + @echo STAGING_DIR=$(STAGING_DIR) + @echo INSTALL_DIR=$(INSTALL_DIR) + +################################################################ +# static library +################################################################ + +CPP_SOURCE_TO_OBJECT = $(LIB_OUTPUT_DIR)/$(subst .cpp,.o,$(1)) +CC_SOURCE_TO_OBJECT = $(LIB_OUTPUT_DIR)/$(subst .cc,.o,$(1)) +C_SOURCE_TO_OBJECT = $(LIB_OUTPUT_DIR)/$(subst .c,.o,$(1)) + +OBJECTS := $(foreach src,$(CPP_SRC_FILES),$(call CPP_SOURCE_TO_OBJECT,$(src))) +OBJECTS += $(foreach src,$(CC_SRC_FILES),$(call CC_SOURCE_TO_OBJECT,$(src))) +OBJECTS += $(foreach src,$(C_SRC_FILES),$(call C_SOURCE_TO_OBJECT,$(src))) + +define CREATE_CPP_OBJECT +$(call CPP_SOURCE_TO_OBJECT,$(1)) : $(1) + @echo "\033[32mCXX $$^\033[0m" + @install -d $$(dir $$@) + @$(CXX) $(CXXFLAGS) -o $$@ -c $$^ +endef + +define CREATE_CC_OBJECT +$(call CC_SOURCE_TO_OBJECT,$(1)) : $(1) + @echo "\033[32mCXX $$^\033[0m" + @install -d $$(dir $$@) + @$(CXX) $(CXXFLAGS) -o $$@ -c $$^ +endef + +define CREATE_C_OBJECT +$(call C_SOURCE_TO_OBJECT,$(1)) : $(1) + @echo "\033[32mCXX $^\033[0m" + @$(CC) $(CFLAGS) -o $@ -c $^ +endef + +$(foreach src,$(CPP_SRC_FILES),$(eval $(call CREATE_CPP_OBJECT,$(src)))) +$(foreach src,$(CC_SRC_FILES),$(eval $(call CREATE_CC_OBJECT,$(src)))) +$(foreach src,$(C_SRC_FILES),$(eval $(call CREATE_C_OBJECT,$(src)))) + +print_static_vars : + @echo CXXFLAGS=$(CXXFLAGS) + @echo OBJECTS=$(OBJECTS) + +$(LIB_OUTPUT_DIR)/$(STATIC_LIB) : $(OBJECTS) + @echo "\033[35mBUILD $(STATIC_LIB) \033[0m" + @install -d $(dir $@) + @$(AR) rc $@ $(OBJECTS) + +#build_static_lib : print_static_vars $(LIB_OUTPUT_DIR)/$(STATIC_LIB) +build_static_lib : $(LIB_OUTPUT_DIR)/$(STATIC_LIB) + +################################################################ +# shared library +################################################################ + +CPP_SOURCE_TO_SHARED_OBJECT = $(LIB_OUTPUT_DIR)/$(subst .cpp,.oS,$(1)) +CC_SOURCE_TO_SHARED_OBJECT = $(LIB_OUTPUT_DIR)/$(subst .cc,.oS,$(1)) +C_SOURCE_TO_SHARED_OBJECT = $(LIB_OUTPUT_DIR)/$(subst .c,.oS,$(1)) + +SHARED_OBJECTS := $(foreach src,$(CPP_SRC_FILES),$(call CPP_SOURCE_TO_SHARED_OBJECT,$(src))) +SHARED_OBJECTS += $(foreach src,$(CC_SRC_FILES),$(call CC_SOURCE_TO_SHARED_OBJECT,$(src))) +SHARED_OBJECTS += $(foreach src,$(C_SRC_FILES),$(call C_SOURCE_TO_SHARED_OBJECT,$(src))) + +SHARED_CXXFLAGS := $(CXXFLAGS) -fPIC +SHARED_CFLAGS := $(CFLAGS) -fPIC + +define CREATE_CPP_SHARED_OBJECT +$(call CPP_SOURCE_TO_SHARED_OBJECT,$(1)) : $(1) + @echo "\033[32mCXX $$^\033[0m" + @install -d $$(dir $$@) + @$(CXX) $(SHARED_CXXFLAGS) -o $$@ -c $$^ +endef + +define CREATE_CC_SHARED_OBJECT +$(call CC_SOURCE_TO_SHARED_OBJECT,$(1)) : $(1) + @echo "\033[32mCXX $$^\033[0m" + @install -d $$(dir $$@) + @$(CXX) $(SHARED_CXXFLAGS) -o $$@ -c $$^ +endef + +define CREATE_C_SHARED_OBJECT +$(call C_SOURCE_TO_SHARED_OBJECT,$(1)) : $(1) + @echo "\033[32mCXX $^\033[0m" + @$(CC) $(SHARED_CFLAGS) -o $@ -c $^ +endef + +$(foreach src,$(CPP_SRC_FILES),$(eval $(call CREATE_CPP_SHARED_OBJECT,$(src)))) +$(foreach src,$(CC_SRC_FILES),$(eval $(call CREATE_CC_SHARED_OBJECT,$(src)))) +$(foreach src,$(C_SRC_FILES),$(eval $(call CREATE_C_SHARED_OBJECT,$(src)))) + +print_shared_vars : + @echo SHARED_CXXFLAGS=$(SHARED_CXXFLAGS) + @echo SHARED_OBJECTS=$(SHARED_OBJECTS) + +$(LIB_OUTPUT_DIR)/$(SHARED_LIB) : $(SHARED_OBJECTS) + @echo "\033[35mBUILD $(SHARED_LIB)\033[0m" + @$(CXX) -shared $(SHARED_OBJECTS) -Wl,-soname,$(LIB_BASENAME).so.$(LIB_VERSION_X).$(LIB_VERSION_Y) -o $@ + +#build_shared_lib : print_shared_vars $(LIB_OUTPUT_DIR)/$(SHARED_LIB) +build_shared_lib : $(LIB_OUTPUT_DIR)/$(SHARED_LIB) + +################################################################ +# test +################################################################ + +CPP_SOURCE_TO_TEST_OBJECT = $(LIB_OUTPUT_DIR)/$(subst .cpp,.oT,$(1)) +C_SOURCE_TO_TEST_OBJECT = $(LIB_OUTPUT_DIR)/$(subst .c,.oT,$(1)) + +TEST_OBJECTS := $(foreach src,$(TEST_CPP_SRC_FILES),$(call CPP_SOURCE_TO_TEST_OBJECT,$(src))) +TEST_CXXFLAGS := $(CXXFLAGS) + +define CREATE_CPP_TEST_OBJECT +$(call CPP_SOURCE_TO_TEST_OBJECT,$(1)) : $(1) + @echo "\033[32mCXX $$^\033[0m" + @install -d $$(dir $$@) + @$(CXX) $(TEST_CXXFLAGS) -o $$@ -c $$^ +endef + +$(foreach src,$(TEST_CPP_SRC_FILES),$(eval $(call CREATE_CPP_TEST_OBJECT,$(src)))) + +print_test_vars : + @echo TEST_CXXFLAGS=$(TEST_CXXFLAGS) + @echo TEST_OBJECTS=$(TEST_OBJECTS) + @echo TEST_LDFLAGS=$(TEST_LDFLAGS) + +$(LIB_OUTPUT_DIR)/test: $(TEST_OBJECTS) $(OBJECTS) + @echo "\033[35mBUILD test\033[0m" + @$(CXX) -o $@ $(TEST_OBJECTS) $(OBJECTS) $(TEST_LDFLAGS) -lgmock_main -lgmock -lgtest -lpthread + +#test : print_test_vars $(LIB_OUTPUT_DIR)/test +test : $(LIB_OUTPUT_DIR)/test + +################################################################ +# install and uninstall +################################################################ + +# install head files +SRC_HEAD_TO_INSTALL_HEAD = $(addprefix $(STAGING_DIR)/include/$(LIB_NAME)/,$(1)) + +define CREATE_INSTALL_HEAD_TARGET +$(call SRC_HEAD_TO_INSTALL_HEAD,$(1)) : $(1) + @install -Dm 640 $$^ $$@ +endef + +$(foreach src,$(HEAD_FILES),$(eval $(call CREATE_INSTALL_HEAD_TARGET,$(src)))) + +INSTALL_HEADS := $(foreach src,$(HEAD_FILES),$(call SRC_HEAD_TO_INSTALL_HEAD,$(src))) + +# install static library +ifeq ($(ENABLE_STATIC_LIB),yes) +INSTALL_STATIC_LIB := $(STAGING_DIR)/lib/$(STATIC_LIB) +$(INSTALL_STATIC_LIB) : $(LIB_OUTPUT_DIR)/$(STATIC_LIB) + @install -Dm 640 $^ $@ +endif + +# install shared library +ifeq ($(ENABLE_SHARED_LIB),yes) +INSTALL_SHARED_LIB := $(INSTALL_DIR)/lib/$(SHARED_LIB) +$(INSTALL_SHARED_LIB) : $(LIB_OUTPUT_DIR)/$(SHARED_LIB) + @install -d $(dir $@) + @cd $(dir $@); \ + rm -f $(LIB_BASENAME).so*; \ + install -Dm 750 $^ $@; \ + ln -s $(SHARED_LIB) $(LIB_BASENAME).so; \ + ln -s $(SHARED_LIB) $(LIB_BASENAME).so.$(LIB_VERSION_X).$(LIB_VERSION_Y) +endif + +install: $(INSTALL_HEADS) $(INSTALL_STATIC_LIB) $(INSTALL_SHARED_LIB) + +uninstall: + rm -rf $(STAGING_DIR)/include/$(LIB_NAME) + rm -f $(STAGING_DIR)/lib/$(LIB_BASENAME).a + rm -f $(INSTALL_DIR)/lib/$(LIB_BASENAME).so* + +################################################################ +# clean and distclean +################################################################ +clean: + -rm -f $(OBJECTS) $(SHARED_OBJECTS) $(TEST_OBJECTS) + -- Gitee From de837da7f9a6c2f200a7d71225d32584710a988c Mon Sep 17 00:00:00 2001 From: hevake_lcj Date: Thu, 21 Jul 2022 11:48:26 +0800 Subject: [PATCH 09/15] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E4=BA=863rd-party/Make?= =?UTF-8?q?file=E7=9A=84=E4=B8=ADcJSON=E7=9A=84=E7=BC=96=E8=AF=91=E9=A1=BA?= =?UTF-8?q?=E5=BA=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- 3rd-party/Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/3rd-party/Makefile b/3rd-party/Makefile index 33ea58d..8fdba83 100644 --- a/3rd-party/Makefile +++ b/3rd-party/Makefile @@ -5,10 +5,10 @@ export prefix ?= export PREFIX ?= targets += nlohmann +#targets += cJSON #targets += mosquitto #targets += libevent #targets += libev -#targets += cJSON targets += cpp-tbox/base \ cpp-tbox/event \ -- Gitee From e51f9366e13994952d9e061c3b5f5af753b38764 Mon Sep 17 00:00:00 2001 From: hevake_lcj Date: Thu, 21 Jul 2022 11:56:08 +0800 Subject: [PATCH 10/15] =?UTF-8?q?=E5=88=9B=E5=BB=BA=E4=BA=86hello-world?= =?UTF-8?q?=E7=A4=BA=E4=BE=8B=EF=BC=9B=E5=B0=86sample=E7=A4=BA=E4=BE=8B?= =?UTF-8?q?=E6=9B=B4=E5=90=8D=E4=B8=BAcpp-tbox-sample?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/Makefile | 3 ++- apps/{sample => cpp-tbox-sample}/Makefile | 0 apps/{sample => cpp-tbox-sample}/README.md | 0 apps/{sample => cpp-tbox-sample}/app1/app.cpp | 0 apps/{sample => cpp-tbox-sample}/app1/app.h | 0 apps/{sample => cpp-tbox-sample}/app1/app.mk | 0 apps/{sample => cpp-tbox-sample}/app2/app.cpp | 0 apps/{sample => cpp-tbox-sample}/app2/app.h | 0 apps/{sample => cpp-tbox-sample}/app2/app.mk | 0 apps/{sample => cpp-tbox-sample}/app_main.cpp | 0 apps/{sample => cpp-tbox-sample}/build_time.cpp | 0 apps/{sample => cpp-tbox-sample}/default.conf | 0 apps/hello-world/Makefile | 4 ++++ apps/hello-world/main.cpp | 8 ++++++++ 14 files changed, 14 insertions(+), 1 deletion(-) rename apps/{sample => cpp-tbox-sample}/Makefile (100%) rename apps/{sample => cpp-tbox-sample}/README.md (100%) rename apps/{sample => cpp-tbox-sample}/app1/app.cpp (100%) rename apps/{sample => cpp-tbox-sample}/app1/app.h (100%) rename apps/{sample => cpp-tbox-sample}/app1/app.mk (100%) rename apps/{sample => cpp-tbox-sample}/app2/app.cpp (100%) rename apps/{sample => cpp-tbox-sample}/app2/app.h (100%) rename apps/{sample => cpp-tbox-sample}/app2/app.mk (100%) rename apps/{sample => cpp-tbox-sample}/app_main.cpp (100%) rename apps/{sample => cpp-tbox-sample}/build_time.cpp (100%) rename apps/{sample => cpp-tbox-sample}/default.conf (100%) create mode 100644 apps/hello-world/Makefile create mode 100644 apps/hello-world/main.cpp diff --git a/apps/Makefile b/apps/Makefile index 471222e..37e2b33 100644 --- a/apps/Makefile +++ b/apps/Makefile @@ -1,4 +1,5 @@ -apps += sample +apps += hello-world +apps += cpp-tbox-sample all test clean distclean: @for i in $(apps); do \ diff --git a/apps/sample/Makefile b/apps/cpp-tbox-sample/Makefile similarity index 100% rename from apps/sample/Makefile rename to apps/cpp-tbox-sample/Makefile diff --git a/apps/sample/README.md b/apps/cpp-tbox-sample/README.md similarity index 100% rename from apps/sample/README.md rename to apps/cpp-tbox-sample/README.md diff --git a/apps/sample/app1/app.cpp b/apps/cpp-tbox-sample/app1/app.cpp similarity index 100% rename from apps/sample/app1/app.cpp rename to apps/cpp-tbox-sample/app1/app.cpp diff --git a/apps/sample/app1/app.h b/apps/cpp-tbox-sample/app1/app.h similarity index 100% rename from apps/sample/app1/app.h rename to apps/cpp-tbox-sample/app1/app.h diff --git a/apps/sample/app1/app.mk b/apps/cpp-tbox-sample/app1/app.mk similarity index 100% rename from apps/sample/app1/app.mk rename to apps/cpp-tbox-sample/app1/app.mk diff --git a/apps/sample/app2/app.cpp b/apps/cpp-tbox-sample/app2/app.cpp similarity index 100% rename from apps/sample/app2/app.cpp rename to apps/cpp-tbox-sample/app2/app.cpp diff --git a/apps/sample/app2/app.h b/apps/cpp-tbox-sample/app2/app.h similarity index 100% rename from apps/sample/app2/app.h rename to apps/cpp-tbox-sample/app2/app.h diff --git a/apps/sample/app2/app.mk b/apps/cpp-tbox-sample/app2/app.mk similarity index 100% rename from apps/sample/app2/app.mk rename to apps/cpp-tbox-sample/app2/app.mk diff --git a/apps/sample/app_main.cpp b/apps/cpp-tbox-sample/app_main.cpp similarity index 100% rename from apps/sample/app_main.cpp rename to apps/cpp-tbox-sample/app_main.cpp diff --git a/apps/sample/build_time.cpp b/apps/cpp-tbox-sample/build_time.cpp similarity index 100% rename from apps/sample/build_time.cpp rename to apps/cpp-tbox-sample/build_time.cpp diff --git a/apps/sample/default.conf b/apps/cpp-tbox-sample/default.conf similarity index 100% rename from apps/sample/default.conf rename to apps/cpp-tbox-sample/default.conf diff --git a/apps/hello-world/Makefile b/apps/hello-world/Makefile new file mode 100644 index 0000000..3ae13de --- /dev/null +++ b/apps/hello-world/Makefile @@ -0,0 +1,4 @@ +EXE_NAME := hello +CPP_SRC_FILES := main.cpp + +include ${TOP_DIR}/tools/exe_common.mk diff --git a/apps/hello-world/main.cpp b/apps/hello-world/main.cpp new file mode 100644 index 0000000..fe03ecb --- /dev/null +++ b/apps/hello-world/main.cpp @@ -0,0 +1,8 @@ +#include + +using namespace std; + +int main() +{ + cout << "hello world!" << endl; +} -- Gitee From 92163347bf9c275df882bcc543e6a9fa0e086518 Mon Sep 17 00:00:00 2001 From: hevake_lcj Date: Thu, 21 Jul 2022 21:04:05 +0800 Subject: [PATCH 11/15] =?UTF-8?q?=E5=B0=8F=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 9 ++++++++- tools/build_env.mk | 9 ++++++--- 2 files changed, 14 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index e095110..7dfd95a 100644 --- a/README.md +++ b/README.md @@ -8,7 +8,7 @@ cpp-solution,是跨平台的C++应用项目模板。它让开发者在非常 # 怎么创建一个新的项目? -请参考 apps/app\_demo 的实现方法。修改或复制它即可。 +请参考 apps/sample 的实现方法。修改或复制它即可。 # 怎么跨平台? @@ -22,6 +22,13 @@ cpp-solution,是跨平台的C++应用项目模板。它让开发者在非常 如果 mips 的工具链都在 somewhere/bin/ 目录下,具都以 mips-xxx- 开头。如 gcc 为 mips-xxx-gcc,那么 `TOOLCHAIN_BIN_PREFIX` 则应设置成 `somewhere/bin/mips-xxx-` 4. 构建时,可使用命令 `make PLATFORM=misp` 进行构建。 +make 命令有以下参数: +`make [PLATFORM=xxx] [RELEASE=1] [ENABLE_ASAN=1]` + +- PLATFORM=xxx,指定xxx交叉编译环境,默认为 host 本机; +- RELEASE=1,构建发布版本,编译参数加 `-O2 -Os` 参数。否则构建调试版本,编译参数加 `-DDEBUG=1 -O0 -ggdb`,默认为调试版本 +- ENABLE\_ASAN=1,启用ASan进行运行时内存检测,默认不启用。 + # 未来规化 - 将目前文档与源码文件分离开 diff --git a/tools/build_env.mk b/tools/build_env.mk index bf173af..228f5e5 100644 --- a/tools/build_env.mk +++ b/tools/build_env.mk @@ -27,12 +27,15 @@ LINK_FLAGS := -L$(STAGING_LIB) -L$(CONSTANT_LIB) ifeq ($(RELEASE), 1) COMPILE_FLAGS += -O2 -Os else -COMPILE_FLAGS += -fsanitize=address -fno-omit-frame-pointer -DDEBUG=1 -O0 -ggdb +COMPILE_FLAGS += -DDEBUG=1 -O0 -ggdb +ifeq ($(ENABLE_ASAN), 1) +COMPILE_FLAGS += -fsanitize=address -fno-omit-frame-pointer LINK_FLAGS += -fsanitize=address -static-libasan endif +endif -export CFLAGS := $(COMPILE_FLAGS) -std=c99 -export CXXFLAGS := $(COMPILE_FLAGS) -std=c++11 +export CFLAGS := $(COMPILE_FLAGS) +export CXXFLAGS := $(COMPILE_FLAGS) export LDFLAGS := $(LINK_FLAGS) export AR := $(TOOLCHAIN_BIN_PREFIX)ar -- Gitee From 1650dda75a598dcdb5d7006387cd887c0652883f Mon Sep 17 00:00:00 2001 From: hevake_lcj Date: Fri, 22 Jul 2022 09:43:51 +0800 Subject: [PATCH 12/15] =?UTF-8?q?=E6=9B=B4=E6=96=B0cpp-tbox?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- 3rd-party/cpp-tbox | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/3rd-party/cpp-tbox b/3rd-party/cpp-tbox index 0e910d1..b716fbc 160000 --- a/3rd-party/cpp-tbox +++ b/3rd-party/cpp-tbox @@ -1 +1 @@ -Subproject commit 0e910d15e28a2518e59bea3ff6b799f5c7796629 +Subproject commit b716fbca8e286b5079bbf81026d2818664dca0a5 -- Gitee From 8ccb60af5e4d15dbe54964bd4ceb06524caf8b30 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=B5=B7=E5=8D=AB=E5=93=A5?= Date: Fri, 22 Jul 2022 02:57:42 +0000 Subject: [PATCH 13/15] update README.md. --- README.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 7dfd95a..fde023c 100644 --- a/README.md +++ b/README.md @@ -8,7 +8,8 @@ cpp-solution,是跨平台的C++应用项目模板。它让开发者在非常 # 怎么创建一个新的项目? -请参考 apps/sample 的实现方法。修改或复制它即可。 +如果是基于 cpp-tbox 的 main 框架开发,请参考 apps/cpp-tbox-sample 的实现方法。修改或复制它即可。 +如果仅仅是一个简单的程序,请参考 apps/hello-world。 # 怎么跨平台? @@ -26,10 +27,9 @@ make 命令有以下参数: `make [PLATFORM=xxx] [RELEASE=1] [ENABLE_ASAN=1]` - PLATFORM=xxx,指定xxx交叉编译环境,默认为 host 本机; -- RELEASE=1,构建发布版本,编译参数加 `-O2 -Os` 参数。否则构建调试版本,编译参数加 `-DDEBUG=1 -O0 -ggdb`,默认为调试版本 +- RELEASE=1,构建发布版本,编译参数加 `-O2 -Os` 参数。否则构建调试版本,编译参数加 `-DDEBUG=1 -O0 -ggdb`,默认为调试版本; - ENABLE\_ASAN=1,启用ASan进行运行时内存检测,默认不启用。 # 未来规化 -- 将目前文档与源码文件分离开 - 将third\_party编译的目标文件与与源码文件分离开 -- Gitee From 9b23b18331f2b74991fc18ec3e0871cfeb365378 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=B5=B7=E5=8D=AB=E5=93=A5?= Date: Fri, 22 Jul 2022 02:58:05 +0000 Subject: [PATCH 14/15] update README.md. --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index fde023c..c0bf063 100644 --- a/README.md +++ b/README.md @@ -8,7 +8,7 @@ cpp-solution,是跨平台的C++应用项目模板。它让开发者在非常 # 怎么创建一个新的项目? -如果是基于 cpp-tbox 的 main 框架开发,请参考 apps/cpp-tbox-sample 的实现方法。修改或复制它即可。 +如果是基于 cpp-tbox 的 main 框架开发,请参考 apps/cpp-tbox-sample 的实现方法。修改或复制它即可。 如果仅仅是一个简单的程序,请参考 apps/hello-world。 # 怎么跨平台? -- Gitee From 5ffffea5d7e3f2ad6e6df098c2ad8512f2820a6e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=B5=B7=E5=8D=AB=E5=93=A5?= Date: Fri, 22 Jul 2022 02:58:23 +0000 Subject: [PATCH 15/15] update README.md. --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index c0bf063..bd78b1e 100644 --- a/README.md +++ b/README.md @@ -8,7 +8,7 @@ cpp-solution,是跨平台的C++应用项目模板。它让开发者在非常 # 怎么创建一个新的项目? -如果是基于 cpp-tbox 的 main 框架开发,请参考 apps/cpp-tbox-sample 的实现方法。修改或复制它即可。 +如果是基于 cpp-tbox 的 main 框架开发,请参考 apps/cpp-tbox-sample 的实现方法。修改或复制它即可。 如果仅仅是一个简单的程序,请参考 apps/hello-world。 # 怎么跨平台? -- Gitee