mmserv

Minimum Mean Square Error detection on RISC-V Vector Extention
git clone https://git.ea.contact/mmserv
Log | Files | Refs | README

GNUmakefile (2680B)


      1 # Default values
      2 ARCH      ?= x86
      3 DATA_TYPE ?= float
      4 PLATFORM  ?= linux
      5 NUM_RX    ?= 4
      6 NUM_TX    ?= 4
      7 NUM_SC    ?= 1024
      8 
      9 # Valid values
     10 VALID_ARCHS      := x86 rv rvv
     11 VALID_DATA_TYPES := float fixed
     12 VALID_PLATFORMS  := linux ara baremetal
     13 
     14 # Validate inputs
     15 ifneq ($(filter $(ARCH),$(VALID_ARCHS)),$(ARCH))
     16 	$(error Invalid ARCH: $(ARCH). Supported: $(VALID_ARCHS))
     17 endif
     18 ifneq ($(filter $(DATA_TYPE),$(VALID_DATA_TYPES)),$(DATA_TYPE))
     19 	$(error Invalid DATA_TYPE: $(DATA_TYPE). Supported: $(VALID_DATA_TYPES))
     20 endif
     21 ifneq ($(filter $(PLATFORM),$(VALID_PLATFORMS)),$(PLATFORM))
     22 	$(error Invalid PLATFORM: $(PLATFORM). Supported: $(VALID_PLATFORMS))
     23 endif
     24 ifneq ($(shell test $(NUM_RX) -gt 0 >/dev/null 2>&1 && echo valid),valid)
     25 	$(error NUM_RX must be an integer > 0)
     26 endif
     27 ifneq ($(shell test $(NUM_TX) -gt 0 >/dev/null 2>&1 && echo valid),valid)
     28 	$(error NUM_TX must be an integer > 0)
     29 endif
     30 ifneq ($(shell test $(NUM_SC) -gt 0 >/dev/null 2>&1 && echo valid),valid)
     31 	$(error NUM_SC must be an integer > 0)
     32 endif
     33 
     34 # CFLAGS
     35 CFLAGS += -DARCH_$(ARCH)
     36 CFLAGS += -DDATA_TYPE_$(DATA_TYPE)
     37 CFLAGS += -DPLATFORM_$(PLATFORM)
     38 CFLAGS += -DNUM_RX=$(NUM_RX)
     39 CFLAGS += -DNUM_TX=$(NUM_TX)
     40 CFLAGS += -DNUM_SC=$(NUM_SC)
     41 
     42 # DEBUG flag
     43 DEBUG ?= 0
     44 ifeq ($(DEBUG),1)
     45     CFLAGS += -g -O0
     46 else
     47     CFLAGS += -O0
     48 endif
     49 
     50 # Compiler selection
     51 ifeq ($(ARCH),x86)
     52 	CC := gcc
     53 else
     54 	CC := riscv64-unknown-elf-gcc
     55 endif
     56 
     57 # Output file
     58 OUTPUT := build/mmse_$(ARCH)_$(DATA_TYPE)_$(PLATFORM)_$(NUM_RX)x$(NUM_TX)x$(NUM_SC)$(if $(filter 1,$(DEBUG)),_debug.elf,.elf)
     59 
     60 # Source files
     61 SRCS := main.c $(wildcard src/*.c)
     62 
     63 # Phony targets
     64 .PHONY: all help gen_data
     65 
     66 # Default target
     67 all: gen_data $(OUTPUT)
     68 
     69 # Run data generation
     70 gen_data:
     71 	python script/gen_data.py $(NUM_TX) $(NUM_RX) $(NUM_SC)
     72 
     73 # Compile
     74 $(OUTPUT): $(SRCS)
     75 	mkdir -p build
     76 	$(CC) $(CFLAGS) $^ -o $@
     77 
     78 # Help target
     79 help:
     80 	@echo "Usage:"
     81 	@echo "  make [ARCH=<arch>] [DATA_TYPE=<type>] [PLATFORM=<platform>] [NUM_RX=<num_rx>] [NUM_TX=<num_tx>] [NUM_SC=<num_sc>]"
     82 	@echo ""
     83 	@echo "Supported ARCH values:"
     84 	@echo "  - x86 (default)"
     85 	@echo "  - rv"
     86 	@echo "  - rvv"
     87 	@echo ""
     88 	@echo "Supported DATA_TYPE values:"
     89 	@echo "  - float (default)"
     90 	@echo "  - fixed"
     91 	@echo ""
     92 	@echo "Supported PLATFORM values:"
     93 	@echo "  - linux (default)"
     94 	@echo "  - ara"
     95 	@echo "  - baremetal"
     96 	@echo ""
     97 	@echo "Supported NUM_RX values: integers > 0 (default = 4)"
     98 	@echo "Supported NUM_TX values: integers > 0 (default = 4)"
     99 	@echo "Supported NUM_SC values: integers > 0 (default = 1024)"
    100 	@echo ""
    101 	@echo "Debug mode:"
    102 	@echo "  - DEBUG=0 (default, optimized with -O1)"
    103 	@echo "  - DEBUG=1 (debug mode with -g -O0)"
    104 
    105 # Remove build directory
    106 clean:
    107 	rm build/* data/*