From 31bc7f4bbb8f805e1f05623d9d8d784750de92ad Mon Sep 17 00:00:00 2001 From: Justin Kerk Date: Sat, 31 Jan 2015 23:13:50 -0800 Subject: Work around Emscripten linking issues by avoiding ar altogether (nw) See https://github.com/kripken/emscripten/issues/2619 --- makefile | 25 ++++++++++++++++++++----- 1 file changed, 20 insertions(+), 5 deletions(-) diff --git a/makefile b/makefile index 9a762b8d259..c7922e99b90 100644 --- a/makefile +++ b/makefile @@ -650,9 +650,6 @@ ifeq ($(COMMAND_MODE),"legacy") ARFLAGS = -crs endif endif -ifeq ($(TARGETOS),emscripten) -ARFLAGS = cr -endif #------------------------------------------------- @@ -929,11 +926,19 @@ $(sort $(OBJDIRS)): ifndef EXECUTABLE_DEFINED -$(EMULATOR): $(EMUINFOOBJ) $(DRIVLISTOBJ) $(DRVLIBS) $(LIBOSD) $(LIBBUS) $(LIBOPTIONAL) $(LIBEMU) $(LIBDASM) $(LIBUTIL) $(EXPAT) $(SOFTFLOAT) $(JPEG_LIB) $(FLAC_LIB) $(7Z_LIB) $(FORMATS_LIB) $(LUA_LIB) $(SQLITE3_LIB) $(WEB_LIB) $(ZLIB) $(LIBOCORE) $(MIDI_LIB) $(RESFILE) +EMULATOROBJLIST = $(EMUINFOOBJ) $(DRIVLISTOBJ) $(DRVLIBS) $(LIBOSD) $(LIBBUS) $(LIBOPTIONAL) $(LIBEMU) $(LIBDASM) $(LIBUTIL) $(EXPAT) $(SOFTFLOAT) $(JPEG_LIB) $(FLAC_LIB) $(7Z_LIB) $(FORMATS_LIB) $(LUA_LIB) $(SQLITE3_LIB) $(WEB_LIB) $(ZLIB) $(LIBOCORE) $(MIDI_LIB) $(RESFILE) + +ifeq ($(TARGETOS),emscripten) +EMULATOROBJ = $(EMULATOROBJLIST:.a=.bc) +else +EMULATOROBJ = $(EMULATOROBJLIST) +endif + +$(EMULATOR): $(EMULATOROBJ) $(CC) $(CDEFS) $(CFLAGS) -c $(SRC)/version.c -o $(VERSIONOBJ) @echo Linking $@... ifeq ($(TARGETOS),emscripten) -# Emscripten's linker seems to be stricter about the ordering of .a files +# Emscripten's linker seems to be stricter about the ordering of files $(LD) $(LDFLAGS) $(LDFLAGSEMULATOR) $(VERSIONOBJ) -Wl,--start-group $^ -Wl,--end-group $(LIBS) -o $@ else $(LD) $(LDFLAGS) $(LDFLAGSEMULATOR) $(VERSIONOBJ) $^ $(LIBS) -o $@ @@ -1002,10 +1007,20 @@ $(DRIVLISTSRC): $(SRC)/$(TARGET)/$(SUBTARGET).lst $(MAKELIST_TARGET) @echo Building driver list $<... @$(MAKELIST) $< >$@ +ifeq ($(TARGETOS),emscripten) +# Avoid using .a files with Emscripten, link to bitcode instead +$(OBJ)/%.a: + @echo Linking $@... + $(RM) $@ + $(LD) $^ -o $@ +$(OBJ)/%.bc: $(OBJ)/%.a + @cp $< $@ +else $(OBJ)/%.a: @echo Archiving $@... $(RM) $@ $(AR) $(ARFLAGS) $@ $^ +endif ifeq ($(TARGETOS),macosx) $(OBJ)/%.o: $(SRC)/%.m | $(OSPREBUILD) -- cgit v1.2.3