dae/Makefile

86 lines
2.4 KiB
Makefile
Raw Normal View History

2023-01-23 18:54:21 +07:00
#
# SPDX-License-Identifier: AGPL-3.0-only
2023-03-14 14:01:55 +07:00
# Copyright (c) 2022-2023, daeuniverse Organization <dae@v2raya.org>
2023-01-23 18:54:21 +07:00
#
# The development version of clang is distributed as the 'clang' binary,
# while stable/released versions have a version number attached.
# Pin the default clang to a stable version.
CLANG ?= clang
2023-01-23 18:54:21 +07:00
STRIP ?= llvm-strip
2023-01-27 01:10:27 +07:00
CFLAGS := -O2 -Wall -Werror $(CFLAGS)
2023-01-31 21:02:18 +07:00
TARGET ?= bpfel,bpfeb
OUTPUT ?= dae
MAX_MATCH_SET_LEN ?= 64
CFLAGS := -DMAX_MATCH_SET_LEN=$(MAX_MATCH_SET_LEN) $(CFLAGS)
2023-03-17 14:37:12 +07:00
NOSTRIP ?= n
2023-03-17 14:56:55 +07:00
STRIP_PATH := $(shell command -v $(STRIP) 2>/dev/null)
2023-03-17 14:37:12 +07:00
ifeq ($(strip $(NOSTRIP)),y)
STRIP_FLAG := -no-strip
2023-03-17 14:56:55 +07:00
else ifeq ($(wildcard $(STRIP_PATH)),)
STRIP_FLAG := -no-strip
2023-03-17 14:37:12 +07:00
else
STRIP_FLAG := -strip=$(STRIP_PATH)
2023-03-17 14:37:12 +07:00
endif
2023-01-27 01:10:27 +07:00
2023-06-04 10:38:05 +07:00
# Do NOT remove the line below. This line is for CI.
2023-04-01 23:10:37 +07:00
#export GOMODCACHE=$(PWD)/go-mod
2023-01-27 01:10:27 +07:00
# Get version from .git.
date=$(shell git log -1 --format="%cd" --date=short | sed s/-//g)
count=$(shell git rev-list --count HEAD)
commit=$(shell git rev-parse --short HEAD)
ifeq ($(wildcard .git/.),)
2023-01-28 12:52:31 +07:00
VERSION ?= unstable-0.nogit
2023-01-27 01:10:27 +07:00
else
2023-01-28 12:52:31 +07:00
VERSION ?= unstable-$(date).r$(count).$(commit)
2023-01-27 01:10:27 +07:00
endif
2023-01-23 18:54:21 +07:00
.PHONY: clean-ebpf ebpf dae submodule submodules
2023-01-23 19:01:24 +07:00
## Begin Dae Build
dae: export GOOS=linux
dae: ebpf
2023-03-14 14:01:55 +07:00
go build -o $(OUTPUT) -trimpath -ldflags "-s -w -X github.com/daeuniverse/dae/cmd.Version=$(VERSION) -X github.com/daeuniverse/dae/common/consts.MaxMatchSetLen_=$(MAX_MATCH_SET_LEN)" .
## End Dae Build
2023-01-23 18:54:21 +07:00
## Begin Git Submodules
.gitmodules.d.mk: .gitmodules
2023-06-09 21:10:21 +07:00
@set -e && \
submodules=$$(grep '\[submodule "' .gitmodules | cut -d'"' -f2 | tr '\n' ' ') && \
echo "submodule_paths=$${submodules}" > $@
-include .gitmodules.d.mk
$(submodule_paths): .gitmodules.d.mk
git submodule update --init --recursive -- $@ && \
touch $@
submodule submodules: $(submodule_paths)
@if [ -z "$(submodule_paths)" ]; then \
2023-06-09 21:10:21 +07:00
rm -f .gitmodules.d.mk; \
echo "Failed to generate submodules list. Please try again."; \
exit 1; \
fi
## End Git Submodules
## Begin Ebpf
2023-06-04 10:38:05 +07:00
clean-ebpf:
2023-02-18 17:31:40 +07:00
@rm -f control/bpf_bpf*.go && \
2023-02-07 22:49:30 +07:00
rm -f control/bpf_bpf*.o
fmt:
go fmt ./...
2023-01-31 17:33:47 +07:00
2023-01-23 18:54:21 +07:00
# $BPF_CLANG is used in go:generate invocations.
2023-01-23 19:01:24 +07:00
ebpf: export BPF_CLANG := $(CLANG)
2023-03-17 14:37:12 +07:00
ebpf: export BPF_STRIP_FLAG := $(STRIP_FLAG)
2023-01-23 19:01:24 +07:00
ebpf: export BPF_CFLAGS := $(CFLAGS)
2023-01-31 19:25:55 +07:00
ebpf: export BPF_TARGET := $(TARGET)
ebpf: submodule clean-ebpf
2023-02-18 17:31:40 +07:00
@unset GOOS && \
2023-01-28 17:32:42 +07:00
unset GOARCH && \
unset GOARM && \
2023-03-17 14:56:55 +07:00
echo $(STRIP_FLAG) && \
2023-02-07 22:49:30 +07:00
go generate ./control/control.go
## End Ebpf