2024-03-25 14:15:03 -05:00
|
|
|
QDL := qdl
|
|
|
|
|
RAMDUMP := qdl-ramdump
|
2025-02-04 20:19:48 +00:00
|
|
|
VERSION := $(or $(VERSION), $(shell git describe --dirty --always --tags 2>/dev/null), "unknown-version")
|
2016-07-08 11:26:26 -07:00
|
|
|
|
2025-12-19 23:54:58 +00:00
|
|
|
PKG_CONFIG ?= pkg-config
|
|
|
|
|
CFLAGS += -O2 -Wall -g `$(PKG_CONFIG) --cflags libxml-2.0 libusb-1.0`
|
|
|
|
|
LDFLAGS += `$(PKG_CONFIG) --libs libxml-2.0 libusb-1.0`
|
2025-03-27 15:41:04 +01:00
|
|
|
ifeq ($(OS),Windows_NT)
|
|
|
|
|
LDFLAGS += -lws2_32
|
|
|
|
|
endif
|
2017-11-06 22:55:11 -08:00
|
|
|
prefix := /usr/local
|
2016-07-08 11:26:26 -07:00
|
|
|
|
2025-09-07 21:18:14 -05:00
|
|
|
QDL_SRCS := firehose.c io.c qdl.c sahara.c util.c patch.c program.c read.c sha2.c sim.c ufs.c usb.c ux.c oscompat.c vip.c sparse.c gpt.c
|
2024-03-25 14:15:03 -05:00
|
|
|
QDL_OBJS := $(QDL_SRCS:.c=.o)
|
|
|
|
|
|
2025-04-22 16:37:28 +02:00
|
|
|
RAMDUMP_SRCS := ramdump.c sahara.c io.c sim.c usb.c util.c ux.c oscompat.c
|
2024-03-25 14:15:03 -05:00
|
|
|
RAMDUMP_OBJS := $(RAMDUMP_SRCS:.c=.o)
|
2016-07-08 11:26:26 -07:00
|
|
|
|
2023-01-24 17:00:10 +00:00
|
|
|
KS_OUT := ks
|
2025-05-02 09:16:25 -04:00
|
|
|
KS_SRCS := ks.c sahara.c util.c ux.c oscompat.c
|
2023-01-24 17:00:10 +00:00
|
|
|
KS_OBJS := $(KS_SRCS:.c=.o)
|
|
|
|
|
|
2025-09-16 21:20:47 -05:00
|
|
|
CHECKPATCH_SOURCES := $(shell find . -type f \( -name "*.c" -o -name "*.h" -o -name "*.sh" \) ! -name "sha2.c" ! -name "sha2.h" ! -name "*version.h" ! -name "list.h")
|
2025-06-24 06:51:22 +02:00
|
|
|
CHECKPATCH_ROOT := https://raw.githubusercontent.com/torvalds/linux/v6.15/scripts
|
|
|
|
|
CHECKPATCH_URL := $(CHECKPATCH_ROOT)/checkpatch.pl
|
|
|
|
|
CHECKPATCH_SP_URL := $(CHECKPATCH_ROOT)/spelling.txt
|
|
|
|
|
CHECKPATCH := ./.scripts/checkpatch.pl
|
|
|
|
|
CHECKPATCH_SP := ./.scripts/spelling.txt
|
|
|
|
|
|
2025-09-13 23:14:16 -07:00
|
|
|
MANPAGES := ks.1 qdl-ramdump.1 qdl.1
|
|
|
|
|
|
2025-03-19 16:02:11 +02:00
|
|
|
default: $(QDL) $(RAMDUMP) $(KS_OUT)
|
2023-01-24 17:00:10 +00:00
|
|
|
|
2024-03-25 14:15:03 -05:00
|
|
|
$(QDL): $(QDL_OBJS)
|
|
|
|
|
$(CC) -o $@ $^ $(LDFLAGS)
|
|
|
|
|
|
|
|
|
|
$(RAMDUMP): $(RAMDUMP_OBJS)
|
2016-07-08 11:26:26 -07:00
|
|
|
$(CC) -o $@ $^ $(LDFLAGS)
|
|
|
|
|
|
2023-01-24 17:00:10 +00:00
|
|
|
$(KS_OUT): $(KS_OBJS)
|
|
|
|
|
$(CC) -o $@ $^ $(LDFLAGS)
|
|
|
|
|
|
2024-03-25 14:15:03 -05:00
|
|
|
compile_commands.json: $(QDL_SRCS) $(KS_SRCS)
|
2024-03-25 09:50:59 -05:00
|
|
|
@echo -n $^ | jq -snR "[inputs|split(\" \")[]|{directory:\"$(PWD)\", command: \"$(CC) $(CFLAGS) -c \(.)\", file:.}]" > $@
|
|
|
|
|
|
2025-09-13 23:14:16 -07:00
|
|
|
manpages: $(KS_OUT) $(RAMDUMP) $(QDL)
|
|
|
|
|
help2man -N -n "KS" -o ks.1 ./ks
|
|
|
|
|
help2man -N -n "Qualcomm Download" -o qdl.1 ./qdl
|
|
|
|
|
help2man -N -n "Qualcomm Download Ramdump" -o qdl-ramdump.1 ./qdl-ramdump
|
|
|
|
|
|
2025-03-19 16:02:11 +02:00
|
|
|
version.h::
|
2025-02-04 20:18:57 +00:00
|
|
|
@echo "#define VERSION \"$(VERSION)\"" > .version.h
|
2025-01-17 10:13:08 +01:00
|
|
|
@cmp -s .version.h version.h || cp .version.h version.h
|
|
|
|
|
|
2025-03-19 16:02:11 +02:00
|
|
|
util.o: version.h
|
2025-01-17 10:13:08 +01:00
|
|
|
|
2016-07-08 11:26:26 -07:00
|
|
|
clean:
|
2024-03-25 14:15:03 -05:00
|
|
|
rm -f $(QDL) $(QDL_OBJS)
|
|
|
|
|
rm -f $(RAMDUMP) $(RAMDUMP_OBJS)
|
2023-01-24 17:00:10 +00:00
|
|
|
rm -f $(KS_OUT) $(KS_OBJS)
|
2025-09-13 23:14:16 -07:00
|
|
|
rm -f $(MANPAGES)
|
2024-03-25 09:50:59 -05:00
|
|
|
rm -f compile_commands.json
|
2025-01-17 10:13:08 +01:00
|
|
|
rm -f version.h .version.h
|
2025-06-24 06:51:22 +02:00
|
|
|
rm -f $(CHECKPATCH)
|
|
|
|
|
rm -f $(CHECKPATCH_SP)
|
|
|
|
|
if [ -d .scripts ]; then rmdir .scripts; fi
|
2017-11-06 22:55:11 -08:00
|
|
|
|
2024-03-25 14:15:03 -05:00
|
|
|
install: $(QDL) $(RAMDUMP) $(KS_OUT)
|
2023-02-21 04:55:09 +00:00
|
|
|
install -d $(DESTDIR)$(prefix)/bin
|
|
|
|
|
install -m 755 $^ $(DESTDIR)$(prefix)/bin
|
2025-06-16 14:33:56 +02:00
|
|
|
|
|
|
|
|
tests: default
|
|
|
|
|
tests:
|
|
|
|
|
@./tests/run_tests.sh
|
2025-06-24 06:51:22 +02:00
|
|
|
|
|
|
|
|
# Target to download checkpatch.pl if not present
|
|
|
|
|
$(CHECKPATCH):
|
|
|
|
|
@echo "Downloading checkpatch.pl..."
|
|
|
|
|
@mkdir -p $(dir $(CHECKPATCH))
|
|
|
|
|
@curl -sSfL $(CHECKPATCH_URL) -o $(CHECKPATCH)
|
|
|
|
|
@curl -sSfL $(CHECKPATCH_SP_URL) -o $(CHECKPATCH_SP)
|
|
|
|
|
@chmod +x $(CHECKPATCH)
|
|
|
|
|
|
|
|
|
|
check: $(CHECKPATCH)
|
|
|
|
|
@echo "Running checkpatch on source files (excluding sha2.c and sha2.h)..."
|
|
|
|
|
@for file in $(CHECKPATCH_SOURCES); do \
|
|
|
|
|
perl $(CHECKPATCH) --no-tree -f $$file || exit 1; \
|
|
|
|
|
done
|
|
|
|
|
|
|
|
|
|
check-cached: $(CHECKPATCH)
|
|
|
|
|
@echo "Running checkpatch on staged changes..."
|
2025-06-25 15:24:18 +02:00
|
|
|
@git diff --cached -- . | perl $(CHECKPATCH) --no-tree -
|