CC=gcc
CFLAGS=-Wall -Wextra -pedantic -std=gnu99 -g
LDFLAGS=-lm
PROGRAMS=random_ids id_query_naive id_query_indexed id_query_binsort coord_query_naive coord_query_kdtree
TESTS=..

.PHONY: all test clean ../src.zip

all: $(PROGRAMS)

random_ids: random_ids.o record.o
	gcc -o $@ $^ $(LDFLAGS)

id_query_%: id_query_%.o record.o id_query.o
	gcc -o $@ $^ $(LDFLAGS)

coord_query_%: coord_query_%.o record.o coord_query.o
	gcc -o $@ $^ $(LDFLAGS)

id_query.o: id_query.c
	$(CC) -c $< $(CFLAGS)

coord_query.o: coord_query.c
	$(CC) -c $< $(CFLAGS)

record.o: record.c
	$(CC) -c $< $(CFLAGS)

sort.o: sort.c
	$(CC) -c $< $(CFLAGS)

test: $(TESTS)
	@set e; for test in $(TESTS); do echo ./$$test; ./$$test; done

clean:
	rm -rf core *.o $(PROGRAMS)

planet-latest-geonames.tsv:
	wget https://github.com/OSMNames/OSMNames/releases/download/v2.0.4/planet-latest_geonames.tsv.gz
	gunzip planet-latest_geonames.tsv.gz

../src.zip:
	make clean
	cd .. && zip src.zip -r src

.SECONDARY:
