Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
203 changes: 203 additions & 0 deletions Makefile
Original file line number Diff line number Diff line change
@@ -0,0 +1,203 @@
# Makefile for libCSP (Simplified - Linux POSIX only)
#
# This Makefile is a simplified conversion from the CMakeLists.txt.
# It does NOT replicate all features, options, and platform detection
# of the original CMake setup. It primarily focuses on building the
# core 'csp' static library on Linux (POSIX).

# --- Configuration Options (Adjust as needed) ---

include ../phoenix-rtos-build/Makefile.common

NAME = libcsp

# Build Type: Debug, Release, MinSizeRel
BUILD_TYPE ?= Debug

# CSP Configuration Macros (from CMake options)
# Set 1 for ON, 0 for OFF
CSP_REPRODUCIBLE_BUILDS ?= 0
CSP_HAVE_STDIO ?= 1
CSP_ENABLE_CSP_PRINT ?= 1
CSP_PRINT_STDIO ?= 1
CSP_USE_RDP ?= 1
CSP_USE_HMAC ?= 1
CSP_USE_PROMISC ?= 1
CSP_USE_RTABLE ?= 0
CSP_BUFFER_ZERO_CLEAR ?= 1
CSP_PHOENIX ?= 1 # Assumed for this Makefile

# CSP Size Parameters (from CMake cache variables)
CSP_QFIFO_LEN ?= 16
CSP_PORT_MAX_BIND ?= 16
CSP_CONN_RXQUEUE_LEN ?= 16
CSP_CONN_MAX ?= 8
CSP_BUFFER_SIZE ?= 256
CSP_BUFFER_COUNT ?= 256
CSP_RDP_MAX_WINDOW ?= 5
CSP_RTABLE_SIZE ?= 10



# Source and Build Directories
SRCDIR = src

