Skip to content

Commit

Permalink
Multiple updates:
Browse files Browse the repository at this point in the history
- Updated next version to be v2.6.
- Updated min commsdsl version to be v6.3
- Supporting qt version selection during build.
- Added README injection to all the generated projects.
- Using C++17 to compile tools plugin.
- Fixes to prepare_externals scripts.
- Added license files to the generated projects.
- Added plugin configuration for the project generated by the commsdsl2tools_qt.
  • Loading branch information
arobenko committed Feb 26, 2024
1 parent c1c6481 commit fec9e94
Show file tree
Hide file tree
Showing 22 changed files with 2,024 additions and 113 deletions.
30 changes: 22 additions & 8 deletions .appveyor.yml
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
image:
- Visual Studio 2022
- Visual Studio 2019
- Visual Studio 2017


init:
Expand All @@ -19,20 +18,28 @@ configuration:
- Release

environment:
COMMS_BRANCH: v5.2.1
COMMSDSL_BRANCH: v6.2.4
CC_TOOLS_QT_BRANCH: v4.2.3
COMMS_BRANCH: v5.2.2
COMMSDSL_BRANCH: develop
CC_TOOLS_QT_BRANCH: develop
matrix:
- CPP_STD: 11
QT_MAJOR: 5
EXTRA_CONFIG: -DMQTT5_BUILD_TOOLS=OFF
- CPP_STD: 14
QT_MAJOR: 5
EXTRA_CONFIG: -DMQTT5_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:
- image: Visual Studio 2017
CPP_STD: 20
- platform: x86
QT_MAJOR: 6

install:
- call script\appveyor_install.bat
Expand All @@ -45,13 +52,20 @@ install:
- 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 "NMake Makefiles" -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% -DMQTT5_GEN_PROTOCOL=ON -DMQTT5_GEN_TEST=ON -DMQTT5_GEN_TOOLS=ON
- cmake --build . --config %CONFIGURATION%
- 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% ^
-DMQTT5_GEN_PROTOCOL=ON -DMQTT5_GEN_TEST=ON -DMQTT5_GEN_TOOLS=ON -DMQTT5_TOOLS_QT_VER=%QT_MAJOR% ^
%EXTRA_CONFIG%
- cmake --build . --config %CONFIGURATION% --parallel %NUMBER_OF_PROCESSORS%



42 changes: 27 additions & 15 deletions .github/workflows/actions_build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -3,9 +3,9 @@ name: Github Actions Build
on: [push]

env:
COMMS_BRANCH: v5.2.1
COMMSDSL_BRANCH: v6.2.4
CC_TOOLS_QT_BRANCH: v4.2.3
COMMS_BRANCH: v5.2.2
COMMSDSL_BRANCH: develop
CC_TOOLS_QT_BRANCH: develop

jobs:
build_gcc_old_ubuntu_20_04:
Expand All @@ -29,7 +29,7 @@ jobs:
run: sudo apt-get update --fix-missing

- name: Install Packages
run: sudo apt install libqt5gui5 qtbase5-dev libxml2-dev gcc-${{matrix.cc_ver}} g++-${{matrix.cc_ver}} gcc-8 g++-8
run: sudo apt install libqt5gui5 qtbase5-dev libboost-all-dev libxml2-dev gcc-${{matrix.cc_ver}} g++-${{matrix.cc_ver}} gcc-8 g++-8

- name: Create Build Environment
run: cmake -E make_directory ${{runner.workspace}}/build
Expand Down Expand Up @@ -96,7 +96,7 @@ jobs:
run: sudo apt-get update --fix-missing

- name: Install Packages
run: sudo apt install libqt5gui5 qtbase5-dev libxml2-dev gcc-${{matrix.cc_ver}} g++-${{matrix.cc_ver}} gcc-8 g++-8
run: sudo apt install libqt5gui5 qtbase5-dev libboost-all-dev libxml2-dev gcc-${{matrix.cc_ver}} g++-${{matrix.cc_ver}} gcc-8 g++-8

