Skip to content

Commit 5a522d2

Browse files
committed
Release v3.0.4
2 parents f08e97b + e6f9c36 commit 5a522d2

File tree

10 files changed

+827
-330
lines changed

10 files changed

+827
-330
lines changed

.github/workflows/actions_build.yml

Lines changed: 92 additions & 112 deletions
Large diffs are not rendered by default.

CMakeLists.txt

Lines changed: 131 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,10 @@ option (MQTTSN_GEN_SWIG "Use commsdsl2swig to generate swig bindings project." O
1414
option (MQTTSN_BUILD_SWIG "Build and install project generated by the commsdsl2swig." ${MQTTSN_GEN_SWIG})
1515
option (MQTTSN_GEN_EMSCRIPTEN "Use commsdsl2emscripten to generate emscripten bindings project." OFF)
1616
option (MQTTSN_BUILD_EMSCRIPTEN "Build and install project generated by the commsdsl2emscripten." ${MQTTSN_GEN_EMSCRIPTEN})
17+
option (MQTTSN_GEN_C "Use commsdsl2c to generate \"C\" wrappers project." OFF)
18+
option (MQTTSN_BUILD_C "Build and install project generated by the commsdsl2c." ${MQTTSN_GEN_C})
19+
option (MQTTSN_GEN_LATEX "Use commsdsl2latex to generate protocol specification." OFF)
20+
option (MQTTSN_BUILD_LATEX "Build and install project generated by the commsdsl2latex." ${MQTTSN_GEN_C})
1721

1822
# Additional variables to be used if needed
1923
# ---------------------------
@@ -26,14 +30,18 @@ option (MQTTSN_BUILD_EMSCRIPTEN "Build and install project generated by the comm
2630
# MQTTSN_SWIG_LANGUAGES - Languages list to support by swig. If not provided "python java csharp" are chosen
2731
# MQTTSN_EMSCRIPTEN_OUTPUT_DIR - Path to emscripten output directory. If not provided <build_dir>/output_emscripten one is used.
2832
# MQTTSN_CCACHE_EXECUTABLE - Custom ccache executable
33+
# MQTTSN_C_OUTPUT_DIR - Path to "c" output directory. If not provided <build_dir>/output_c one is used.
34+
# MQTTSN_LATEX_OUTPUT_DIR - Path to latex output directory. If not provided <build_dir>/output_latex one is used.
2935
# COMMSDSL2COMMS_EXTRA_ARGS - Extra arguments to pass to "commsdsl2comms"
3036
# COMMSDSL2TEST_EXTRA_ARGS - Extra arguments to pass to "commsdsl2test"
3137
# COMMSDSL2TOOLS_QT_EXTRA_ARGS - Extra arguments to pass to "commsdsl2tools_qt"
3238
# COMMSDSL2SWIG_EXTRA_ARGS - Extra arguments to pass to "commsdsl2swig"
3339
# COMMSDSL2EMSCRIPTEN_EXTRA_ARGS - Extra arguments to pass to "commsdsl2emscripten"
40+
# COMMSDSL2C_EXTRA_ARGS - Extra arguments to pass to "commsdsl2c"
41+
# COMMSDSL2LATEX_EXTRA_ARGS - Extra arguments to pass to "commsdsl2latex"
3442

35-
set (MQTTSN_VERSION "3.0.3")
36-
set (MQTTSN_MIN_COMMSDSL_VERSION "7.1")
43+
set (MQTTSN_VERSION "3.0.4")
44+
set (MQTTSN_MIN_COMMSDSL_VERSION "7.3")
3745

3846
if ("${CMAKE_CXX_STANDARD}" STREQUAL "")
3947
set(CMAKE_CXX_STANDARD 17)
@@ -73,6 +81,14 @@ if ("${MQTTSN_EMSCRIPTEN_OUTPUT_DIR}" STREQUAL "")
7381
set (MQTTSN_EMSCRIPTEN_OUTPUT_DIR "${CMAKE_BINARY_DIR}/output_emscripten")
7482
endif ()
7583

84+
if ("${MQTTSN_C_OUTPUT_DIR}" STREQUAL "")
85+
set (MQTTSN_C_OUTPUT_DIR "${CMAKE_BINARY_DIR}/output_c")
86+
endif ()
87+
88+
if ("${MQTTSN_LATEX_OUTPUT_DIR}" STREQUAL "")
89+
set (MQTTSN_LATEX_OUTPUT_DIR "${CMAKE_BINARY_DIR}/output_latex")
90+
endif ()
91+
7692
if ("${MQTTSN_TOOLS_QT_VER}" STREQUAL "")
7793
set (MQTTSN_TOOLS_QT_VER 5)
7894
endif ()
@@ -155,7 +171,7 @@ if (MQTTSN_GEN_TEST)
155171

156172
add_custom_target("test_output_tgt" ALL
157173
COMMAND ${CMAKE_COMMAND} -E remove_directory ${test_tmp_dir}
158-
COMMAND ${COMMSDSL2TEST} ${warn_as_error} ${COMMSDSL2TEST_EXTRA_ARGS}
174+
COMMAND ${COMMSDSL2TEST} ${warn_as_error} -V ${MQTTSN_VERSION} ${COMMSDSL2TEST_EXTRA_ARGS}
159175
-o ${test_tmp_dir} -c ${PROJECT_SOURCE_DIR}/src/test ${schema_file}
160176
COMMAND ${CMAKE_COMMAND}
161177
-DGENERATED="${test_tmp_dir}" -DOUTPUT="${MQTTSN_TEST_OUTPUT_DIR}"
@@ -207,7 +223,7 @@ if (MQTTSN_GEN_TOOLS)
207223

208224
add_custom_target("tools_output_tgt" ALL
209225
COMMAND ${CMAKE_COMMAND} -E remove_directory ${tools_tmp_dir}
210-
COMMAND ${COMMSDSL2TOOLS_QT} ${warn_as_error} ${COMMSDSL2TOOLS_QT_EXTRA_ARGS}
226+
COMMAND ${COMMSDSL2TOOLS_QT} ${warn_as_error} -V ${MQTTSN_VERSION} ${COMMSDSL2TOOLS_QT_EXTRA_ARGS}
211227
--protocol "::CC MQTT-SN:MQTT-SN protocol.:cc.MqttSnProtocolPlugin"
212228
-o ${tools_tmp_dir} -c ${PROJECT_SOURCE_DIR}/src/tools ${schema_file}
213229
COMMAND ${CMAKE_COMMAND}
@@ -260,7 +276,7 @@ if (MQTTSN_GEN_SWIG)
260276

261277
add_custom_target("swig_output_tgt" ALL
262278
COMMAND ${CMAKE_COMMAND} -E remove_directory ${swig_tmp_dir}
263-
COMMAND ${COMMSDSL2SWIG} ${warn_as_error} ${COMMSDSL2SWIG_EXTRA_ARGS}
279+
COMMAND ${COMMSDSL2SWIG} ${warn_as_error} -V ${MQTTSN_VERSION} ${COMMSDSL2SWIG_EXTRA_ARGS}
264280
-c ${MQTTSN_SWIG_SRC_DIR} -o ${swig_tmp_dir} ${schema_file}
265281
COMMAND ${CMAKE_COMMAND}
266282
-DGENERATED="${swig_tmp_dir}" -DOUTPUT="${MQTTSN_SWIG_OUTPUT_DIR}"
@@ -318,7 +334,7 @@ if (MQTTSN_GEN_EMSCRIPTEN)
318334

319335
add_custom_target("emscripten_output_tgt" ALL
320336
COMMAND ${CMAKE_COMMAND} -E remove_directory ${emscripten_tmp_dir}
321-
COMMAND ${COMMSDSL2EMSCRIPTEN} ${warn_as_error} ${COMMSDSL2EMSCRIPTEN_EXTRA_ARGS}
337+
COMMAND ${COMMSDSL2EMSCRIPTEN} ${warn_as_error} -V ${MQTTSN_VERSION} ${COMMSDSL2EMSCRIPTEN_EXTRA_ARGS}
322338
-o ${emscripten_tmp_dir} -c ${PROJECT_SOURCE_DIR}/src/emscripten ${schema_file}
323339
COMMAND ${CMAKE_COMMAND}
324340
-DGENERATED="${emscripten_tmp_dir}" -DOUTPUT="${MQTTSN_EMSCRIPTEN_OUTPUT_DIR}"
@@ -366,3 +382,112 @@ if (MQTTSN_GEN_EMSCRIPTEN)
366382
endif ()
367383
endif ()
368384

385+
if (MQTTSN_GEN_C)
386+
find_program(COMMSDSL2C commsdsl2c PATH_SUFFIXES bin REQUIRED)
387+
execute_process(COMMAND "${COMMSDSL2C}" --version OUTPUT_VARIABLE commsdsl2c_version)
388+
if ("${commsdsl2c_version}" VERSION_LESS "${MQTTSN_MIN_COMMSDSL_VERSION}")
389+
message (FATAL_ERROR "Version of commsdsl2c is too old, required minimum is v${MQTTSN_MIN_COMMSDSL_VERSION}.")
390+
endif ()
391+
392+
set (c_tmp_dir "${CMAKE_BINARY_DIR}/output_c.tmp")
393+
394+
add_custom_target("c_output_tgt" ALL
395+
COMMAND ${CMAKE_COMMAND} -E remove_directory ${c_tmp_dir}
396+
COMMAND ${COMMSDSL2C} ${warn_as_error} -V ${MQTTSN_VERSION} ${COMMSDSL2C_EXTRA_ARGS}
397+
-o ${c_tmp_dir} -c ${PROJECT_SOURCE_DIR}/src/c ${schema_file}
398+
COMMAND ${CMAKE_COMMAND}
399+
-DGENERATED="${c_tmp_dir}" -DOUTPUT="${MQTTSN_C_OUTPUT_DIR}"
400+
-P "${CMAKE_CURRENT_LIST_DIR}/CopyGenerated.cmake"
401+
DEPENDS "${CMAKE_CURRENT_LIST_DIR}/CopyGenerated.cmake" ${schema_file})
402+
403+
if (MQTTSN_BUILD_C)
404+
if ((NOT MQTTSN_GEN_PROTOCOL) OR (NOT MQTTSN_BUILD_PROTOCOL))
405+
message (FATAL_ERROR "MQTTSN_GEN_PROTOCOL and MQTTSN_BUILD_PROTOCOL are required for MQTTSN_BUILD_C")
406+
endif ()
407+
408+
execute_process(
409+
COMMAND ${CMAKE_COMMAND} -E make_directory ${MQTTSN_C_OUTPUT_DIR}
410+
)
411+
412+
execute_process(
413+
COMMAND ${CMAKE_COMMAND} -E touch ${MQTTSN_C_OUTPUT_DIR}/dummy.txt
414+
)
415+
416+
set (c_build_dir ${CMAKE_CURRENT_BINARY_DIR}/c_tgt_build)
417+
ExternalProject_Add(
418+
"c_tgt"
419+
BUILD_ALWAYS TRUE
420+
DEPENDS "prot_tgt" "c_output_tgt"
421+
SOURCE_DIR ${MQTTSN_C_OUTPUT_DIR}
422+
BINARY_DIR ${c_build_dir}
423+
LIST_SEPARATOR |
424+
CMAKE_ARGS
425+
-DCMAKE_C_COMPILER=${CMAKE_C_COMPILER} -DCMAKE_CXX_COMPILER=${CMAKE_CXX_COMPILER}
426+
-DCMAKE_GENERATOR=${CMAKE_GENERATOR} -DCMAKE_GENERATOR_PLATFORM=${CMAKE_GENERATOR_PLATFORM}
427+
-DCMAKE_GENERATOR_TOOLSET=${CMAKE_GENERATOR_TOOLSET} -DCMAKE_TOOLCHAIN_FILE=${CMAKE_TOOLCHAIN_FILE}
428+
-DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE} -DCMAKE_EXE_LINKER_FLAGS=${CMAKE_EXE_LINKER_FLAGS}
429+
-DCMAKE_INSTALL_PREFIX=${CMAKE_INSTALL_PREFIX} -DCMAKE_PREFIX_PATH=${combined_prefix_path_str}
430+
-DCMAKE_CXX_STANDARD=${CMAKE_CXX_STANDARD}
431+
-DOPT_USE_CCACHE=${MQTTSN_USE_CCACHE}
432+
-DOPT_CCACHE_EXECUTABLE=${MQTTSN_CCACHE_EXECUTABLE}
433+
)
434+
435+
find_package(Doxygen)
436+
if (MQTTSN_BUILD_PROT_DOC AND DOXYGEN_FOUND)
437+
ExternalProject_Add_Step(
438+
"c_tgt"
439+
"doc"
440+
COMMAND ${CMAKE_COMMAND} --build ${c_build_dir} --target doc_cc_mqttsn_c
441+
DEPENDEES "build"
442+
DEPENDERS "install"
443+
)
444+
endif ()
445+
endif ()
446+
endif ()
447+
448+
if (MQTTSN_GEN_LATEX)
449+
find_program(COMMSDSL2LATEX commsdsl2latex PATH_SUFFIXES bin REQUIRED)
450+
execute_process(COMMAND "${COMMSDSL2LATEX}" --version OUTPUT_VARIABLE commsdsl2latex_version)
451+
if ("${commsdsl2latex_version}" VERSION_LESS "${MQTTSN_MIN_COMMSDSL_VERSION}")
452+
message (FATAL_ERROR "Version of commsdsl2latex is too old, required minimum is v${MQTTSN_MIN_COMMSDSL_VERSION}.")
453+
endif ()
454+
455+
set (latex_tmp_dir "${CMAKE_BINARY_DIR}/output_latex.tmp")
456+
457+
add_custom_target("latext_output_tgt" ALL
458+
COMMAND ${CMAKE_COMMAND} -E remove_directory ${latex_tmp_dir}
459+
COMMAND ${COMMSDSL2LATEX} ${warn_as_error} ${COMMSDSL2LATEX_EXTRA_ARGS}
460+
-o ${latex_tmp_dir} -c ${PROJECT_SOURCE_DIR}/src/latex ${schema_file}
461+
COMMAND ${CMAKE_COMMAND}
462+
-DGENERATED="${latex_tmp_dir}" -DOUTPUT="${MQTTSN_LATEX_OUTPUT_DIR}"
463+
-P "${CMAKE_CURRENT_LIST_DIR}/CopyGenerated.cmake"
464+
DEPENDS "${CMAKE_CURRENT_LIST_DIR}/CopyGenerated.cmake" ${schema_file})
465+
466+
if (MQTTSN_BUILD_LATEX)
467+
execute_process(
468+
COMMAND ${CMAKE_COMMAND} -E make_directory ${MQTTSN_LATEX_OUTPUT_DIR}
469+
)
470+
471+
execute_process(
472+
COMMAND ${CMAKE_COMMAND} -E touch ${MQTTSN_LATEX_OUTPUT_DIR}/dummy.txt
473+
)
474+
475+
set (latex_build_dir ${CMAKE_CURRENT_BINARY_DIR}/latex_tgt_build)
476+
ExternalProject_Add(
477+
"latex_tgt"
478+
BUILD_ALWAYS TRUE
479+
DEPENDS "latext_output_tgt"
480+
SOURCE_DIR ${MQTTSN_LATEX_OUTPUT_DIR}
481+
BINARY_DIR ${latex_build_dir}
482+
LIST_SEPARATOR |
483+
CMAKE_ARGS
484+
-DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE}
485+
-DCMAKE_INSTALL_PREFIX=${CMAKE_INSTALL_PREFIX} -DCMAKE_PREFIX_PATH=${combined_prefix_path_str}
486+
BUILD_COMMAND
487+
${CMAKE_COMMAND} --build ${latex_build_dir} --config ${CMAKE_BUILD_TYPE} --target all_artifacts
488+
INSTALL_COMMAND
489+
${CMAKE_COMMAND} -E echo "No install for documentation build"
490+
)
491+
endif ()
492+
endif ()
493+

0 commit comments

Comments
 (0)