[vlc-commits] [Git][videolan/vlc][master] 12 commits: meson: add placeholder to generate the Windows installers

Steve Lhomme (@robUx4) gitlab at videolan.org
Mon Aug 24 07:08:40 UTC 2026



Steve Lhomme pushed to branch master at VideoLAN / VLC


Commits:
9dea96cc by Steve Lhomme at 2026-08-24T08:41:46+02:00
meson: add placeholder to generate the Windows installers

- - - - -
58f0792a by Steve Lhomme at 2026-08-24T08:41:46+02:00
meson: use a specific path to install plugins on Windows

The Windows layout of the package is different that regular UNIX layout.

- - - - -
b47cfd4c by Steve Lhomme at 2026-08-24T08:41:46+02:00
meson: install the libbluray java files on Windows

Similar to what is done in packages.mak.

- - - - -
7935bede by Steve Lhomme at 2026-08-24T08:41:46+02:00
meson: install text files in Windows install

- - - - -
f093d7ad by Steve Lhomme at 2026-08-24T08:41:46+02:00
meson: install the HRTFS files on Windows

Similar to what is done in packages.mak.

- - - - -
e238643e by Steve Lhomme at 2026-08-24T08:41:46+02:00
meson: install headers in sdk folder on Windows

Similar to what is done in packages.mak.

- - - - -
2d64e5fb by Steve Lhomme at 2026-08-24T08:41:46+02:00
meson: install vlc_about.h header with the other plugin headers

- - - - -
227553e9 by Steve Lhomme at 2026-08-24T08:42:22+02:00
meson: install extra executables in the root prefix on Windows

- - - - -
3e267c9e by Steve Lhomme at 2026-08-24T08:42:42+02:00
meson: install vlc.exe/libvlccore.dll/libvlc.dll in the root prefix on Windows

Otherwise it's in <prefix>/bin.

- - - - -
a374f6d1 by Steve Lhomme at 2026-08-24T08:42:42+02:00
meson: do not install compat library on Windows

It's not installed with autotools packaging.

- - - - -
209d6f34 by Steve Lhomme at 2026-08-24T08:42:42+02:00
meson: install skins2 data

It's missing the default.vlt file.

- - - - -
f2b7872f by Steve Lhomme at 2026-08-24T08:42:42+02:00
meson: generate the library pkgconfig file

- - - - -


11 changed files:

- bin/meson.build
- compat/meson.build
- + extras/package/win32/meson.build
- include/meson.build
- lib/meson.build
- meson.build
- modules/access/meson.build
- modules/audio_filter/meson.build
- modules/gui/skins2/meson.build
- modules/meson.build
- src/meson.build


Changes:

=====================================
bin/meson.build
=====================================
@@ -28,6 +28,7 @@ if build_vlc and (host_system != 'darwin' or have_osx) and not have_win_store an
         include_directories: [vlc_include_dirs],
         dependencies: vlc_deps,
         install: true,
+        install_dir: bindir_path,
         win_subsystem: 'windows'
     )
 


=====================================
compat/meson.build
=====================================
@@ -7,7 +7,7 @@ if libcompat_sources.length() > 0
         include_directories: [vlc_include_dirs],
         dependencies: [m_lib],
         pic: true,
-        install: true,
+        install: host_system != 'windows',
         install_dir: get_option('libdir') / 'vlc'
     )
 endif


=====================================
extras/package/win32/meson.build
=====================================
@@ -0,0 +1,8 @@
+# TODO handle nsis packaging
+# TODO handle msi packaging
+
+install_data('../../../AUTHORS',   rename : 'AUTHORS.txt', install_dir : '.')
+install_data('../../../COPYING',   rename : 'COPYING.txt', install_dir : '.')
+install_data('../../../NEWS',      rename : 'NEWS.txt',    install_dir : '.')
+install_data('../../../README.md', rename : 'README.txt',  install_dir : '.')
+install_data('../../../THANKS',    rename : 'THANKS.txt',  install_dir : '.')


=====================================
include/meson.build
=====================================
@@ -14,7 +14,7 @@ install_headers(
     'vlc/libvlc_renderer_discoverer.h',
     'vlc/libvlc_version.h',
     'vlc/libvlc_video.h',
-    subdir: vlc_pkg_suffix)
+    install_dir: libvlc_header_path)
 
 # Install VLC plugin headers
 install_headers(
@@ -126,4 +126,4 @@ install_headers(
     'vlc_window.h',
     'vlc_xlib.h',
     'vlc_xml.h',
-    subdir: vlc_pkg_suffix / 'plugins')
+    install_dir: plugins_header_path)