- name: Create Build Environment
run: cmake -E make_directory ${{runner.workspace}}/build
Expand Down Expand Up @@ -124,10 +124,11 @@ jobs:
run: |
cmake $GITHUB_WORKSPACE -DCMAKE_BUILD_TYPE=${{matrix.type}} -DCMAKE_INSTALL_PREFIX=install \
-DCMAKE_PREFIX_PATH=${{runner.workspace}}/build/install -DCMAKE_CXX_STANDARD=${{matrix.cpp}} \
-DMQTT5_GEN_PROTOCOL=ON -DMQTT5_GEN_TEST=ON -DMQTT5_GEN_TOOLS=ON
-DMQTT5_GEN_PROTOCOL=ON -DMQTT5_GEN_TEST=ON -DMQTT5_GEN_TOOLS=ON -DMQTT5_BUILD_TOOLS=${{env.BUILD_TOOLS}}
env:
CC: gcc-${{matrix.cc_ver}}
CXX: g++-${{matrix.cc_ver}}
BUILD_TOOLS: "${{ matrix.cpp >= 17 && 'ON' || 'OFF' }}"

- name: Build Target
working-directory: ${{runner.workspace}}/build
Expand All @@ -144,6 +145,7 @@ jobs:
type: [Debug, Release, MinSizeRel]
cc_ver: [9, 10, 11, 12]
cpp: [11, 14, 17, 20]
qt_ver: [5, 6]

steps:
- uses: actions/checkout@v2
Expand All @@ -153,7 +155,7 @@ jobs:

- name: Install Packages
run: |
sudo apt install libqt5gui5 qtbase5-dev libxml2-dev gcc-${{matrix.cc_ver}} g++-${{matrix.cc_ver}} \
sudo apt install libqt${{matrix.qt_ver}}gui${{matrix.qt_ver}} qtbase5-dev qt6-base-dev libboost-all-dev libxml2-dev gcc-${{matrix.cc_ver}} g++-${{matrix.cc_ver}} \
python3 libpython3-dev swig default-jdk default-jre emscripten
- name: Create Build Environment
Expand All @@ -173,18 +175,20 @@ jobs:
COMMS_TAG: ${{env.COMMS_BRANCH}}
COMMSDSL_TAG: ${{env.COMMSDSL_BRANCH}}
CC_TOOLS_QT_TAG: ${{env.CC_TOOLS_QT_BRANCH}}
CC_TOOLS_QT_MAJOR_QT_VERSION: ${{matrix.qt_ver}}

- name: Configure CMake
shell: bash
working-directory: ${{runner.workspace}}/build
run: |
cmake $GITHUB_WORKSPACE -DCMAKE_BUILD_TYPE=${{matrix.type}} -DCMAKE_INSTALL_PREFIX=install \
-DCMAKE_PREFIX_PATH=${{runner.workspace}}/build/install -DCMAKE_CXX_STANDARD=${{matrix.cpp}} \
-DMQTT5_GEN_PROTOCOL=ON -DMQTT5_GEN_TEST=ON -DMQTT5_GEN_TOOLS=ON \
-DMQTT5_GEN_PROTOCOL=ON -DMQTT5_GEN_TEST=ON -DMQTT5_GEN_TOOLS=ON -DMQTT5_BUILD_TOOLS=${{env.BUILD_TOOLS}} \
-DMQTT5_GEN_SWIG=ON -DMQTT5_GEN_EMSCRIPTEN=ON
env:
CC: gcc-${{matrix.cc_ver}}
CXX: g++-${{matrix.cc_ver}}
BUILD_TOOLS: "${{ matrix.cpp >= 17 && 'ON' || 'OFF' }}"

- name: Build Target
working-directory: ${{runner.workspace}}/build
Expand Down Expand Up @@ -218,7 +222,7 @@ jobs:
run: sudo apt-get update --fix-missing

- name: Install Packages
run: sudo apt install libqt5gui5 qtbase5-dev libxml2-dev clang-${{matrix.cc_ver}} clang-6.0
run: sudo apt install libqt5gui5 qtbase5-dev libboost-all-dev libxml2-dev clang-${{matrix.cc_ver}} clang-6.0


- name: Create Build Environment
Expand Down Expand Up @@ -247,10 +251,12 @@ jobs:
run: |
cmake $GITHUB_WORKSPACE -DCMAKE_BUILD_TYPE=${{matrix.type}} -DCMAKE_INSTALL_PREFIX=install \
-DCMAKE_EXE_LINKER_FLAGS=-fuse-ld=gold -DCMAKE_PREFIX_PATH=${{runner.workspace}}/build/install \
-DCMAKE_CXX_STANDARD=${{matrix.cpp}} -DMQTT5_GEN_PROTOCOL=ON -DMQTT5_GEN_TEST=ON -DMQTT5_GEN_TOOLS=ON
-DCMAKE_CXX_STANDARD=${{matrix.cpp}} -DMQTT5_GEN_PROTOCOL=ON -DMQTT5_GEN_TEST=ON \
-DMQTT5_GEN_TOOLS=ON -DMQTT5_BUILD_TOOLS=${{env.BUILD_TOOLS}}
env:
CC: clang-${{matrix.cc_ver}}
CXX: clang++-${{matrix.cc_ver}}
BUILD_TOOLS: "${{ matrix.cpp >= 17 && 'ON' || 'OFF' }}"

