nuttx-apps/examples/webpanel/Makefile
Tiago Medicci 1e19ceb347 examples/webpanel: Add a web panel application to configure NuttX
Initial development of the NuttX's Web Panel application. This is
a self-hosted web page application that enables retrieving system
info, provides a simple NSH terminal and enables uploading files.

Signed-off-by: Tiago Medicci <tiago.medicci@espressif.com>
2026-06-18 09:14:36 -03:00

94 lines
3.4 KiB
Makefile

############################################################################
# apps/examples/webpanel/Makefile
#
# SPDX-License-Identifier: Apache-2.0
#
# Licensed to the Apache Software Foundation (ASF) under one or more
# contributor license agreements. See the NOTICE file distributed with
# this work for additional information regarding copyright ownership. The
# ASF licenses this file to you 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
#
# http://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.
#
############################################################################
include $(APPDIR)/Make.defs
# Web Panel application + CGI handlers
# NuttX multi-program build: space-separated lists, matched by position.
CSRCS = romfs.c ws_terminal.c
MAINSRC = webpanel_main.c cgi_sysinfo.c cgi_files.c cgi_upload.c cgi_renew.c
PROGNAME = $(CONFIG_EXAMPLES_WEBPANEL_PROGNAME) \
$(CONFIG_EXAMPLES_WEBPANEL_CGI_SYSINFO_PROGNAME) \
$(CONFIG_EXAMPLES_WEBPANEL_CGI_FILES_PROGNAME) \
$(CONFIG_EXAMPLES_WEBPANEL_CGI_UPLOAD_PROGNAME) \
$(CONFIG_EXAMPLES_WEBPANEL_CGI_RENEW_PROGNAME)
PRIORITY = $(CONFIG_EXAMPLES_WEBPANEL_PRIORITY) \
$(CONFIG_EXAMPLES_WEBPANEL_CGI_SYSINFO_PRIORITY) \
$(CONFIG_EXAMPLES_WEBPANEL_CGI_FILES_PRIORITY) \
$(CONFIG_EXAMPLES_WEBPANEL_CGI_UPLOAD_PRIORITY) \
$(CONFIG_EXAMPLES_WEBPANEL_CGI_RENEW_PRIORITY)
STACKSIZE = $(CONFIG_EXAMPLES_WEBPANEL_STACKSIZE) \
$(CONFIG_EXAMPLES_WEBPANEL_CGI_SYSINFO_STACKSIZE) \
$(CONFIG_EXAMPLES_WEBPANEL_CGI_FILES_STACKSIZE) \
$(CONFIG_EXAMPLES_WEBPANEL_CGI_UPLOAD_STACKSIZE) \
$(CONFIG_EXAMPLES_WEBPANEL_CGI_RENEW_STACKSIZE)
LWS_DIR = $(APPDIR)/netutils/libwebsockets
CFLAGS += -I$(LWS_DIR) \
-I$(LWS_DIR)/libwebsockets/include
MODULE = $(CONFIG_EXAMPLES_WEBPANEL)
VPATH += content
DEPPATH += --dep-path content
# ROMFS image generation
# Static web content goes directly into the ROMFS root (no www/ subdir)
WEBPANEL_DIR = $(APPDIR)/examples/webpanel
CONTENT_DIR = $(WEBPANEL_DIR)/content
ROMFS_DIR = $(CONTENT_DIR)/romfs
ROMFS_IMG = $(CONTENT_DIR)/romfs.img
ROMFS_SRC = $(CONTENT_DIR)/romfs.c
WWW_FILES = $(wildcard $(CONTENT_DIR)/www/*)
$(CONTENT_DIR)/.romfs_stamp: $(WWW_FILES)
$(Q) mkdir -p $(ROMFS_DIR)
$(Q) cp -a $(CONTENT_DIR)/www/* $(ROMFS_DIR)/
$(Q) touch $@
$(ROMFS_IMG): $(CONTENT_DIR)/.romfs_stamp
$(Q) genromfs -f $@ -d $(ROMFS_DIR) -V "WebPanelROMFS"
$(ROMFS_SRC): $(ROMFS_IMG)
$(Q) (cd $(CONTENT_DIR) && \
echo "#include <nuttx/compiler.h>" >$@ && \
xxd -i romfs.img | \
sed -e "s/romfs_img/webpanel_romfs_img/g" | \
sed -e "s/^unsigned char/const unsigned char aligned_data(4)/g" >>$@)
content/romfs.c: $(ROMFS_SRC)
context::
clean::
$(call DELFILE, $(ROMFS_SRC))
$(call DELFILE, $(ROMFS_IMG))
$(call DELFILE, $(CONTENT_DIR)/.romfs_stamp)
$(Q) rm -rf $(ROMFS_DIR)
distclean:: clean
include $(APPDIR)/Application.mk