3333 endif
3434endif
3535
36- ifeq " $(LIBSASS_VERSION ) " ""
37- ifneq " $(wildcard ./.git/ )" ""
36+ ifeq ( $(LIBSASS_VERSION ) ,)
37+ ifneq ( $(wildcard ./.git/ ),)
3838 LIBSASS_VERSION ?= $(shell git describe --abbrev=4 --dirty --always --tags)
3939 endif
4040endif
4141
42- ifeq " $(LIBSASS_VERSION ) " ""
43- ifneq (" $(wildcard VERSION)","" )
42+ ifeq ( $(LIBSASS_VERSION ) ,)
43+ ifneq ($(wildcard VERSION), )
4444 LIBSASS_VERSION ?= $(shell $(CAT) VERSION)
4545 endif
4646endif
4747
48- ifneq " $(LIBSASS_VERSION ) " ""
48+ ifneq ( $(LIBSASS_VERSION ) ,)
4949 CFLAGS += -DLIBSASS_VERSION="\"$(LIBSASS_VERSION)\""
5050 CXXFLAGS += -DLIBSASS_VERSION="\"$(LIBSASS_VERSION)\""
5151endif
5252
5353# enable mandatory flag
5454ifeq (MinGW,$(UNAME ) )
55+ ifneq ($(BUILD),shared)
56+ STATIC_ALL ?= 1
57+ endif
58+ STATIC_LIBGCC ?= 1
59+ STATIC_LIBSTDCPP ?= 1
5560 CXXFLAGS += -std=gnu++0x
5661 LDFLAGS += -std=gnu++0x
5762else
63+ STATIC_ALL ?= 0
64+ STATIC_LIBGCC ?= 0
65+ STATIC_LIBSTDCPP ?= 0
5866 CXXFLAGS += -std=c++0x
5967 LDFLAGS += -std=c++0x
6068endif
6169
62- ifneq " $(SASS_LIBSASS_PATH ) " ""
70+ ifneq ( $(SASS_LIBSASS_PATH ) ,)
6371 CFLAGS += -I $(SASS_LIBSASS_PATH)
6472 CXXFLAGS += -I $(SASS_LIBSASS_PATH)
6573endif
6674
67- ifneq " $(EXTRA_CFLAGS ) " ""
75+ ifneq ( $(EXTRA_CFLAGS ) ,)
6876 CFLAGS += $(EXTRA_CFLAGS)
6977endif
70- ifneq " $(EXTRA_CXXFLAGS ) " ""
78+ ifneq ( $(EXTRA_CXXFLAGS ) ,)
7179 CXXFLAGS += $(EXTRA_CXXFLAGS)
7280endif
73- ifneq " $(EXTRA_LDFLAGS ) " ""
81+ ifneq ( $(EXTRA_LDFLAGS ) ,)
7482 LDFLAGS += $(EXTRA_LDFLAGS)
7583endif
7684
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+
78104ifeq ($(UNAME ) ,Darwin)
79105 CFLAGS += -stdlib=libc++
80106 CXXFLAGS += -stdlib=libc++
@@ -104,6 +130,21 @@ SASS_SPEC_SPEC_DIR ?= spec
104130SASSC_BIN = $(SASS_SASSC_PATH ) /bin/sassc
105131RUBY_BIN = ruby
106132
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+
107148ifeq (MinGW,$(UNAME ) )
108149 SASSC_BIN = $(SASS_SASSC_PATH)/bin/sassc.exe
109150endif
@@ -225,11 +266,15 @@ install-shared: lib/libsass.so
225266 install -pm0755 $< $(DESTDIR )$(PREFIX ) /$<
226267
227268$(SASSC_BIN ) : $(BUILD )
228- cd $( SASS_SASSC_PATH ) && $(MAKE )
269+ $( MAKE ) -C $(SASS_SASSC_PATH )
229270
230271sassc : $(SASSC_BIN )
231272 $(SASSC_BIN ) -v
232273
274+ version : $(SASSC_BIN )
275+ $(SASSC_BIN ) -h
276+ $(SASSC_BIN ) -v
277+
233278test : $(SASSC_BIN )
234279 $(RUBY_BIN ) $(SASS_SPEC_PATH ) /sass-spec.rb -c $(SASSC_BIN ) -s $(LOG_FLAGS ) $(SASS_SPEC_PATH ) /$(SASS_SPEC_SPEC_DIR )
235280
@@ -242,5 +287,25 @@ test_issues: $(SASSC_BIN)
242287clean :
243288 $(RM ) $(RCOBJECTS ) $(COBJECTS ) $(OBJECTS ) $(LIBRARIES ) lib/* .a lib/* .so lib/* .dll lib/* .la
244289
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