summaryrefslogtreecommitdiffstats
path: root/Makefile
blob: e96db00f45627d5a311ccee68df60d7b7b8b9b64 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
#####################################################################
# kd-forest                                                         #
# Copyright (C) 2014 Tavian Barnes <tavianator@tavianator.com>      #
#                                                                   #
# This program is free software. It comes without any warranty, to  #
# the extent permitted by applicable law. You can redistribute it   #
# and/or modify it under the terms of the Do What The Fuck You Want #
# To Public License, Version 2, as published by Sam Hocevar. See    #
# the COPYING file or http://www.wtfpl.net/ for more details.       #
#####################################################################

CC = gcc
CFLAGS = -std=c99 -D_POSIX_C_SOURCE=200809L -pipe -g -O3 -flto -Wall -Wpedantic -Wextra -Wno-sign-compare -Wno-unused-parameter -Wunreachable-code -Wshadow -Wpointer-arith -Wwrite-strings -Wcast-align -Wstrict-prototypes
LDFLAGS = -Wl,-O1,--sort-common,--as-needed,-z,relro
LIBS = -lm -lpng
RM = rm -f

DEPS = Makefile color.h kd-forest.h options.h util.h

IMAGEFLAGS = -b 24 -s -l min -c Lab
ANIMFLAGS = -b 19 -s -l mean -c Lab

kd-forest: color.o kd-forest.o main.o options.o util.o
	$(CC) $(CFLAGS) $(LDFLAGS) $^ $(LIBS) -o kd-forest

%.o: %.c $(DEPS)
	$(CC) $(CFLAGS) -c $< -o $@

image: kd-forest.png

kd-forest.png: kd-forest
	./kd-forest $(IMAGEFLAGS) -o kd-forest.png

anim: kd-forest.mkv

kd-forest.mkv: kd-forest
	$(RM) kd-forest.mkv
	mkdir /tmp/kd-frames
	./kd-forest $(ANIMFLAGS) -a -o /tmp/kd-frames
	ffmpeg -r 60 -i /tmp/kd-frames/%04d.png -c:v libx264 -preset veryslow -qp 0 kd-forest.mkv
	$(RM) -r /tmp/kd-frames

clean:
	$(RM) *.o
	$(RM) kd-forest
	$(RM) -r frames

.PHONY: image anim clean