=====================================
lib/meson.build
=====================================
@@ -28,7 +28,8 @@ libvlc = library('vlc',
     c_args: libvlc_cargs,
     link_with: [vlc_libcompat],
     dependencies: [libvlccore_dep, m_lib, threads_dep],
-    install: true
+    install: true,
+    install_dir: libdir_path,
 )
 
 # Publicly exported dependency object. Used when libvlc is wrapped in a meson
@@ -38,4 +39,11 @@ libvlc_dep = declare_dependency(
     include_directories: include_directories('../include'),
 )
 
+pkg = import('pkgconfig')
+pkg.generate(libvlc,
+    name: 'libvlc', # name of the .pc file in addition to Name: variable / 'LibVLC control API',
+    description: 'VLC media player external control library',
+    version: meson.project_version(),
+    install_dir: vlccore_lib_path / 'pkgconfig')
+
 meson.override_dependency('libvlc', libvlc_dep)


=====================================
meson.build
=====================================
@@ -43,16 +43,6 @@ vlc_build_root = meson.current_build_dir()
 
 cdata = configuration_data()
 
-gen_vlc_about = find_program('buildsystem/gen-vlc-about.py')
-vlc_about = custom_target('vlc_about.h',
-                        input:   ['COPYING', 'THANKS', 'AUTHORS'],
-                        output:  ['vlc_about.h'],
-                        command: [gen_vlc_about,
-                                   '@INPUT0@',
-                                   '@INPUT1@',
-                                   '@INPUT2@',
-                                   '@OUTPUT@'])
-
 cargo_rustc_static_libs = find_program('buildsystem/cargo-rustc-static-libs.py')
 cargo_output = find_program('buildsystem/cargo-output.py')
 
@@ -1036,13 +1026,30 @@ cdata.set_quoted('VLC_COMPILE_HOST',    '[not implemented with meson]') # TODO
 prefix_path = get_option('prefix')
 vlc_pkg_suffix = meson.project_name().to_lower()
 
-libdir_path = prefix_path / get_option('libdir')
-pkglibdir_path = libdir_path / vlc_pkg_suffix
-libexecdir_path = prefix_path / get_option('libexecdir')
-pkglibexecdir_path = libexecdir_path / vlc_pkg_suffix
 sysdatadir_path = prefix_path / get_option('datadir')
 pkgdatadir_path = sysdatadir_path / vlc_pkg_suffix
 localedir_path = prefix_path / get_option('localedir')
+if host_system == 'windows'
+    libdir_path = prefix_path
+    pkglibdir_path = libdir_path / vlc_pkg_suffix
+    plugins_path = prefix_path / 'plugins'
+    libvlc_header_path = prefix_path / 'sdk/include/vlc'
+    plugins_header_path = prefix_path / 'sdk/include/vlc/plugins'
+    bindir_path = prefix_path
+    libexecdir_path = prefix_path
+    pkglibexecdir_path = prefix_path
+    vlccore_lib_path = prefix_path / 'sdk/lib'
+else
+    libdir_path = prefix_path / get_option('libdir')
+    pkglibdir_path = libdir_path / vlc_pkg_suffix
+    plugins_path = pkglibdir_path / 'plugins'
+    libvlc_header_path = prefix_path / 'include' / vlc_pkg_suffix
+    plugins_header_path = prefix_path / 'include' / vlc_pkg_suffix / 'plugins'
+    bindir_path = prefix_path / 'bin'
+    libexecdir_path = prefix_path / get_option('libexecdir')
+    pkglibexecdir_path = libexecdir_path / vlc_pkg_suffix
+    vlccore_lib_path = prefix_path / 'lib' / vlc_pkg_suffix
+endif
 
 cdata.set_quoted('LIBDIR', libdir_path)
 cdata.set_quoted('PKGLIBDIR', pkglibdir_path)
@@ -1052,6 +1059,18 @@ cdata.set_quoted('SYSDATADIR', sysdatadir_path)
 cdata.set_quoted('PKGDATADIR', pkgdatadir_path)
 cdata.set_quoted('LOCALEDIR', localedir_path)
 
