[vlc-commits] [Git][videolan/vlc][master] 12 commits: contrib: use the proper CMAKE_SYSTEM_NAME for iOS and derivatives
Rémi Denis-Courmont (@Courmisch)
gitlab at videolan.org
Sat Oct 11 10:09:41 UTC 2025
Rémi Denis-Courmont pushed to branch master at VideoLAN / VLC
Commits:
c027d668 by Steve Lhomme at 2025-10-11T13:09:07+03:00
contrib: use the proper CMAKE_SYSTEM_NAME for iOS and derivatives
- iOs, tvOS and watchOS are supported since CMake 3.14 [^1].
- visionOS is supported since CMake 3.28 [^2].
[^1]: https://cmake.org/cmake/help/latest/release/3.14.html
[^2]: https://cmake.org/cmake/help/latest/release/3.28.html
- - - - -
34d36ce8 by Steve Lhomme at 2025-10-11T13:09:07+03:00
tools: require CMake 3.28 for proper visionOS support
- - - - -
556cede0 by Steve Lhomme at 2025-10-11T13:09:07+03:00
contrib: use a variable to set the cross file generator environment
Similar to CMAKE_TOOLCHAIN_ENV.
- - - - -
6fdf5e80 by Steve Lhomme at 2025-10-11T13:09:07+03:00
contrib: only use windres in crossfile.meson for Windows targets
It's only used for Windows targets. This is also the case for CMake.
- - - - -
e6d3ebbc by Steve Lhomme at 2025-10-11T13:09:07+03:00
contrib: handle a sysroot with the compiler
Via the same OSX_SYSROOT environment variable as for CMake.
- - - - -
9f49e396 by Steve Lhomme at 2025-10-11T13:09:07+03:00
contrib: add a built-in options section in the contrib crossfile.meson
This is used to pass compiler options used even for function tests.
A lot of the example cross files have this set [^1][^2][^3].
[^1]: https://github.com/mesonbuild/meson/blob/master/cross/iphone.txt
[^2]: https://github.com/mesonbuild/meson/blob/master/cross/arm64cl.txt
[^3]: https://github.com/mesonbuild/meson/blob/master/cross/metrowerks-arm.txt
- - - - -
6d51f185 by Steve Lhomme at 2025-10-11T13:09:07+03:00
package/macosx: env.build.sh: export MACOSX_DEPLOYMENT_TARGET
It is used by CMake to initialize the minimum target [^1].
It's also used by the compiler if -mmacosx-version-min is not set according to
the clang manpage on macOS [^2] (verified on my machine).
[^1]: https://cmake.org/cmake/help/latest/variable/CMAKE_OSX_DEPLOYMENT_TARGET.html
[^2]: https://developer.apple.com/forums/thread/739342
- - - - -
def1d8c7 by Steve Lhomme at 2025-10-11T13:09:07+03:00
package/apple: make VLC_DEPLOYMENT_TARGETxxx directly available to contribs
So it can be passed to meson and cmake generators.
VLC_DEPLOYMENT_TARGET_CFLAG is used by CMake to initialize the minimum target [^1].
[^1]: https://cmake.org/cmake/help/latest/variable/CMAKE_OSX_DEPLOYMENT_TARGET.html
- - - - -
1421c51f by Steve Lhomme at 2025-10-11T13:09:07+03:00
contrib: set the minimum Darwin OS as build-in option in crossfile.meson
- - - - -
8f49ca39 by Steve Lhomme at 2025-10-11T13:09:07+03:00
contrib: set CMAKE_OSX_SYSROOT as a cached string
As suggested in the documentation [^1].
> This variable should be set as a CACHE entry (or else CMake may remove it
> while initializing a cache entry of the same name) unless policy CMP0126 is
> set to NEW.
[^1]: https://cmake.org/cmake/help/latest/variable/CMAKE_OSX_SYSROOT.html
- - - - -
092a90b6 by Steve Lhomme at 2025-10-11T13:09:07+03:00
contrib: set the CMAKE_OSX_DEPLOYMENT_TARGET for all Darwin CMake targets
The MACOSX_DEPLOYMENT_TARGET environment variable only affects -mmacosx-version-min.
We can use the same variable for all other macOS targets in CMake by
using CMAKE_OSX_DEPLOYMENT_TARGET [^1].
[^1]: https://cmake.org/cmake/help/latest/variable/CMAKE_OSX_DEPLOYMENT_TARGET.html
- - - - -
5c84339e by Steve Lhomme at 2025-10-11T13:09:07+03:00
contrib: set CMAKE_OSX_ARCHITECTURES
It's telling CMake to pass the proper -arch [^1].
We only build one arch at a time.
[^1]: https://cmake.org/cmake/help/latest/variable/CMAKE_OSX_ARCHITECTURES.html
- - - - -
6 changed files:
- contrib/src/gen-cmake-toolchain.py
- contrib/src/gen-meson-machinefile.py
- contrib/src/main.mak
- extras/package/apple/build.sh
- extras/package/macosx/env.build.sh
- extras/tools/bootstrap
Changes:
=====================================
contrib/src/gen-cmake-toolchain.py
=====================================
@@ -23,6 +23,11 @@ def _add_environ_val_not_empty(meson_key, env_key):
if env_value != None and env_value != '':
args.file.write("set({} {})\n".format(meson_key, env_value))
+def _add_environ_cached_val_not_empty(meson_key: str, env_key: str):
+ env_value = os.environ.get(env_key)
+ if env_value != None and env_value != '':
+ args.file.write('set({} "{}" CACHE STRING "")\n'.format(meson_key, env_value))
+
# Generate meson crossfile
args.file.write("# CMake toolchain automatically generated by contrib makefile\n")
@@ -39,7 +44,9 @@ _add_environ_val('CMAKE_C_COMPILER_AR', 'AR')
_add_environ_val('CMAKE_CXX_COMPILER_AR', 'AR')
_add_environ_val('CMAKE_LINKER', 'LD')
-_add_environ_val('CMAKE_OSX_SYSROOT', 'OSX_SYSROOT')
+_add_environ_cached_val_not_empty('CMAKE_OSX_SYSROOT', 'OSX_SYSROOT')
+_add_environ_cached_val_not_empty('CMAKE_OSX_ARCHITECTURES', 'OSX_ARCHITECTURES')
+_add_environ_cached_val_not_empty('CMAKE_OSX_DEPLOYMENT_TARGET', 'OSX_DEPLOYMENT_TARGET')
_add_environ_val('CMAKE_C_COMPILER', 'CC')
_add_environ_val('CMAKE_CXX_COMPILER', 'CXX')
@@ -62,4 +69,3 @@ _add_environ_val('CMAKE_FIND_ROOT_PATH_MODE_PACKAGE', 'PATH_MODE_PACKAGE')
env_value = os.environ.get('EXTRA_INCLUDE')
if env_value != None and env_value != '':
args.file.write("include({})\n".format(env_value))
-
=====================================
contrib/src/gen-meson-machinefile.py
=====================================
@@ -40,6 +40,15 @@ def _add_environ_val(meson_key, env_key):
if env_value != None:
args.file.write("{} = '{}'\n".format(meson_key, env_value))
+def _add_environ_val_extras(meson_key: str, env_key: str, extra_keys: list):
+ env_value = os.environ.get(env_key)
+ if env_value != None:
+ if extra_keys != None:
+ full_value = [env_value] + extra_keys
+ args.file.write("{} = {}\n".format(meson_key, full_value))
+ else:
+ args.file.write("{} = '{}'\n".format(meson_key, env_value))
+
# Helper to single-quote array items
def _quote_arr(arr):
return ["'" + item + "'" for item in arr]
@@ -64,11 +73,16 @@ args.file.write("# Automatically generated by contrib makefile\n")
if args.type == 'internal':
# Binaries section
args.file.write("\n[binaries]\n")
- _add_environ_val('c', 'CC')
- _add_environ_val('cpp', 'CXX')
+ osxsysroot = os.environ.get('OSX_SYSROOT')
+ if osxsysroot == None or osxsysroot == '':
+ sysroot = None
+ else:
+ sysroot = ['-isysroot', osxsysroot]
+ _add_environ_val_extras('c', 'CC', sysroot)
+ _add_environ_val_extras('cpp', 'CXX', sysroot)
if os.environ.get('HOST_SYSTEM') == 'darwin':
- _add_environ_val('objc', 'OBJC')
- _add_environ_val('objcpp', 'OBJCXX')
+ _add_environ_val_extras('objc', 'OBJC', sysroot)
+ _add_environ_val_extras('objcpp', 'OBJCXX', sysroot)
_add_environ_val('ar', 'AR')
_add_environ_val('ranlib', 'RANLIB')
_add_environ_val('strip', 'STRIP')
@@ -76,6 +90,17 @@ if args.type == 'internal':
_add_environ_val('windres', 'WINDRES')
_add_environ_val('cmake', 'CMAKE')
+ # built-in options section
+ args.file.write("\n[built-in options]\n")
+ _add_environ_val('c_args', 'CFLAGS_BUILTIN')
+ _add_environ_val('cpp_args', 'CPPFLAGS_BUILTIN')
+ _add_environ_val('objc_args', 'OBJCFLAGS_BUILTIN')
+ _add_environ_val('objcpp_args', 'OBJCPPFLAGS_BUILTIN')
+ _add_environ_val('c_link_args', 'LDFLAGS_C_BUILTIN')
+ _add_environ_val('cpp_link_args', 'LDFLAGS_CPP_BUILTIN')
+ _add_environ_val('objc_link_args', 'LDFLAGS_OBJC_BUILTIN')
+ _add_environ_val('objcpp_link_args', 'LDFLAGS_OBJCPP_BUILTIN')
+
# Properties section
args.file.write("\n[properties]\n")
args.file.write("needs_exe_wrapper = true\n")
@@ -130,4 +155,3 @@ elif args.type.startswith('external'):
else:
assert False, 'Unhandled type!'
-
=====================================
contrib/src/main.mak
=====================================
@@ -733,8 +733,24 @@ CMAKE_SYSTEM_NAME = WindowsStore
endif
endif
endif
-ifdef HAVE_DARWIN_OS
+ifdef HAVE_MACOSX
CMAKE_SYSTEM_NAME = Darwin
+else
+ifdef HAVE_TVOS
+CMAKE_SYSTEM_NAME = tvOS
+else
+ifdef HAVE_WATCHOS
+CMAKE_SYSTEM_NAME = watchOS
+else
+ifdef HAVE_XROS
+CMAKE_SYSTEM_NAME = visionOS
+else
+ifdef HAVE_IOS
+CMAKE_SYSTEM_NAME = iOS
+endif
+endif
+endif
+endif
endif
ifdef HAVE_EMSCRIPTEN
CMAKE_SYSTEM_NAME = Emscripten
@@ -754,6 +770,18 @@ ifdef HAVE_CROSS_COMPILE
endif
endif
ifdef HAVE_DARWIN_OS
+ifeq ($(ARCH),aarch64)
+ CMAKE_TOOLCHAIN_ENV += OSX_ARCHITECTURES="arm64"
+else
+ifeq ($(ARCH),arm)
+ CMAKE_TOOLCHAIN_ENV += OSX_ARCHITECTURES="armv7"
+else
+ CMAKE_TOOLCHAIN_ENV += OSX_ARCHITECTURES="$(ARCH)"
+endif
+endif
+ifdef VLC_DEPLOYMENT_TARGET
+ CMAKE_TOOLCHAIN_ENV += OSX_DEPLOYMENT_TARGET="$(VLC_DEPLOYMENT_TARGET)"
+endif
ifdef HAVE_IOS
CMAKE_TOOLCHAIN_ENV += OSX_SYSROOT="$(IOS_SDK)"
else
@@ -809,15 +837,43 @@ endif
endif
endif
-crossfile.meson: $(SRC)/gen-meson-machinefile.py
- $(HOSTTOOLS) \
+MESON_CROSSFILE_ENV = $(HOSTTOOLS) \
CMAKE="$(shell command -v cmake)" \
- WINDRES="$(WINDRES)" \
PKG_CONFIG="$(PKG_CONFIG)" \
HOST_SYSTEM="$(MESON_SYSTEM_NAME)" \
HOST_ARCH="$(subst i386,x86,$(ARCH))" \
- HOST="$(HOST)" \
- $(SRC)/gen-meson-machinefile.py $@
+ HOST="$(HOST)"
+
+ifdef HAVE_WIN32
+ MESON_CROSSFILE_ENV += WINDRES="$(WINDRES)"
+endif
+
+ifdef HAVE_DARWIN_OS
+ifdef HAVE_IOS
+ MESON_CROSSFILE_ENV += CFLAGS_BUILTIN="$(VLC_DEPLOYMENT_TARGET_CFLAG)"
+ MESON_CROSSFILE_ENV += CPPFLAGS_BUILTIN="$(VLC_DEPLOYMENT_TARGET_CFLAG)"
+ MESON_CROSSFILE_ENV += OBJCFLAGS_BUILTIN="$(VLC_DEPLOYMENT_TARGET_CFLAG)"
+ MESON_CROSSFILE_ENV += OBJCPPFLAGS_BUILTIN="$(VLC_DEPLOYMENT_TARGET_CFLAG)"
+ MESON_CROSSFILE_ENV += LDFLAGS_C_BUILTIN="$(VLC_DEPLOYMENT_TARGET_LDFLAG)"
+ MESON_CROSSFILE_ENV += LDFLAGS_CPP_BUILTIN="$(VLC_DEPLOYMENT_TARGET_LDFLAG)"
+ MESON_CROSSFILE_ENV += LDFLAGS_OBJC_BUILTIN="$(VLC_DEPLOYMENT_TARGET_LDFLAG)"
+ MESON_CROSSFILE_ENV += LDFLAGS_OBJCPP_BUILTIN="$(VLC_DEPLOYMENT_TARGET_LDFLAG)"
+ MESON_CROSSFILE_ENV += OSX_SYSROOT="$(IOS_SDK)"
+else
+ MESON_CROSSFILE_ENV += CFLAGS_BUILTIN="-mmacosx-version-min=$(VLC_DEPLOYMENT_TARGET)"
+ MESON_CROSSFILE_ENV += CPPFLAGS_BUILTIN="-mmacosx-version-min=$(VLC_DEPLOYMENT_TARGET)"
+ MESON_CROSSFILE_ENV += OBJCFLAGS_BUILTIN="-mmacosx-version-min=$(VLC_DEPLOYMENT_TARGET)"
+ MESON_CROSSFILE_ENV += OBJCPPFLAGS_BUILTIN="-mmacosx-version-min=$(VLC_DEPLOYMENT_TARGET)"
+ MESON_CROSSFILE_ENV += LDFLAGS_C_BUILTIN="-mmacosx-version-min=$(VLC_DEPLOYMENT_TARGET)"
+ MESON_CROSSFILE_ENV += LDFLAGS_CPP_BUILTIN="-mmacosx-version-min=$(VLC_DEPLOYMENT_TARGET)"
+ MESON_CROSSFILE_ENV += LDFLAGS_OBJC_BUILTIN="-mmacosx-version-min=$(VLC_DEPLOYMENT_TARGET)"
+ MESON_CROSSFILE_ENV += LDFLAGS_OBJCPP_BUILTIN="-mmacosx-version-min=$(VLC_DEPLOYMENT_TARGET)"
+ MESON_CROSSFILE_ENV += OSX_SYSROOT="$(MACOSX_SDK)"
+endif
+endif
+
+crossfile.meson: $(SRC)/gen-meson-machinefile.py
+ $(MESON_CROSSFILE_ENV) $(SRC)/gen-meson-machinefile.py $@
cat $@
# Default pattern rules
=====================================
extras/package/apple/build.sh
=====================================
@@ -423,6 +423,10 @@ write_config_mak()
printf '%s := %s\n' "RANLIB" "${VLC_HOST_RANLIB}" >&3
printf '%s := %s\n' "NM" "${VLC_HOST_NM}" >&3
+ printf '%s := %s\n' "VLC_DEPLOYMENT_TARGET" "${VLC_DEPLOYMENT_TARGET}" >&3
+ printf '%s := %s\n' "VLC_DEPLOYMENT_TARGET_CFLAG" "${VLC_DEPLOYMENT_TARGET_CFLAG}" >&3
+ printf '%s := %s\n' "VLC_DEPLOYMENT_TARGET_LDFLAG" "${VLC_DEPLOYMENT_TARGET_LDFLAG}" >&3
+
# Add the ac_cv_ var exports in the config.mak for the contribs
echo "Appending ac_cv_ vars to config.mak"
vlcSetSymbolEnvironment ac_var_to_export_ac_var >&3
=====================================
extras/package/macosx/env.build.sh
=====================================
@@ -162,6 +162,7 @@ vlcSetContribEnvironment() {
export CXXFLAGS="-Werror=partial-availability"
export OBJCFLAGS="-Werror=partial-availability"
+ export VLC_DEPLOYMENT_TARGET="$MINIMAL_OSX_VERSION"
export EXTRA_CFLAGS="-isysroot $SDKROOT -mmacosx-version-min=$MINIMAL_OSX_VERSION -DMACOSX_DEPLOYMENT_TARGET=$MINIMAL_OSX_VERSION -arch $ACTUAL_HOST_ARCH"
export EXTRA_LDFLAGS="-isysroot $SDKROOT -mmacosx-version-min=$MINIMAL_OSX_VERSION -DMACOSX_DEPLOYMENT_TARGET=$MINIMAL_OSX_VERSION -arch $ACTUAL_HOST_ARCH"
export XCODE_FLAGS="MACOSX_DEPLOYMENT_TARGET=$MINIMAL_OSX_VERSION -sdk $SDKROOT WARNING_CFLAGS=-Werror=partial-availability"
=====================================
extras/tools/bootstrap
=====================================
@@ -156,7 +156,7 @@ check automake 1.15
check m4 1.4.16
check libtool 2.4
check pkg-config
-check cmake 3.21.0
+check cmake 3.28.0
check_tar
check_sed
check ant
View it on GitLab: https://code.videolan.org/videolan/vlc/-/compare/6bdcf1406801dc7d3489858bbbb3965bc8965091...5c84339e88aa8bf4452ec2a26a4d844482cfaa51
--
View it on GitLab: https://code.videolan.org/videolan/vlc/-/compare/6bdcf1406801dc7d3489858bbbb3965bc8965091...5c84339e88aa8bf4452ec2a26a4d844482cfaa51
You're receiving this email because of your account on code.videolan.org.
VideoLAN code repository instance
More information about the vlc-commits
mailing list