@@ -4,6 +4,7 @@ RM ?= rm -f
44CP ?= cp -a
55MKDIR ?= mkdir
66WINDRES ?= windres
7+ INSTALL ?= install
78CFLAGS ?= -Wall
89CXXFLAGS ?= -Wall
910LDFLAGS ?= -Wall
3334 endif
3435endif
3536
37+ ifeq ($(SASS_LIBSASS_PATH ) ,)
38+ SASS_LIBSASS_PATH = $(abspath $(CURDIR))
39+ endif
40+
3641ifeq ($(LIBSASS_VERSION ) ,)
3742 ifneq ($(wildcard ./.git/ ),)
3843 LIBSASS_VERSION ?= $(shell git describe --abbrev=4 --dirty --always --tags)
6873endif
6974
7075ifneq ($(SASS_LIBSASS_PATH ) ,)
71- CFLAGS += -I $(SASS_LIBSASS_PATH)
72- CXXFLAGS += -I $(SASS_LIBSASS_PATH)
76+ CFLAGS += -I $(SASS_LIBSASS_PATH)/include
77+ CXXFLAGS += -I $(SASS_LIBSASS_PATH)/include
78+ else
79+ # this is needed for mingw
80+ CFLAGS += -I include
81+ CXXFLAGS += -I include
7382endif
7483
7584ifneq ($(EXTRA_CFLAGS ) ,)
@@ -152,75 +161,36 @@ ifeq (Windows,$(UNAME))
152161 SASSC_BIN = $(SASS_SASSC_PATH)/bin/sassc.exe
153162endif
154163
155- SOURCES = \
156- ast.cpp \
157- base64vlq.cpp \
158- bind.cpp \
159- color_maps.cpp \
160- constants.cpp \
161- context.cpp \
162- cssize.cpp \
163- emitter.cpp \
164- environment.cpp \
165- error_handling.cpp \
166- eval.cpp \
167- expand.cpp \
168- extend.cpp \
169- file.cpp \
170- functions.cpp \
171- inspect.cpp \
172- json.cpp \
173- lexer.cpp \
174- listize.cpp \
175- memory_manager.cpp \
176- node.cpp \
177- output.cpp \
178- parser.cpp \
179- plugins.cpp \
180- position.cpp \
181- prelexer.cpp \
182- remove_placeholders.cpp \
183- sass.cpp \
184- sass_util.cpp \
185- sass_values.cpp \
186- sass_context.cpp \
187- sass_functions.cpp \
188- sass_interface.cpp \
189- sass2scss.cpp \
190- source_map.cpp \
191- to_c.cpp \
192- to_string.cpp \
193- to_value.cpp \
194- units.cpp \
195- utf8_string.cpp \
196- values.cpp \
197- util.cpp
198-
199- CSOURCES = cencode.c
164+ include Makefile.conf
200165
201166RESOURCES =
202-
203- LIBRARIES = lib/libsass.so
204-
167+ STATICLIB = lib/libsass.a
168+ SHAREDLIB = lib/libsass.so
205169ifeq (MinGW,$(UNAME ) )
170+ RESOURCES += res/resource.rc
171+ SHAREDLIB = lib/libsass.dll
206172 ifeq (shared,$(BUILD))
207173 CFLAGS += -D ADD_EXPORTS
208174 CXXFLAGS += -D ADD_EXPORTS
209- LIBRARIES += lib/libsass.dll
210- RESOURCES += res/resource.rc
211175 endif
212176else
213177 CFLAGS += -fPIC
214178 CXXFLAGS += -fPIC
215179 LDFLAGS += -fPIC
216180endif
217181
218- OBJECTS = $(SOURCES:.cpp=.o )
219- COBJECTS = $(CSOURCES:.c=.o )
182+ OBJECTS = $(addprefix src/, $( SOURCES:.cpp=.o ) )
183+ COBJECTS = $(addprefix src/, $( CSOURCES:.c=.o ) )
220184RCOBJECTS = $(RESOURCES:.rc=.o )
221185
222186DEBUG_LVL ?= NONE
223187
188+ CLEANUPS ?=
189+ CLEANUPS += $(RCOBJECTS )
190+ CLEANUPS += $(COBJECTS )
191+ CLEANUPS += $(OBJECTS )
192+ CLEANUPS += $(LIBSASS_LIB )
193+
224194all : $(BUILD )
225195
226196debug : $(BUILD )
@@ -235,9 +205,6 @@ debug-shared: CFLAGS := -g -DDEBUG -DDEBUG_LVL="$(DEBUG_LVL)" $(filter-out -O2,$
235205debug-shared : CXXFLAGS := -g -DDEBUG -DDEBUG_LVL="$(DEBUG_LVL ) " $(filter-out -O2,$(CXXFLAGS ) )
236206debug-shared : shared
237207
238- static : lib/libsass.a
239- shared : $(LIBRARIES )
240-
241208lib :
242209 $(MKDIR ) lib
243210
@@ -264,11 +231,44 @@ lib/libsass.dll: lib $(COBJECTS) $(OBJECTS) $(RCOBJECTS)
264231
265232install : install-$(BUILD )
266233
267- install-static : lib/libsass.a
268- install -pm0755 $< $(DESTDIR )$(PREFIX ) /$<
234+ static : $(STATICLIB )
235+ shared : $(SHAREDLIB )
236+
237+ $(DESTDIR )$(PREFIX ) :
238+ $(MKDIR ) $(DESTDIR )$(PREFIX )
239+
240+ $(DESTDIR )$(PREFIX ) /lib : $(DESTDIR )$(PREFIX )
241+ $(MKDIR ) $(DESTDIR )$(PREFIX ) /lib
242+
243+ $(DESTDIR )$(PREFIX ) /include : $(DESTDIR )$(PREFIX )
244+ $(MKDIR ) $(DESTDIR )$(PREFIX ) /include
245+
246+ $(DESTDIR )$(PREFIX ) /include/% .h : include/% .h
247+ $(INSTALL ) -D -v -m0644 " $<" " $@ "
248+
249+ install-headers : $(DESTDIR )$(PREFIX ) /include/sass.h \
250+ $(DESTDIR)$(PREFIX)/include/sass2scss.h \
251+ $(DESTDIR)$(PREFIX)/include/sass_values.h \
252+ $(DESTDIR)$(PREFIX)/include/sass_version.h \
253+ $(DESTDIR)$(PREFIX)/include/sass_context.h \
254+ $(DESTDIR)$(PREFIX)/include/sass_functions.h
255+
256+ $(DESTDIR )$(PREFIX ) /lib/% .a : lib/% .a \
257+ $(DESTDIR)$(PREFIX)/lib
258+ @$(INSTALL) -D -v -m0755 "$<" "$@"
259+
260+ $(DESTDIR )$(PREFIX ) /lib/% .so : lib/% .so \
261+ $(DESTDIR)$(PREFIX)/lib
262+ @$(INSTALL) -D -v -m0755 "$<" "$@"
263+
264+ $(DESTDIR )$(PREFIX ) /lib/% .dll : lib/% .dll \
265+ $(DESTDIR)$(PREFIX)/lib
266+ @$(INSTALL) -D -v -m0755 "$<" "$@"
267+
268+ install-static : $(DESTDIR )$(PREFIX ) /lib/libsass.a
269269
270- install-shared : lib/libsass.so
271- install -pm0755 $< $( DESTDIR )$( PREFIX ) / $<
270+ install-shared : $( DESTDIR )$( PREFIX ) / lib/libsass.so \
271+ install-headers
272272
273273$(SASSC_BIN ) : $(BUILD )
274274 $(MAKE ) -C $(SASS_SASSC_PATH )
@@ -289,8 +289,10 @@ test_build: $(SASSC_BIN)
289289test_issues : $(SASSC_BIN )
290290 $(RUBY_BIN ) $(SASS_SPEC_PATH ) /sass-spec.rb -c $(SASSC_BIN ) $(LOG_FLAGS ) $(SASS_SPEC_PATH ) /spec/issues
291291
292- clean :
293- $(RM ) $(RCOBJECTS ) $(COBJECTS ) $(OBJECTS ) $(LIBRARIES ) lib/* .a lib/* .so lib/* .dll lib/* .la
292+ clean-objects :
293+ $(RM ) lib/* .a lib/* .so lib/* .dll lib/* .la
294+ clean : clean-objects
295+ $(RM ) $(CLEANUPS )
294296
295297clean-all :
296298 $(MAKE ) -C $(SASS_SASSC_PATH ) clean
@@ -308,7 +310,8 @@ lib-opts-shared:
308310 @echo -L" $( SASS_LIBSASS_PATH) /lib -lsass"
309311
310312.PHONY : all static shared sassc \
311- version clean clean-all \
313+ version install-headers \
314+ clean clean-all clean-objects \
312315 debug debug-static debug-shared \
313316 install install-static install-shared \
314317 lib-opts lib-opts-shared lib-opts-static \
0 commit comments