[vlc-devel] [PATCH v3] package/win32: use VLC_EXTRA_CFLAGS environment variable to pass CFLAGS

Marvin Scholz epirat07 at gmail.com
Tue Dec 17 12:10:03 CET 2019



On 17 Dec 2019, at 8:36, Steve Lhomme wrote:

> So that Meson doesn't try to pick them.
>
> When cross-compiling Meson uses the environment variables to test the 
> native
> compiler (even if it will never be used). Passing clang options meant 
> to
> produce PDB files will be rejected by the host gcc compiler and Meson 
> will
> refuse to compile (with the cross compiler).
>
> Similar to 5c76f3478cb038a550de21f6267d57c55c963391 on macos.
> ---
>  extras/package/win32/build.sh | 37 
> ++++++++++++++++++++++++++++++++++-
>  1 file changed, 36 insertions(+), 1 deletion(-)
>
> diff --git a/extras/package/win32/build.sh 
> b/extras/package/win32/build.sh
> index 9607fcfe058..6b19f0b629e 100755
> --- a/extras/package/win32/build.sh
> +++ b/extras/package/win32/build.sh
> @@ -106,6 +106,34 @@ else
>      COMPILING_WITH_CLANG=0
>  fi
>
> +# Write config.mak for contribs
> +# Globals:
> +#   VLC_EXTRA_CFLAGS
> +#   VLC_EXTRA_CXXFLAGS
> +#   VLC_EXTRA_LDFLAGS
> +write_config_mak()
> +{
> +    # Flags to be used for C-like compilers (C, C++, Obj-C)
> +    local clike_flags="$VLC_EXTRA_CFLAGS"
> +
> +    # local vlc_cppflags="-arch $ARCH"
Just remove this?

> +    local vlc_cflags="$clike_flags"
> +    local vlc_cxxflags="$VLC_EXTRA_CXXFLAGS $clike_flags"
> +    local vlc_objcflags="$clike_flags"
This can be removed.

> +
> +    local vlc_ldflags="$VLC_EXTRA_LDFLAGS"
> +
> +    echo "Creating makefile..."
> +    test -e config.mak && unlink config.mak
> +    exec 3>config.mak || return $?
> +
> +    printf '# This file was automatically generated!\n\n' >&3
> +    printf '%s := %s\n' "CFLAGS" "${vlc_cflags}" >&3
> +    printf '%s := %s\n' "CXXFLAGS" "${vlc_cxxflags}" >&3
> +    printf '%s := %s\n' "OBJCFLAGS" "${vlc_objcflags}" >&3
This can be removed as well.

> +    printf '%s := %s\n' "LDFLAGS" "${vlc_ldflags}" >&3
> +}
> +

You probably dont want to set the clfags to cxxflags either, as the 
reason this
was done in the iOS script is that the variable I used there only 
contains
flags that I know work for C, CXX and OBJC and its provided by the 
script, no
external means.
So the whole thing can be greatly simplified to this:

write_config_mak()
{
     echo "Creating makefile..."
     test -e config.mak && unlink config.mak
     exec 3>config.mak || return $?

     printf '# This file was automatically generated!\n\n' >&3
     printf '%s := %s\n' "CFLAGS" "${VLC_EXTRA_CFLAGS}" >&3
     printf '%s := %s\n' "CXXFLAGS" "${VLC_EXTRA_CXXFLAGS}" >&3
     printf '%s := %s\n' "LDFLAGS" "${VLC_EXTRA_LDFLAGS}" >&3
}


>  info "Building extra tools"
>  mkdir -p extras/tools
>  cd extras/tools
> @@ -147,6 +175,11 @@ fi
>  if [ "$RELEASE" != "yes" ]; then
>       CONTRIBFLAGS="$CONTRIBFLAGS --disable-optim"
>  fi
> +
> +# Write config.mak with flags for the build and compiler overrides
> +# Set flag to error on partial availability
> +write_config_mak
> +
>  ${SCRIPT_PATH}/../../../contrib/bootstrap --host=$TRIPLET 
> $CONTRIBFLAGS
>
>  # Rebuild the contribs or use the prebuilt ones
> @@ -190,7 +223,9 @@ if [ ! -z "$WITH_PDB" ]; then
>      CONFIGFLAGS="$CONFIGFLAGS --enable-pdb"
>  fi
>
> -${SCRIPT_PATH}/configure.sh --host=$TRIPLET 
> --with-contrib=../contrib/$TRIPLET $CONFIGFLAGS
> +${SCRIPT_PATH}/configure.sh --host=$TRIPLET 
> --with-contrib=../contrib/$TRIPLET $CONFIGFLAGS \
> +    CFLAGS="$VLC_EXTRA_CFLAGS  -Werror=incompatible-pointer-types 
> -Werror=missing-field-initializers" \
> +    CXXFLAGS="$VLC_EXTRA_CXXFLAGS  -Werror=incompatible-pointer-types 
> -Werror=missing-field-initializers"
>

This does not behave like it should.
For contribs you set CXXFLAGS to VLC_EXTRA_CXXFLAGS and 
VLC_EXTRA_CFLAGS, while here
you only set it to VLC_EXTRA_CXXFLAGS.
And VLC_EXTRA_LDFLAGS are not set at all here.

Please either consistently do the one thing or the other, but dont 
differ from what
you do for contribs vs. configure, as thats really quite confusing.

So you probably just should do:

   vlc_error_flags="-Werror=incompatible-pointer-types 
-Werror=missing-field-initializers"

   CFLAGS="$VLC_EXTRA_CFLAGS $vlc_error_flags"
   CXXFLAGS="$VLC_EXTRA_CXXFLAGS $vlc_error_flags"
   LDFLAGS="$VLC_EXTRA_LDFLAGS"

>  info "Compiling"
>  make -j$JOBS
> -- 
> 2.17.1
>
> _______________________________________________
> vlc-devel mailing list
> To unsubscribe or modify your subscription options:
> https://mailman.videolan.org/listinfo/vlc-devel


More information about the vlc-devel mailing list