B = bin O = obj S = src E = ext PKGS = glib-2.0 gtk+-3.0 LIBS = $(shell pkg-config --libs $(PKGS)) -lGL -lc LIBFLAGS = $(shell pkg-config --cflags $(PKGS)) BITS = 64 AS = nasm ASFLAGS = CFLAGS = -m$(BITS) -Os -fomit-frame-pointer -fno-unwind-tables -ffast-math -march=haswell -ffunction-sections -fdata-sections CFLAGS += $(LIBFLAGS) SMOLCFLAGS = -no-pie -fno-PIE -fno-PIC -fno-plt -fno-stack-protector -fno-stack-check BOLDFLAGS = -no-pie -fno-PIE -fno-PIC -fno-plt COMPRESS = xz -c -9e --format=lzma --lzma1=preset=9,lc=1,lp=0,pb=0 .PHONY: all clean all: $(B)/demo clean: @rm -rfv $(B) $(O) $(B)/demo: $(B)/demo.o.smol.vondehi cp $< $@ $(B)/demo.o: $(O)/main.o .SECONDARY: $(B)/%.fishypack: $(B)/% $(O)/fishypack $(COMPRESS) $< | cat $(O)/fishypack - > $@ chmod +x $@ $(B)/%.vondehi: $(B)/% $(O)/vondehi $(COMPRESS) $< | cat $(O)/vondehi - > $@ chmod +x $@ $(B)/%.smol: CFLAGS += $(SMOLCFLAGS) $(B)/%.smol: $(B)/% $(E)/smol/smold $(LDFLAGS) $(LIBS) $(filter %.o,$^) -o $@ $(B)/%.bold: CFLAGS += $(BOLDFLAGS) $(B)/%.bold: $(B)/% ln -sf ./ext/bold/runtime/bold_ibh*.o . ./ext/bold/bold -c -a $(LIBS) $(filter %.o,$^) -o $@ rm -f bold_ibh*.o $(B)/%.full: $(B)/%.o $(CC) $< $(LDFLAGS) $(LIBS) -o $@ $(B)/%.o: | $(B)/ $(LD) -r $(filter %.o,$^) -o $@ $(O)/fishypack: $(E)/fishypack/packer/header-64.asm | $(O)/ $(MAKE) -C $(E)/fishypack/packer header-64 cp $(E)/fishypack/packer/header-64 $@ $(O)/vondehi: $(E)/vondehi/vondehi.asm | $(O)/ $(MAKE) -C $(E)/vondehi vondehi cp $(E)/vondehi/vondehi $@ $(O)/%.o: $(S)/%.c | $(O)/ $(CC) $(CFLAGS) -c $< -o $@ $(B)/ $(O)/: @mkdir -vp $@