Files
Eric F d398a6ced2 Add extracted tools: CitrineOS, OpenOCPP, ShapeShifter
- CitrineOS core extracted (CSMS OCPP 2.0.1)
- OpenOCPP extracted (firmware OCPP 1.6J/2.0.1)
- ShapeShifter library installed (pip install -e)
- ShapeShifter specification extracted
- EVerest extracted

TODO updated with progress
2026-06-08 00:38:27 -04:00

91 lines
3.1 KiB
Python

load("@rules_cc//cc:defs.bzl", "cc_library")
exports_files(["config"])
# Mirrors the CMake configure_file step in lib/CMakeLists.txt that embeds the
# canonical NetworkConfiguration_1 schema into a generated translation unit so
# blob migration can bootstrap a per-slot component without a filesystem read.
genrule(
name = "network_configuration_default_schema_cpp",
srcs = [
"lib/ocpp/v2/network_configuration_default_schema.cpp.in",
"config/common/component_config/standardized/NetworkConfiguration_1.json",
],
outs = ["generated/network_configuration_default_schema.cpp"],
cmd = """python3 - "$(location lib/ocpp/v2/network_configuration_default_schema.cpp.in)" "$(location config/common/component_config/standardized/NetworkConfiguration_1.json)" "$@" <<'PYEOF'
import sys
tpl_path, json_path, out_path = sys.argv[1], sys.argv[2], sys.argv[3]
with open(tpl_path) as f:
tpl = f.read()
with open(json_path) as f:
js = f.read()
with open(out_path, 'w') as f:
f.write(tpl.replace('@OCPP_NETWORK_CONFIGURATION_DEFAULT_SCHEMA_JSON@', js))
PYEOF
""",
visibility = ["//visibility:private"],
)
cc_library(
name = "websocketpp_utils",
hdrs = glob([
"3rd_party/websocketpp_utils/*.hpp",
]),
includes = ["3rd_party"],
visibility = ["//visibility:private"],
)
cc_library(
name = "libocpp",
srcs = glob([
"lib/ocpp/common/*.cpp",
"lib/ocpp/common/database/*.cpp",
"lib/ocpp/v16/*.cpp",
"lib/ocpp/v2/*.cpp",
"lib/ocpp/v2/functional_blocks/*.cpp",
"lib/ocpp/v21/functional_blocks/*.cpp",
"lib/ocpp/common/websocket/*.cpp",
"lib/ocpp/v16/messages/*.cpp",
"lib/ocpp/v2/messages/*.cpp",
"lib/ocpp/v21/messages/*.cpp",
]) + [":network_configuration_default_schema_cpp"],
hdrs = glob([
"include/**/*.hpp",
]),
strip_include_prefix = "include",
visibility = ["//visibility:public"],
deps = [
":websocketpp_utils",
"//third-party/bazel/openssl:crypto",
"//third-party/bazel/openssl:ssl",
"@com_github_nlohmann_json//:json",
"@com_github_HowardHinnant_date//:date",
"//lib/everest/framework:framework",
"//lib/everest/timer:libtimer",
"//lib/everest/evse_security:libevse-security",
"@com_github_pboettch_json-schema-validator//:json-schema-validator",
"@com_github_warmcatt_libwebsockets//:libwebsockets",
"//lib/everest/sqlite:everest-sqlite",
],
copts = [
"-std=c++17",
"-Wimplicit-fallthrough",
"-Wno-error=switch-enum", # boost.date_time 1.87.0 has incomplete switch statements
],
defines = [
"LIBOCPP_ENABLE_V16=1",
"LIBOCPP_ENABLE_V2=1",
"MIGRATION_FILE_VERSION_V16=1",
"MIGRATION_FILE_VERSION_V2=6",
"MIGRATION_DEVICE_MODEL_FILE_VERSION_V2=3",
],
# See https://github.com/HowardHinnant/date/issues/324
local_defines = [
"BUILD_TZ_LIB=ON",
"USE_SYSTEM_TZ_DB=ON",
"USE_OS_TZDB=1",
"USE_AUTOLOAD=0",
"HAS_REMOTE_API=0",
],
)