Initial commit
[yaffs-website] / node_modules / node-sass / src / libsass / Makefile
1 OS       ?= $(shell uname -s)
2 CC       ?= gcc
3 CXX      ?= g++
4 RM       ?= rm -f
5 CP       ?= cp -a
6 MKDIR    ?= mkdir
7 RMDIR    ?= rmdir
8 WINDRES  ?= windres
9 # Solaris/Illumos flavors
10 # ginstall from coreutils
11 ifeq ($(OS),SunOS)
12 INSTALL  ?= ginstall
13 endif
14 INSTALL  ?= install
15 CFLAGS   ?= -Wall
16 CXXFLAGS ?= -Wall
17 LDFLAGS  ?= -Wall
18 ifeq "x$(COVERAGE)" "x"
19   CFLAGS   += -O2
20   CXXFLAGS += -O2
21   LDFLAGS  += -O2
22 else
23   CFLAGS   += -O1 -fno-omit-frame-pointer
24   CXXFLAGS += -O1 -fno-omit-frame-pointer
25   LDFLAGS  += -O1 -fno-omit-frame-pointer
26 endif
27 LDFLAGS  += -Wl,-undefined,error
28 CAT      ?= $(if $(filter $(OS),Windows_NT),type,cat)
29
30 ifneq (,$(findstring /cygdrive/,$(PATH)))
31         UNAME := Cygwin
32 else
33         ifneq (,$(findstring Windows_NT,$(OS)))
34                 UNAME := Windows
35         else
36                 ifneq (,$(findstring mingw32,$(MAKE)))
37                         UNAME := Windows
38                 else
39                         ifneq (,$(findstring MINGW32,$(shell uname -s)))
40                                 UNAME = Windows
41                         else
42                                 UNAME := $(shell uname -s)
43                         endif
44                 endif
45         endif
46 endif
47
48 ifeq ($(SASS_LIBSASS_PATH),)
49         SASS_LIBSASS_PATH = $(abspath $(CURDIR))
50 endif
51
52 ifeq ($(LIBSASS_VERSION),)
53         ifneq ($(wildcard ./.git/ ),)
54                 LIBSASS_VERSION ?= $(shell git describe --abbrev=4 --dirty --always --tags)
55         endif
56 endif
57
58 ifeq ($(LIBSASS_VERSION),)
59         ifneq ($(wildcard VERSION),)
60                 LIBSASS_VERSION ?= $(shell $(CAT) VERSION)
61         endif
62 endif
63
64 ifneq ($(LIBSASS_VERSION),)
65         CFLAGS   += -DLIBSASS_VERSION="\"$(LIBSASS_VERSION)\""
66         CXXFLAGS += -DLIBSASS_VERSION="\"$(LIBSASS_VERSION)\""
67 endif
68
69 # enable mandatory flag
70 ifeq (Windows,$(UNAME))
71         ifneq ($(BUILD),shared)
72                 STATIC_ALL     ?= 1
73         endif
74         STATIC_LIBGCC    ?= 1
75         STATIC_LIBSTDCPP ?= 1
76         CXXFLAGS += -std=gnu++0x
77         LDFLAGS  += -std=gnu++0x
78 else
79         STATIC_ALL       ?= 0
80         STATIC_LIBGCC    ?= 0
81         STATIC_LIBSTDCPP ?= 0
82         CXXFLAGS += -std=c++0x
83         LDFLAGS  += -std=c++0x
84 endif
85
86 ifneq ($(SASS_LIBSASS_PATH),)
87         CFLAGS   += -I $(SASS_LIBSASS_PATH)/include
88         CXXFLAGS += -I $(SASS_LIBSASS_PATH)/include
89 else
90         # this is needed for mingw
91         CFLAGS   += -I include
92         CXXFLAGS += -I include
93 endif
94
95 ifneq ($(EXTRA_CFLAGS),)
96         CFLAGS   += $(EXTRA_CFLAGS)
97 endif
98 ifneq ($(EXTRA_CXXFLAGS),)
99         CXXFLAGS += $(EXTRA_CXXFLAGS)
100 endif
101 ifneq ($(EXTRA_LDFLAGS),)
102         LDFLAGS  += $(EXTRA_LDFLAGS)
103 endif
104
105 LDLIBS = -lm
106
107 ifneq ($(BUILD),shared)
108         LDLIBS += -lstdc++
109 endif
110
111 # link statically into lib
112 # makes it a lot more portable
113 # increases size by about 50KB
114 ifeq ($(STATIC_ALL),1)
115         LDFLAGS += -static
116 endif
117 ifeq ($(STATIC_LIBGCC),1)
118         LDFLAGS += -static-libgcc
119 endif
120 ifeq ($(STATIC_LIBSTDCPP),1)
121         LDFLAGS += -static-libstdc++
122 endif
123
124 ifeq ($(UNAME),Darwin)
125         CFLAGS += -stdlib=libc++
126         CXXFLAGS += -stdlib=libc++
127         LDFLAGS += -stdlib=libc++
128 endif
129
130 ifneq (Windows,$(UNAME))
131         ifneq (FreeBSD,$(UNAME))
132                 ifneq (OpenBSD,$(UNAME))
133                         LDFLAGS += -ldl
134                         LDLIBS += -ldl
135                 endif
136         endif
137 endif
138
139 ifneq ($(BUILD),shared)
140         BUILD := static
141 endif
142 ifeq ($(DEBUG),1)
143         BUILD := debug-$(BUILD)
144 endif
145
146 ifeq (,$(TRAVIS_BUILD_DIR))
147         ifeq ($(OS),SunOS)
148                 PREFIX ?= /opt/local
149         else
150                 PREFIX ?= /usr/local
151         endif
152 else
153         PREFIX ?= $(TRAVIS_BUILD_DIR)
154 endif
155
156
157 SASS_SASSC_PATH ?= sassc
158 SASS_SPEC_PATH ?= sass-spec
159 SASS_SPEC_SPEC_DIR ?= spec
160 SASSC_BIN = $(SASS_SASSC_PATH)/bin/sassc
161 RUBY_BIN = ruby
162
163 LIB_STATIC = $(SASS_LIBSASS_PATH)/lib/libsass.a
164 LIB_SHARED = $(SASS_LIBSASS_PATH)/lib/libsass.so
165
166 ifeq (Windows,$(UNAME))
167         ifeq (shared,$(BUILD))
168                 CFLAGS     += -D ADD_EXPORTS
169                 CXXFLAGS   += -D ADD_EXPORTS
170                 LIB_SHARED  = $(SASS_LIBSASS_PATH)/lib/libsass.dll
171         endif
172 else
173         ifneq (Cygwin,$(UNAME))
174                 CFLAGS   += -fPIC
175                 CXXFLAGS += -fPIC
176                 LDFLAGS  += -fPIC
177         endif
178 endif
179
180 ifeq (Windows,$(UNAME))
181         SASSC_BIN = $(SASS_SASSC_PATH)/bin/sassc.exe
182 endif
183
184 include Makefile.conf
185
186 RESOURCES =
187 STATICLIB = lib/libsass.a
188 SHAREDLIB = lib/libsass.so
189 ifeq (Windows,$(UNAME))
190         RESOURCES += res/resource.rc
191         SHAREDLIB  = lib/libsass.dll
192         ifeq (shared,$(BUILD))
193                 CFLAGS    += -D ADD_EXPORTS
194                 CXXFLAGS  += -D ADD_EXPORTS
195         endif
196 else
197         ifneq (Cygwin,$(UNAME))
198                 CFLAGS   += -fPIC
199                 CXXFLAGS += -fPIC
200                 LDFLAGS  += -fPIC
201         endif
202 endif
203
204 OBJECTS = $(addprefix src/,$(SOURCES:.cpp=.o))
205 COBJECTS = $(addprefix src/,$(CSOURCES:.c=.o))
206 RCOBJECTS = $(RESOURCES:.rc=.o)
207
208 DEBUG_LVL ?= NONE
209
210 CLEANUPS ?=
211 CLEANUPS += $(RCOBJECTS)
212 CLEANUPS += $(COBJECTS)
213 CLEANUPS += $(OBJECTS)
214 CLEANUPS += $(LIBSASS_LIB)
215
216 all: $(BUILD)
217
218 debug: $(BUILD)
219
220 debug-static: LDFLAGS := -g $(filter-out -O2,$(LDFLAGS))
221 debug-static: CFLAGS := -g -DDEBUG -DDEBUG_LVL="$(DEBUG_LVL)" $(filter-out -O2,$(CFLAGS))
222 debug-static: CXXFLAGS := -g -DDEBUG -DDEBUG_LVL="$(DEBUG_LVL)" $(filter-out -O2,$(CXXFLAGS))
223 debug-static: static
224
225 debug-shared: LDFLAGS := -g $(filter-out -O2,$(LDFLAGS))
226 debug-shared: CFLAGS := -g -DDEBUG -DDEBUG_LVL="$(DEBUG_LVL)" $(filter-out -O2,$(CFLAGS))
227 debug-shared: CXXFLAGS := -g -DDEBUG -DDEBUG_LVL="$(DEBUG_LVL)" $(filter-out -O2,$(CXXFLAGS))
228 debug-shared: shared
229
230 lib:
231         $(MKDIR) lib
232
233 lib/libsass.a: lib $(COBJECTS) $(OBJECTS)
234         $(AR) rcvs $@ $(COBJECTS) $(OBJECTS)
235
236 lib/libsass.so: lib $(COBJECTS) $(OBJECTS)
237         $(CXX) -shared $(LDFLAGS) -o $@ $(COBJECTS) $(OBJECTS) $(LDLIBS)
238
239 lib/libsass.dll: lib $(COBJECTS) $(OBJECTS) $(RCOBJECTS)
240         $(CXX) -shared $(LDFLAGS) -o $@ $(COBJECTS) $(OBJECTS) $(RCOBJECTS) $(LDLIBS) -s -Wl,--subsystem,windows,--out-implib,lib/libsass.a
241
242 %.o: %.c
243         $(CC) $(CFLAGS) -c -o $@ $<
244
245 %.o: %.rc
246         $(WINDRES) -i $< -o $@
247
248 %.o: %.cpp
249         $(CXX) $(CXXFLAGS) -c -o $@ $<
250
251 %: %.o static
252         $(CXX) $(CXXFLAGS) -o $@ $+ $(LDFLAGS) $(LDLIBS)
253
254 install: install-$(BUILD)
255
256 static: $(STATICLIB)
257 shared: $(SHAREDLIB)
258
259 $(DESTDIR)$(PREFIX):
260         $(MKDIR) $(DESTDIR)$(PREFIX)
261
262 $(DESTDIR)$(PREFIX)/lib: $(DESTDIR)$(PREFIX)
263         $(MKDIR) $(DESTDIR)$(PREFIX)/lib
264
265 $(DESTDIR)$(PREFIX)/include: $(DESTDIR)$(PREFIX)
266         $(MKDIR) $(DESTDIR)$(PREFIX)/include
267
268 $(DESTDIR)$(PREFIX)/include/sass: $(DESTDIR)$(PREFIX)/include
269         $(MKDIR) $(DESTDIR)$(PREFIX)/include/sass
270
271 $(DESTDIR)$(PREFIX)/include/%.h: include/%.h \
272                                  $(DESTDIR)$(PREFIX)/include \
273                                  $(DESTDIR)$(PREFIX)/include/sass
274         $(INSTALL) -v -m0644 "$<" "$@"
275
276 install-headers: $(DESTDIR)$(PREFIX)/include/sass.h \
277                  $(DESTDIR)$(PREFIX)/include/sass2scss.h \
278                  $(DESTDIR)$(PREFIX)/include/sass/base.h \
279                  $(DESTDIR)$(PREFIX)/include/sass/version.h \
280                  $(DESTDIR)$(PREFIX)/include/sass/values.h \
281                  $(DESTDIR)$(PREFIX)/include/sass/context.h \
282                  $(DESTDIR)$(PREFIX)/include/sass/functions.h
283
284 $(DESTDIR)$(PREFIX)/lib/%.a: lib/%.a \
285                              $(DESTDIR)$(PREFIX)/lib
286         @$(INSTALL) -v -m0755 "$<" "$@"
287
288 $(DESTDIR)$(PREFIX)/lib/%.so: lib/%.so \
289                              $(DESTDIR)$(PREFIX)/lib
290         @$(INSTALL) -v -m0755 "$<" "$@"
291
292 $(DESTDIR)$(PREFIX)/lib/%.dll: lib/%.dll \
293                                $(DESTDIR)$(PREFIX)/lib
294         @$(INSTALL) -v -m0755 "$<" "$@"
295
296 install-static: $(DESTDIR)$(PREFIX)/lib/libsass.a
297
298 install-shared: $(DESTDIR)$(PREFIX)/lib/libsass.so \
299                 install-headers
300
301 $(SASSC_BIN): $(BUILD)
302         $(MAKE) -C $(SASS_SASSC_PATH)
303
304 sassc: $(SASSC_BIN)
305         $(SASSC_BIN) -v
306
307 version: $(SASSC_BIN)
308         $(SASSC_BIN) -h
309         $(SASSC_BIN) -v
310
311 test: $(SASSC_BIN)
312         $(RUBY_BIN) $(SASS_SPEC_PATH)/sass-spec.rb -V 3.5 -c $(SASSC_BIN) --impl libsass $(LOG_FLAGS) $(SASS_SPEC_PATH)/$(SASS_SPEC_SPEC_DIR)
313
314 test_build: $(SASSC_BIN)
315         $(RUBY_BIN) $(SASS_SPEC_PATH)/sass-spec.rb -V 3.5 -c $(SASSC_BIN) --impl libsass $(LOG_FLAGS) $(SASS_SPEC_PATH)/$(SASS_SPEC_SPEC_DIR)
316
317 test_full: $(SASSC_BIN)
318         $(RUBY_BIN) $(SASS_SPEC_PATH)/sass-spec.rb -V 3.5 -c $(SASSC_BIN) --impl libsass --run-todo $(LOG_FLAGS) $(SASS_SPEC_PATH)/$(SASS_SPEC_SPEC_DIR)
319
320 test_probe: $(SASSC_BIN)
321         $(RUBY_BIN) $(SASS_SPEC_PATH)/sass-spec.rb -V 3.5 -c $(SASSC_BIN) --impl libsass --probe-todo $(LOG_FLAGS) $(SASS_SPEC_PATH)/$(SASS_SPEC_SPEC_DIR)
322
323 clean-objects: lib
324         -$(RM) lib/*.a lib/*.so lib/*.dll lib/*.la
325         -$(RMDIR) lib
326 clean: clean-objects
327         $(RM) $(CLEANUPS)
328
329 clean-all:
330         $(MAKE) -C $(SASS_SASSC_PATH) clean
331
332 lib-file: lib-file-$(BUILD)
333 lib-opts: lib-opts-$(BUILD)
334
335 lib-file-static:
336         @echo $(LIB_STATIC)
337 lib-file-shared:
338         @echo $(LIB_SHARED)
339 lib-opts-static:
340         @echo -L"$(SASS_LIBSASS_PATH)/lib"
341 lib-opts-shared:
342         @echo -L"$(SASS_LIBSASS_PATH)/lib -lsass"
343
344 .PHONY: all static shared sassc \
345         version install-headers \
346         clean clean-all clean-objects \
347         debug debug-static debug-shared \
348         install install-static install-shared \
349         lib-opts lib-opts-shared lib-opts-static \
350         lib-file lib-file-shared lib-file-static
351 .DELETE_ON_ERROR: