Work around Emscripten linking issues by avoiding ar altogether (nw)

See https://github.com/kripken/emscripten/issues/2619
This commit is contained in:
Justin Kerk 2015-01-31 23:13:50 -08:00
parent 5dab7eb95c
commit 31bc7f4bbb

View File

@ -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)