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/ ),)
@@ -163,18 +172,28 @@ ifeq (Windows,$(UNAME))
163172 LIB_SHARED = $(SASS_LIBSASS_PATH)/lib/libsass.dll
164173 endif
165174else
175+ ifdef WASM
176+ SASSC_BIN = $(SASS_SASSC_PATH)/bin/sassc.wasm
177+ SHAREDLIB = lib/libsass.wasm
178+ LIB_SHARED = $(SASS_LIBSASS_PATH)/lib/libsass.wasm
179+ else
166180ifneq (Cygwin,$(UNAME ) )
167181 CFLAGS += -fPIC
168182 CXXFLAGS += -fPIC
169183 LDFLAGS += -fPIC
170184endif
171185endif
186+ endif
172187
173188include Makefile.conf
174189OBJECTS = $(addprefix src/,$(SOURCES:.cpp=.o ) )
175190COBJECTS = $(addprefix src/,$(CSOURCES:.c=.o ) )
176191RCOBJECTS = $(RESOURCES:.rc=.o )
177192
193+ ifdef WASM
194+ WASMOBJECTS = wasm/libcxxabi_stubs.o
195+ endif
196+
178197DEBUG_LVL ?= NONE
179198
180199CLEANUPS ?=
@@ -200,15 +219,18 @@ debug-shared: shared
200219lib :
201220 $(MKDIR ) lib
202221
203- lib/libsass.a : $(COBJECTS ) $(OBJECTS ) | lib
204- $(AR ) rcvs $@ $(COBJECTS ) $(OBJECTS )
222+ lib/libsass.a : $(COBJECTS ) $(OBJECTS ) $( WASMOBJECTS ) | lib
223+ $(AR ) rcvs $@ $(COBJECTS ) $(OBJECTS ) $( WASMOBJECTS )
205224
206225lib/libsass.so : $(COBJECTS ) $(OBJECTS ) | lib
207226 $(CXX ) -shared $(LDFLAGS ) -o $@ $(COBJECTS ) $(OBJECTS ) $(LDLIBS )
208227
209228lib/libsass.dll : $(COBJECTS ) $(OBJECTS ) $(RCOBJECTS ) | lib
210229 $(CXX ) -shared $(LDFLAGS ) -o $@ $(COBJECTS ) $(OBJECTS ) $(RCOBJECTS ) $(LDLIBS ) -s -Wl,--subsystem,windows,--out-implib,lib/libsass.a
211230
231+ lib/libsass.wasm : $(COBJECTS ) $(OBJECTS ) $(WASMOBJECTS ) | lib
232+ $(CXX ) $(LDFLAGS ) -o $@ $(COBJECTS ) $(OBJECTS ) $(WASMOBJECTS ) $(LDLIBS )
233+
212234% .o : % .c
213235 $(CC ) $(CFLAGS ) -c -o $@ $<
214236
@@ -271,7 +293,9 @@ $(SASSC_BIN): $(BUILD)
271293 $(MAKE ) -C $(SASS_SASSC_PATH ) build-$(BUILD ) -dev
272294
273295sassc : $(SASSC_BIN )
296+ ifndef WASM
274297 $(SASSC_BIN) -v
298+ endif
275299
276300version : $(SASSC_BIN )
277301 $(SASSC_BIN ) -v
@@ -288,7 +312,7 @@ test_probe: $(SASSC_BIN)
288312 $(RUBY_BIN ) $(SASS_SPEC_PATH ) /sass-spec.rb -c $(SASSC_BIN ) --impl libsass --probe-todo $(LOG_FLAGS ) $(SASS_SPEC_PATH ) /$(SASS_SPEC_SPEC_DIR )
289313
290314clean-objects : | lib
291- -$(RM ) lib/* .a lib/* .so lib/* .dll lib/* .la
315+ -$(RM ) lib/* .a lib/* .so lib/* .dll lib/* .la lib/ * .wasm
292316 -$(RMDIR ) lib
293317clean : clean-objects
294318 $(RM ) $(CLEANUPS )
0 commit comments