33
33
endif
34
34
endif
35
35
36
- ifeq " $(LIBSASS_VERSION ) " ""
37
- ifneq " $(wildcard ./.git/ )" ""
36
+ ifeq ( $(LIBSASS_VERSION ) ,)
37
+ ifneq ( $(wildcard ./.git/ ),)
38
38
LIBSASS_VERSION ?= $(shell git describe --abbrev=4 --dirty --always --tags)
39
39
endif
40
40
endif
41
41
42
- ifeq " $(LIBSASS_VERSION ) " ""
43
- ifneq (" $(wildcard VERSION)","" )
42
+ ifeq ( $(LIBSASS_VERSION ) ,)
43
+ ifneq ($(wildcard VERSION), )
44
44
LIBSASS_VERSION ?= $(shell $(CAT) VERSION)
45
45
endif
46
46
endif
47
47
48
- ifneq " $(LIBSASS_VERSION ) " ""
48
+ ifneq ( $(LIBSASS_VERSION ) ,)
49
49
CFLAGS += -DLIBSASS_VERSION="\"$(LIBSASS_VERSION)\""
50
50
CXXFLAGS += -DLIBSASS_VERSION="\"$(LIBSASS_VERSION)\""
51
51
endif
52
52
53
53
# enable mandatory flag
54
54
ifeq (MinGW,$(UNAME ) )
55
+ ifneq ($(BUILD),shared)
56
+ STATIC_ALL ?= 1
57
+ endif
58
+ STATIC_LIBGCC ?= 1
59
+ STATIC_LIBSTDCPP ?= 1
55
60
CXXFLAGS += -std=gnu++0x
56
61
LDFLAGS += -std=gnu++0x
57
62
else
63
+ STATIC_ALL ?= 0
64
+ STATIC_LIBGCC ?= 0
65
+ STATIC_LIBSTDCPP ?= 0
58
66
CXXFLAGS += -std=c++0x
59
67
LDFLAGS += -std=c++0x
60
68
endif
61
69
62
- ifneq " $(SASS_LIBSASS_PATH ) " ""
70
+ ifneq ( $(SASS_LIBSASS_PATH ) ,)
63
71
CFLAGS += -I $(SASS_LIBSASS_PATH)
64
72
CXXFLAGS += -I $(SASS_LIBSASS_PATH)
65
73
endif
66
74
67
- ifneq " $(EXTRA_CFLAGS ) " ""
75
+ ifneq ( $(EXTRA_CFLAGS ) ,)
68
76
CFLAGS += $(EXTRA_CFLAGS)
69
77
endif
70
- ifneq " $(EXTRA_CXXFLAGS ) " ""
78
+ ifneq ( $(EXTRA_CXXFLAGS ) ,)
71
79
CXXFLAGS += $(EXTRA_CXXFLAGS)
72
80
endif
73
- ifneq " $(EXTRA_LDFLAGS ) " ""
81
+ ifneq ( $(EXTRA_LDFLAGS ) ,)
74
82
LDFLAGS += $(EXTRA_LDFLAGS)
75
83
endif
76
84
77
- LDLIBS = -lstdc++ -lm
85
+ LDLIBS = -lm
86
+
87
+ ifneq ($(BUILD ) ,shared)
88
+ LDLIBS += -lstdc++
89
+ endif
90
+
91
+ # link statically into lib
92
+ # makes it a lot more portable
93
+ # increases size by about 50KB
94
+ ifeq ($(STATIC_ALL ) ,1)
95
+ LDFLAGS += -static
96
+ endif
97
+ ifeq ($(STATIC_LIBGCC ) ,1)
98
+ LDFLAGS += -static-libgcc
99
+ endif
100
+ ifeq ($(STATIC_LIBSTDCPP ) ,1)
101
+ LDFLAGS += -static-libstdc++
102
+ endif
103
+
78
104
ifeq ($(UNAME ) ,Darwin)
79
105
CFLAGS += -stdlib=libc++
80
106
CXXFLAGS += -stdlib=libc++
@@ -104,6 +130,21 @@ SASS_SPEC_SPEC_DIR ?= spec
104
130
SASSC_BIN = $(SASS_SASSC_PATH ) /bin/sassc
105
131
RUBY_BIN = ruby
106
132
133
+ LIB_STATIC = $(SASS_LIBSASS_PATH ) /lib/libsass.a
134
+ LIB_SHARED = $(SASS_LIBSASS_PATH ) /lib/libsass.so
135
+
136
+ ifeq (MinGW,$(UNAME ) )
137
+ ifeq (shared,$(BUILD))
138
+ CFLAGS += -D ADD_EXPORTS
139
+ CXXFLAGS += -D ADD_EXPORTS
140
+ LIB_SHARED = $(SASS_LIBSASS_PATH)/lib/libsass.dll
141
+ endif
142
+ else
143
+ CFLAGS += -fPIC
144
+ CXXFLAGS += -fPIC
145
+ LDFLAGS += -fPIC
146
+ endif
147
+
107
148
ifeq (MinGW,$(UNAME ) )
108
149
SASSC_BIN = $(SASS_SASSC_PATH)/bin/sassc.exe
109
150
endif
@@ -225,11 +266,15 @@ install-shared: lib/libsass.so
225
266
install -pm0755 $< $(DESTDIR )$(PREFIX ) /$<
226
267
227
268
$(SASSC_BIN ) : $(BUILD )
228
- cd $( SASS_SASSC_PATH ) && $(MAKE )
269
+ $( MAKE ) -C $(SASS_SASSC_PATH )
229
270
230
271
sassc : $(SASSC_BIN )
231
272
$(SASSC_BIN ) -v
232
273
274
+ version : $(SASSC_BIN )
275
+ $(SASSC_BIN ) -h
276
+ $(SASSC_BIN ) -v
277
+
233
278
test : $(SASSC_BIN )
234
279
$(RUBY_BIN ) $(SASS_SPEC_PATH ) /sass-spec.rb -c $(SASSC_BIN ) -s $(LOG_FLAGS ) $(SASS_SPEC_PATH ) /$(SASS_SPEC_SPEC_DIR )
235
280
@@ -242,5 +287,25 @@ test_issues: $(SASSC_BIN)
242
287
clean :
243
288
$(RM ) $(RCOBJECTS ) $(COBJECTS ) $(OBJECTS ) $(LIBRARIES ) lib/* .a lib/* .so lib/* .dll lib/* .la
244
289
245
-
246
- .PHONY : all debug debug-static debug-shared static shared install install-static install-shared sassc clean
290
+ clean-all :
291
+ $(MAKE ) -C $(SASS_SASSC_PATH ) clean
292
+
293
+ lib-file : lib-file-$(BUILD )
294
+ lib-opts : lib-opts-$(BUILD )
295
+
296
+ lib-file-static :
297
+ @echo $(LIB_STATIC )
298
+ lib-file-shared :
299
+ @echo $(LIB_SHARED )
300
+ lib-opts-static :
301
+ @echo -L" $( SASS_LIBSASS_PATH) /lib"
302
+ lib-opts-shared :
303
+ @echo -L" $( SASS_LIBSASS_PATH) /lib -lsass"
304
+
305
+ .PHONY : all static shared sassc \
306
+ version clean clean-all \
307
+ debug debug-static debug-shared \
308
+ install install-static install-shared \
309
+ lib-opts lib-opts-shared lib-opts-static \
310
+ lib-file lib-file-shared lib-file-static
311
+ .DELETE_ON_ERROR :
0 commit comments