Improve build method.

This commit is contained in:
xiaojiazhu 2023-08-29 08:25:02 -07:00
parent 0be56111db
commit 0ee6dd1e5e
15 changed files with 200 additions and 70 deletions

156
CMakeLists.txt Normal file → Executable file
View File

@ -6,66 +6,136 @@ project(app)
message("platform = ${TARGET_PLATFORM}")
message("platform PATH = ${PLATFORM_PATH}")
if(${TARGET_PLATFORM} MATCHES ${DEFINE_LINUX})
include(build/cmake/toolchain/linux.toolchain.cmake)
endif()
# 使clang-tidy
# find_program(CLANG_TIDY_EXE NAMES clang-tidy PATHS ${PROJECT_ROOT_PATH}/tools/clang-tidy)
# if(CLANG_TIDY_EXE)
# message(STATUS "clang-tidy found: ${CLANG_TIDY_EXE}")
# set(CMAKE_CXX_CLANG_TIDY "${CLANG_TIDY_EXE}" "-header-filter=no.h -system-headers=no.h -checks=modernize-use-override")
# Gdb debug
include(build/sdk_config.cmake)
# if(${TARGET_PLATFORM} MATCHES ${DEFINE_LINUX})
# message("---------------------------Debug mode.-----------------------")
# SET(CMAKE_BUILD_TYPE "Debug")
# SET(CMAKE_CXX_FLAGS_DEBUG "$ENV{CXXFLAGS} -O0 -Wall -g2 -ggdb")
# SET(CMAKE_CXX_FLAGS_RELEASE "$ENV{CXXFLAGS} -O3 -Wall")
# # asan
# set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fsanitize=leak -fsanitize=address -fno-omit-frame-pointer -fsanitize=undefined")
# set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fsanitize=leak -fsanitize=address -fno-omit-frame-pointer -fsanitize=undefined")
# else()
# message(STATUS "clang-tidy not found.")
# message("---------------------------Release mode.-----------------------")
# SET(CMAKE_BUILD_TYPE "Release")
# set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Os")
# set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Os")
# endif()
#gdb debug
if(${TARGET_PLATFORM} MATCHES ${DEFINE_LINUX})
message("---------------------------Debug mode.-----------------------")
SET(CMAKE_BUILD_TYPE "Debug")
SET(CMAKE_CXX_FLAGS_DEBUG "$ENV{CXXFLAGS} -O0 -Wall -g2 -ggdb")
SET(CMAKE_CXX_FLAGS_RELEASE "$ENV{CXXFLAGS} -O3 -Wall")
# asan
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fsanitize=leak -fsanitize=address -fno-omit-frame-pointer -fsanitize=undefined")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fsanitize=leak -fsanitize=address -fno-omit-frame-pointer -fsanitize=undefined")
endif()
# if(${COVERAGE_ON} MATCHES "true")
# message("you choose to build gcno file")
# add_definitions("-fprofile-arcs")
# add_definitions("-ftest-coverage")
# endif()
#set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++14")
#
if(${TARGET_PLATFORM} MATCHES ${DEFINE_LINUX})
add_definitions("-DPLATFORM_LINUX")
endif()
if($ENV{BUILD_COVERAGE} MATCHES "true")
message("you choose to build gcno file")
add_definitions("-fprofile-arcs")
add_definitions("-ftest-coverage")
endif()
#
#
include(CheckCXXCompilerFlag)
CHECK_CXX_COMPILER_FLAG("-std=c++11" COMPILER_SUPPORTS_CXX11)
CHECK_CXX_COMPILER_FLAG("-std=c++0x" COMPILER_SUPPORTS_CXX0X)
CHECK_CXX_COMPILER_FLAG("-std=c++14" COMPILER_SUPPORTS_CXX14)
if(${TARGET_PLATFORM} MATCHES ${DEFINE_LINUX})
# execute_process(COMMAND sh build_lvgl_for_cmakelist.sh ${TARGET_PLATFORM} ${CMAKE_SOURCE_DIR} WORKING_DIRECTORY ${EXTERNAL_SOURCE_PATH}/lvglLinux-x86/)
# execute_process(COMMAND sh build_lvgl_for_cmakelist.sh ${TARGET_PLATFORM} ${CMAKE_SOURCE_DIR_IPCSDK} WORKING_DIRECTORY ${EXTERNAL_SOURCE_PATH}/lvglLinux-x86/)
# add_subdirectory(external/lvglLinux-x86)
endif()
#
add_subdirectory(hal)
add_subdirectory(utils)
add_subdirectory(test)
link_directories(
${DEPENDENCY_LIBS_PATH}/live/${LIVE_PLATFORM_SRC_PATH}
)
string(COMPARE EQUAL "${PLATFORM_PATH}" "" value)
message("The platform path is ${PLATFORM_PATH}.")
if (value EQUAL 0) #
message("build chip board code.")
add_subdirectory(${PLATFORM_PATH})
message("build chip board libs.")
link_directories(
# ${DEPENDENCY_LIBS_PATH}/live/${LIVE_PLATFORM_SRC_PATH}
)
endif()
#Add macro definition
add_definitions(-DCONFIG_FILE_PATH=\"${CONFIG_FILE_PATH}\")
add_definitions(-DCONFIG_FILE_STATIC_PATH=\"${CONFIG_FILE_STATIC_PATH}\")
add_definitions(-DSF_DCF_EXT_PHOTO=\"${SF_DCF_EXT_PHOTO}\")
add_definitions(-DSF_DCF_EXT_MOV=\"${SF_DCF_EXT_MOV}\")
add_definitions(-DSF_SD_ROOT=\"${SF_SD_ROOT}\")
add_definitions(-DSF_DCF_DIR_NAME_SUFFIX=\"${SF_DCF_DIR_NAME_SUFFIX}\")
add_definitions(-DSF_DCF_ROOT_DIR_NAME=\"${SF_DCF_ROOT_DIR_NAME}\")
add_definitions(-DSF_DCF_THM_DIR_NAME=\"${SF_DCF_THM_DIR_NAME}\")
add_definitions(-DSF_DCF_FILE_NAME_PREFIX=\"${SF_DCF_FILE_NAME_PREFIX}\")
# Config message of libs on board
# unset(MAIN_INCLUDE_PATH CACHE)
# set(MAIN_INCLUDE_PATH "" CACHE STRING INTERNAL)
# unset(MAIN_SRC_FILE CACHE)
# set(MAIN_SRC_FILE "" CACHE STRING INTERNAL)
# unset(MAIN_LINK_LIB CACHE)
# set(MAIN_LINK_LIB "" CACHE STRING INTERNAL)
# Config message of main thread
unset(MAIN_INCLUDE_PATH CACHE)
set(MAIN_INCLUDE_PATH "" CACHE STRING INTERNAL)
unset(MAIN_SRC_FILE CACHE)
set(MAIN_SRC_FILE "" CACHE STRING INTERNAL)
unset(MAIN_LINK_LIB CACHE)
set(MAIN_LINK_LIB "" CACHE STRING INTERNAL)
# Config message for test code.
unset(TEST_LINK_LIB CACHE)
set(TEST_LINK_LIB "" CACHE STRING INTERNAL)
unset(TEST_LINUX_MOCK CACHE)
set(TEST_LINUX_MOCK "" CACHE STRING INTERNAL)
# if(${TARGET_PLATFORM} MATCHES ${DEFINE_LINUX})
set(TEST_LINK_LIB "testUtils" CACHE STRING INTERNAL FORCE)
# endif()
if(${TARGET_PLATFORM} MATCHES ${DEFINE_LINUX})
# set(TEST_LINUX_MOCK "-Wl,--wrap=fopen,--wrap=fprintf_gpio,--wrap=fprintf_dir" CACHE STRING INTERNAL FORCE)
# set(TEST_LINUX_MOCK "${TEST_LINUX_MOCK},--wrap=tcgetattr" CACHE STRING INTERNAL FORCE)
# set(TEST_LINUX_MOCK "${TEST_LINUX_MOCK},--wrap=tcsetattr" CACHE STRING INTERNAL FORCE)
# set(TEST_LINUX_MOCK "${TEST_LINUX_MOCK},--wrap=gethostbyname" CACHE STRING INTERNAL FORCE)
# set(TEST_LINUX_MOCK "${TEST_LINUX_MOCK},--wrap=connect" CACHE STRING INTERNAL FORCE)
# set(TEST_LINUX_MOCK "${TEST_LINUX_MOCK},--wrap=socket" CACHE STRING INTERNAL FORCE)
# set(TEST_LINUX_MOCK "${TEST_LINUX_MOCK},--wrap=select" CACHE STRING INTERNAL FORCE)
# set(TEST_LINUX_MOCK "${TEST_LINUX_MOCK},--wrap=linux_open" CACHE STRING INTERNAL FORCE)
# set(TEST_LINUX_MOCK "${TEST_LINUX_MOCK},--wrap=linux_read" CACHE STRING INTERNAL FORCE)
# set(TEST_LINUX_MOCK "${TEST_LINUX_MOCK},--wrap=linux_write" CACHE STRING INTERNAL FORCE)
# set(TEST_LINUX_MOCK "${TEST_LINUX_MOCK},--wrap=linux_close" CACHE STRING INTERNAL FORCE)
# set(TEST_LINUX_MOCK "${TEST_LINUX_MOCK},--wrap=linux_fclose" CACHE STRING INTERNAL FORCE)
# set(TEST_LINUX_MOCK "${TEST_LINUX_MOCK},--wrap=linux_fread" CACHE STRING INTERNAL FORCE)
# set(TEST_LINUX_MOCK "${TEST_LINUX_MOCK},--wrap=linux_fcntl" CACHE STRING INTERNAL FORCE)
endif()
#
# add_subdirectory(application)
add_subdirectory(utils)
add_subdirectory(hal)
# add_subdirectory(customization)
string(COMPARE EQUAL "${PLATFORM_PATH}" "" value)
message("The platform path is \"${PLATFORM_PATH}\".")
if (value EQUAL 0) #
message("build chip board code.")
# add_subdirectory(${PLATFORM_PATH})
# aux_source_directory(${PLATFORM_PATH})
endif()
message("MAIN_INCLUDE_PATH = ${MAIN_INCLUDE_PATH}")
message("MAIN_SRC_FILE = ${MAIN_SRC_FILE}")
message("MAIN_LINK_LIB = ${MAIN_LINK_LIB}")
add_subdirectory(test)
# include(build/global_config.cmake)
# add_custom_target(
# IPCSDK_libs
# COMMAND rm -rf ${LIBS_OUTPUT_PATH}/include
# COMMAND rm -rf ${LIBS_OUTPUT_PATH}/readme
# COMMAND mkdir ${LIBS_OUTPUT_PATH}/include
# COMMAND mkdir ${LIBS_OUTPUT_PATH}/readme
# COMMAND make network_module_tools
# COMMAND make ConfigOutput
# COMMAND make FtpManagerOutput
# COMMAND make AtManagerOutput
# COMMAND make LogOutput
# WORKING_DIRECTORY ${PROJECT_ROOT_PATH}/cmake-shell-linux/
# )

30
Makefile Normal file → Executable file
View File

@ -6,13 +6,37 @@ cmake:
$(MAKE) -C build/cmake all
cmake_clean:
$(MAKE) -C build/cmake clean
prepare:
@if [ -d ".git" ]; then \
echo "source code exist"; \
else \
echo "source code not exist"; \
git init; \
git remote add origin https://gitee.com/shenzhen-jiuyilian/ipc.git; \
rm Makefile; \
git pull origin master; \
fi
@if [ -n "$(shell git status -s)" ]; then \
echo "source code changed."; \
else \
echo "source code do not changed."; \
fi
clean_code:
@rm -rf !(Makefile)
all:cmake
$(MAKE) -C cmake-shell-linux all
clean:
$(MAKE) -C cmake-shell-linux clean
@if [ -d "cmake-shell-linux" ]; then \
echo "cmake-shell-linux exist"; \
make -C cmake-shell-linux clean; \
fi
@echo "IPC clean."
@rm -rf external/gtest/googletest-release-1.11.0 \
external/lvglLinux-x86/lv_sim_vscode_sdl \
external/openssl/openssl-1.1.1s \
external/openssl/build \
external/curl/curl-8.1.2 \
out \
cmake-shell-linux

9
build/cmake/toolchain/linux.toolchain.cmake Normal file → Executable file
View File

@ -29,4 +29,11 @@ set(TOOLCHAIN_NAME arm-linux-gnueabihf)
set(TARGET_PLATFORM "linux")
set(AT_COMMAND_PATH "${CMAKE_SOURCE_DIR}/at-command/eg91")
set(SUBMODULE_PATH_OF_IPCSDK "")
set(PLATFORM_PATH "${CMAKE_CURRENT_SOURCE_DIR}")
set(COVERAGE_ON "true")
# ------------ build curl + openssl ------------ start
set(CROSS_COMPILE_PREFIX "")
set(CURL_OPENSSL_LIB_SHARED_ENABLE "false")
# ------------ build curl + openssl ------------ end

25
build/global_config.cmake Normal file → Executable file
View File

@ -2,16 +2,17 @@
# set(TARGET_PLATFORM "linux")
set(DEFINE_LINUX "linux")
set(DEFINE_SIGMASTART_333DE "sigmastart_333DE")
set(CMAKE_SOURCE_DIR_IPCSDK "${CMAKE_SOURCE_DIR}")
set(CMAKE_SOURCE_DIR_IPCSDK "${CMAKE_SOURCE_DIR_IPCSDK}${SUBMODULE_PATH_OF_IPCSDK}")
set(EXEC_OUTPUT_PATH "${PLATFORM_PATH}/out/bin")
set(LIBS_OUTPUT_PATH "${PLATFORM_PATH}/out/libs")
set(TEST_OUTPUT_PATH "${PLATFORM_PATH}/out/test")
set(EXEC_OUTPUT_PATH "${CMAKE_SOURCE_DIR}/out/bin")
set(LIBS_OUTPUT_PATH "${CMAKE_SOURCE_DIR}/out/libs")
set(TEST_OUTPUT_PATH "${CMAKE_SOURCE_DIR}/out/test")
set(PROJECT_ROOT_PATH "${CMAKE_SOURCE_DIR}")
set(APPLICATION_SOURCE_PATH "${CMAKE_SOURCE_DIR}/application")
set(COMPONENT_SOURCE_PATH "${CMAKE_SOURCE_DIR}/component")
set(UTILS_SOURCE_PATH "${CMAKE_SOURCE_DIR}/utils")
set(HAL_SOURCE_PATH "${CMAKE_SOURCE_DIR}/hal")
set(TEST_SOURCE_PATH "${CMAKE_SOURCE_DIR}/test")
set(EXTERNAL_SOURCE_PATH "${CMAKE_SOURCE_DIR}/external")
set(PROJECT_ROOT_PATH "${PLATFORM_PATH}")
set(APPLICATION_SOURCE_PATH "${CMAKE_SOURCE_DIR_IPCSDK}/application")
set(COMPONENT_SOURCE_PATH "${CMAKE_SOURCE_DIR_IPCSDK}/component")
set(UTILS_SOURCE_PATH "${CMAKE_SOURCE_DIR_IPCSDK}/utils")
set(HAL_SOURCE_PATH "${CMAKE_SOURCE_DIR_IPCSDK}/hal")
set(TEST_SOURCE_PATH "${CMAKE_SOURCE_DIR_IPCSDK}/test")
set(EXTERNAL_SOURCE_PATH "${CMAKE_SOURCE_DIR_IPCSDK}/external")
set(DEPENDENCY_LIBS_PATH "${CMAKE_SOURCE_DIR_IPCSDK}/lib")

View File

@ -9,6 +9,6 @@ set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -Werror")
# For build coverage report in linux-x86
if(${TARGET_PLATFORM} MATCHES ${DEFINE_LINUX})
SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fprofile-arcs -ftest-coverage")
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fprofile-arcs -ftest-coverage")
# SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fprofile-arcs -ftest-coverage")
# SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fprofile-arcs -ftest-coverage")
endif()

23
build/sdk_config.cmake Executable file
View File

@ -0,0 +1,23 @@
# 使
include(${CMAKE_SOURCE_DIR}${SUBMODULE_PATH_OF_IPCSDK}/build/global_config.cmake)
# Gdb debug
if(${TARGET_PLATFORM} MATCHES ${DEFINE_LINUX})
message("---------------------------Debug mode.-----------------------")
SET(CMAKE_BUILD_TYPE "Debug")
SET(CMAKE_CXX_FLAGS_DEBUG "$ENV{CXXFLAGS} -O0 -Wall -g2 -ggdb")
SET(CMAKE_CXX_FLAGS_RELEASE "$ENV{CXXFLAGS} -O3 -Wall")
# asan
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fsanitize=leak -fsanitize=address -fno-omit-frame-pointer -fsanitize=undefined")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fsanitize=leak -fsanitize=address -fno-omit-frame-pointer -fsanitize=undefined")
else()
message("---------------------------Release mode.-----------------------")
SET(CMAKE_BUILD_TYPE "Release")
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Os")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Os")
endif()
if(${COVERAGE_ON} MATCHES "true")
message("you choose to build gcno file")
add_definitions("-fprofile-arcs")
add_definitions("-ftest-coverage")
endif()

View File

@ -2,7 +2,8 @@
#编译gtest库
platform=$1
CMAKE_SOURCE_DIR=$2
echo "Compile gtest, platform = $platform, cmake source dir = $CMAKE_SOURCE_DIR."
PLATFORM_SOURCE_DIR=$3
echo "Compile gtest, platform = $platform, platform source dir = $PLATFORM_SOURCE_DIR."
export ROOT_PATH=$PWD
if [ ! -d "./googletest-release-1.11.0" ];then
echo "tar zxvf googletest-release-1.11.0.tar.gz"
@ -26,7 +27,9 @@ if [ ! -f "./googletest-release-1.11.0/googlemock/lib/libgtest.a" ] || [ ! -f ".
make
;;
*)
echo "Compile gtest failed."
echo "==Compile gtest v2."
cmake -DCMAKE_TOOLCHAIN_FILE=$PLATFORM_SOURCE_DIR/build/cmake/toolchain/linux.toolchain.cmake .
make
;;
esac
fi

View File

@ -1,5 +1,5 @@
include(${CMAKE_SOURCE_DIR}/build/global_config.cmake)
include(${CMAKE_SOURCE_DIR_IPCSDK}/build/global_config.cmake)
set(EXECUTABLE_OUTPUT_PATH ${EXEC_OUTPUT_PATH})
set(LIBRARY_OUTPUT_PATH ${LIBS_OUTPUT_PATH})

View File

@ -4,7 +4,7 @@
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${TEST_LINUX_MOCK}")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${TEST_LINUX_MOCK}")
# Compile gtest for test code.
execute_process(COMMAND sh build_gtest.sh ${TARGET_PLATFORM} ${CMAKE_SOURCE_DIR} WORKING_DIRECTORY ${EXTERNAL_SOURCE_PATH}/gtest/)
execute_process(COMMAND sh build_gtest.sh ${TARGET_PLATFORM} ${CMAKE_SOURCE_DIR_IPCSDK} ${PLATFORM_PATH} WORKING_DIRECTORY ${EXTERNAL_SOURCE_PATH}/gtest/)
# add_subdirectory(test_utils)
# add_subdirectory(application)
# add_subdirectory(component)

View File

@ -1,4 +1,5 @@
# include(${CMAKE_SOURCE_DIR}/build/independent_source.cmake)
include(${CMAKE_SOURCE_DIR_IPCSDK}/build/global_config.cmake)
set(EXECUTABLE_OUTPUT_PATH ${TEST_OUTPUT_PATH}/bin)
include_directories(

View File

@ -1,4 +1,5 @@
# include(${CMAKE_SOURCE_DIR}/build/independent_source.cmake)
include(${CMAKE_SOURCE_DIR_IPCSDK}/build/global_config.cmake)
set(EXECUTABLE_OUTPUT_PATH ${TEST_OUTPUT_PATH}/bin)
include_directories(

View File

@ -1,5 +1,5 @@
include(${CMAKE_SOURCE_DIR}/build/global_config.cmake)
include(${CMAKE_SOURCE_DIR_IPCSDK}/build/global_config.cmake)
set(EXECUTABLE_OUTPUT_PATH ${EXEC_OUTPUT_PATH})
set(LIBRARY_OUTPUT_PATH ${LIBS_OUTPUT_PATH})

View File

@ -1,4 +1,4 @@
include(${CMAKE_SOURCE_DIR}/build/global_config.cmake)
include(${CMAKE_SOURCE_DIR_IPCSDK}/build/global_config.cmake)
set(EXECUTABLE_OUTPUT_PATH ${EXEC_OUTPUT_PATH})
set(LIBRARY_OUTPUT_PATH ${LIBS_OUTPUT_PATH})

View File

@ -1,5 +1,5 @@
include(${CMAKE_SOURCE_DIR}/build/global_config.cmake)
include(${CMAKE_SOURCE_DIR_IPCSDK}/build/global_config.cmake)
set(EXECUTABLE_OUTPUT_PATH ${EXEC_OUTPUT_PATH})
set(LIBRARY_OUTPUT_PATH ${LIBS_OUTPUT_PATH})

View File

@ -1,5 +1,5 @@
include(${CMAKE_SOURCE_DIR}/build/global_config.cmake)
include(${CMAKE_SOURCE_DIR_IPCSDK}/build/global_config.cmake)
set(EXECUTABLE_OUTPUT_PATH ${EXEC_OUTPUT_PATH})
set(LIBRARY_OUTPUT_PATH ${LIBS_OUTPUT_PATH})