目录结构
.
├── armgcc.cmake
├── build
│ ├── build_all_debug.sh
│ ├── build_all_release.sh
│ ├── clear.sh
│ └── readme.txt
└── CMakeLists.txt
CMakeLists.txt
cmake_minimum_required(VERSION 2.8)
#ADD_DEFINITIONS(-DPLATFORM_FREERTOS)
ADD_DEFINITIONS(-DCONFIG_PLATFORM_8711B)
set(MY_TARGET msmart)
set(EXTRA_LIBS _platform airkiss)
#The directory of header file
INCLUDE_DIRECTORIES(
"${PROJECT_SOURCE_DIR}/../inc"
"${PROJECT_SOURCE_DIR}/../midea/air/smart_inc/"
"${PROJECT_SOURCE_DIR}/../../../component/os/freertos"
"${PROJECT_SOURCE_DIR}/../../../component/os/freertos/freertos_v8.1.2/Source/include"
"${PROJECT_SOURCE_DIR}/../../../component/os/freertos/freertos_v8.1.2/Source/portable/GCC/ARM_CM4F"
"${PROJECT_SOURCE_DIR}/../../../component/os/os_dep/include"
"${PROJECT_SOURCE_DIR}/../../../component/common/api"
"${PROJECT_SOURCE_DIR}/../../../component/common/api/wifi"
"${PROJECT_SOURCE_DIR}/../../../component/common/drivers/wlan/realtek/include"
"${PROJECT_SOURCE_DIR}/../../../component/common/drivers/wlan/realtek/src/osdep"
"${PROJECT_SOURCE_DIR}/../../../component/common/network/dhcp"
"${PROJECT_SOURCE_DIR}/../../../component/common/network/httpc"
"${PROJECT_SOURCE_DIR}/../../../component/common/network/lwip/lwip_v1.4.1/src/include"
"${PROJECT_SOURCE_DIR}/../../../component/common/network/lwip/lwip_v1.4.1/src/include/ipv4"
"${PROJECT_SOURCE_DIR}/../../../component/common/network/lwip/lwip_v1.4.1/port/realtek"
"${PROJECT_SOURCE_DIR}/../../../component/common/network/lwip/lwip_v1.4.1/port/realtek/freertos"
"${PROJECT_SOURCE_DIR}/../../../component/common/network/lwip/lwip_v1.4.1/src/include/lwip"
"${PROJECT_SOURCE_DIR}/../../../component/soc/realtek/8711b/cmsis"
"${PROJECT_SOURCE_DIR}/../../../component/soc/realtek/8711b/cmsis/device"
"${PROJECT_SOURCE_DIR}/../../../component/soc/realtek/8711b/fwlib/include"
"${PROJECT_SOURCE_DIR}/../../../component/soc/realtek/8711b/misc"
"${PROJECT_SOURCE_DIR}/../../../component/soc/realtek/8711b/swlib/rtl_lib"
"${PROJECT_SOURCE_DIR}/../../../component/soc/realtek/8711b/swlib/std_lib/include"
"${PROJECT_SOURCE_DIR}/../../../component/soc/realtek/8711b/swlib/std_lib/libc/rom/string"
"${PROJECT_SOURCE_DIR}/../../../component/soc/realtek/8711b/swlib/std_lib/libgloss/rtl8195a/rom"
"${PROJECT_SOURCE_DIR}/../../../component/soc/realtek/8711b/app/monitor/include"
"${PROJECT_SOURCE_DIR}/../../../component/common/mbed/hal"
"${PROJECT_SOURCE_DIR}/../../../component/common/mbed/hal_ext"
"${PROJECT_SOURCE_DIR}/../../../component/common/mbed/targets/hal/rtl8711b"
)
SET(APP_FLAGS "-include ${PROJECT_SOURCE_DIR}/../midea/air/smart_inc/app/config.h")
SET(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} ${APP_FLAGS}")
SET(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} ${APP_FLAGS}")
IF(CMAKE_BUILD_TYPE MATCHES Release)
message(STATUS "C_RELEASE_FLAGS="${CMAKE_C_FLAGS_RELEASE})
ELSEIF(CMAKE_BUILD_TYPE MATCHES Debug)
message(STATUS "C_DEBUG_FLAGS="${CMAKE_C_FLAGS_DEBUG})
ENDIF()
#The directory of searching library
LINK_DIRECTORIES(
"${PROJECT_SOURCE_DIR}/air/smart_src/sal/airkiss/lib/"
"${PROJECT_SOURCE_DIR}/../../../component/soc/realtek/8711b/misc/bsp/lib/common/GCC/"
)
#recursively add *.c file
FILE(GLOB_RECURSE MSMART_SRC "${CMAKE_CURRENT_SOURCE_DIR}/../midea/air/smart_src/*.c")
#compile source into the static library
ADD_LIBRARY(${MY_TARGET} STATIC ${MSMART_SRC})
TARGET_LINK_LIBRARIES(${MY_TARGET} ${EXTRA_LIBS})
armgcc.cmake
INCLUDE(CMakeForceCompiler)
# TOOLCHAIN EXTENSION
IF(WIN32)
SET(TOOLCHAIN_EXT ".exe")
ELSE()
SET(TOOLCHAIN_EXT "")
ENDIF()
# EXECUTABLE EXTENSION
SET (CMAKE_EXECUTABLE_SUFFIX ".elf")
# CMAKE_BUILD_TYPE
IF(NOT CMAKE_BUILD_TYPE MATCHES Debug)
SET (CMAKE_BUILD_TYPE Release CACHE INTERNAL "build type")
ENDIF()
# TOOLCHAIN_DIR AND NANO LIBRARY
SET(TOOLCHAIN_DIR $ENV{ARMGCC_DIR})
STRING(REGEX REPLACE "\\\\" "/" TOOLCHAIN_DIR "${TOOLCHAIN_DIR}")
IF(NOT TOOLCHAIN_DIR)
MESSAGE(FATAL_ERROR "***Please set ARMGCC_DIR in envionment variables***")
ENDIF()
MESSAGE(STATUS "TOOLCHAIN_DIR: " ${TOOLCHAIN_DIR})
# TARGET_TRIPLET
SET(TARGET_TRIPLET "arm-none-eabi")
SET(TOOLCHAIN_BIN_DIR ${TOOLCHAIN_DIR}/bin)
SET(TOOLCHAIN_INC_DIR ${TOOLCHAIN_DIR}/${TARGET_TRIPLET}/include)
SET(TOOLCHAIN_LIB_DIR ${TOOLCHAIN_DIR}/${TARGET_TRIPLET}/lib)
SET(CMAKE_SYSTEM_NAME Generic)
SET(CMAKE_SYSTEM_PROCESSOR arm)
CMAKE_FORCE_C_COMPILER(${TOOLCHAIN_BIN_DIR}/${TARGET_TRIPLET}-gcc${TOOLCHAIN_EXT} GNU)
CMAKE_FORCE_CXX_COMPILER(${TOOLCHAIN_BIN_DIR}/${TARGET_TRIPLET}-g++${TOOLCHAIN_EXT} GNU)
SET(CMAKE_ASM_COMPILER ${TOOLCHAIN_BIN_DIR}/${TARGET_TRIPLET}-gcc${TOOLCHAIN_EXT})
SET(CMAKE_OBJCOPY ${TOOLCHAIN_BIN_DIR}/${TARGET_TRIPLET}-objcopy CACHE INTERNAL "objcopy tool")
SET(CMAKE_OBJDUMP ${TOOLCHAIN_BIN_DIR}/${TARGET_TRIPLET}-objdump CACHE INTERNAL "objdump tool")
SET(COMMON_FLAGS "-mcpu=cortex-m4 -mthumb -mfloat-abi=hard -mfpu=fpv4-sp-d16 -w -Wno-pointer-sign \
-fno-common -fmessage-length=0 -ffunction-sections -fdata-sections -fomit-frame-pointer \
-fno-short-enums -DF_CPU=166000000L -std=gnu99 -fsigned-char")
SET(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -O0 -g2 ${COMMON_FLAGS}" CACHE INTERNAL "c compiler flags debug")
SET(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -O0 -g2 ${COMMON_FLAGS}" CACHE INTERNAL "cxx compiler flags debug")
SET(CMAKE_ASM_FLAGS_DEBUG "${CMAKE_ASM_FLAGS_DEBUG} -g" CACHE INTERNAL "asm compiler flags debug")
SET(CMAKE_EXE_LINKER_FLAGS_DEBUG "${CMAKE_EXE_LINKER_FLAGS_DEBUG}" CACHE INTERNAL "linker flags debug")
SET(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} -Os ${COMMON_FLAGS}" CACHE INTERNAL "c compiler flags release")
SET(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -Os ${COMMON_FLAGS}" CACHE INTERNAL "cxx compiler flags release")
SET(CMAKE_ASM_FLAGS_RELEASE "${CMAKE_ASM_FLAGS_RELEASE}" CACHE INTERNAL "asm compiler flags release")
SET(CMAKE_EXE_LINKER_FLAGS_RELESE "${CMAKE_EXE_LINKER_FLAGS_RELESE}" CACHE INTERNAL "linker flags release")
SET(CMAKE_FIND_ROOT_PATH ${TOOLCHAIN_DIR}/${TARGET_TRIPLET} ${EXTRA_FIND_PATH})
SET(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
SET(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
SET(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)
IF(CMAKE_BUILD_TYPE MATCHES Release)
SET(EXECUTABLE_OUTPUT_PATH ${PROJECT_BINARY_DIR}/release)
SET(LIBRARY_OUTPUT_PATH ${PROJECT_BINARY_DIR}/release)
ELSEIF(CMAKE_BUILD_TYPE MATCHES Debug)
SET(EXECUTABLE_OUTPUT_PATH ${PROJECT_BINARY_DIR}/debug)
SET(LIBRARY_OUTPUT_PATH ${PROJECT_BINARY_DIR}/debug)
ENDIF()
MESSAGE(STATUS "BUILD_TYPE: " ${CMAKE_BUILD_TYPE})
build_all_debug.sh
if [ ! -d ../../../../tools/arm-none-eabi-gcc/4_8-2014q3 ] ; then
tar -jxf ../../../../tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q3-20140805-linux.tar.bz2 -C ../../../../tools/arm-none-eabi-gcc/ ;
mv ../../../../tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q3 ../../../../tools/arm-none-eabi-gcc/4_8-2014q3 ;
fi
CURRENT_DIR=$(pwd)
export ARMGCC_DIR=${CURRENT_DIR}/../../../../tools/arm-none-eabi-gcc/4_8-2014q3
#-DCMAKE_TOOLCHAIN_FILE=./toolChain.cmake
#cmake .. -DCMAKE_SYSTEM_NAME="Generic" -DCMAKE_C_COMPILER="arm-none-eabi-gcc"
#rm -rf CMake*
#rm -rf !(build.sh|build_all.sh)
rm -rf *ake* debug
#read -p "Press any key to continue." var
#cmake .. -DCMAKE_TOOLCHAIN_FILE=../toolChain.cmake
cmake .. -DCMAKE_TOOLCHAIN_FILE=../armgcc.cmake -DCMAKE_BUILD_TYPE=Debug
make
echo "copy libmsmart.a to ${PWD}/../../midea/air/smart_inc"
cp ./debug/libmsmart.a ../../midea/air/smart_inc/
build_all_release.sh
if [ ! -d ../../../../tools/arm-none-eabi-gcc/4_8-2014q3 ] ; then
tar -jxf ../../../../tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q3-20140805-linux.tar.bz2 -C ../../../../tools/arm-none-eabi-gcc/ ;
mv ../../../../tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q3 ../../../../tools/arm-none-eabi-gcc/4_8-2014q3 ;
fi
CURRENT_DIR=$(pwd)
export ARMGCC_DIR=${CURRENT_DIR}/../../../../tools/arm-none-eabi-gcc/4_8-2014q3
#-DCMAKE_TOOLCHAIN_FILE=./toolChain.cmake
#cmake .. -DCMAKE_SYSTEM_NAME="Generic" -DCMAKE_C_COMPILER="arm-none-eabi-gcc"
#rm -rf CMake*
#rm -rf !(build.sh|build_all.sh)
rm -rf *ake* release
#read -p "Press any key to continue." var
#cmake .. -DCMAKE_TOOLCHAIN_FILE=../toolChain.cmake
cmake .. -DCMAKE_TOOLCHAIN_FILE=../armgcc.cmake
make
echo "copy libmsmart.a to ${PWD}/../../midea/air/smart_inc"
cp ./release/libmsmart.a ../../midea/air/smart_inc/
clear.sh
rm -rf *ake* release debug
readme.txt
1. used to compile a debug version library.
build_all_debug.sh
perform command "./build_all_debug.sh" in the "build" directory
2. used to compile a release version library.
build_all_release.sh
perform command "./build_all_release.sh" in the "build" directory
3. clear up temporary file.
clear.sh
perform command "./clear.sh" in the "build" directory