+gen_vlc_about = find_program('buildsystem/gen-vlc-about.py')
+vlc_about = custom_target('vlc_about.h',
+                        input:   ['COPYING', 'THANKS', 'AUTHORS'],
+                        output:  ['vlc_about.h'],
+                        install: true,
+                        install_dir: plugins_header_path,
+                        command: [gen_vlc_about,
+                                   '@INPUT0@',
+                                   '@INPUT1@',
+                                   '@INPUT2@',
+                                   '@OUTPUT@'])
+
 # Enable stream outputs
 if get_option('stream_outputs')
     cdata.set('ENABLE_SOUT', 1)
@@ -1153,6 +1172,11 @@ subdir('modules')
 # VLC binaries
 subdir('bin')
 
+# OS specific packaging
+if host_system == 'windows'
+    subdir('extras/package/win32')
+endif
+
 # Generate config.h
 configure_file(input: 'config.h.meson',
   output: 'config.h',


=====================================
modules/access/meson.build
=====================================
@@ -348,6 +348,15 @@ if libbluray_dep.found()
         'sources' : files('bluray.c'),
         'dependencies' : [libbluray_dep]
     }
+
+    if host_system == 'windows'
+        # BD-J JAR
+        # install_subdir(libbluray_dep.get_variable(pkgconfig: 'prefix') / 'share/java', install_dir : plugins_path)
+        install_data(libbluray_dep.get_variable(pkgconfig: 'prefix') / 'share/java/libbluray-j2se-' + libbluray_dep.version() + '.jar',
+                    install_dir : plugins_path )
+        install_data(libbluray_dep.get_variable(pkgconfig: 'prefix') / 'share/java/libbluray-awt-j2se-' + libbluray_dep.version() + '.jar',
+                    install_dir : plugins_path )
+    endif
 endif
 
 


=====================================
modules/audio_filter/meson.build
=====================================
@@ -193,6 +193,11 @@ if spatial_dep.found()
     if (spatial_dep.version().version_compare('>= 0.4.0'))
         spatial_extra_cppflags += ['-DHAVE_SPATIALAUDIOVERSION_H=1']
     endif
+
+    if host_system == 'windows'
+        # HRTFS
+        install_subdir('../../share/hrtfs', install_dir : prefix_path )
+    endif
 endif
 
 vlc_modules += {


=====================================
modules/gui/skins2/meson.build
=====================================
@@ -185,3 +185,19 @@ if host_system == 'darwin' and skins2_enabled
         ],
     }
 endif
+
+if skins2_enabled
+    if host_system == 'windows'
+        skinsdatadir_path = prefix_path / 'skins'
+    else
+        skinsdatadir_path = prefix_path / get_option('datadir')
+    endif
+
+    install_data('../../../share/skins2/fonts/FreeSans.ttf',     install_dir: skinsdatadir_path / 'fonts')
+    install_data('../../../share/skins2/fonts/FreeSansBold.ttf', install_dir: skinsdatadir_path / 'fonts')
+    install_data('../../../share/skins2/skin.catalog',           install_dir: skinsdatadir_path)
+    install_data('../../../share/skins2/skin.dtd',               install_dir: skinsdatadir_path)
+    install_data('../../../share/skins2/winamp2.xml',            install_dir: skinsdatadir_path)
+
+    # TODO default.vlt which is a gzip/tarball of the skins2/default folder
+endif


=====================================
modules/meson.build
=====================================
@@ -481,7 +481,7 @@ foreach module : vlc_modules
         extra_files: module.get('extra_files', []),
         build_by_default: true,
         install: true,
-        install_dir: pkglibdir_path / 'plugins',
+        install_dir: plugins_path,
         kwargs: kwargs,
         shortname: shortname,
     )


=====================================
src/meson.build
=====================================
@@ -489,7 +489,8 @@ libvlccore = library(
     link_args: libvlccore_link_args,
     link_with: [vlc_libcompat],
     dependencies: libvlccore_deps,
-    install: true
+    install: true,
+    install_dir: libdir_path,
 )
 
 libvlccore_dep = declare_dependency(link_with: libvlccore, sources: vlc_about)



View it on GitLab: https://code.videolan.org/videolan/vlc/-/compare/de0fea001b0dd2579e94986188f06f3b107ff644...f2b7872f5526430d296f67d434525aeebe15a37a

-- 
View it on GitLab: https://code.videolan.org/videolan/vlc/-/compare/de0fea001b0dd2579e94986188f06f3b107ff644...f2b7872f5526430d296f67d434525aeebe15a37a
You're receiving this email because of your account on code.videolan.org. Manage all notifications: https://code.videolan.org/-/profile/notifications | Help: https://code.videolan.org/help




More information about the vlc-commits mailing list