/
Makefile
139 lines (110 loc) · 3.81 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
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
VERSION=$(shell echo `git describe --tags`)
#PREFIX=/opt/imgflo
PREFIX=$(shell echo `pwd`/install)
FLAGS=-Wall -Werror -std=c99 -O3
#DEBUG=
DEBUGPROG=
PORT=3569
EXTPORT=$(PORT)
#GRAPH=graphs/checker.json
#TESTS=
#HOST=localhost
ifneq ("$(wildcard /app)","")
# Heroku build. TODO: find better way to detect
RELOCATE_DEPS:=true
endif
ifdef DEBUG
FLAGS+=-g
endif
ifdef RELOCATE_DEPS
PKGCONFIG_ARGS:=--define-variable=prefix=$(PREFIX)
else
PKGCONFIG_ARGS:=
endif
LIBS=gegl-0.3 libsoup-2.4
SYSTEM_LIBS=gio-unix-2.0 json-glib-1.0 libpng
DEPS=$(shell $(PREFIX)/env.sh pkg-config $(PKGCONFIG_ARGS) --libs --cflags $(LIBS))
DEPS+=$(shell $(PREFIX)/env.sh pkg-config --libs --cflags $(SYSTEM_LIBS))
DEPS_VERSION=112
TRAVIS_DEPENDENCIES="https://github.com/imgflo/imgflo-dependencies/releases/download/${DEPS_VERSION}/imgflo-dependencies-travis-${TRAVIS_OS_NAME}.tgz"
RUN_ARGUMENTS:=--port $(PORT) --external-port=$(EXTPORT)
ifdef NOAUTOLAUNCH
else
RUN_ARGUMENTS+=--autolaunch
endif
ifdef GRAPH
RUN_ARGUMENTS+=--graph $(GRAPH)
endif
ifdef HOST
RUN_ARGUMENTS+=--host $(HOST)
endif
ifdef TESTS
TEST_ARGUMENTS=--grep $(TESTS)
endif
OS:=$(shell uname)
ifeq "$(OS)" "Darwin"
SHAREDLIB_SUFFIX=dylib
else
SHAREDLIB_SUFFIX=so
endif
all: install
run-noinstall:
$(PREFIX)/env.sh $(DEBUGPROG) ./bin/imgflo-runtime $(RUN_ARGUMENTS)
run: install run-noinstall
process: install
$(PREFIX)/env.sh $(DEBUGPROG) ./bin/imgflo $(PROCESS_ARGUMENTS)
install: env imgflo imgflo-runtime imgflo-graphinfo imgflo-stat
cp ./bin/imgflo $(PREFIX)/bin/
cp ./bin/imgflo-runtime $(PREFIX)/bin/
cp ./bin/imgflo-graphinfo $(PREFIX)/bin/
cp ./bin/imgflo-stat $(PREFIX)/bin/
imgflo:
$(PREFIX)/env.sh $(CC) -o ./bin/imgflo bin/imgflo.c -I. $(FLAGS) $(DEPS)
imgflo-graphinfo:
$(PREFIX)/env.sh $(CC) -o ./bin/imgflo-graphinfo bin/imgflo-graphinfo.c -I. $(FLAGS) $(DEPS)
imgflo-stat:
$(PREFIX)/env.sh $(CC) -o ./bin/imgflo-stat bin/imgflo-stat.c -I. $(FLAGS) $(DEPS)
imgflo-runtime:
$(PREFIX)/env.sh $(CC) -o ./bin/imgflo-runtime bin/imgflo-runtime.c -I. $(FLAGS) $(DEPS)
env:
mkdir -p $(PREFIX) || true
sed -e 's|@PREFIX@|$(PREFIX)|' env.sh.in > $(PREFIX)/env.sh
chmod +x $(PREFIX)/env.sh
travis-deps:
wget -O imgflo-dependencies.tgz $(TRAVIS_DEPENDENCIES)
tar -xf imgflo-dependencies.tgz
COMPONENTINSTALLDIR=$(PREFIX)/lib/imgflo/operations
COMPONENT_SOURCES = $(wildcard $(COMPONENTDIR)/*.c)
COMPONENT_PLUGINS = $(patsubst $(COMPONENTDIR)/%.c,$(COMPONENTINSTALLDIR)/%.$(SHAREDLIB_SUFFIX),$(COMPONENT_SOURCES))
COMPONENT_OUT = $(patsubst %.c,$(COMPONENTINSTALLDIR)/%.$(SHAREDLIB_SUFFIX),$(COMPONENT))
COMPONENT_FLAGS = -shared -rdynamic -fPIC -I$(COMPONENTDIR) $(FLAGS)
ifdef COMPONENT_NAME_PREFIX
COMPONENT_FLAGS += -DIMGFLO_OP_NAME\(orig\)=\"$(COMPONENT_NAME_PREFIX)\"orig\"$(COMPONENT_NAME_SUFFIX)\"
endif
ifdef COMPONENT_CNAME
COMPONENT_FLAGS += -DGEGL_OP_NAME=$(COMPONENT_CNAME)
endif
component-install-dir: env
rm -rf $(COMPONENTINSTALLDIR)
mkdir -p $(COMPONENTINSTALLDIR) || true
components: component-install-dir $(COMPONENT_PLUGINS)
component: component-install-dir $(COMPONENT_OUT)
$(COMPONENTINSTALLDIR)/%.$(SHAREDLIB_SUFFIX): $(COMPONENTDIR)/%.c
$(PREFIX)/env.sh $(CC) -o $@ $< -DGEGL_OP_C_FILE=\"`basename $<`\" $(COMPONENT_FLAGS) $(DEPS)
dependencies:
cd dependencies && make PREFIX=$(PREFIX) dependencies
babl:
cd dependencies && make PREFIX=$(PREFIX) babl
gegl:
cd dependencies && make PREFIX=$(PREFIX) gegl
libsoup:
cd dependencies && make PREFIX=$(PREFIX) libsoup
glib:
cd dependencies && make PREFIX=$(PREFIX) glib
check: install
$(PREFIX)/env.sh ./node_modules/.bin/mocha --reporter spec --compilers .coffee:coffee-script/register ./spec/*.coffee $(TEST_ARGUMENTS)
clean:
git clean -dfx --exclude node_modules --exclude install
release: check
cd $(PREFIX) && tar -czf ../imgflo-$(VERSION).tgz ./
.PHONY:all check release imgflo imgflo-graphinfo imgflo-runtime run dependencies