Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Compile and copy all vorbis libraries, fixes #7879 #9849

Merged
merged 14 commits into from
Nov 26, 2019

Conversation

Oipo
Copy link
Contributor

@Oipo Oipo commented Nov 15, 2019

Vorbis actually consists of three libraries: vorbis.a, vorbisfile.a and vorbisenc.a.

This pull request modifies the vorbis port to build and cache these files.

Fixes #7879

@welcome
Copy link

welcome bot commented Nov 15, 2019

Thank you for submitting a pull request! If this is your first PR, make sure to add yourself to AUTHORS.

@@ -37,6 +37,8 @@ int main(int argc, char* argv[]){
return -1;
if (Mix_PlayChannel(-1, wave, 0) == -1)
return -1;
if (Mix_Init(MIX_INIT_OGG) == -1)
return -1;
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Do this this test simply not work without this?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Without this, the specific problem, namely that ogg support is not compiled into SDL2_Mixer, is never triggered. SDL2_Mixer initialises just fine without having ogg compiled in. This line of code forces an error if it is missing.

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

But did the example just not play sound before?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Oh, it's an example? I thought it was a test. The sound plays fine without this addition. Would you rather I create a new test specifically for ogg files?

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

No it is a test. I just wonder what the purpose of the Mix_Init(MIX_INIT_OGG) line is if the code can play an ogg file even without this line? Is it just a way to verify that ogg support is built in? And if this code could play ogg files before this change, then surely ogg support was builtin previously?

I'm just trying to understand the state before this change. We could play ogg files? But this Mix_Init(MIX_INIT_OGG) would fail?

Copy link
Contributor Author

@Oipo Oipo Nov 16, 2019

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I am sorry for the miscommunication. Let me try to clarify it:

  • No, playing ogg files is impossible without Mix_Init(MIX_INIT_OGG)
  • No, playing ogg files was impossible before, even with Mix_Init(MIX_INIT_OGG), it would return -1. SDL_GetError() would then return a message saying that ogg support was not compiled in.
  • Playing wave files without Mix_Init(MIX_INIT_OGG) has worked before and continues to work
  • With the changes made in this PR, this test, while not containing ogg files nor any attempt to play ogg files, will error when ogg support is not compiled in.
  • The changes made in this PR ensure that ogg support is compiled in and that this test succeeds in its new form.

Does this clarify things? If you have more questions, I'll be happy to answer them.

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Got it. Sorry I thought this test played an ogg file.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Sounds good, but please add a comment, "this should error because OGG support was not compiled in".

Copy link
Member

@kripken kripken left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It would be good to have a test that does show OGG playback, when it is compiled in.

Looks like there is an error on CI here. Let us know if you need help debugging that!


return [shared.Cache.get(libname, create)]
libnamefile = ports.get_lib_name('libvorbisfile')
libnameenc = ports.get_lib_name('libvorbisenc')
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

in general we use _ to split out parts of local names (see elsewhere in this file, like source_path), please follow those conventions

@@ -37,6 +37,8 @@ int main(int argc, char* argv[]){
return -1;
if (Mix_PlayChannel(-1, wave, 0) == -1)
return -1;
if (Mix_Init(MIX_INIT_OGG) == -1)
return -1;
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Sounds good, but please add a comment, "this should error because OGG support was not compiled in".

@Oipo
Copy link
Contributor Author

Oipo commented Nov 18, 2019

@kripken I could use some help with debugging the CI build. I cannot reproduce the error locally so I do not know what is going on there. Is it possible to get the config.log from the ci server somehow?

@kripken
Copy link
Member

kripken commented Nov 20, 2019

One option is to do "re-run in ssh" (an option next to "rerun workflow" on the circle page). I did that, and there is an ssh link here: https://circleci.com/gh/emscripten-core/emscripten/205838 (however, not sure how permissions work there, so you may not be able to access it ). Here is that config.log:

root@13ce9f6aaee9:~# cat ./.emscripten_cache/asmjs/ports-builds/sdl2_mixer/config.log
This file contains any messages produced by compilers while
running configure, to aid debugging if configure makes a mistake.

It was created by configure, which was
generated by GNU Autoconf 2.69.  Invocation command line was

  $ /root/.emscripten_ports/sdl2_mixer/SDL2_mixer-release-2.0.1/configure --prefix=/root/.emscripten_cache/asmjs/ports-builds/sdl2_mixer/dist --enable-music-wave --disable-music-mod --disable-music-midi --enable-music-ogg --disable-music-ogg-shared --disable-music-flac --disable-music-mp3 --disable-shared --disable-music-cmd --enable-sdltest --disable-smpegtest CFLAGS=-s USE_VORBIS=1

## --------- ##
## Platform. ##
## --------- ##

hostname = 13ce9f6aaee9
uname -m = x86_64
uname -r = 4.15.0-1043-aws
uname -s = Linux
uname -v = #45-Ubuntu SMP Mon Jun 24 14:07:03 UTC 2019

/usr/bin/uname -p = unknown
/bin/uname -X     = unknown

/bin/arch              = unknown
/usr/bin/arch -k       = unknown
/usr/convex/getsysinfo = unknown
/usr/bin/hostinfo      = unknown
/bin/machine           = unknown
/usr/bin/oslevel       = unknown
/bin/universe          = unknown

PATH: /root/project/system/bin
PATH: /usr/local/sbin
PATH: /usr/local/bin
PATH: /usr/sbin
PATH: /usr/bin
PATH: /sbin
PATH: /bin


## ----------- ##
## Core tests. ##
## ----------- ##

configure:2484: checking build system type
configure:2498: result: x86_64-unknown-linux-gnu
configure:2518: checking host system type
configure:2531: result: x86_64-unknown-linux-gnu
configure:2599: checking for gcc
configure:2626: result: /root/project/emcc
configure:2855: checking for C compiler version
configure:2864: /root/project/emcc --version >&5
emcc (Emscripten gcc/clang-like replacement) 1.39.3 (commit 8acee07bf06d3d556b504796bb19491c0a8dea5c)
Copyright (C) 2014 the Emscripten authors (see AUTHORS.txt)
This is free and open source software under the MIT license.
There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  
configure:2875: $? = 0
configure:2864: /root/project/emcc -v >&5
emcc (Emscripten gcc/clang-like replacement + linker emulating GNU ld) 1.39.3
clang version 6.0.1 (/b/s/w/ir/cache/git/chromium.googlesource.com-external-github.aaakk.us.kg-emscripten--core-emscripten--fastcomp--clang 98df4be387dde3e3918fa5bbb5fc43e1a0e1daac) (/b/s/w/ir/cache/git/chromium.googlesource.com-external-github.aaakk.us.kg-emscripten--core-emscripten--fastcomp 6c7e775325067e33fa60611e619a8b987b6d0c35) (emscripten 1.38.31 : 1.38.31)
Target: x86_64-unknown-linux-gnu
Thread model: posix
InstalledDir: /root/emsdk-master/fastcomp/fastcomp/bin
Found candidate GCC installation: /usr/lib/gcc/x86_64-linux-gnu/7
Found candidate GCC installation: /usr/lib/gcc/x86_64-linux-gnu/7.4.0
Found candidate GCC installation: /usr/lib/gcc/x86_64-linux-gnu/8
Selected GCC installation: /usr/lib/gcc/x86_64-linux-gnu/7.4.0
Candidate multilib: .;@m64
... rest of stderr output deleted ...
configure:2875: $? = 0
configure:2864: /root/project/emcc -V >&5
shared:ERROR: no input files
note that input files without a known suffix are ignored, make sure your input files end with one of: ('.c', '.C', '.i', '.cpp', '.cxx', '.cc', '.c++', '.CPP', '.CXX', '.CC', '.C++', '.ii', '.m', '.mi', '.mm', '.mii', '/dev/null', '.bc', '.o', '.obj', '.lo', '.dylib', '.so', '.a', '.ll', '.h', '.hxx', '.hpp', '.hh', '.H', '.HXX', '.HPP', '.HH')
configure:2875: $? = 1
configure:2864: /root/project/emcc -qversion >&5
shared:ERROR: no input files
note that input files without a known suffix are ignored, make sure your input files end with one of: ('.c', '.C', '.i', '.cpp', '.cxx', '.cc', '.c++', '.CPP', '.CXX', '.CC', '.C++', '.ii', '.m', '.mi', '.mm', '.mii', '/dev/null', '.bc', '.o', '.obj', '.lo', '.dylib', '.so', '.a', '.ll', '.h', '.hxx', '.hpp', '.hh', '.H', '.HXX', '.HPP', '.HH')
configure:2875: $? = 1
configure:2895: checking whether the C compiler works
configure:2917: /root/project/emcc -s USE_VORBIS=1   conftest.c  >&5
error: Linking globals named 'floor1_exportbundle': symbol multiply defined!
shared:ERROR: Failed to run llvm optimizations: 
configure:2921: $? = 1
configure:2959: result: no
configure: failed program was:
| /* confdefs.h */
| #define PACKAGE_NAME ""
| #define PACKAGE_TARNAME ""
| #define PACKAGE_VERSION ""
| #define PACKAGE_STRING ""
| #define PACKAGE_BUGREPORT ""
| #define PACKAGE_URL ""
| /* end confdefs.h.  */
| 
| int
| main ()
| {
| 
|   ;
|   return 0;
| }
configure:2964: error: in `/root/.emscripten_cache/asmjs/ports-builds/sdl2_mixer':
configure:2966: error: C compiler cannot create executables
See `config.log' for more details

## ---------------- ##
## Cache variables. ##
## ---------------- ##

ac_cv_build=x86_64-unknown-linux-gnu
ac_cv_env_CC_set=set
ac_cv_env_CC_value=/root/project/emcc
ac_cv_env_CFLAGS_set=set
ac_cv_env_CFLAGS_value='-s USE_VORBIS=1'
ac_cv_env_CPPFLAGS_set=
ac_cv_env_CPPFLAGS_value=
ac_cv_env_CPP_set=
ac_cv_env_CPP_value=
ac_cv_env_LDFLAGS_set=
ac_cv_env_LDFLAGS_value=
ac_cv_env_LIBS_set=
ac_cv_env_LIBS_value=
ac_cv_env_MODPLUG_CFLAGS_set=
ac_cv_env_MODPLUG_CFLAGS_value=
ac_cv_env_MODPLUG_LIBS_set=
ac_cv_env_MODPLUG_LIBS_value=
ac_cv_env_PKG_CONFIG_set=
ac_cv_env_PKG_CONFIG_value=
ac_cv_env_SDL_CFLAGS_set=
ac_cv_env_SDL_CFLAGS_value=
ac_cv_env_SDL_LIBS_set=
ac_cv_env_SDL_LIBS_value=
ac_cv_env_build_alias_set=
ac_cv_env_build_alias_value=
ac_cv_env_host_alias_set=
ac_cv_env_host_alias_value=
ac_cv_env_target_alias_set=
ac_cv_env_target_alias_value=
ac_cv_host=x86_64-unknown-linux-gnu
ac_cv_prog_ac_ct_CC=/root/project/emcc

## ----------------- ##
## Output variables. ##
## ----------------- ##

AR='/root/project/emar'
AS=''
BINARY_AGE='1'
BUILD_CFLAGS=''
BUILD_LDFLAGS=''
CC='/root/project/emcc'
CFLAGS='-s USE_VORBIS=1'
CPP=''
CPPFLAGS=''
DEFS=''
DLLTOOL=''
DSYMUTIL=''
DUMPBIN=''
ECHO_C=''
ECHO_N='-n'
ECHO_T=''
EGREP=''
EXE=''
EXEEXT=''
EXTRA_CFLAGS=''
EXTRA_LDFLAGS=''
FGREP=''
GREP=''
INSTALL_DATA=''
INSTALL_PROGRAM=''
INSTALL_SCRIPT=''
INTERFACE_AGE='1'
LD='/root/project/emcc'
LDFLAGS=''
LIBMIKMOD_CONFIG=''
LIBOBJS=''
LIBS=''
LIBTOOL=''
LIPO=''
LN_S=''
LTLIBOBJS=''
LT_AGE=''
LT_CURRENT=''
LT_RELEASE=''
LT_REVISION=''
MAJOR_VERSION='2'
MICRO_VERSION='1'
MINOR_VERSION='0'
MODPLUG_CFLAGS=''
MODPLUG_LIBS=''
NM='/root/emsdk-master/fastcomp/fastcomp/bin/llvm-nm'
NMEDIT=''
OBJDUMP=''
OBJECTS=''
OBJEXT=''
OTOOL64=''
OTOOL=''
PACKAGE_BUGREPORT=''
PACKAGE_NAME=''
PACKAGE_STRING=''
PACKAGE_TARNAME=''
PACKAGE_URL=''
PACKAGE_VERSION=''
PATH_SEPARATOR=':'
PKG_CONFIG=''
PLAYMUS_OBJECTS=''
PLAYWAVE_OBJECTS=''
RANLIB='/root/project/emranlib'
SDL2_CONFIG=''
SDL_CFLAGS=''
SDL_LIBS=''
SDL_VERSION=''
SED=''
SET_MAKE=''
SHELL='/bin/bash'
SMPEG_CFLAGS=''
SMPEG_CONFIG=''
SMPEG_LIBS=''
STRIP=''
VERSION='2.0.1'
VERSION_OBJECTS=''
WINDRES=''
ac_aux_dir='/root/.emscripten_ports/sdl2_mixer/SDL2_mixer-release-2.0.1/build-scripts'
ac_ct_CC='/root/project/emcc'
ac_ct_DUMPBIN=''
bindir='${exec_prefix}/bin'
build='x86_64-unknown-linux-gnu'
build_alias=''
build_cpu='x86_64'
build_os='linux-gnu'
build_vendor='unknown'
datadir='${datarootdir}'
datarootdir='${prefix}/share'
docdir='${datarootdir}/doc/${PACKAGE}'
dvidir='${docdir}'
exec_prefix='NONE'
host='x86_64-unknown-linux-gnu'
host_alias=''
host_cpu='x86_64'
host_os='linux-gnu'
host_vendor='unknown'
htmldir='${docdir}'
includedir='${prefix}/include'
infodir='${datarootdir}/info'
libdir='${exec_prefix}/lib'
libexecdir='${exec_prefix}/libexec'
localedir='${datarootdir}/locale'
localstatedir='${prefix}/var'
lt_ECHO='echo'
mandir='${datarootdir}/man'
oldincludedir='/usr/include'
pdfdir='${docdir}'
prefix='/root/.emscripten_cache/asmjs/ports-builds/sdl2_mixer/dist'
program_transform_name='s,x,x,'
psdir='${docdir}'
sbindir='${exec_prefix}/sbin'
sharedstatedir='${prefix}/com'
sysconfdir='${prefix}/etc'
target_alias=''

## ----------- ##
## confdefs.h. ##
## ----------- ##

/* confdefs.h */
#define PACKAGE_NAME ""
#define PACKAGE_TARNAME ""
#define PACKAGE_VERSION ""
#define PACKAGE_STRING ""
#define PACKAGE_BUGREPORT ""
#define PACKAGE_URL ""

configure: exit 77

The error seems to be

error: Linking globals named 'floor1_exportbundle': symbol multiply defined!

And it happens in the asm.js build, where linking is different. Perhaps you can reproduce this locally with latest-fastcomp instead of latest?

@Oipo
Copy link
Contributor Author

Oipo commented Nov 21, 2019

Regarding the re-running of builds, I lack write permission, so I cannot use that functionality. Thank you for providing the config.log, my hunch is that the floor1.c file is included multiple times. But I do not know how.

Regarding the fastcomp thing, I do not understand how I can use it while pointing at my own branch. Is it the emscripten/emscripten-fastcomp branch? If so, why does it not contain a tools/ports directory? Can you explain to me how I can find the source code to emscript-fastcomp and then modify it similarly to how I did with emscripten-core?

if library == lib_name_file or library == lib_name:
excluded_files.append('vorbisenc')
if library == lib_name_enc or library == lib_name:
excluded_files.append('vorbisfile')
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think the original code include the enc and the file stuff in once big library.

If you want to split those out then don't you need to exlude both the enc and the file sources from the core library? and also exclude the core library files from both the enc and the file libraries.

I'm not sure if switching to some kind of whitelist might help?

Copy link
Contributor Author

@Oipo Oipo Nov 21, 2019

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I am unsure what you mean here.

When compiling vorbis linux usage, the following libraries are compiled from the following files:

  • vorbis.a: mdct.c smallft.c block.c envelope.c window.c lsp.c
    lpc.c analysis.c synthesis.c psy.c info.c
    floor1.c floor0.c
    res0.c mapping0.c registry.c codebook.c sharedbook.c
    lookup.c bitrate.c
    envelope.h lpc.h lsp.h codebook.h misc.h psy.h
    masking.h os.h mdct.h smallft.h highlevel.h
    registry.h scales.h window.h lookup.h lookup_data.h
    codec_internal.h backends.h bitrate.h
  • vorbisenc.a: links vorbis.a and adds vorbisenc.c.
  • vorbisfile.a: links vorbis.a and adds vorbisfile.c

Compiling all the source files used in vorbis again for vorbisenc/vorbisfile has the same end-result as linking vorbis.a.

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Normally each library contains a unique set of files without overlap. Indeed this seems to be how vorbis works, at least on my desktop system:

$ ar t  /usr/lib/x86_64-linux-gnu/libvorbis.a
mdct.o
smallft.o
block.o
envelope.o
window.o
lsp.o
lpc.o
analysis.o
synthesis.o
psy.o
info.o
floor1.o
floor0.o
res0.o
mapping0.o
registry.o
codebook.o
sharedbook.o
lookup.o
bitrate.o
 $ ar t  /usr/lib/x86_64-linux-gnu/libvorbisfile.a
vorbisfile.o
$ ar t  /usr/lib/x86_64-linux-gnu/libvorbisenc.a
vorbisenc.o

The good news is that those second two libraries only have a single file in them, so it should be trivial to build them without the need for whitelists/blacklists.

Why this matters for fastcomp: Normally duplicating object between libraries is fine due to the way .a files are linked, but the the ports system is setup to create giant object files rather than archive files when building with fastcomp. Basically it builds libvorbis.bc not libvorbis.a.

See:

def create_lib(libname, inputs):

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

So it seems. I must've made an oversight somewhere. I'll correct the PR.

@Oipo
Copy link
Contributor Author

Oipo commented Nov 21, 2019

The latest changes did not seem to change the CI output. If the config.log file is the same as last time, I am stumped.

@sbc100
Copy link
Collaborator

sbc100 commented Nov 21, 2019

So on deeper inspection we have now discovered the current status quo is that all three vorbis libraries are compiled as one under emscripten.

This can be easily seen via:

$ ./embuilder.py build vorbis
$ ar t /usr/local/google/home/sbc/.emscripten_cache/wasm-obj/libvorbis.a | grep vorbis
vorbisfile_7d006ef7.c.o
vorbisenc_9a8ac2e7.c.o

So if a user includes libvorbis via '-s USE_VORBIS=1 everything will work as expected, right? So I guess the problem this PR solves is for users that try to explicitly link with -lvorbisfile on the command line? Is that right? In general the port system is designed to be used via -s flags and not via -l flags. However, I agree it would be nice to allow either to work.

If you are ok using the -s flags then maybe we don't need to land this change after all and we can stick with the fat library?

@Oipo
Copy link
Contributor Author

Oipo commented Nov 21, 2019

The problem with the status quo is that sdl2_mixer requires libvorbisfile to exist, alongside libvorbis itself. This can be seen in bug #7879, as mentioned in the title of the PR.

Personally, now that I have a fork of emscripten that compiles sdl2_mixer with ogg support, I can continue with my personal project. However, I am not the only one running into the problem.

As such, having one fat binary/maintaining the status quo, is IMO not the way forward.

@Oipo
Copy link
Contributor Author

Oipo commented Nov 21, 2019

Maybe a better approach without modifying the emscripten source code too much, is to create a separate tools/ports/vorbisfile.py and tools/ports/vorbisenc.py? Adding the USE_VORBISFILE and USE_VORBISENC flags?

@sbc100
Copy link
Collaborator

sbc100 commented Nov 21, 2019

Oh, I see. Its becaus we are using configure to build SDL_mixer. Lets stop doing that. For one thing its can't work on windows so its not portable.

@Oipo
Copy link
Contributor Author

Oipo commented Nov 21, 2019

That would be another way, yes. I don't quite understand the approach taken so far gives errors, but I can understand the portability problems. I'll modify sdl2_mixer instead.

Copy link
Collaborator

@sbc100 sbc100 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Awesome. I like this version much better. Thanks for cleaning up the build commands that didn't have -c.

@Oipo
Copy link
Contributor Author

Oipo commented Nov 21, 2019

The only outstanding things for sdl2_mixer are the HAVE_SIGNAL_H and HAVE_SETBUF defines. Currently, those are not set and yet it still appears to function correctly under linux.

Aside from that, it seems that asmjs once again rears its head :groan:

@Oipo
Copy link
Contributor Author

Oipo commented Nov 21, 2019

It is getting late here, I will continue this tomorrow.

@kripken
Copy link
Member

kripken commented Nov 23, 2019

Nice work!

If fastcomp is a significant burden here, one option is to ifdef on the backend, so that we run the old code for fastcomp, and the new for upstream. Then when we remove fastcomp, we'd just remove that old code.

Copy link
Member

@kripken kripken left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Basically looks good, however, does this change anything aside from the vorbis support? For example I see we used to have --disable-music-midi, which this PR removes and I see instead native_midi - what does that do?

@Oipo
Copy link
Contributor Author

Oipo commented Nov 26, 2019

I don't know what you mean with removing a flag, as the entire configure script is not used anymore. Morever, native_midi is on the exclude_dir list, so it is not included at all. This is the output of ar t ~/.emscripten_cache/wasm-obj/libSDL2_mixer.a:

output_da57df6e.c.o
filter_7df26c7a.c.o
timidity_3f702b91.c.o
mix_2bcb8a79.c.o
ctrlmode_38c3921b.c.o
resample_d9262308.c.o
tables_0aed606b.c.o
instrum_f13813d5.c.o
sdl_a_9d81ec37.c.o
playmidi_156535ef.c.o
sdl_c_59c8c4f1.c.o
common_d6fb4c0b.c.o
readmidi_affc377e.c.o
effect_position_cc55aa70.c.o
music_3a43f3ce.c.o
effect_stereoreverse_fab0f25e.c.o
mixer_4cebbd54.c.o
load_voc_0bcd3ee4.c.o
load_flac_614d8202.c.o
load_ogg_5bbfe13c.c.o
load_aiff_b53cb078.c.o
music_ogg_aea40b8f.c.o
effects_internal_7052591f.c.o
wavestream_c703950e.c.o

Which reminded me that I need to add the timidity directory to the excludes. After which the output becomes

effect_position_cc55aa70.c.o
music_3a43f3ce.c.o
effect_stereoreverse_fab0f25e.c.o
mixer_4cebbd54.c.o
load_voc_0bcd3ee4.c.o
load_flac_614d8202.c.o
load_ogg_5bbfe13c.c.o
load_aiff_b53cb078.c.o
music_ogg_aea40b8f.c.o
effects_internal_7052591f.c.o
wavestream_c703950e.c.o

@kripken
Copy link
Member

kripken commented Nov 26, 2019

I see, thanks! So there's no expected change for users, aside from properly including all the necessary files now so that SDL2_mixer can use OGG? Just making sure we don't need to mention anything in the changelog - I'll land this and mention that.

@kripken kripken merged commit 728aaeb into emscripten-core:incoming Nov 26, 2019
@Oipo
Copy link
Contributor Author

Oipo commented Nov 27, 2019

That is correct!

belraquib pushed a commit to belraquib/emscripten that referenced this pull request Dec 23, 2020
…scripten-core#9849)

Vorbis actually consists of three libraries: vorbis.a, vorbisfile.a and vorbisenc.a.

This pull request modifies the vorbis port to build and cache these files.

Fixes emscripten-core#7879
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

SDL2 mixer compilation problem
3 participants