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}