2727endif
2828CAT ?= $(if $(filter $(OS ) ,Windows_NT) ,type,cat)
2929
30+ ifdef WASM
31+ CFLAGS += -D_WASM
32+ CXXFLAGS += -D_WASM
33+ endif
34+
35+ ifdef WASM
36+ UNAME := WebAssembly
37+ else
3038ifneq (,$(findstring /cygdrive/,$(PATH ) ) )
3139 UNAME := Cygwin
3240else
4452endif
4553endif
4654endif
55+ endif
4756
4857ifndef LIBSASS_VERSION
4958 ifneq ($(wildcard ./.git/ ),)
@@ -161,18 +170,28 @@ ifeq (Windows,$(UNAME))
161170 LIB_SHARED = $(SASS_LIBSASS_PATH)/lib/libsass.dll
162171 endif
163172else
173+ ifdef WASM
174+ SASSC_BIN = $(SASS_SASSC_PATH)/bin/sassc.wasm
175+ SHAREDLIB = lib/libsass.wasm
176+ LIB_SHARED = $(SASS_LIBSASS_PATH)/lib/libsass.wasm
177+ else
164178ifneq (Cygwin,$(UNAME ) )
165179 CFLAGS += -fPIC
166180 CXXFLAGS += -fPIC
167181 LDFLAGS += -fPIC
168182endif
169183endif
184+ endif
170185
171186include Makefile.conf
172187OBJECTS = $(addprefix src/,$(SOURCES:.cpp=.o ) )
173188COBJECTS = $(addprefix src/,$(CSOURCES:.c=.o ) )
174189RCOBJECTS = $(RESOURCES:.rc=.o )
175190
191+ ifdef WASM
192+ WASMOBJECTS = wasm/libcxxabi_stubs.o
193+ endif
194+
176195DEBUG_LVL ?= NONE
177196
178197CLEANUPS ?=
@@ -198,15 +217,18 @@ debug-shared: shared
198217lib :
199218 $(MKDIR ) lib
200219
201- lib/libsass.a : $(COBJECTS ) $(OBJECTS ) | lib
202- $(AR ) rcvs $@ $(COBJECTS ) $(OBJECTS )
220+ lib/libsass.a : $(COBJECTS ) $(OBJECTS ) $( WASMOBJECTS ) | lib
221+ $(AR ) rcvs $@ $(COBJECTS ) $(OBJECTS ) $( WASMOBJECTS )
203222
204223lib/libsass.so : $(COBJECTS ) $(OBJECTS ) | lib
205224 $(CXX ) -shared $(LDFLAGS ) -o $@ $(COBJECTS ) $(OBJECTS ) $(LDLIBS )
206225
207226lib/libsass.dll : $(COBJECTS ) $(OBJECTS ) $(RCOBJECTS ) | lib
208227 $(CXX ) -shared $(LDFLAGS ) -o $@ $(COBJECTS ) $(OBJECTS ) $(RCOBJECTS ) $(LDLIBS ) -s -Wl,--subsystem,windows,--out-implib,lib/libsass.a
209228
229+ lib/libsass.wasm : $(COBJECTS ) $(OBJECTS ) $(WASMOBJECTS ) | lib
230+ $(CXX ) $(LDFLAGS ) -o $@ $(COBJECTS ) $(OBJECTS ) $(WASMOBJECTS ) $(LDLIBS )
231+
210232% .o : % .c
211233 $(CC ) $(CFLAGS ) -c -o $@ $<
212234
@@ -269,7 +291,9 @@ $(SASSC_BIN): $(BUILD)
269291 $(MAKE ) -C $(SASS_SASSC_PATH ) build-$(BUILD ) -dev
270292
271293sassc : $(SASSC_BIN )
294+ ifndef WASM
272295 $(SASSC_BIN) -v
296+ endif
273297
274298version : $(SASSC_BIN )
275299 $(SASSC_BIN ) -v
@@ -286,7 +310,7 @@ test_probe: $(SASSC_BIN)
286310 $(RUBY_BIN ) $(SASS_SPEC_PATH ) /sass-spec.rb -c $(SASSC_BIN ) --impl libsass --probe-todo $(LOG_FLAGS ) $(SASS_SPEC_PATH ) /$(SASS_SPEC_SPEC_DIR )
287311
288312clean-objects : | lib
289- -$(RM ) lib/* .a lib/* .so lib/* .dll lib/* .la
313+ -$(RM ) lib/* .a lib/* .so lib/* .dll lib/* .la lib/ * .wasm
290314 -$(RMDIR ) lib
291315clean : clean-objects
292316 $(RM ) $(CLEANUPS )
0 commit comments