2025-04-05 23:44:55 +02:00

44 lines
831 B
Makefile

TARGET = umdiff
C_OBJS = main.c.o rdiff.c.o compare.c.o file.c.o patch.c.o
OBJS = $(C_OBJS)
CMAKE := cmake
RAGEL := ragel
DOCOPT2RAGEL := docopt2ragel
LIBRSYNC_SOURCE := librsync
ifeq (,$(wildcard /usr/lib*/librsync.*))
CFLAGS += -I$(LIBRSYNC_SOURCE)/src
OBJS += librsync.a
else
LIBS += -lrsync
endif
$(TARGET): $(OBJS) usage.rl.h
$(CC) -o $@ $(OBJS) $(CFLAGS) $(LIBS)
usage.rl: USAGE
$(DOCOPT2RAGEL) USAGE > $@
%.rl.h: %.rl
$(RAGEL) $< -o $@
%.c.o: %.c
$(CC) -c $< -o $@ $(CFLAGS)
librsync:
git clone https://github.com/librsync/librsync
librsync.a: $(LIBRSYNC_SOURCE)
mkdir -p librsync.build
cd librsync.build && $(CMAKE) -DBUILD_SHARED_LIBS=0 $(shell realpath $(LIBRSYNC_SOURCE)) && make
mv librsync.build/librsync.a .
rm -rf librsync.build
clean:
rm -rf librsync $(OBJS) *.rl $(TARGET)
.PHONY: clean