-
Notifications
You must be signed in to change notification settings - Fork 6
/
Copy pathMakefile
36 lines (24 loc) · 992 Bytes
/
Makefile
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
CFLAGS = -fPIC -Isrc -std=c99 -pedantic -Wall -Wextra -Wno-unused-parameter -DACCEPT_USE_OF_DEPRECATED_PROJ_API_H
CC ?= gcc
NIF_LDFLAGS = -shared
ERLANG_PATH := $(shell erl -eval 'io:format("~s~n", [lists:concat([code:root_dir(), "/erts-", erlang:system_info(version), "/include"])])' -s init stop -noshell)
ERLANG_CFLAGS = -I$(ERLANG_PATH)
PROJ_LIBS = -lproj
UNAME_S := $(shell uname -s)
ifeq ($(UNAME_S),Darwin)
NIF_LDFLAGS += -flat_namespace -undefined suppress
endif
all: proj_nif.so geodesic_nif.so
proj_nif.so: priv/proj_nif.so
geodesic_nif.so: priv/geodesic_nif.so
priv/proj_nif.so: src/proj_nif.o src/utils.o
$(CC) $(CFLAGS) $^ -o $@ $(PROJ_LIBS) $(NIF_LDFLAGS)
priv/geodesic_nif.so: src/geodesic_nif.o src/utils.o
$(CC) $(CFLAGS) $^ -o $@ $(PROJ_LIBS) $(NIF_LDFLAGS)
src/%.o: src/%.c
$(CC) $(CFLAGS) -c $< -o $@ $(ERLANG_CFLAGS)
src/proj_nif.o: src/utils.h
src/geodesic_nif.o: src/utils.h
clean:
rm -rf src/*.o priv/*.so
.PHONY: all clean proj_nif.so geodesic_nif.so