# Source Files (from src/ directory)
# This list needs to be updated if new source files are added to the project.
LOCAL_SRCS = $(filter-out $(SRCDIR)/csp_yaml.c,$(wildcard $(SRCDIR)/*.c)) \
$(SRCDIR)/arch/phoenixrtos/csp_semaphore.c \
$(SRCDIR)/arch/phoenixrtos/csp_system.c \
$(SRCDIR)/arch/posix/csp_clock.c \
$(SRCDIR)/arch/posix/csp_queue.c \
$(SRCDIR)/arch/posix/csp_time.c \
$(SRCDIR)/arch/posix/pthread_queue.c \
$(wildcard $(SRCDIR)/interfaces/*.c) \
$(wildcard $(SRCDIR)/crypto/*.c) \
$(SRCDIR)/drivers/can/can_grlibCan.c \
$(SRCDIR)/drivers/usart/usart_grlib.c \
$(SRCDIR)/drivers/usart/usart_kiss.c

# $(SRCDIR)/csp_rtable_cidr.c \

# Compiler Flags
# Removed: -Wpedantic
LOCAL_CFLAGS = -std=c11 -Wall -Wextra -Wshadow -Wcast-align \
-Wpointer-arith -Wwrite-strings -Wno-unused-parameter -O0\
-DCSP_VERSION_MAJOR=2 -DCSP_VERSION_MINOR=1 \
-Wno-undef \
-Isrc/arch/posix -Isrc -Isrc/interfaces -Isrc/crypto -Iinclude/csp/drivers

# # Add CSP option macros
LOCAL_CFLAGS += \
-DCSP_REPRODUCIBLE_BUILDS=$(CSP_REPRODUCIBLE_BUILDS) \
-DCSP_HAVE_STDIO=$(CSP_HAVE_STDIO) \
-DCSP_ENABLE_CSP_PRINT=$(CSP_ENABLE_CSP_PRINT) \
-DCSP_PRINT_STDIO=$(CSP_PRINT_STDIO) \
-DCSP_USE_RDP=$(CSP_USE_RDP) \
-DCSP_USE_HMAC=$(CSP_USE_HMAC) \
-DCSP_USE_PROMISC=$(CSP_USE_PROMISC) \
-DCSP_USE_RTABLE=$(CSP_USE_RTABLE) \
-DCSP_BUFFER_ZERO_CLEAR=$(CSP_BUFFER_ZERO_CLEAR) \
-DCSP_PHOENIX=$(CSP_PHOENIX) \
-DCSP_QFIFO_LEN=$(CSP_QFIFO_LEN) \
-DCSP_PORT_MAX_BIND=$(CSP_PORT_MAX_BIND) \
-DCSP_CONN_RXQUEUE_LEN=$(CSP_CONN_RXQUEUE_LEN) \
-DCSP_BUFFER_SIZE=$(CSP_BUFFER_SIZE) \
-DCSP_BUFFER_COUNT=$(CSP_BUFFER_COUNT)\
-DCSP_RDP_MAX_WINDOW=$(CSP_RDP_MAX_WINDOW) \
-DCSP_RTABLE_SIZE=$(CSP_RTABLE_SIZE)


#-DCSP_CONN_MAX=$(CSP_CONN_MAX)
include $(static-lib.mk)

NAME := libcsp-test-loopback
LOCAL_SRCS = examples/csp_phoenix_test_loopback.c
DEP_LIBS := libcsp
LOCAL_CFLAGS = -Wno-undef
LOCAL_CFLAGS += \
-DCSP_REPRODUCIBLE_BUILDS=$(CSP_REPRODUCIBLE_BUILDS) \
-DCSP_HAVE_STDIO=$(CSP_HAVE_STDIO) \
-DCSP_ENABLE_CSP_PRINT=$(CSP_ENABLE_CSP_PRINT) \
-DCSP_PRINT_STDIO=$(CSP_PRINT_STDIO) \
-DCSP_USE_RDP=$(CSP_USE_RDP) \
-DCSP_USE_HMAC=$(CSP_USE_HMAC) \
-DCSP_USE_PROMISC=$(CSP_USE_PROMISC) \
-DCSP_USE_RTABLE=$(CSP_USE_RTABLE) \
-DCSP_BUFFER_ZERO_CLEAR=$(CSP_BUFFER_ZERO_CLEAR) \
-DCSP_PHOENIX=$(CSP_PHOENIX) \
-DCSP_QFIFO_LEN=$(CSP_QFIFO_LEN) \
-DCSP_PORT_MAX_BIND=$(CSP_PORT_MAX_BIND) \
-DCSP_CONN_RXQUEUE_LEN=$(CSP_CONN_RXQUEUE_LEN) \
-DCSP_BUFFER_SIZE=$(CSP_BUFFER_SIZE) \
-DCSP_BUFFER_COUNT=$(CSP_BUFFER_COUNT)\
-DCSP_CONN_MAX=$(CSP_CONN_MAX) \
-DCSP_RDP_MAX_WINDOW=$(CSP_RDP_MAX_WINDOW) \
-DCSP_RTABLE_SIZE=$(CSP_RTABLE_SIZE)
Comment on lines +98 to +116

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

medium

The LOCAL_CFLAGS for the test binaries (libcsp-test-loopback, uart-test, csp-rdp-test-server, csp-rdp-test-client) are largely duplicated. This makes the Makefile harder to maintain. Consider defining a common set of flags and reusing it for each target to reduce repetition and improve readability.

LOCAL_HEADERS_DIR := nothing
include $(binary.mk)


NAME := uart-test
LOCAL_SRCS = examples/csp_phoenix_uart.c
LOCAL_CFLAGS = -Wno-undef
LOCAL_CFLAGS += \
-DCSP_REPRODUCIBLE_BUILDS=$(CSP_REPRODUCIBLE_BUILDS) \
-DCSP_HAVE_STDIO=$(CSP_HAVE_STDIO) \
-DCSP_ENABLE_CSP_PRINT=$(CSP_ENABLE_CSP_PRINT) \
-DCSP_PRINT_STDIO=$(CSP_PRINT_STDIO) \
-DCSP_USE_RDP=$(CSP_USE_RDP) \
-DCSP_USE_HMAC=$(CSP_USE_HMAC) \
-DCSP_USE_PROMISC=$(CSP_USE_PROMISC) \
-DCSP_USE_RTABLE=$(CSP_USE_RTABLE) \
-DCSP_BUFFER_ZERO_CLEAR=$(CSP_BUFFER_ZERO_CLEAR) \
-DCSP_PHOENIX=$(CSP_PHOENIX) \
-DCSP_QFIFO_LEN=$(CSP_QFIFO_LEN) \
-DCSP_PORT_MAX_BIND=$(CSP_PORT_MAX_BIND) \
-DCSP_CONN_RXQUEUE_LEN=$(CSP_CONN_RXQUEUE_LEN) \
-DCSP_BUFFER_SIZE=$(CSP_BUFFER_SIZE) \
-DCSP_BUFFER_COUNT=$(CSP_BUFFER_COUNT)\
-DCSP_CONN_MAX=$(CSP_CONN_MAX) \
-DCSP_RDP_MAX_WINDOW=$(CSP_RDP_MAX_WINDOW) \
-DCSP_RTABLE_SIZE=$(CSP_RTABLE_SIZE)
LOCAL_HEADERS_DIR := nothing
include $(binary.mk)


NAME = csp-rdp-test-server
LOCAL_SRCS = examples/csp_phoenix_test_rdp_server.c
LIBS := grlib-can-core libcsp
LOCAL_CFLAGS = -Wno-undef
LOCAL_CFLAGS += \
-DCSP_REPRODUCIBLE_BUILDS=$(CSP_REPRODUCIBLE_BUILDS) \
-DCSP_HAVE_STDIO=$(CSP_HAVE_STDIO) \
-DCSP_ENABLE_CSP_PRINT=$(CSP_ENABLE_CSP_PRINT) \
-DCSP_PRINT_STDIO=$(CSP_PRINT_STDIO) \
-DCSP_USE_RDP=$(CSP_USE_RDP) \
-DCSP_USE_HMAC=$(CSP_USE_HMAC) \
-DCSP_USE_PROMISC=$(CSP_USE_PROMISC) \
-DCSP_USE_RTABLE=$(CSP_USE_RTABLE) \
-DCSP_BUFFER_ZERO_CLEAR=$(CSP_BUFFER_ZERO_CLEAR) \
-DCSP_PHOENIX=$(CSP_PHOENIX) \
-DCSP_QFIFO_LEN=$(CSP_QFIFO_LEN) \
-DCSP_PORT_MAX_BIND=$(CSP_PORT_MAX_BIND) \
-DCSP_CONN_RXQUEUE_LEN=$(CSP_CONN_RXQUEUE_LEN) \
-DCSP_BUFFER_SIZE=$(CSP_BUFFER_SIZE) \
-DCSP_BUFFER_COUNT=$(CSP_BUFFER_COUNT)\
-DCSP_CONN_MAX=$(CSP_CONN_MAX) \
-DCSP_RDP_MAX_WINDOW=$(CSP_RDP_MAX_WINDOW) \
-DCSP_RTABLE_SIZE=$(CSP_RTABLE_SIZE)
LOCAL_HEADERS_DIR := nothing
include $(binary.mk)


NAME = csp-rdp-test-client
LOCAL_SRCS = examples/csp_phoenix_test_rdp_client.c
LIBS := grlib-can-core libcsp
LOCAL_CFLAGS = -Wno-undef
LOCAL_CFLAGS += \
-DCSP_REPRODUCIBLE_BUILDS=$(CSP_REPRODUCIBLE_BUILDS) \
-DCSP_HAVE_STDIO=$(CSP_HAVE_STDIO) \
-DCSP_ENABLE_CSP_PRINT=$(CSP_ENABLE_CSP_PRINT) \
-DCSP_PRINT_STDIO=$(CSP_PRINT_STDIO) \
-DCSP_USE_RDP=$(CSP_USE_RDP) \
-DCSP_USE_HMAC=$(CSP_USE_HMAC) \
-DCSP_USE_PROMISC=$(CSP_USE_PROMISC) \
-DCSP_USE_RTABLE=$(CSP_USE_RTABLE) \
-DCSP_BUFFER_ZERO_CLEAR=$(CSP_BUFFER_ZERO_CLEAR) \
-DCSP_PHOENIX=$(CSP_PHOENIX) \
-DCSP_QFIFO_LEN=$(CSP_QFIFO_LEN) \
-DCSP_PORT_MAX_BIND=$(CSP_PORT_MAX_BIND) \
-DCSP_CONN_RXQUEUE_LEN=$(CSP_CONN_RXQUEUE_LEN) \
-DCSP_BUFFER_SIZE=$(CSP_BUFFER_SIZE) \
-DCSP_BUFFER_COUNT=$(CSP_BUFFER_COUNT)\
-DCSP_CONN_MAX=$(CSP_CONN_MAX) \
-DCSP_RDP_MAX_WINDOW=$(CSP_RDP_MAX_WINDOW) \
-DCSP_RTABLE_SIZE=$(CSP_RTABLE_SIZE)
LOCAL_HEADERS_DIR := nothing
include $(binary.mk)


all: libcsp libcsp-test-loopback uart-test csp-rdp-test-client csp-rdp-test-server
install: $(patsubst %,%-install,libcsp) $(patsubst %,%-install,libcsp-test-loopback) $(patsubst %,%-install,uart-test) $(patsubst %,%-install,csp-rdp-test-server) $(patsubst %,%-install,csp-rdp-test-client)
clean: $(patsubst %,%-clean,libcsp) $(patsubst %,%-clean,libcsp-test-loopback) $(patsubst %,%-install,uart-test) $(patsubst %,%-install,csp-rdp-test-server) $(patsubst %,%-install,csp-rdp-test-client)

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

high

The clean target incorrectly uses %-install for uart-test, csp-rdp-test-server, and csp-rdp-test-client. This will attempt to run the install rule instead of the clean rule for these targets. It should use %-clean for all targets.

Additionally, the file is missing a newline character at the end. Some tools and conventions expect files to end with a newline.

clean: $(patsubst %,%-clean,libcsp) $(patsubst %,%-clean,libcsp-test-loopback) $(patsubst %,%-clean,uart-test) $(patsubst %,%-clean,csp-rdp-test-server) $(patsubst %,%-clean,csp-rdp-test-client)

4 changes: 2 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -15,8 +15,8 @@ message/connection pools.
The protocol is based on an very lightweight header containing both transport and
network-layer information. Its implementation is designed for, but not
limited to, embedded systems with very limited CPU and memory resources.
The implementation is written in GNU C and is currently ported to run on FreeRTOS, Zephyr
and Linux (POSIX).
The implementation is written in GNU C and is currently ported to run on FreeRTOS, Zephyr,
Linux (POSIX) and Phoenix RTOS.

The idea is to give sub-system developers of cubesats the same features
of a TCP/IP stack, but without adding the huge overhead of the IP
Expand Down
Loading
Loading