PDA-Windows CE

Avec Windows RT et les Windowsphones, Microsoft a toujours voulu mettre un pied (avec beaucoup de retard) dans le monde de de la mobilité.

Même si ce fut le précurseur des smartphone avec Windows CE (PDA, appareil embarqué, Dreamcast).

Après de multiples échecs, il revient avec des ordinateurs portables à base d’ARM.

Seul bémol, même si l’ OS est là, l’écosystème est pas vraiment au point notamment les jeux.



VLC for all

VLC est un projet ouvert qui bouge au grès des envies et des moyens.

Il est disponible sur beaucoup de plateformes et d’architectures, avec une grande palette de codec pour la version de base.

Ce qui sous entend qu’il existe donc des projets qui sont basé sur ses sources mais destiné à un quelques choses de spécifique.

Pêle-mêle, il existe une version pour IOS, Android, TV, Windows Store, vous trouverez tout la liste sur le Git de VLC.

Certaines des versions ne sont pas disponible publiquement, il faudra donc les compiler.

Compiler une application Linux pour Windows.

VLC a été créé pour Linux puis porté sur d’autre OS .

Donc il faudra soit passé par une machine virtuel comme “Oracle VM VirtualBox” + une distribution linux ou même le WSL de Microsoft.

Dans les deux cas il faudra un gros CPU et 30 Go d’espace.

Les manipulations ci-dessous ont été effectué sous WSL2/Debian.

Chaine d’outils et compilateur crossé

On va aborder ici la création d’un toolchain et d’un compilateur croisé.

Pour compiler sur une autre architecture que celle native, il vous faut un compilateur croisé.

Le projet LLVM MinGW, vous proposera un script pour en créer un simplement.

Si vous êtes sous Virtualbox, penser a activer le partage des cœurs du CPU dans les paramètres de la machine virtuel.

Pour linux, j’ai utilise la liste des paquets listés plus loin pour VLC.

Packages

sudo apt-get install libtool automake autoconf autopoint make gettext pkg-config git subversion cmake cvs zip nsis bzip2 yasm ragel ant default-jdk dos2unix gcc-mingw-w64-x86-64 g++-mingw-w64-x86-64 gcc-mingw-w64-i686 g++-mingw-w64-i686 mingw-w64-tools gcc g++ python3 bison flex wget gperf curl python3-distutils clang p7zip-full python3-mako

Compilation llvm-mingw

Version 13

git clone --single-branch --branch llvm-13.0 https://github.com/mstorsjo/llvm-mingw.git llvm-13.0-src

mkdir llvm-13.0 && cd llvm-13.0-src

./build-all.sh ../llvm-13.0/
./strip-llvm.sh ../llvm-13.0/
cd .. && rm -rf llvm-13.0-src

WSL2

La version actuelle “Ubuntu” est Ubuntu 24.04 LTS, elle n’est pas compatible avec la version 13 de llvm.

Lors de l’installation de la distribution Linux sur WSL, spécifié la version 22.04 via la commande:

wsl --install Ubuntu-22.04

Si vous rencontrez des erreurs type: fatal error: Killed signal terminated program cc1plus

Il s’agit d’un maque mémoire, on va donc augmenter la taille de la mémoire virtuel, la swap.

Pour résoudre le problème, il faut créer un fichier .wslconfig dans le répertoire C:\Users\[nom utilisateur]\.

L’encodage du texte doit être au format UTF-8.

Et contenir :

[wsl2]
swap=24GB

VLC-4.x: Linux (X86 & ARM) et WSL2 (ARM)

M.A.J: WSL2 version ARM prend en charge l’émulation x86. Sur Linux, il vous faudra toujours passer par Wine HQ.

Le portage Windows de VLC 4.0 réclame l’utilitaire fxc2.exe, qui lui, fonctionne uniquement sur Windows x86 et x86_64.