- name: Build Target
working-directory: ${{runner.workspace}}/build
Expand Down Expand Up @@ -280,7 +286,7 @@ jobs:
run: sudo apt-get update --fix-missing

- name: Install Packages
run: sudo apt install libqt5gui5 qtbase5-dev libxml2-dev clang-${{matrix.cc_ver}}
run: sudo apt install libqt5gui5 qtbase5-dev libboost-all-dev libxml2-dev clang-${{matrix.cc_ver}}

- name: Create Build Environment
run: cmake -E make_directory ${{runner.workspace}}/build
Expand All @@ -299,17 +305,19 @@ jobs:
COMMS_TAG: ${{env.COMMS_BRANCH}}
COMMSDSL_TAG: ${{env.COMMSDSL_BRANCH}}
CC_TOOLS_QT_TAG: ${{env.CC_TOOLS_QT_BRANCH}}
CC_TOOLS_QT_SKIP: "${{ matrix.cpp < 17 && '1' || '0' }}"

- name: Configure CMake
shell: bash
working-directory: ${{runner.workspace}}/build
run: |
cmake $GITHUB_WORKSPACE -DCMAKE_BUILD_TYPE=${{matrix.type}} -DCMAKE_INSTALL_PREFIX=install \
-DCMAKE_PREFIX_PATH=${{runner.workspace}}/build/install -DCMAKE_CXX_STANDARD=${{matrix.cpp}} \
-DMQTT5_GEN_PROTOCOL=ON -DMQTT5_GEN_TEST=ON -DMQTT5_GEN_TOOLS=ON
-DMQTT5_GEN_PROTOCOL=ON -DMQTT5_GEN_TEST=ON -DMQTT5_GEN_TOOLS=ON -DMQTT5_BUILD_TOOLS=${{env.BUILD_TOOLS}}
env:
CC: clang-${{matrix.cc_ver}}
CXX: clang++-${{matrix.cc_ver}}
BUILD_TOOLS: "${{ matrix.cpp == 17 && 'ON' || 'OFF' }}"

- name: Build Target
working-directory: ${{runner.workspace}}/build
Expand All @@ -324,8 +332,9 @@ jobs:
fail-fast: false
matrix:
type: [Debug, Release, MinSizeRel]
cc_ver: [12, 13, 14]
cc_ver: [12, 13, 14, 15]
cpp: [11, 14, 17, 20]
qt_ver: [5, 6]

steps:
- uses: actions/checkout@v2
Expand All @@ -335,7 +344,7 @@ jobs:

- name: Install Packages
run: |
sudo apt install libqt5gui5 qtbase5-dev libxml2-dev clang-${{matrix.cc_ver}} \
sudo apt install libqt${{matrix.qt_ver}}gui${{matrix.qt_ver}} qtbase5-dev qt6-base-dev libboost-all-dev libxml2-dev clang-${{matrix.cc_ver}} \
python3 libpython3-dev swig default-jdk default-jre emscripten
- name: Create Build Environment
Expand All @@ -355,18 +364,21 @@ jobs:
COMMS_TAG: ${{env.COMMS_BRANCH}}
COMMSDSL_TAG: ${{env.COMMSDSL_BRANCH}}
CC_TOOLS_QT_TAG: ${{env.CC_TOOLS_QT_BRANCH}}
CC_TOOLS_QT_MAJOR_QT_VERSION: ${{matrix.qt_ver}}
CC_TOOLS_QT_SKIP: "${{ (matrix.cpp < 17 || (matrix.cpp == 20 && matrix.cc_ver < 15)) && '1' || '0' }}"

- name: Configure CMake
shell: bash
working-directory: ${{runner.workspace}}/build
run: |
cmake $GITHUB_WORKSPACE -DCMAKE_BUILD_TYPE=${{matrix.type}} -DCMAKE_INSTALL_PREFIX=install \
-DCMAKE_PREFIX_PATH=${{runner.workspace}}/build/install -DCMAKE_CXX_STANDARD=${{matrix.cpp}} \
-DMQTT5_GEN_PROTOCOL=ON -DMQTT5_GEN_TEST=ON -DMQTT5_GEN_TOOLS=ON \
-DMQTT5_GEN_PROTOCOL=ON -DMQTT5_GEN_TEST=ON -DMQTT5_GEN_TOOLS=ON -DMQTT5_BUILD_TOOLS=${{env.BUILD_TOOLS}} \
-DMQTT5_GEN_SWIG=ON -DMQTT5_GEN_EMSCRIPTEN=ON
env:
CC: clang-${{matrix.cc_ver}}
CXX: clang++-${{matrix.cc_ver}}
BUILD_TOOLS: "${{ (matrix.cpp < 17 || (matrix.cpp == 20 && matrix.cc_ver < 15)) && 'OFF' || 'ON' }}"

- name: Build Target
working-directory: ${{runner.workspace}}/build
Expand Down
42 changes: 18 additions & 24 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -20,8 +20,9 @@ option (MQTT5_BUILD_EMSCRIPTEN "Build and install project generated by the comms
# MQTT5_PROT_OUTPUT_DIR - Path to protocol output directory. If not provided <build_dir>/output one is used.
# MQTT5_TEST_OUTPUT_DIR - Path to test output directory. If not provided <build_dir>/output_tools one is used.
# MQTT5_TOOLS_OUTPUT_DIR - Path to tools output directory. If not provided <build_dir>/output_tools one is used.
# MQTT5_TOOLS_QT_VER - Major Qt version to be used when building tools output. Defaults to 5
# MQTT5_SWIG_OUTPUT_DIR - Path to swig output directory. If not provided <build_dir>/output_swig one is used.
# MQTT5_SWIG_SRC_DIR - Path to the commsdsl2swig sources. If not provided local "swig_src" dir is used.
# MQTT5_SWIG_SRC_DIR - Path to the commsdsl2swig sources. If not provided local "src/swig" dir is used.
# MQTT5_SWIG_LANGUAGES - Languages list to support by swig. If not provided "python java csharp" are chosen
# MQTT5_EMSCRIPTEN_OUTPUT_DIR - Path to emscripten output directory. If not provided <build_dir>/output_emscripten one is used.
# COMMSDSL2COMMS_EXTRA_ARGS - Extra arguments to pass to "commsdsl2comms"
Expand All @@ -30,8 +31,8 @@ option (MQTT5_BUILD_EMSCRIPTEN "Build and install project generated by the comms
# COMMSDSL2SWIG_EXTRA_ARGS - Extra arguments to pass to "commsdsl2swig"
# COMMSDSL2EMSCRIPTEN_EXTRA_ARGS - Extra arguments to pass to "commsdsl2emscripten"

set (MQTT5_VERSION "2.5.1")
set (MQTT5_MIN_COMMSDSL_VERSION "6.2.4")
set (MQTT5_VERSION "2.6")
set (MQTT5_MIN_COMMSDSL_VERSION "6.3")

set (EXTERNALS_DIR "${PROJECT_SOURCE_DIR}/externals")

Expand All @@ -56,7 +57,7 @@ if ("${MQTT5_SWIG_OUTPUT_DIR}" STREQUAL "")
endif ()

if ("${MQTT5_SWIG_SRC_DIR}" STREQUAL "")
set (MQTT5_SWIG_SRC_DIR ${CMAKE_CURRENT_SOURCE_DIR}/swig_src)
set (MQTT5_SWIG_SRC_DIR ${CMAKE_CURRENT_SOURCE_DIR}/src/swig)
endif ()

if ("${MQTT5_SWIG_LANGUAGES}" STREQUAL "")
Expand All @@ -67,6 +68,10 @@ if ("${MQTT5_EMSCRIPTEN_OUTPUT_DIR}" STREQUAL "")
set (MQTT5_EMSCRIPTEN_OUTPUT_DIR "${CMAKE_BINARY_DIR}/output_emscripten")
endif ()

if ("${MQTT5_TOOLS_QT_VER}" STREQUAL "")
set (MQTT5_TOOLS_QT_VER 5)
endif ()

set (warn_as_error "--warn-as-err")
if (NOT MQTT5_WARN_AS_ERR)
set (warn_as_error)
Expand All @@ -86,31 +91,19 @@ if (MQTT5_GEN_PROTOCOL)
COMMAND ${CMAKE_COMMAND} -E remove_directory ${prot_tmp_dir}
)

set (code_input_param)
if (EXISTS ${PROJECT_SOURCE_DIR}/src)
set (code_input_param -c ${PROJECT_SOURCE_DIR}/src)
endif ()

add_custom_command(
OUTPUT ${prot_tmp_dir}
DEPENDS ${schema_file} ${src_files} rm_prot_tmp_tgt
COMMAND ${COMMSDSL2COMMS} ${warn_as_error} -V ${MQTT5_VERSION} ${code_input_param}
-o ${prot_tmp_dir}
COMMAND ${COMMSDSL2COMMS} ${warn_as_error} -V ${MQTT5_VERSION}
-o ${prot_tmp_dir} -c ${PROJECT_SOURCE_DIR}/src/protocol
${COMMSDSL2COMMS_EXTRA_ARGS} ${schema_file}
)

set (readme_file "${prot_tmp_dir}/README.md")
add_custom_command(
OUTPUT ${readme_file}
DEPENDS ${prot_tmp_dir}
COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_SOURCE_DIR}/readme.generated ${readme_file}
)

