From 542cdeeadeca831ca45ef1ceef65f5ebc87fbd0e Mon Sep 17 00:00:00 2001 From: Alex Robenko Date: Wed, 26 Jun 2024 08:15:52 +1000 Subject: [PATCH 1/7] Updating next release to be v2.8. --- CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 21a9c00..f2bdf0a 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -31,7 +31,7 @@ option (MQTTSN_BUILD_EMSCRIPTEN "Build and install project generated by the comm # COMMSDSL2SWIG_EXTRA_ARGS - Extra arguments to pass to "commsdsl2swig" # COMMSDSL2EMSCRIPTEN_EXTRA_ARGS - Extra arguments to pass to "commsdsl2emscripten" -set (MQTTSN_VERSION "2.7") +set (MQTTSN_VERSION "2.8") set (MQTTSN_MIN_COMMSDSL_VERSION "6.3.2") set (EXTERNALS_DIR "${PROJECT_SOURCE_DIR}/externals") From 411730d0dc08f33ec3889fbf28852d5a2c527f5a Mon Sep 17 00:00:00 2001 From: Alex Robenko Date: Wed, 26 Jun 2024 08:16:16 +1000 Subject: [PATCH 2/7] Removed appveyor configuration. --- .appveyor.yml | 71 -------------------------------- script/appveyor_install.bat | 82 ------------------------------------- 2 files changed, 153 deletions(-) delete mode 100644 .appveyor.yml delete mode 100644 script/appveyor_install.bat diff --git a/.appveyor.yml b/.appveyor.yml deleted file mode 100644 index 662d908..0000000 --- a/.appveyor.yml +++ /dev/null @@ -1,71 +0,0 @@ -image: - - Visual Studio 2022 - - Visual Studio 2019 - - -init: - - git config --global core.autocrlf input - -clone_folder: c:\projects\cc.mqttsn.commsdsl -shallow_clone: true - -platform: - - x64 - - x86 - -configuration: - - Debug - - Release - -environment: - COMMS_TAG: v5.2.3 - COMMSDSL_TAG: v6.3.2 - CC_TOOLS_QT_TAG: v5.2.1 - matrix: - - CPP_STD: 11 - QT_MAJOR: 5 - EXTRA_CONFIG: -DMQTTSN_BUILD_TOOLS=OFF - - CPP_STD: 14 - QT_MAJOR: 5 - EXTRA_CONFIG: -DMQTTSN_BUILD_TOOLS=OFF - - CPP_STD: 17 - QT_MAJOR: 5 - - CPP_STD: 20 - QT_MAJOR: 5 - - CPP_STD: 20 - QT_MAJOR: 6 - -matrix: - fast_finish: false - exclude: - - platform: x86 - QT_MAJOR: 6 - -install: - - call script\appveyor_install.bat - - set PATH=%PATH%;%QTDIR%\bin - - set BUILD_DIR=%APPVEYOR_BUILD_FOLDER%\build.%PLATFORM%.%CONFIGURATION%.%TOOLCHAIN% - - if exist %BUILD_DIR% rmdir /S /Q %BUILD_DIR% - - set COMMS_TAG=%COMMS_TAG% - - set COMMSDSL_TAG=%COMMSDSL_TAG% - - set CC_TOOLS_QT_TAG=%CC_TOOLS_QT_TAG% - - set COMMON_INSTALL_DIR=%BUILD_DIR%\install - - set COMMON_BUILD_TYPE=%CONFIGURATION% - - set COMMON_CXX_STANDARD=%CPP_STD% - - set GENERATOR="%CMAKE_GENERATOR%" - - set PLATFORM="%CMAKE_PLATFORM%" - - set CC_TOOLS_QT_MAJOR_QT_VERSION=%QT_MAJOR% - - call script\prepare_externals.bat - -build_script: - - echo ------------------------- Building Project ------------------------- - - cd %BUILD_DIR% - - cmake .. -DCMAKE_BUILD_TYPE=%CONFIGURATION% -G "%CMAKE_GENERATOR%" %PLATFORM_PARAM% ^ - -DBOOST_ROOT="%BOOST_DIR%" -DBoost_USE_STATIC_LIBS=ON -DCMAKE_INSTALL_PREFIX="%COMMON_INSTALL_DIR%" ^ - -DCMAKE_PREFIX_PATH="%COMMON_INSTALL_DIR%" -DCMAKE_CXX_STANDARD=%CPP_STD% ^ - -DMQTTSN_GEN_PROTOCOL=ON -DMQTTSN_GEN_TEST=ON -DMQTTSN_GEN_TOOLS=ON -DMQTTSN_TOOLS_QT_VER=%QT_MAJOR% ^ - %EXTRA_CONFIG% - - cmake --build . --config %CONFIGURATION% --parallel %NUMBER_OF_PROCESSORS% - - - diff --git a/script/appveyor_install.bat b/script/appveyor_install.bat deleted file mode 100644 index d9e10de..0000000 --- a/script/appveyor_install.bat +++ /dev/null @@ -1,82 +0,0 @@ -IF "%APPVEYOR_BUILD_WORKER_IMAGE%"=="Visual Studio 2015" ( - set TOOLCHAIN=msvc14 - set QT_SUBDIR=msvc2015 - set QT_VER=5.6 - set CMAKE_GENERATOR=NMake Makefiles - IF "%PLATFORM%"=="x86" ( - echo Performing x86 build in VS2015 - call "C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\vcvarsall.bat" x86 - ) ELSE ( - echo Performing amd64 build in VS2015 - call "C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\vcvarsall.bat" amd64 - ) -) ELSE IF "%APPVEYOR_BUILD_WORKER_IMAGE%"=="Visual Studio 2017" ( - set TOOLCHAIN=msvc15 - set QT_SUBDIR=msvc2017 - set QT_VER=5.13 - set CMAKE_GENERATOR=NMake Makefiles - IF "%PLATFORM%"=="x86" ( - echo Performing x86 build in VS2017 - call "C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Auxiliary\Build\vcvars32.bat" - ) ELSE ( - echo Performing amd64 build in VS2017 - call "C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Auxiliary\Build\vcvars64.bat" - ) - -) ELSE IF "%APPVEYOR_BUILD_WORKER_IMAGE%"=="Visual Studio 2019" ( - set TOOLCHAIN=msvc16 - set QT_SUBDIR=msvc2019 - IF "%QT_MAJOR%"=="6" ( - set QT_VER=6.4 - ) ELSE ( - set QT_VER=5.15 - ) - set CMAKE_GENERATOR=Visual Studio 16 2019 - set CMAKE_PLATFORM=Win32 - IF "%PLATFORM%"=="x86" ( - echo Performing x86 build in VS2019 - call "C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Auxiliary\Build\vcvars32.bat" - ) ELSE ( - echo Performing amd64 build in VS2019 - call "C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Auxiliary\Build\vcvars64.bat" - set CMAKE_PLATFORM=x64 - ) - -) ELSE IF "%APPVEYOR_BUILD_WORKER_IMAGE%"=="Visual Studio 2022" ( - set TOOLCHAIN=msvc17 - set QT_SUBDIR=msvc2019 - IF "%QT_MAJOR%"=="6" ( - set QT_VER=6.4 - ) ELSE ( - set QT_VER=5.15 - ) - set CMAKE_GENERATOR=Visual Studio 17 2022 - IF "%PLATFORM%"=="x86" ( - echo Performing x86 build in VS2022 - call "C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Auxiliary\Build\vcvars32.bat" - set CMAKE_PLATFORM=Win32 - ) ELSE ( - echo Performing amd64 build in VS2022 - call "C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Auxiliary\Build\vcvars64.bat" - set CMAKE_PLATFORM=x64 - ) -) ELSE ( - echo Toolchain %TOOLCHAIN% is not supported - exit -1 -) - -set QTDIR_PREFIX=C:/Qt/%QT_VER% -IF "%PLATFORM%"=="x86" ( - set QTDIR_SUFFIX= -) ELSE ( - set QTDIR_SUFFIX=_64 -) - -set QTDIR=%QTDIR_PREFIX%/%QT_SUBDIR%%QTDIR_SUFFIX% -IF NOT EXIST %QTDIR% ( - echo WARNING: %QTDIR% does not exist!!! - set QTDIR=%QTDIR_PREFIX%/msvc2015%QTDIR_SUFFIX% -) - -echo Using Qt from %QTDIR% - From 07e54d74b92e91dad7fa7e6fb684bac391b5c010 Mon Sep 17 00:00:00 2001 From: Alex Robenko Date: Wed, 26 Jun 2024 08:16:55 +1000 Subject: [PATCH 3/7] Fixing comms library link in README. --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 0375b1f..0461f40 100644 --- a/README.md +++ b/README.md @@ -26,7 +26,7 @@ mentioned available parameters, which can be used in addition to standard ones provided by CMake itself, to modify the default build. This project also has external dependencies, it requires an access to -the [COMMS Library](https://github.com/commschamp/commsdsl) and +the [COMMS Library](https://github.com/commschamp/comms) and code generators from [commsdsl](https://github.com/commschamp/commsdsl) projects. These dependencies are expected to be built independenty and access to them provided via standard **CMAKE_PREFIX_PATH** and/or **CMAKE_PROGRAM_PATH** (for the binaries of From 5d4a119f7ad0e33059542c1bf73ff01e9430b011 Mon Sep 17 00:00:00 2001 From: Alex Robenko Date: Wed, 26 Jun 2024 08:20:50 +1000 Subject: [PATCH 4/7] Removed appveyor configuration reference in README. --- README.md | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/README.md b/README.md index 0461f40..0f10692 100644 --- a/README.md +++ b/README.md @@ -34,8 +34,7 @@ the code generators). There are also scripts ( [script/prepare_externals.sh](script/prepare_externals.sh) for Linux and [script/prepare_externals.bat](script/prepare_externals.bat) for Windows) which can help in preparation of these dependencies. They are also used -in configuration of the [github actions](.github/workflows/actions_build.yml) and -[appveyor](.appveyor.yml). +in configuration of the [github actions](.github/workflows/actions_build.yml). The project's cmake configuration [options](CMakeLists.txt) allow building bindings to other high level programming languages using [swig](https://www.swig.org/) From 938d63873175fc1c8ee936a542bc74052d54a094 Mon Sep 17 00:00:00 2001 From: Alex Robenko Date: Wed, 26 Jun 2024 08:21:37 +1000 Subject: [PATCH 5/7] Requiring comms (v5.2.5), cc_tools_qt (v5.3.1), commsdsl (v6.3.3). --- .github/workflows/actions_build.yml | 6 +++--- CMakeLists.txt | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/actions_build.yml b/.github/workflows/actions_build.yml index 2137ab3..4a5e041 100644 --- a/.github/workflows/actions_build.yml +++ b/.github/workflows/actions_build.yml @@ -3,9 +3,9 @@ name: Github Actions Build on: [push] env: - COMMS_TAG: v5.2.3 - COMMSDSL_TAG: v6.3.2 - CC_TOOLS_QT_TAG: v5.2.1 + COMMS_TAG: v5.2.5 + COMMSDSL_TAG: v6.3.3 + CC_TOOLS_QT_TAG: v5.3.1 jobs: build_gcc_old_ubuntu_20_04: diff --git a/CMakeLists.txt b/CMakeLists.txt index f2bdf0a..cf5d63f 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -32,7 +32,7 @@ option (MQTTSN_BUILD_EMSCRIPTEN "Build and install project generated by the comm # COMMSDSL2EMSCRIPTEN_EXTRA_ARGS - Extra arguments to pass to "commsdsl2emscripten" set (MQTTSN_VERSION "2.8") -set (MQTTSN_MIN_COMMSDSL_VERSION "6.3.2") +set (MQTTSN_MIN_COMMSDSL_VERSION "6.3.3") set (EXTERNALS_DIR "${PROJECT_SOURCE_DIR}/externals") From 31e52c01c1256eeaf45095389e37ea5818e56c75 Mon Sep 17 00:00:00 2001 From: Alex Robenko Date: Wed, 26 Jun 2024 08:23:35 +1000 Subject: [PATCH 6/7] Mention cc.mqttsn_protocol.cc_tools_plugin project in README. --- README.md | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 0f10692..a5358c7 100644 --- a/README.md +++ b/README.md @@ -12,8 +12,15 @@ project is used to generate C++11 code of the protocol implementation. The [src](src) folder contains additional and/or overriding default functionality code snippets, that get injected into the generated code. -The **generated** CMake project of this protocol definition is hosted and can be -viewed at [cc.mqttsn.generated](https://github.com/commschamp/cc.mqttsn.generated) +The code generators from the [commsdsl](https://github.com/commschamp/commsdsl) +repository generate full CMake projects. +Some of these **generated** projects are hosted as separate +repositories that can be viewed and used independently. + +- [cc.mqttsn.generated](https://github.com/commschamp/cc.mqttsn.generated) - Protocol + definition +- [cc.mqttsn_protocol.cc_tools_plugin](https://github.com/commschamp/cc.mqttsn_protocol.cc_tools_plugin) - + Protocol plugin for the [CommsChampion Tools](https://github.com/commschamp/cc_tools_qt). # License Please read [License](https://github.com/commschamp/commsdsl#license) From 8a69277dd0fbe615251525d1dc22f5f7aa8cc558 Mon Sep 17 00:00:00 2001 From: Alex Robenko Date: Wed, 26 Jun 2024 08:29:40 +1000 Subject: [PATCH 7/7] Disable ccache by default and allow custom ccache executable. --- CMakeLists.txt | 11 ++++++++++- script/full_debug_build.sh | 4 +++- script/prepare_externals.sh | 6 ++++++ 3 files changed, 19 insertions(+), 2 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index cf5d63f..a529cdd 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -2,7 +2,7 @@ cmake_minimum_required (VERSION 3.10) project ("cc.mqttsn.commsdsl") option (MQTTSN_WARN_AS_ERR "Treat compilation warnings as errors." ON) -option (MQTTSN_USE_CCACHE "Use ccache on UNIX." ON) +option (MQTTSN_USE_CCACHE "Use ccache." OFF) option (MQTTSN_GEN_PROTOCOL "Use commsdsl2comms to generate protocol definition" ON) option (MQTTSN_BUILD_PROTOCOL "Build and install protocol definition generated by the commsdsl2comms" ${MQTTSN_GEN_PROTOCOL}) option (MQTTSN_BUILD_PROT_DOC "Build documentation for generated protocol" OFF) @@ -25,6 +25,7 @@ option (MQTTSN_BUILD_EMSCRIPTEN "Build and install project generated by the comm # MQTTSN_SWIG_SRC_DIR - Path to the commsdsl2swig sources. If not provided local "src/swig" dir is used. # MQTTSN_SWIG_LANGUAGES - Languages list to support by swig. If not provided "python java csharp" are chosen # MQTTSN_EMSCRIPTEN_OUTPUT_DIR - Path to emscripten output directory. If not provided /output_emscripten one is used. +# MQTTSN_CCACHE_EXECUTABLE - Custom ccache executable # COMMSDSL2COMMS_EXTRA_ARGS - Extra arguments to pass to "commsdsl2comms" # COMMSDSL2TEST_EXTRA_ARGS - Extra arguments to pass to "commsdsl2test" # COMMSDSL2TOOLS_QT_EXTRA_ARGS - Extra arguments to pass to "commsdsl2tools_qt" @@ -208,6 +209,8 @@ if (MQTTSN_GEN_TEST) -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE} -DCMAKE_EXE_LINKER_FLAGS=${CMAKE_EXE_LINKER_FLAGS} -DCMAKE_INSTALL_PREFIX=${CMAKE_INSTALL_PREFIX} -DCMAKE_PREFIX_PATH=${combined_prefix_path_str} + -DOPT_USE_CCACHE=${MQTTSN_USE_CCACHE} + -DOPT_CCACHE_EXECUTABLE=${MQTTSN_CCACHE_EXECUTABLE} ) endif () endif () @@ -267,6 +270,8 @@ if (MQTTSN_GEN_TOOLS) -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE} -DCMAKE_EXE_LINKER_FLAGS=${CMAKE_EXE_LINKER_FLAGS} -DCMAKE_INSTALL_PREFIX=${CMAKE_INSTALL_PREFIX} -DCMAKE_PREFIX_PATH=${combined_prefix_path_str} -DOPT_QT_MAJOR_VERSION=${MQTTSN_TOOLS_QT_VER} + -DOPT_USE_CCACHE=${MQTTSN_USE_CCACHE} + -DOPT_CCACHE_EXECUTABLE=${MQTTSN_CCACHE_EXECUTABLE} ) endif () endif () @@ -328,6 +333,8 @@ if (MQTTSN_GEN_SWIG) -DCMAKE_INSTALL_PREFIX=${CMAKE_INSTALL_PREFIX} -DCMAKE_PREFIX_PATH=${combined_prefix_path_str} -DOPT_SWIG_LANGUAGES=${combined_languages_str} + -DOPT_USE_CCACHE=${MQTTSN_USE_CCACHE} + -DOPT_CCACHE_EXECUTABLE=${MQTTSN_CCACHE_EXECUTABLE} INSTALL_COMMAND ${CMAKE_COMMAND} -E echo "Skipping install" ) @@ -396,6 +403,8 @@ if (MQTTSN_GEN_EMSCRIPTEN) -DCMAKE_INSTALL_PREFIX=${CMAKE_INSTALL_PREFIX} -DOPT_MODULARIZE=ON -DOPT_EXTRA_INCLUDE_DIRS=${extra_includes_path_str} + -DOPT_USE_CCACHE=${MQTTSN_USE_CCACHE} + -DOPT_CCACHE_EXECUTABLE=${MQTTSN_CCACHE_EXECUTABLE} ) endif () endif () diff --git a/script/full_debug_build.sh b/script/full_debug_build.sh index e8210c3..9e6688a 100755 --- a/script/full_debug_build.sh +++ b/script/full_debug_build.sh @@ -11,6 +11,7 @@ export BUILD_DIR="${ROOT_DIR}/build.full.${CC}" export COMMON_INSTALL_DIR=${BUILD_DIR}/install export COMMON_BUILD_TYPE=Debug export EXTERNALS_DIR=${ROOT_DIR}/externals +export COMMON_USE_CCACHE=ON mkdir -p ${BUILD_DIR} ${SCRIPT_DIR}/prepare_externals.sh @@ -18,7 +19,8 @@ ${SCRIPT_DIR}/prepare_externals.sh cd ${BUILD_DIR} cmake .. -DCMAKE_INSTALL_PREFIX=${COMMON_INSTALL_DIR} \ -DCMAKE_BUILD_TYPE=Debug -DMQTTSN_GEN_TEST=ON -DMQTTSN_BUILD_PROT_DOC=ON \ - -DMQTTSN_GEN_TOOLS=ON -DMQTTSN_GEN_SWIG=ON -DMQTTSN_GEN_EMSCRIPTEN=ON "$@" + -DMQTTSN_GEN_TOOLS=ON -DMQTTSN_GEN_SWIG=ON -DMQTTSN_GEN_EMSCRIPTEN=ON \ + -DMQTTSN_USE_CCACHE=ON "$@" procs=$(nproc) if [ -n "${procs}" ]; then diff --git a/script/prepare_externals.sh b/script/prepare_externals.sh index e07d3af..0ff0bf2 100755 --- a/script/prepare_externals.sh +++ b/script/prepare_externals.sh @@ -19,6 +19,8 @@ # COMMON_CXX_STANDARD - (Optional) CMake C++ standard # COMMON_CMAKE_GENERATOR - (Optional) CMake generator # COMMON_CMAKE_PLATFORM - (Optional) CMake platform +# COMMON_USE_CCACHE - (Optional) Common "use ccache" parameter +# COMMON_CCACHE_EXECUTABLE - (Optional) Common ccache executable ##################################### @@ -141,6 +143,8 @@ function build_commsdsl() { CC=${CC_COMMSDSL} CXX=${CXX_COMMSDSL} cmake \ -S ${COMMSDSL_SRC_DIR} -B ${COMMSDSL_BUILD_DIR} \ -DCMAKE_INSTALL_PREFIX=${COMMSDSL_INSTALL_DIR} -DCMAKE_BUILD_TYPE=${COMMON_BUILD_TYPE} \ + ${COMMON_USE_CCACHE:+"-DCOMMSDSL_USE_CCACHE=${COMMON_USE_CCACHE}"} \ + ${COMMON_CCACHE_EXECUTABLE:+"-DCOMMSDSL_CCACHE_EXECUTABLE=${COMMON_CCACHE_EXECUTABLE}"} \ -DCOMMSDSL_INSTALL_LIBRARY=OFF -DCOMMSDSL_BUILD_COMMSDSL2TEST=ON -DCOMMSDSL_BUILD_COMMSDSL2TOOLS_QT=ON \ -DCOMMSDSL_BUILD_COMMSDSL2SWIG=ON -DCOMMSDSL_BUILD_COMMSDSL2EMSCRIPTEN=ON cmake --build ${COMMSDSL_BUILD_DIR} --config ${COMMON_BUILD_TYPE} --target install ${procs_param} @@ -172,6 +176,8 @@ function build_cc_tools_qt() { cmake \ ${COMMON_CMAKE_GENERATOR:+"-G ${COMMON_CMAKE_GENERATOR}"} ${COMMON_CMAKE_PLATFORM:+"-A ${COMMON_CMAKE_PLATFORM}"} \ -S ${CC_TOOLS_QT_SRC_DIR} -B ${CC_TOOLS_QT_BUILD_DIR} -DCMAKE_INSTALL_PREFIX=${CC_TOOLS_QT_INSTALL_DIR} \ + ${COMMON_USE_CCACHE:+"-DCC_TOOLS_QT_USE_CCACHE=${COMMON_USE_CCACHE}"} \ + ${COMMON_CCACHE_EXECUTABLE:+"-DCC_TOOLS_QT_CCACHE_EXECUTABLE=${COMMON_CCACHE_EXECUTABLE}"} \ -DCMAKE_BUILD_TYPE=${COMMON_BUILD_TYPE} -DCC_TOOLS_QT_BUILD_APPS=OFF -DCMAKE_PREFIX_PATH=${COMMS_INSTALL_DIR} \ -DCMAKE_CXX_STANDARD=${COMMON_CXX_STANDARD} ${CC_TOOLS_QT_VERSION_OPT} cmake --build ${CC_TOOLS_QT_BUILD_DIR} --config ${COMMON_BUILD_TYPE} --target install ${procs_param}