Skip to content

Commit d4d6013

Browse files
committed
Release v3.0.4
2 parents c8de9cf + 0bbf590 commit d4d6013

87 files changed

Lines changed: 972 additions & 483 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.github/workflows/actions_build.yml

Lines changed: 97 additions & 115 deletions
Large diffs are not rendered by default.

CMakeLists.txt

Lines changed: 138 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -14,27 +14,35 @@ option (UBLOX_GEN_SWIG "Use commsdsl2swig to generate swig bindings project." OF
1414
option (UBLOX_BUILD_SWIG "Build and install project generated by the commsdsl2swig." ${UBLOX_GEN_SWIG})
1515
option (UBLOX_GEN_EMSCRIPTEN "Use commsdsl2emscripten to generate emscripten bindings project." OFF)
1616
option (UBLOX_BUILD_EMSCRIPTEN "Build and install project generated by the commsdsl2emscripten." ${UBLOX_GEN_EMSCRIPTEN})
17+
option (UBLOX_GEN_C "Use commsdsl2c to generate \"C\" wrappers project." OFF)
18+
option (UBLOX_BUILD_C "Build and install project generated by the commsdsl2c." ${UBLOX_GEN_C})
19+
option (UBLOX_GEN_LATEX "Use commsdsl2latex to generate protocol specification." OFF)
20+
option (UBLOX_BUILD_LATEX "Build and install project generated by the commsdsl2latex." ${UBLOX_GEN_C})
1721
option (UBLOX_BUILD_EXAMPLES "Build examples." OFF)
1822

1923
# Additional variables to be used if needed
2024
# ---------------------------
2125
# UBLOX_PROT_OUTPUT_DIR - Path to protocol output directory. If not provided <build_dir>/output one is used.
22-
# UBLOX_TEST_OUTPUT_DIR - Path to test output directory. If not provided <build_dir>/output_tools one is used.
26+
# UBLOX_TEST_OUTPUT_DIR - Path to test output directory. If not provided <build_dir>/output_test one is used.
2327
# UBLOX_TOOLS_OUTPUT_DIR - Path to tools output directory. If not provided <build_dir>/output_tools one is used.
2428
# UBLOX_TOOLS_QT_VER - Major Qt version to be used when building tools output. Defaults to 5
2529
# UBLOX_SWIG_OUTPUT_DIR - Path to swig output directory. If not provided <build_dir>/output_swig one is used.
2630
# UBLOX_SWIG_SRC_DIR - Path to the commsdsl2swig sources. If not provided local "src/swig" dir is used.
2731
# UBLOX_SCHEMA_FILES_LIST_FILE - Path to the file containing list of DSL files, use it to replace "schema_files" list below.
2832
# UBLOX_EMSCRIPTEN_OUTPUT_DIR - Path to emscripten output directory. If not provided <build_dir>/output_emscripten one is used.
33+
# UBLOX_C_OUTPUT_DIR - Path to "c" output directory. If not provided <build_dir>/output_c one is used.
34+
# UBLOX_LATEX_OUTPUT_DIR - Path to latex output directory. If not provided <build_dir>/output_latex one is used.
2935
# UBLOX_CCACHE_EXECUTABLE - Custom ccache executable
3036
# COMMSDSL2COMMS_EXTRA_ARGS - Extra arguments to pass to "commsdsl2comms"
3137
# COMMSDSL2TEST_EXTRA_ARGS - Extra arguments to pass to "commsdsl2test"
3238
# COMMSDSL2TOOLS_QT_EXTRA_ARGS - Extra arguments to pass to "commsdsl2tools_qt"
3339
# COMMSDSL2SWIG_EXTRA_ARGS - Extra arguments to pass to "commsdsl2swig"
3440
# COMMSDSL2EMSCRIPTEN_EXTRA_ARGS - Extra arguments to pass to "commsdsl2emscripten"
41+
# COMMSDSL2C_EXTRA_ARGS - Extra arguments to pass to "commsdsl2c"
42+
# COMMSDSL2LATEX_EXTRA_ARGS - Extra arguments to pass to "commsdsl2latex"
3543

36-
set (UBLOX_VERSION "3.0.3")
37-
set (UBLOX_MIN_COMMSDSL_VERSION "7.1")
44+
set (UBLOX_VERSION "3.0.4")
45+
set (UBLOX_MIN_COMMSDSL_VERSION "7.3")
3846

3947
if (("${CMAKE_VERSION}" VERSION_GREATER_EQUAL "3.30") AND
4048
(NOT DEFINED CMAKE_POLICY_DEFAULT_CMP0167))
@@ -78,6 +86,18 @@ if ("${UBLOX_EMSCRIPTEN_OUTPUT_DIR}" STREQUAL "")
7886
set (UBLOX_EMSCRIPTEN_OUTPUT_DIR "${CMAKE_BINARY_DIR}/output_emscripten")
7987
endif ()
8088

89+
if ("${UBLOX_C_OUTPUT_DIR}" STREQUAL "")
90+
set (UBLOX_C_OUTPUT_DIR "${CMAKE_BINARY_DIR}/output_c")
91+
endif ()
92+
93+
if ("${UBLOX_LATEX_OUTPUT_DIR}" STREQUAL "")
94+
set (UBLOX_LATEX_OUTPUT_DIR "${CMAKE_BINARY_DIR}/output_latex")
95+
endif ()
96+
97+
if ("${UBLOX_TOOLS_QT_VER}" STREQUAL "")
98+
set (UBLOX_TOOLS_QT_VER 5)
99+
endif ()
100+
81101
if ("${UBLOX_SCHEMA_FILES_LIST_FILE}" STREQUAL "")
82102
set (schema_files
83103
dsl/main.xml
@@ -245,18 +265,6 @@ set (prot_tmp_dir "${CMAKE_BINARY_DIR}/output.tmp")
245265
set (test_tmp_dir "${CMAKE_BINARY_DIR}/output_test.tmp")
246266
set (tools_tmp_dir "${CMAKE_BINARY_DIR}/output_tools.tmp")
247267

248-
if ("${UBLOX_PROT_OUTPUT_DIR}" STREQUAL "")
249-
set (UBLOX_PROT_OUTPUT_DIR "${CMAKE_BINARY_DIR}/output")
250-
endif ()
251-
252-
if ("${UBLOX_TEST_OUTPUT_DIR}" STREQUAL "")
253-
set (UBLOX_TEST_OUTPUT_DIR "${CMAKE_BINARY_DIR}/output_test")
254-
endif ()
255-
256-
if ("${UBLOX_TOOLS_OUTPUT_DIR}" STREQUAL "")
257-
set (UBLOX_TOOLS_OUTPUT_DIR "${CMAKE_BINARY_DIR}/output_tools")
258-
endif ()
259-
260268
set (warn_as_error "--warn-as-err")
261269
if (UBLOX_NO_WARN_AS_ERR)
262270
set (warn_as_error)
@@ -336,7 +344,7 @@ if (UBLOX_GEN_TEST)
336344

337345
add_custom_target("test_output_tgt" ALL
338346
COMMAND ${CMAKE_COMMAND} -E remove_directory ${test_tmp_dir}
339-
COMMAND ${COMMSDSL2TEST} ${warn_as_error} ${COMMSDSL2TEST_EXTRA_ARGS}
347+
COMMAND ${COMMSDSL2TEST} ${warn_as_error} -V ${UBLOX_VERSION} ${COMMSDSL2TEST_EXTRA_ARGS}
340348
-o ${test_tmp_dir} -c ${PROJECT_SOURCE_DIR}/src/test
341349
-p ${PROJECT_SOURCE_DIR} -i ${UBLOX_SCHEMA_FILES_LIST_FILE}
342350
COMMAND ${CMAKE_COMMAND}
@@ -391,7 +399,7 @@ if (UBLOX_GEN_TOOLS)
391399

392400
add_custom_target("tools_output_tgt" ALL
393401
COMMAND ${CMAKE_COMMAND} -E remove_directory ${tools_tmp_dir}
394-
COMMAND ${COMMSDSL2TOOLS_QT} ${warn_as_error} ${COMMSDSL2TOOLS_QT_EXTRA_ARGS}
402+
COMMAND ${COMMSDSL2TOOLS_QT} ${warn_as_error} -V ${UBLOX_VERSION} ${COMMSDSL2TOOLS_QT_EXTRA_ARGS}
395403
--protocol "::CC UBLOX:UBX protocol used by the U-blox GNSS Receivers.:cc.UbloxProtocolPlugin"
396404
-o ${tools_tmp_dir} -c ${PROJECT_SOURCE_DIR}/src/tools
397405
-p ${PROJECT_SOURCE_DIR} -i ${UBLOX_SCHEMA_FILES_LIST_FILE}
@@ -446,7 +454,7 @@ if (UBLOX_GEN_SWIG)
446454

447455
add_custom_target("swig_output_tgt" ALL
448456
COMMAND ${CMAKE_COMMAND} -E remove_directory ${swig_tmp_dir}
449-
COMMAND ${COMMSDSL2SWIG} ${warn_as_error} ${COMMSDSL2SWIG_EXTRA_ARGS}
457+
COMMAND ${COMMSDSL2SWIG} ${warn_as_error} -V ${UBLOX_VERSION} ${COMMSDSL2SWIG_EXTRA_ARGS}
450458
-c ${UBLOX_SWIG_SRC_DIR} -o ${swig_tmp_dir}
451459
-p ${PROJECT_SOURCE_DIR} -i ${UBLOX_SCHEMA_FILES_LIST_FILE}
452460
COMMAND ${CMAKE_COMMAND}
@@ -505,7 +513,7 @@ if (UBLOX_GEN_EMSCRIPTEN)
505513

506514
add_custom_target("emscripten_output_tgt" ALL
507515
COMMAND ${CMAKE_COMMAND} -E remove_directory ${emscripten_tmp_dir}
508-
COMMAND ${COMMSDSL2EMSCRIPTEN} ${warn_as_error} ${COMMSDSL2EMSCRIPTEN_EXTRA_ARGS}
516+
COMMAND ${COMMSDSL2EMSCRIPTEN} ${warn_as_error} -V ${UBLOX_VERSION} ${COMMSDSL2EMSCRIPTEN_EXTRA_ARGS}
509517
-o ${emscripten_tmp_dir} -c ${PROJECT_SOURCE_DIR}/src/emscripten
510518
-p ${PROJECT_SOURCE_DIR} -i ${UBLOX_SCHEMA_FILES_LIST_FILE}
511519
COMMAND ${CMAKE_COMMAND}
@@ -554,6 +562,117 @@ if (UBLOX_GEN_EMSCRIPTEN)
554562
endif ()
555563
endif ()
556564

565+
if (UBLOX_GEN_C)
566+
find_program(COMMSDSL2C commsdsl2c PATH_SUFFIXES bin REQUIRED)
567+
execute_process(COMMAND "${COMMSDSL2C}" --version OUTPUT_VARIABLE commsdsl2c_version)
568+
if ("${commsdsl2c_version}" VERSION_LESS "${UBLOX_MIN_COMMSDSL_VERSION}")
569+
message (FATAL_ERROR "Version of commsdsl2c is too old, required minimum is v${UBLOX_MIN_COMMSDSL_VERSION}.")
570+
endif ()
571+
572+
set (c_tmp_dir "${CMAKE_BINARY_DIR}/output_c.tmp")
573+
574+
add_custom_target("c_output_tgt" ALL
575+
COMMAND ${CMAKE_COMMAND} -E remove_directory ${c_tmp_dir}
576+
COMMAND ${COMMSDSL2C} ${warn_as_error} -V ${UBLOX_VERSION} ${COMMSDSL2C_EXTRA_ARGS}
577+
-o ${c_tmp_dir} -c ${PROJECT_SOURCE_DIR}/src/c
578+
-p ${PROJECT_SOURCE_DIR} -i ${UBLOX_SCHEMA_FILES_LIST_FILE}
579+
COMMAND ${CMAKE_COMMAND}
580+
-DGENERATED="${c_tmp_dir}" -DOUTPUT="${UBLOX_C_OUTPUT_DIR}"
581+
-P "${CMAKE_CURRENT_LIST_DIR}/CopyGenerated.cmake"
582+
DEPENDS "${CMAKE_CURRENT_LIST_DIR}/CopyGenerated.cmake" ${schema_file})
583+
584+
if (UBLOX_BUILD_C)
585+
if ((NOT UBLOX_GEN_PROTOCOL) OR (NOT UBLOX_BUILD_PROTOCOL))
586+
message (FATAL_ERROR "UBLOX_GEN_PROTOCOL and UBLOX_BUILD_PROTOCOL are required for UBLOX_BUILD_C")
587+
endif ()
588+
589+
execute_process(
590+
COMMAND ${CMAKE_COMMAND} -E make_directory ${UBLOX_C_OUTPUT_DIR}
591+
)
592+
593+
execute_process(
594+
COMMAND ${CMAKE_COMMAND} -E touch ${UBLOX_C_OUTPUT_DIR}/dummy.txt
595+
)
596+
597+
set (c_build_dir ${CMAKE_CURRENT_BINARY_DIR}/c_tgt_build)
598+
ExternalProject_Add(
599+
"c_tgt"
600+
BUILD_ALWAYS TRUE
601+
DEPENDS "prot_tgt" "c_output_tgt"
602+
SOURCE_DIR ${UBLOX_C_OUTPUT_DIR}
603+
BINARY_DIR ${c_build_dir}
604+
LIST_SEPARATOR |
605+
CMAKE_ARGS
606+
-DCMAKE_C_COMPILER=${CMAKE_C_COMPILER} -DCMAKE_CXX_COMPILER=${CMAKE_CXX_COMPILER}
607+
-DCMAKE_GENERATOR=${CMAKE_GENERATOR} -DCMAKE_GENERATOR_PLATFORM=${CMAKE_GENERATOR_PLATFORM}
608+
-DCMAKE_GENERATOR_TOOLSET=${CMAKE_GENERATOR_TOOLSET} -DCMAKE_TOOLCHAIN_FILE=${CMAKE_TOOLCHAIN_FILE}
609+
-DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE} -DCMAKE_EXE_LINKER_FLAGS=${CMAKE_EXE_LINKER_FLAGS}
610+
-DCMAKE_INSTALL_PREFIX=${CMAKE_INSTALL_PREFIX} -DCMAKE_PREFIX_PATH=${combined_prefix_path_str}
611+
-DCMAKE_CXX_STANDARD=${CMAKE_CXX_STANDARD}
612+
-DOPT_USE_CCACHE=${UBLOX_USE_CCACHE}
613+
-DOPT_CCACHE_EXECUTABLE=${UBLOX_CCACHE_EXECUTABLE}
614+
)
615+
616+
find_package(Doxygen)
617+
if (UBLOX_BUILD_PROT_DOC AND DOXYGEN_FOUND)
618+
ExternalProject_Add_Step(
619+
"c_tgt"
620+
"doc"
621+
COMMAND ${CMAKE_COMMAND} --build ${c_build_dir} --target doc_cc_ublox_c
622+
DEPENDEES "build"
623+
DEPENDERS "install"
624+
)
625+
endif ()
626+
endif ()
627+
endif ()
628+
629+
if (UBLOX_GEN_LATEX)
630+
find_program(COMMSDSL2LATEX commsdsl2latex PATH_SUFFIXES bin REQUIRED)
631+
execute_process(COMMAND "${COMMSDSL2LATEX}" --version OUTPUT_VARIABLE commsdsl2latex_version)
632+
if ("${commsdsl2latex_version}" VERSION_LESS "${UBLOX_MIN_COMMSDSL_VERSION}")
633+
message (FATAL_ERROR "Version of commsdsl2latex is too old, required minimum is v${UBLOX_MIN_COMMSDSL_VERSION}.")
634+
endif ()
635+
636+
set (latex_tmp_dir "${CMAKE_BINARY_DIR}/output_latex.tmp")
637+
638+
add_custom_target("latext_output_tgt" ALL
639+
COMMAND ${CMAKE_COMMAND} -E remove_directory ${latex_tmp_dir}
640+
COMMAND ${COMMSDSL2LATEX} ${warn_as_error} ${COMMSDSL2LATEX_EXTRA_ARGS}
641+
-o ${latex_tmp_dir} -c ${PROJECT_SOURCE_DIR}/src/latex
642+
-p ${PROJECT_SOURCE_DIR} -i ${UBLOX_SCHEMA_FILES_LIST_FILE}
643+
COMMAND ${CMAKE_COMMAND}
644+
-DGENERATED="${latex_tmp_dir}" -DOUTPUT="${UBLOX_LATEX_OUTPUT_DIR}"
645+
-P "${CMAKE_CURRENT_LIST_DIR}/CopyGenerated.cmake"
646+
DEPENDS "${CMAKE_CURRENT_LIST_DIR}/CopyGenerated.cmake" ${schema_file})
647+
648+
if (UBLOX_BUILD_LATEX)
649+
execute_process(
650+
COMMAND ${CMAKE_COMMAND} -E make_directory ${UBLOX_LATEX_OUTPUT_DIR}
651+
)
652+
653+
execute_process(
654+
COMMAND ${CMAKE_COMMAND} -E touch ${UBLOX_LATEX_OUTPUT_DIR}/dummy.txt
655+
)
656+
657+
set (latex_build_dir ${CMAKE_CURRENT_BINARY_DIR}/latex_tgt_build)
658+
ExternalProject_Add(
659+
"latex_tgt"
660+
BUILD_ALWAYS TRUE
661+
DEPENDS "latext_output_tgt"
662+
SOURCE_DIR ${UBLOX_LATEX_OUTPUT_DIR}
663+
BINARY_DIR ${latex_build_dir}
664+
LIST_SEPARATOR |
665+
CMAKE_ARGS
666+
-DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE}
667+
-DCMAKE_INSTALL_PREFIX=${CMAKE_INSTALL_PREFIX} -DCMAKE_PREFIX_PATH=${combined_prefix_path_str}
668+
BUILD_COMMAND
669+
${CMAKE_COMMAND} --build ${latex_build_dir} --config ${CMAKE_BUILD_TYPE} --target all_artifacts
670+
INSTALL_COMMAND
671+
${CMAKE_COMMAND} -E echo "No install for documentation build"
672+
)
673+
endif ()
674+
endif ()
675+
557676
if (NOT UBLOX_BUILD_EXAMPLES)
558677
return()
559678
endif()

0 commit comments

Comments
 (0)