add_custom_target(${PROT_OUTPUT_TGT} ALL
COMMAND ${CMAKE_COMMAND}
-DGENERATED="${prot_tmp_dir}" -DOUTPUT="${MQTT5_PROT_OUTPUT_DIR}"
-P "${CMAKE_CURRENT_LIST_DIR}/CopyGenerated.cmake"
DEPENDS ${prot_tmp_dir} ${readme_file} "${CMAKE_CURRENT_LIST_DIR}/CopyGenerated.cmake" ${schema_file})
DEPENDS ${prot_tmp_dir} "${CMAKE_CURRENT_LIST_DIR}/CopyGenerated.cmake" ${schema_file})

if (MQTT5_BUILD_PROTOCOL)
execute_process(
Expand Down Expand Up @@ -171,7 +164,7 @@ if (MQTT5_GEN_TEST)
OUTPUT ${test_tmp_dir}
DEPENDS ${schema_file} ${src_files} rm_test_tmp_tgt
COMMAND ${COMMSDSL2TEST} ${warn_as_error} ${COMMSDSL2TEST_EXTRA_ARGS}
-o ${test_tmp_dir} ${schema_file}
-o ${test_tmp_dir} -c ${PROJECT_SOURCE_DIR}/src/test ${schema_file}
)

add_custom_target("test_output_tgt" ALL
Expand Down Expand Up @@ -229,7 +222,8 @@ if (MQTT5_GEN_TOOLS)
OUTPUT ${tools_tmp_dir}
DEPENDS ${schema_file} ${src_files} rm_tools_tmp_tgt
COMMAND ${COMMSDSL2TOOLS_QT} ${warn_as_error} ${COMMSDSL2TOOLS_QT_EXTRA_ARGS}
-o ${tools_tmp_dir} ${schema_file}
--protocol "::CC MQTT v5:MQTT v5 protocol.:cc.Mqtt5ProtocolPlugin"
-o ${tools_tmp_dir} -c ${PROJECT_SOURCE_DIR}/src/tools ${schema_file}
)

add_custom_target("tools_output_tgt" ALL
Expand Down Expand Up @@ -264,8 +258,8 @@ if (MQTT5_GEN_TOOLS)
-DCMAKE_GENERATOR=${CMAKE_GENERATOR} -DCMAKE_GENERATOR_PLATFORM=${CMAKE_GENERATOR_PLATFORM}
-DCMAKE_GENERATOR_TOOLSET=${CMAKE_GENERATOR_TOOLSET} -DCMAKE_TOOLCHAIN_FILE=${CMAKE_TOOLCHAIN_FILE}
-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}
-DCMAKE_INSTALL_PREFIX=${CMAKE_INSTALL_PREFIX} -DCMAKE_PREFIX_PATH=${combined_prefix_path_str}
-DOPT_QT_MAJOR_VERSION=${MQTT5_TOOLS_QT_VER}
)
endif ()
endif ()
Expand Down Expand Up @@ -351,7 +345,7 @@ if (MQTT5_GEN_EMSCRIPTEN)
OUTPUT ${emscripten_tmp_dir}
DEPENDS ${schema_file} ${src_files} rm_emscripten_tmp_tgt
COMMAND ${COMMSDSL2EMSCRIPTEN} ${warn_as_error} ${COMMSDSL2EMSCRIPTEN_EXTRA_ARGS}
-o ${emscripten_tmp_dir} ${schema_file}
-o ${emscripten_tmp_dir} -c ${PROJECT_SOURCE_DIR}/src/emscripten ${schema_file}
)

add_custom_target("emscripten_output_tgt" ALL
Expand Down
14 changes: 0 additions & 14 deletions readme.generated

This file was deleted.

Loading

0 comments on commit fec9e94

Please sign in to comment.