diff options
| author | jacqueline <me@jacqueline.id.au> | 2022-11-17 20:18:01 +1100 |
|---|---|---|
| committer | jacqueline <me@jacqueline.id.au> | 2022-11-17 20:18:01 +1100 |
| commit | 42c387807fe0313b21b5280d9d55d4d641fe429c (patch) | |
| tree | b18ff7cd57ea7a603d56f07f73d5bc08c64500f8 /tools/cmake | |
| parent | c252132f397414bd996e957bc06ce842fdb33012 (diff) | |
| download | tangara-fw-42c387807fe0313b21b5280d9d55d4d641fe429c.tar.gz | |
Basic libmad build
Diffstat (limited to 'tools/cmake')
| -rw-r--r-- | tools/cmake/common.cmake | 27 | ||||
| -rw-r--r-- | tools/cmake/extra-libs.cmake | 1 | ||||
| -rw-r--r-- | tools/cmake/libmad.cmake | 19 |
3 files changed, 47 insertions, 0 deletions
diff --git a/tools/cmake/common.cmake b/tools/cmake/common.cmake new file mode 100644 index 00000000..53a6a243 --- /dev/null +++ b/tools/cmake/common.cmake @@ -0,0 +1,27 @@ +# For more information about build system see +# https://docs.espressif.com/projects/esp-idf/en/latest/api-guides/build-system.html +set(CMAKE_CXX_STANDARD 17) +set(CMAKE_CXX_STANDARD_REQUIRED ON) + +# Build only the subset of components that we actually depend on. +set(COMPONENTS "") + +# External dependencies +list(APPEND EXTRA_COMPONENT_DIRS "$ENV{PROJ_PATH}/lib/result") +list(APPEND EXTRA_COMPONENT_DIRS "$ENV{PROJ_PATH}/lib/lvgl") +list(APPEND EXTRA_COMPONENT_DIRS "$ENV{PROJ_PATH}/lib/catch2") + +include($ENV{IDF_PATH}/tools/cmake/project.cmake) + +# Additional warnings used when compiling our components. +# Unable to be used due to issues in ESP-IDF includes are: -Wpedantic +# -Wuseless-cast -Wconversion -Wold-style-cast -Wsign-conversion -Wcast-align +set(EXTRA_WARNINGS "-Wshadow" "-Wnon-virtual-dtor" "-Wunused" + "-Woverloaded-virtual" "-Wmisleading-indentation" "-Wduplicated-cond" + "-Wduplicated-branches" "-Wlogical-op" "-Wnull-dereference" + "-Wdouble-promotion" "-Wformat=2" "-Wimplicit-fallthrough") + +# Extra build flags that should apply to the entire build. This should mostly +# just be used to setting flags that our external dependencies requires. +# Otherwise, prefer adding per-component build flags to keep things neat. +idf_build_set_property(COMPILE_OPTIONS "-DLV_CONF_INCLUDE_SIMPLE" APPEND) diff --git a/tools/cmake/extra-libs.cmake b/tools/cmake/extra-libs.cmake new file mode 100644 index 00000000..2d665b63 --- /dev/null +++ b/tools/cmake/extra-libs.cmake @@ -0,0 +1 @@ +include($ENV{PROJ_PATH}/tools/cmake/libmad.cmake) diff --git a/tools/cmake/libmad.cmake b/tools/cmake/libmad.cmake new file mode 100644 index 00000000..5126bd69 --- /dev/null +++ b/tools/cmake/libmad.cmake @@ -0,0 +1,19 @@ +set(LIBMAD_SRC "$ENV{PROJ_PATH}/lib/libmad") +set(LIBMAD_BIN "${CMAKE_CURRENT_BINARY_DIR}/libmad") + +externalproject_add(libmad_build + SOURCE_DIR "${LIBMAD_SRC}" + PREFIX "${LIBMAD_BIN}" + CONFIGURE_COMMAND ${LIBMAD_SRC}/configure CC=${CMAKE_C_COMPILER} --srcdir=${LIBMAD_SRC} --prefix=${LIBMAD_BIN} --host=xtensa-elf --disable-debugging --disable-shared + BUILD_COMMAND "make" + INSTALL_COMMAND "make install" + BUILD_BYPRODUCTS "${LIBMAD_BIN}/libmad.a" +) + + add_library(libmad STATIC IMPORTED GLOBAL) + add_dependencies(libmad libmad_build) + + set_target_properties(libmad PROPERTIES IMPORTED_LOCATION + "${LIBMAD_BIN}/libmad.a") + set_target_properties(libmad PROPERTIES INTERFACE_INCLUDE_DIRECTORIES + "${LIBMAD_BIN}") |
