Windows Phone

Windows Phone is experimentally supported as target.

The windows phone platform is supported since Libav11 and it is tracked on fate.

In order to build using armasm the gas-preprocessor is required, otherwise --disable-asm is required.

Make sure to use a gas-preprocessor as recent as the Libav sources. New assembly code can uncover unsupported asm constructs.

Prerequisites

Libav build system requires a working posix shell and gnumake, they are normally available through the cygwin or the msys distributions.

Once the posix shell environment is available the standard configure invocation can be used to build, only the msvc compiler is currently supported due the state of mingw-w64 support for arm.

It is strongly advise to use at least MSVC 2013 since its c99 support is sufficient to build without the need of the C99-to-C89 Converter & Wrapper.

Building

The configure invocation follows the standard cross compilation rules: arch, target-os and cpu must be set.

--enable-cross-compile
--arch=arm
--cpu=armv7-a
--target-os=win32

The toolchain is msvc.

--toolchain=msvc

Since the platform is experimental additional cflags must be passed.

--extra-cflags='-DWINAPI_FAMILY=WINAPI_FAMILY_PHONE_APP -MD -D_WIN32_WINNT=0x0602'

If building with MSVC 2013, some extra linker flags are required as well:

--extra-ldflags='-nodefaultlib:kernel32.lib -nodefaultlib:ole32.lib WindowsPhoneCore.lib'

The produced libraries are static by default, thus requiring that the user tracks and adds the required .lib by hand. Pass --enable-shared to avoid the problem completely.