blob: 596b8a0a5977bf4b2bf06c995fdff1c4421bc019 [file] [log] [blame]
# Copyright 2022 The Pigweed Authors
#
# Licensed under the Apache License, Version 2.0 (the "License"); you may not
# use this file except in compliance with the License. You may obtain a copy of
# the License at
#
# https://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
# License for the specific language governing permissions and limitations under
# the License.
import("//build_overrides/pi_pico.gni")
import("//build_overrides/pigweed.gni")
import("$dir_pigweed_experimental/third_party/imgui/imgui.gni")
import("$dir_pw_build/target_types.gni")
import("$dir_pw_third_party/mcuxpresso/mcuxpresso.gni")
import("app_common_vars.gni")
config("common_flags") {
cflags = [
"-DDISPLAY_WIDTH=" + pw_app_common_DISPLAY_WIDTH,
"-DDISPLAY_HEIGHT=" + pw_app_common_DISPLAY_HEIGHT,
"-DDISPLAY_RESET_GPIO=" + pw_app_common_DISPLAY_RESET_GPIO,
"-DDISPLAY_TE_GPIO=" + pw_app_common_DISPLAY_TE_GPIO,
"-DBACKLIGHT_GPIO=" + pw_app_common_BACKLIGHT_GPIO,
"-DFRAMEBUFFER_WIDTH=" + pw_app_common_FRAMEBUFFER_WIDTH,
"-DFRAMEBUFFER_START_X=" + pw_app_common_FRAMEBUFFER_START_X,
"-DFRAMEBUFFER_START_Y=" + pw_app_common_FRAMEBUFFER_START_Y,
]
}
config("spi_flags") {
cflags = [
"-DDISPLAY_CS_GPIO=" + pw_app_common_DISPLAY_CS_GPIO,
"-DDISPLAY_DC_GPIO=" + pw_app_common_DISPLAY_DC_GPIO,
"-DSPI_MISO_GPIO=" + pw_app_common_SPI_MISO_GPIO,
"-DSPI_MOSI_GPIO=" + pw_app_common_SPI_MOSI_GPIO,
"-DSPI_CLOCK_GPIO=" + pw_app_common_SPI_CLOCK_GPIO,
]
}
# STM32 uses a macro to concatenate two strings to create a new constant that
# is from the SDK. These "LCD*" constants are substrings in those SDK constants
# and therefore must have specific names.
config("spi_stm32_flags") {
cflags = [
"-DSPI_MISO_GPIO=" + pw_app_common_SPI_MISO_GPIO,
"-DSPI_MOSI_GPIO=" + pw_app_common_SPI_MOSI_GPIO,
"-DSPI_CLOCK_GPIO=" + pw_app_common_SPI_CLOCK_GPIO,
"-DLCD_CS_PORT_CHAR=" + pw_app_common_STM32_DISPLAY_CS_PORT,
"-DLCD_CS_PIN_NUM=" + pw_app_common_DISPLAY_CS_GPIO,
"-DLCD_DC_PORT_CHAR=" + pw_app_common_STM32_DISPLAY_DC_PORT,
"-DLCD_DC_PIN_NUM=" + pw_app_common_DISPLAY_DC_GPIO,
"-DLCD_RST_PIN_NUM=" + pw_app_common_DISPLAY_RESET_GPIO,
]
}
config("rp2040_pio_flags") {
cflags = [
"-DUSE_PIO=1",
# Overclock the rp2040 in common_pico.cc
# "-DOVERCLOCK_250=1",
]
}
pw_source_set("stm32cube") {
public_configs = [
":common_flags",
":spi_stm32_flags",
]
deps = [
"$dir_pigweed_experimental/applications/app_common:app_common.facade",
"$dir_pw_digital_io_stm32cube",
"$dir_pw_spi_stm32cube",
"$dir_pw_sync:borrow",
"$dir_pw_sync:mutex",
"$dir_pwexperimental_display",
"$dir_pwexperimental_display_driver_ili9341",
"$dir_pwexperimental_framebuffer_pool",
]
sources = [ "common_stm32cube.cc" ]
}
pw_source_set("stm32") {
deps = [
"$dir_pigweed_experimental/applications/app_common:app_common.facade",
"$dir_pwexperimental_display_driver_null",
]
sources = [ "common_stm32.cc" ]
}
pw_source_set("arduino") {
public_configs = [
":common_flags",
":spi_flags",
]
deps = [
"$dir_pigweed_experimental/applications/app_common:app_common.facade",
"$dir_pw_digital_io_arduino",
"$dir_pw_spi_arduino",
"$dir_pw_sync:borrow",
"$dir_pw_sync:mutex",
"$dir_pw_third_party/arduino:arduino_core_sources",
"$dir_pwexperimental_display",
"$dir_pwexperimental_display_driver_ili9341",
]
sources = [ "common_arduino.cc" ]
remove_configs = [ "$dir_pw_build:strict_warnings" ]
}
if (pw_third_party_mcuxpresso_SDK != "") {
pw_source_set("mimxrt595") {
public_configs = [ ":common_flags" ]
deps = [
"$dir_pigweed_experimental/applications/app_common:app_common.facade",
"$dir_pwexperimental_display",
"$dir_pwexperimental_display_driver_mipi_dsi",
"$dir_pwexperimental_framebuffer_pool_mcuxpresso",
"$dir_pwexperimental_mipi_dsi_mcuxpresso",
"$pw_third_party_mcuxpresso_SDK",
]
sources = [ "common_mimxrt595.cc" ]
}
}
_pico_common_deps = [
"$PICO_ROOT/src/common/pico_base",
"$PICO_ROOT/src/common/pico_stdlib",
"$PICO_ROOT/src/rp2_common/hardware_pwm",
"$PICO_ROOT/src/rp2_common/hardware_spi",
"$PICO_ROOT/src/rp2_common/hardware_vreg",
"$dir_pigweed_experimental/applications/app_common:app_common.facade",
"$dir_pw_digital_io_rp2040",
"$dir_pw_i2c_rp2040",
"$dir_pw_log",
"$dir_pw_spi_rp2040",
"$dir_pw_sync:borrow",
"$dir_pw_sync:mutex",
"$dir_pwexperimental_display",
"$dir_pwexperimental_framebuffer_pool",
]
pw_source_set("pico_ili9341") {
public_configs = [
":common_flags",
":spi_flags",
]
cflags = [ "-DDISPLAY_TYPE_ILI9341" ]
deps = _pico_common_deps
deps += [ "$dir_pwexperimental_display_driver_ili9341" ]
sources = [ "common_pico.cc" ]
remove_configs = [ "$dir_pw_build:strict_warnings" ]
}
pw_source_set("pico_st7789") {
public_configs = [
":common_flags",
":spi_flags",
]
cflags = [ "-DDISPLAY_TYPE_ST7789" ]
deps = _pico_common_deps
deps += [ "$dir_pwexperimental_display_driver_st7789" ]
sources = [ "common_pico.cc" ]
remove_configs = [ "$dir_pw_build:strict_warnings" ]
}
pw_source_set("pico_st7789_pio") {
public_configs = [
":common_flags",
":spi_flags",
":rp2040_pio_flags",
]
cflags = [ "-DDISPLAY_TYPE_ST7789_PIO" ]
deps = _pico_common_deps
deps += [
"$dir_pwexperimental_display_driver_st7789",
"$dir_pwexperimental_pixel_pusher_rp2040_pio",
]
sources = [ "common_pico.cc" ]
remove_configs = [ "$dir_pw_build:strict_warnings" ]
}
pw_source_set("pico_st7735") {
public_configs = [
":common_flags",
":spi_flags",
]
cflags = [ "-DDISPLAY_TYPE_ST7735" ]
deps = _pico_common_deps
deps += [ "$dir_pwexperimental_display_driver_st7735" ]
sources = [ "common_pico.cc" ]
remove_configs = [ "$dir_pw_build:strict_warnings" ]
}
pw_source_set("host_imgui") {
public_configs = [ ":common_flags" ]
deps = [
"$dir_pigweed_experimental/applications/app_common:app_common.facade",
"$dir_pwexperimental_display_driver_imgui",
"$dir_pwexperimental_display_imgui",
"$dir_pwexperimental_framebuffer_pool",
]
sources = [ "common_host_imgui.cc" ]
remove_configs = []
if (host_os == "linux") {
remove_configs += [ "$dir_pw_toolchain/host_clang:linux_sysroot" ]
}
}
pw_source_set("host_null") {
public_configs = [ ":common_flags" ]
deps = [
"$dir_pigweed_experimental/applications/app_common:app_common.facade",
"$dir_pwexperimental_display",
"$dir_pwexperimental_display_driver_null",
]
sources = [ "common_host_null.cc" ]
}