Ca ne pose pas de problème avec WSL2 x86_64 mais sur Linux, il faudra passer par WineHQ (6.16 mini) mais les distribution Ubuntu et Debian fournissent une version 5.0.x/6.0.x

Pour ma part, j’ai compiler WineHQ avec la version GIT (7.14+).

Ça donne quelque chose comme ça

sudo apt-get install gcc-multilib g++-multilib#dépendence minimal.
export PATH=$HOME/llvm-13.0/:$HOME/llvm-13.0/bin/:$PATH #déclaration du toolchain.
git clone https://gitlab.winehq.org/wine/wine.git
cd wine
./configure --without-x --without-freetype
make -j8 #j étant le nombre de cœurs/taches du CPU.
alias wine="$HOME/wine/wine" #on créer un alias, pas besoin de l'installer. Ne fonctionne pas si un package "wine" est déjà installer. 

configure.sh

Ce fichier configure les options lié au spécifié la plateforme visée, là Windows, il intègre quelques optimisations.

Si vous visez une compilation pour Windows ARM, il faut modifier quelques options du fichier.

--enable-sse & --enable-mmx

peuvent être supprimés, elles font référence à des jeux d’instructions x86.

Vous pouvez rajoutez:

--enable-neon

qui est un jeux d’ instructions ARM.

Dépôts GIT

Une fois vous environnent installer, Il faudra télécharger le projet via la commande Git

Pour télécharger la version de développement “4.0” :

git clone --single-branch --branch master https://code.videolan.org/videolan/vlc.git vlc-4.x

Pour télécharger la version de développement de la branche 3.0.x :

git clone --single-branch --branch 3.0.x https://code.videolan.org/videolan/vlc.git vlc-3.x

Exemple avec une version stable de la branche 3.0.x

git clone --single-branch --branch 3.0.17.4 https://code.videolan.org/videolan/vlc.git vlc-3.0.17.4

Mise à jour

Pour mettre à jour les dépôts GIT, entrer dans le répertoire et taper :

cd vlc-3.x
git pull

Compilation via le script (VLC 3 et VLC 4 Dev)

Maintenant, il reste à déclarer compilateur compiler plus haut, adapter le chemin du path en fonction de la location de celui-ci.

export PATH=$HOME/llvm-13.0/:$HOME/llvm-13.0/bin/:$PATH

Créer un répertoire de compilation avec la commande “mkdir” , par exemple:

mkdir -p vlc-3.x/build/

Puis y accéder ave la commande “cd”, par exemple:

cd vlc-3.x/build/

De là, il suffi de lancer le script de compilation.

sh ../extras/package/win32/build.sh "options"

Ci-dessous vous trouverez la liste des options du script:

OPTIONS:
-h Show some help
-r Release mode (default is debug)
-a Use the specified arch (default: x86_64, possible i686, aarch64, armv7)
-p Use a Prebuilt contrib package (speeds up compilation)
-c Create a Prebuilt contrib package (rarely used)
-l Enable translations (can be slow)
-i Create an Installer (n: nightly, r: release, u: unsigned release archive)
-s Interactive shell (get correct environment variables for build)
-b Enable breakpad support and send crash reports to this URL
-d Create PDB files during the build
-D Create PDB files during the build, map the VLC sources to
e.g.: -D c:/sources/vlc
-x Add extra checks when compiling
-u Use the Universal C Runtime (instead of msvcrt)
-w Restrict to Windows Store APIs
-z Build without GUI (libvlc only)
-o Install the built binaries in the absolute path

Donc

sh ../extras/package/win32/build.sh -a armv7 -r

Vous pouvez lancer la compilation du projet (et croiser les doigts ).

Vous trouverez un archive 7zip et Zip.

Vous pourrez compiler un installateur sur Arm32 (armv7).

“A la main” (VLC 3 et VLC 4 Dev)

Comme pour le script il est possible de sélectionner une architecture armv7 (Windows RT et Windows 11 ARM 64) ou aarch64 (uniquement Windows 11 ARM 64).

C’est la même méthode pour Windows 64 Intel ou AMD.

Dans cette exemple sera utilisé armv7/winarm32 avec l’argument “armv7-w64-mingw32, pour la version 64 bits il suffit d’utiliser l’argument “aarch64-w64-mingw32”.

Compilation des outils manquants

cd vlc-4.x/extras/tools/
./bootstrap
make
cd ../..

Compilation de librairies tierces

mkdir -p contrib/build && cd contrib/build 
export PATH=$HOME/llvm-13.0/:$HOME/llvm-13.0/bin/:$PATH 
../bootstrap --host=armv7-w64-mingw32 
make fetch
make -j8 #nombre de CPU
cd ../..

Compilation de VLC

export PATH=$HOME/llvm-13.0/:$HOME/llvm-13.0/bin/:$PATH
export PKG_CONFIG_LIBDIR=$HOME/vlc-4.x/contrib/armv7-w64-mingw32/lib/pkgconfig
export PATH=$HOME/vlc-4.x/extras/tools/build/bin/:$PATH
./bootstrap
mkdir build && cd build
../configure --host=armv7-w64-mingw32
make

Pour créer un archive:

make package-win32-7zip 

Pour créer un installateur:

make package-win32

Version UCRT (VLC 4 Dev)

Cette version utilise Universal C Runtime intégré depuis Windows 10, donc incompatible avec les versions ultérieur de Windows.

Les bibliothèques tiers se compilent avec LLVM version 13 et VLC avec LLVM version14.

En utilisant la commande suivant:
sh ../extras/package/win32/build.sh -a aarch64 -x -u -S 0x0A000006 -i n

Mise à jour VLC 3.0.x (Flux RSS)

  • par Martin Storsjö
    This fixes building for aarch64 Windows with assert enabled versions of Clang. (This issue appeared recently, after updating to a newer version of libass that includes new aarch64 assembly.) The same patch has been sent upstream in https://github.com/libass/libass/pull/849. (cherry picked from commit 44710998) edited: – Minor conflicts around the $(APPLY) line
  • par Hugo Beauzée-Luyssen
    (cherry picked from commit 94ba3ab4)
  • par Martin Storsjö
    This avoids enabling HAVE_X86ASM in these configurations, fixing compilation. Also set proper values for WINDOWS_ARCH in these configurations. (cherry picked from commit 42855919) edited: – 616d1a05 was cherrypicked before (as 64e09957), causing compilation to fail for non-x86 Windows targets in 3.0. This caused some minor conflicts in cherrypicking this patch.
  • par Steve Lhomme
    The const versions are more versatile. (cherry picked from commit 42945dad)
  • par Steve Lhomme
    We should not be able to modify what we read. (cherry picked from commit c03249a0) (edited) edited: – 3.0 doesn't support VPx alpha

Mise à jour VLC 4.0.x (Flux RSS)

Crédit et liens

Téléchargement

Le premier lancement de VLC peut être très long, c’est lié à l’antivirus intégré à Windows.

Stable: VLC 3.0.21Développement: VLC 3.0.21.1
32bitsInstallateur (7zip)
Portable (7zip)
Installateur (7zip)
Portable (7zip)
64bitsInstallateur (7zip)
Portable (7zip)
Installateur (7zip)
Portable (7zip)
64bits UCRTInstallateur (7zip)
Portable (7zip)
Installateur (7zip)
Portable (7zip)

VLC 4.0 (dev) 64bits

Un dépôt officiel est disponible pour la version 4.0:

Index of /vlc/nightly-win64-arm-llvm/ (videolan.org)

Comments

  1. Pingback: Les logiciels compatibles Windows ARM – Rwan – Blog & autres.

  2. Pingback: ScummVM pour Windows ARM – Rwan – Blog & autres.

  3. jpp

    sur mon X elite, j’ai tout simplement installé msys2 et fait pacman -S mingw-w64-clang-aarch64-vlc . Ca a marché nicker j’ai vlc 3 en natif arm64.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *