This repository has been archived by the owner on Jun 2, 2024. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathMakefile
101 lines (80 loc) · 2.24 KB
/
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
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
SHELL:=/bin/bash
ifneq (, $(shell which gcc-8))
CC := gcc-8
endif
ifneq (, $(shell which g++-8))
CXX := g++-8
endif
LDLIBS += -lcurl -lm -leccodes -lnetcdf -lwebsockets -lcbor -lpthread
CPPFLAGS += -O3 -Isrc -fms-extensions
# LDLIBS += -lmongoc-1.0 -lbson-1.0
# CPPFLAGS += -I/usr/include/libmongoc-1.0/ -I/usr/include/libbson-1.0/
CPPFLAGS += -MMD -MP -MF [email protected]
CFLAGS += -std=gnu11 -fplan9-extensions
CXXFLAGS += -std=c++14
SRC = $(wildcard src/*.c* src/*/*.c*)
OBJ = $(patsubst %,build/%.o,$(SRC))
BIN = $(patsubst apps/%,bin/%,$(basename $(wildcard apps/*.c*)))
all: $(BIN)
bin/%: apps/%.* $(OBJ)
mkdir -p $(@D)
$(CXX) $(CPPFLAGS) $(CXXFLAGS) $^ $(LDLIBS) -o $@
build/%.cpp.o: %.cpp
mkdir -p $(@D)
$(CXX) $(CPPFLAGS) $(CXXFLAGS) -c $< -o $@
build/%.c.o: %.c
mkdir -p $(@D)
$(CC) $(CPPFLAGS) $(CFLAGS) -c $< -o $@
.PRECIOUS: $(OBJ)
-include $(OBJ:%.o=%.o.d)
.PHONY: %.d
.PHONY: clean
clean:
rm -rf build/ bin/
DATA_DIR ?= ./data/
MONTHS := $(shell d="1979-01-02"; until [[ $$d > "2011-04-01" ]]; do echo "$$(date +%Y%m -d $$d)"; d=$$(date -I -d "$$d + 1 month"); done)
FIELDS := ocnu5 ocnv5 wnd10m.l
.PHONY: grb2 nc
grb2 nc: %: $(foreach month,$(MONTHS),$(foreach field,$(FIELDS),$(DATA_DIR)/$(field).gdas.$(month).%))
%.grb2:
-mkdir -p $(@D); \
YYYYMM=$$(echo "$@" | rev | cut -d. -f2 | rev); \
cd $(@D) && curl -O ftp://nomads.ncdc.noaa.gov/CFSR/HP_time_series/$$YYYYMM/$(notdir $@)
%.nc:
$(MAKE) $*.grb2
grib_to_netcdf -T -I type -k3 -o $@ $*.grb2
rm $*.grb2
.PHONY: npm
npm:
cd www; npm i
.PHONY: deps
deps:
sudo apt-get install gcc-8 g++-8 libeccodes-dev libeccodes-tools libnetcdf-dev libcbor-dev cmake libssl1.0-dev nodejs-dev npm
$(MAKE) libwebsockets
$(MAKE) nlohmann-json
$(MAKE) npm
.PHONY: install
install: all
sudo cp bin/sailing /usr/bin/
.PHONY: libwebsockets
libwebsockets:
mkdir -p build; cd build; \
git clone https://github.com/warmcat/libwebsockets; \
cd libwebsockets; \
git checkout v3.1.0; \
mkdir -p build; cd build; \
cmake ..; \
make -j8; \
sudo make install; \
sudo ldconfig
.PHONY: nlohmann-json
nlohmann-json:
mkdir -p build; cd build; \
git clone https://github.com/nlohmann/json; \
cd json; \
git checkout v3.6.1; \
mkdir -p build; cd build; \
cmake ..; \
make -j8; \
sudo make install; \
sudo ldconfig