Ground-Zerro / HydraRoute Public
Code Issues Pull requests Actions Releases View on GitHub ↗
2.4 KB makefile
PROJECT = hrneo
VERSION = 3.11.0-1

CC_MIPSEL   = mipsel-linux-gnu-gcc
CC_MIPS     = mips-linux-gnu-gcc
CC_AARCH64  = aarch64-linux-gnu-gcc
CC_NATIVE   = gcc

COMMON_CFLAGS = -Os -Wall -Wextra -Wno-unused-parameter \
                -ffunction-sections -fdata-sections \
                -fno-unwind-tables -fno-asynchronous-unwind-tables \
                -fomit-frame-pointer \
                -fno-strict-aliasing \
                -DVERSION=\"$(VERSION)\" \
                -Iinclude

COMMON_LDFLAGS = -Wl,--gc-sections -s

CFLAGS_MIPSEL  = $(COMMON_CFLAGS) -march=mips32r2 -mtune=1004kc -EL \
                 -mno-check-zero-division -mno-shared -mno-plt
CFLAGS_MIPS    = $(COMMON_CFLAGS) -march=mips32r2 -mtune=1004kc \
                 -mno-check-zero-division -mno-shared -mno-plt
CFLAGS_AARCH64 = $(COMMON_CFLAGS) -march=armv8-a \
                 -mno-outline-atomics -fno-exceptions
CFLAGS_NATIVE  = $(COMMON_CFLAGS)

LDFLAGS_STATIC  = $(COMMON_LDFLAGS) -static -static-libgcc
LDFLAGS_AARCH64 = $(LDFLAGS_STATIC) -Wl,--strip-all -Wl,-z,norelro
LDFLAGS_DYNAMIC = $(COMMON_LDFLAGS)

LIBS =

SRCS = src/main.c src/util.c src/log.c src/config.c src/args.c src/params.c src/watchlist.c src/ipset_nl.c src/dns.c src/packet_capture.c src/iptables.c src/signal_handler.c src/rci.c src/conntrack.c src/geodat.c src/routing.c src/probe_tls.c src/probe_http.c src/bogon.c src/nfq_capture.c src/l7_dispatch.c src/l7_firewall.c src/tcp_reasm.c

.PHONY: all clean mipsel mips aarch64 native

all: mipsel mips aarch64

mipsel: CC = $(CC_MIPSEL)
mipsel: CFLAGS = $(CFLAGS_MIPSEL)
mipsel: LDFLAGS = $(LDFLAGS_STATIC)
mipsel: build/$(PROJECT)-mipsel

mips: CC = $(CC_MIPS)
mips: CFLAGS = $(CFLAGS_MIPS)
mips: LDFLAGS = $(LDFLAGS_STATIC)
mips: build/$(PROJECT)-mips

aarch64: CC = $(CC_AARCH64)
aarch64: CFLAGS = $(CFLAGS_AARCH64)
aarch64: LDFLAGS = $(LDFLAGS_AARCH64)
aarch64: build/$(PROJECT)-aarch64

native: CC = $(CC_NATIVE)
native: CFLAGS = $(CFLAGS_NATIVE)
native: LDFLAGS = $(LDFLAGS_DYNAMIC)
native: build/$(PROJECT)

build/$(PROJECT): $(SRCS)
	@mkdir -p build
	$(CC) $(CFLAGS) $(SRCS) -o $@ $(LDFLAGS) $(LIBS)

build/$(PROJECT)-mipsel: $(SRCS)
	@mkdir -p build
	$(CC) $(CFLAGS) $(SRCS) -o $@ $(LDFLAGS) $(LIBS)

build/$(PROJECT)-mips: $(SRCS)
	@mkdir -p build
	$(CC) $(CFLAGS) $(SRCS) -o $@ $(LDFLAGS) $(LIBS)

build/$(PROJECT)-aarch64: $(SRCS)
	@mkdir -p build
	$(CC) $(CFLAGS) $(SRCS) -o $@ $(LDFLAGS) $(LIBS)

clean:
	rm -rf build/