93 lines
2.5 KiB
Makefile
93 lines
2.5 KiB
Makefile
.POSIX:
|
|
.SUFFIXES: .o .c
|
|
|
|
LIBRARY = libqbe.a
|
|
HEADER = libqbe.h
|
|
|
|
PREFIX = /usr/local
|
|
LIBDIR = $(PREFIX)/lib
|
|
INCDIR = $(PREFIX)/include
|
|
|
|
COMMOBJ = libqbe.o util.o parse.o abi.o cfg.o mem.o ssa.o alias.o load.o \
|
|
copy.o fold.o simpl.o live.o spill.o rega.o emit.o
|
|
AMD64OBJ = amd64/targ.o amd64/sysv.o amd64/isel.o amd64/emit.o
|
|
ARM64OBJ = arm64/targ.o arm64/abi.o arm64/isel.o arm64/emit.o
|
|
RV64OBJ = rv64/targ.o rv64/abi.o rv64/isel.o rv64/emit.o
|
|
OBJ = $(COMMOBJ) $(AMD64OBJ) $(ARM64OBJ) $(RV64OBJ)
|
|
|
|
SRCALL = $(OBJ:.o=.c)
|
|
|
|
CC = cc
|
|
AR = ar
|
|
CFLAGS = -std=gnu99 -g -Wall -Wextra -Wpedantic
|
|
|
|
libqbe.a: $(OBJ)
|
|
$(AR) rcs $@ $(OBJ)
|
|
|
|
.c.o:
|
|
$(CC) $(CFLAGS) -c $< -o $@
|
|
|
|
$(OBJ): qbe/all.h qbe/ops.h
|
|
$(AMD64OBJ): amd64/all.h
|
|
$(ARM64OBJ): arm64/all.h
|
|
$(RV64OBJ): rv64/all.h
|
|
libqbe.o: qbe/config.h
|
|
|
|
qbe/config.h:
|
|
@case `uname` in \
|
|
*Darwin*) \
|
|
case `uname -m` in \
|
|
*arm64*) \
|
|
echo "#define Deftgt T_arm64_apple";\
|
|
;; \
|
|
*) \
|
|
echo "#define Deftgt T_amd64_apple";\
|
|
;; \
|
|
esac \
|
|
;; \
|
|
*) \
|
|
case `uname -m` in \
|
|
*aarch64*|*arm64*) \
|
|
echo "#define Deftgt T_arm64"; \
|
|
;; \
|
|
*riscv64*) \
|
|
echo "#define Deftgt T_rv64"; \
|
|
;; \
|
|
*) \
|
|
echo "#define Deftgt T_amd64_sysv";\
|
|
;; \
|
|
esac \
|
|
;; \
|
|
esac > $@
|
|
|
|
install: $(LIBRARY) $(HEADER)
|
|
mkdir -p "$(DESTDIR)$(LIBDIR)"
|
|
cp "$(LIBRARY)" "$(DESTDIR)$(LIBDIR)/"
|
|
cp -r "$(HEADER)" "qbe/" "$(DESTDIR)$(INCDIR)/"
|
|
|
|
uninstall:
|
|
rm -f "$(DESTDIR)$(LIBDIR)/$(LIBRARY)" "$(DESTDIR)$(INCDIR)/$(HEADER)" "$(DESTDIR)$(INCDIR)/qbe"
|
|
|
|
clean:
|
|
rm -r *.o */*.o
|
|
|
|
clean-gen: clean
|
|
rm -f qbe/config.h
|
|
|
|
src:
|
|
@echo $(SRCALL)
|
|
|
|
80:
|
|
@for F in $(SRCALL); \
|
|
do \
|
|
awk "{ \
|
|
gsub(/\\t/, \" \"); \
|
|
if (length(\$$0) > $@) \
|
|
printf(\"$$F:%d: %s\\n\", NR, \$$0); \
|
|
}" < $$F; \
|
|
done
|
|
|
|
wc:
|
|
@wc -l $(SRCALL)
|
|
|
|
.PHONY: clean clean-gen check check-arm64 check-rv64 src 80 wc install uninstall
|