Building GStreamer Using Meson

Hello Team,

We are building GStreamer using Meson on Windows machine as described in the below link.
Building from source using Meson

We cloned the repository from GIT.
git clone GStreamer / gstreamer · GitLab

Executed the meson command.
meson setup gstreamer/build

The meson command is executed successfully.

later we changed the directory to the build directory and ran ninja

But it is giving the below errors.
Please help/guide in building the gstreamer.

C:\gstreamer\build>ninja
[1/14799] Compiling C object subprojects/orc/orc/orc-0.4-0.dll.p/orc.c.obj
FAILED: subprojects/orc/orc/orc-0.4-0.dll.p/orc.c.obj
“cl” “-Isubprojects\orc\orc\orc-0.4-0.dll.p” “-Isubprojects\orc\orc” “-I…..\Users\AsifMoha\gstreamer\subprojects\orc\orc” “-Isubprojects\orc” “-I…..\Users\AsifMoha\gstreamer\subprojects\orc” “/MD” “/nologo” “/showIncludes” “/utf-8” “/W2” “/O2” “/Zi” “-DHAVE_CONFIG_H” “-we4013” “/utf-8” “-DORC_ENABLE_UNSTABLE_API” “-D_GNU_SOURCE” “-DBUILDING_ORC” “/Fdsubprojects\orc\orc\orc-0.4-0.dll.p\orc.c.pdb” /Fosubprojects/orc/orc/orc-0.4-0.dll.p/orc.c.obj “/c” …/…/Users/AsifMoha/gstreamer/subprojects/orc/orc/orc.c
CreateProcess failed: The system cannot find the file specified.
[2/14799] Compiling C object subprojects/orc/orc/orc-0.4-0.dll.p/orcbytecode.c.obj
FAILED: subprojects/orc/orc/orc-0.4-0.dll.p/orcbytecode.c.obj
“cl” “-Isubprojects\orc\orc\orc-0.4-0.dll.p” “-Isubprojects\orc\orc” “-I…..\Users\AsifMoha\gstreamer\subprojects\orc\orc” “-Isubprojects\orc” “-I…..\Users\AsifMoha\gstreamer\subprojects\orc” “/MD” “/nologo” “/showIncludes” “/utf-8” “/W2” “/O2” “/Zi” “-DHAVE_CONFIG_H” “-we4013” “/utf-8” “-DORC_ENABLE_UNSTABLE_API” “-D_GNU_SOURCE” “-DBUILDING_ORC” “/Fdsubprojects\orc\orc\orc-0.4-0.dll.p\orcbytecode.c.pdb” /Fosubprojects/orc/orc/orc-0.4-0.dll.p/orcbytecode.c.obj “/c” …/…/Users/AsifMoha/gstreamer/subprojects/orc/orc/orcbytecode.c
CreateProcess failed: The system cannot find the file specified.
[3/14799] Compiling C object subprojects/orc/orc/orc-0.4-0.dll.p/orccode.c.obj
FAILED: subprojects/orc/orc/orc-0.4-0.dll.p/orccode.c.obj
“cl” “-Isubprojects\orc\orc\orc-0.4-0.dll.p” “-Isubprojects\orc\orc” “-I…..\Users\AsifMoha\gstreamer\subprojects\orc\orc” “-Isubprojects\orc” “-I…..\Users\AsifMoha\gstreamer\subprojects\orc” “/MD” “/nologo” “/showIncludes” “/utf-8” “/W2” “/O2” “/Zi” “-DHAVE_CONFIG_H” “-we4013” “/utf-8” “-DORC_ENABLE_UNSTABLE_API” “-D_GNU_SOURCE” “-DBUILDING_ORC” “/Fdsubprojects\orc\orc\orc-0.4-0.dll.p\orccode.c.pdb” /Fosubprojects/orc/orc/orc-0.4-0.dll.p/orccode.c.obj “/c” …/…/Users/AsifMoha/gstreamer/subprojects/orc/orc/orccode.c
CreateProcess failed: The system cannot find the file specified.
[4/14799] Compiling C object subprojects/orc/orc/orc-0.4-0.dll.p/orccodemem.c.obj
FAILED: subprojects/orc/orc/orc-0.4-0.dll.p/orccodemem.c.obj
“cl” “-Isubprojects\orc\orc\orc-0.4-0.dll.p” “-Isubprojects\orc\orc” “-I…..\Users\AsifMoha\gstreamer\subprojects\orc\orc” “-Isubprojects\orc” “-I…..\Users\AsifMoha\gstreamer\subprojects\orc” “/MD” “/nologo” “/showIncludes” “/utf-8” “/W2” “/O2” “/Zi” “-DHAVE_CONFIG_H” “-we4013” “/utf-8” “-DORC_ENABLE_UNSTABLE_API” “-D_GNU_SOURCE” “-DBUILDING_ORC” “/Fdsubprojects\orc\orc\orc-0.4-0.dll.p\orccodemem.c.pdb” /Fosubprojects/orc/orc/orc-0.4-0.dll.p/orccodemem.c.obj “/c” …/…/Users/AsifMoha/gstreamer/subprojects/orc/orc/orccodemem.c
CreateProcess failed: The system cannot find the file specified.
[5/14799] Compiling C object subprojects/orc/orc/orc-0.4-0.dll.p/orccompiler.c.obj
FAILED: subprojects/orc/orc/orc-0.4-0.dll.p/orccompiler.c.obj
“cl” “-Isubprojects\orc\orc\orc-0.4-0.dll.p” “-Isubprojects\orc\orc” “-I…..\Users\AsifMoha\gstreamer\subprojects\orc\orc” “-Isubprojects\orc” “-I…..\Users\AsifMoha\gstreamer\subprojects\orc” “/MD” “/nologo” “/showIncludes” “/utf-8” “/W2” “/O2” “/Zi” “-DHAVE_CONFIG_H” “-we4013” “/utf-8” “-DORC_ENABLE_UNSTABLE_API” “-D_GNU_SOURCE” “-DBUILDING_ORC” “/Fdsubprojects\orc\orc\orc-0.4-0.dll.p\orccompiler.c.pdb” /Fosubprojects/orc/orc/orc-0.4-0.dll.p/orccompiler.c.obj “/c” …/…/Users/AsifMoha/gstreamer/subprojects/orc/orc/orccompiler.c
CreateProcess failed: The system cannot find the file specified.
[6/14799] Compiling C object subprojects/orc/orc/orc-0.4-0.dll.p/orcdebug.c.obj
FAILED: subprojects/orc/orc/orc-0.4-0.dll.p/orcdebug.c.obj
“cl” “-Isubprojects\orc\orc\orc-0.4-0.dll.p” “-Isubprojects\orc\orc” “-I…..\Users\AsifMoha\gstreamer\subprojects\orc\orc” “-Isubprojects\orc” “-I…..\Users\AsifMoha\gstreamer\subprojects\orc” “/MD” “/nologo” “/showIncludes” “/utf-8” “/W2” “/O2” “/Zi” “-DHAVE_CONFIG_H” “-we4013” “/utf-8” “-DORC_ENABLE_UNSTABLE_API” “-D_GNU_SOURCE” “-DBUILDING_ORC” “/Fdsubprojects\orc\orc\orc-0.4-0.dll.p\orcdebug.c.pdb” /Fosubprojects/orc/orc/orc-0.4-0.dll.p/orcdebug.c.obj “/c” …/…/Users/AsifMoha/gstreamer/subprojects/orc/orc/orcdebug.c
CreateProcess failed: The system cannot find the file specified.
ninja: build stopped: subcommand failed.

Regards,
Asif

Are you running this from a Visual Studio command prompt?

Does running ninja.exe --version work?

Does running cl.exe work? (should print version and some other stuff I think, from memory)

We were running the meson setup on command prompt and not on Visual studioi command prompt.

Thanks for the information.

we ran the meson setup with Visual Studio command prompt and then ran ninja.
We moved ahead with build, but we are getting below error during the ninja run.

We have trimmed the output to just display the errors. We can share the complete output if required.

C:\gstreamer\build>ninja
[0/11924] Generating subprojects/cairo-1.18.0/test/cairo-test-constructors.c with a custom command
CreateProcess failed. Command attempted:
““C:\Users\AsifMoha\AppData\Local\Programs\Python\Python311-32\python.exe” “…/…/Users/AsifMoha/gstreamer/subprojects/cairo-1.18.0/test/make-cairo-test-constructors.py” “subprojects/cairo-1.18.0/test/cairo-test-constructors.c” “…/…/Users/AsifMoha/gstreamer/subprojects/cairo-1.18.0/test/a1-bug.c” “…/…/Users/AsifMoha/gstreamer/subprojects/cairo-1.18.0/test/a1-clip.c” “…/…/Users/AsifMoha/gstreamer/subprojects/cairo-1.18.0/test/svg-surface-source.c” “…/…/Users/AsifMoha/gstreamer/subprojects/cairo-1.18.0/test/multi-page.c” “…/…/Users/AsifMoha/gstreamer/subprojects/cairo-1.18.0/test/mime-unique-id.c” “…/…/Users/AsifMoha/gstreamer/subprojects/cairo-1.18.0/test/create-regions.c” “…/…/Users/AsifMoha/gstreamer/subprojects/cairo-1.18.0/test/fallback-resolution.c””
ninja: fatal: CreateProcess: The parameter is incorrect.
(is the command line too long?)

I would suggest you try a minimal Hello World Meson project like described here Tutorial first to make sure that the basic environment works right.

Yes, we tried the minimal Hello World Meson project and it works.
We are running this ninja command with x86_x64 Cross Tolls Command Prompt for VS 2019 and we want to build 32 bit version. Is this correct ?

Still getting the same error.

If you have built gstreamer from scratch on windows, please share the steps you have followed and the dependencies software you have downloaded.
I’m using Cygwin instead of MinGW, Is this fine?

Hello,

We were able to successfully build gstreamer.
Now were are trying to build the debug version of gstreamer and we are getting the below errors during compilation.
gstreamer version is .123.9.
meson setup builddir --buildtype=debug works well.
But when we give meson compile -C builddir we are getting the below errors.
Are there any specific commands to build debug verion ?

C:\gst_debug_build>ninja
[16/253] Linking target subprojects/gst-rtsp-server/gst/rtsp-server/gstrtspserver-1.0-0.dll
Creating library subprojects\gst-rtsp-server\gst\rtsp-server\gstrtspserver-1.0.lib and object subprojects\gst-rtsp-server\gst\rtsp-server\gstrtspserver-1.0.exp
[27/253] Linking target subprojects/gst-libav/ext/libav/gstlibav.dll
FAILED: subprojects/gst-libav/ext/libav/gstlibav.dll subprojects/gst-libav/ext/libav/gstlibav.pdb
“link” /MACHINE:x64 /OUT:subprojects/gst-libav/ext/libav/gstlibav.dll subprojects/gst-libav/ext/libav/gstlibav.dll.p/gstav.c.obj subprojects/gst-libav/ext/libav/gstlibav.dll.p/gstavprotocol.c.obj subprojects/gst-libav/ext/libav/gstlibav.dll.p/gstavcodecmap.c.obj subprojects/gst-libav/ext/libav/gstlibav.dll.p/gstavutils.c.obj subprojects/gst-libav/ext/libav/gstlibav.dll.p/gstavaudenc.c.obj subprojects/gst-libav/ext/libav/gstlibav.dll.p/gstavvidenc.c.obj subprojects/gst-libav/ext/libav/gstlibav.dll.p/gstavauddec.c.obj subprojects/gst-libav/ext/libav/gstlibav.dll.p/gstavviddec.c.obj subprojects/gst-libav/ext/libav/gstlibav.dll.p/gstavcfg.c.obj subprojects/gst-libav/ext/libav/gstlibav.dll.p/gstavdemux.c.obj subprojects/gst-libav/ext/libav/gstlibav.dll.p/gstavmux.c.obj subprojects/gst-libav/ext/libav/gstlibav.dll.p/gstavdeinterlace.c.obj subprojects/gst-libav/ext/libav/gstlibav.dll.p/gstavvidcmp.c.obj “/release” “/nologo” “/DEBUG” “/PDB:subprojects\gst-libav\ext/libav\gstlibav.pdb” “/DLL” “/IMPLIB:subprojects\gst-libav\ext/libav\gstlibav.lib” “subprojects/FFmpeg/libavfilter.a” “subprojects/FFmpeg/libavutil.a” “subprojects/FFmpeg/libavformat.a” “subprojects/FFmpeg/libavcodec.a” “subprojects/FFmpeg/libswresample.a” “subprojects/FFmpeg/libswscale.a” “subprojects/FFmpeg/libpostproc.a” “subprojects/gstreamer/gst/gstreamer-1.0.lib” “subprojects/glib-2.78.3/glib/glib-2.0.lib” “subprojects/proxy-libintl/intl.lib” “subprojects/glib-2.78.3/gobject/gobject-2.0.lib” “subprojects/glib-2.78.3/gmodule/gmodule-2.0.lib” “subprojects/gstreamer/libs/gst/base/gstbase-1.0.lib” “subprojects/gst-plugins-base/gst-libs/gst/video/gstvideo-1.0.lib” “subprojects/gst-plugins-base/gst-libs/gst/audio/gstaudio-1.0.lib” “subprojects/gst-plugins-base/gst-libs/gst/tag/gsttag-1.0.lib” “subprojects/zlib-1.2.13/z.lib” “subprojects/gst-plugins-base/gst-libs/gst/pbutils/gstpbutils-1.0.lib” “ws2_32.lib” “user32.lib” “bcrypt.lib” “mfplat.lib” “mfuuid.lib” “ole32.lib” “strmiids.lib” “ole32.lib” “secur32.lib” “ws2_32.lib” “user32.lib” “bcrypt.lib” “mfplat.lib” “mfuuid.lib” “ole32.lib” “strmiids.lib” “ole32.lib” “secur32.lib” “ws2_32.lib” “user32.lib” “bcrypt.lib” “ws2_32.lib” “user32.lib” “bcrypt.lib” “mfplat.lib” “mfuuid.lib” “ole32.lib” “strmiids.lib” “ole32.lib” “secur32.lib” “ws2_32.lib” “user32.lib” “bcrypt.lib” “mfplat.lib” “mfuuid.lib” “ole32.lib” “strmiids.lib” “ole32.lib” “ws2_32.lib” “user32.lib” “bcrypt.lib” “ws2_32.lib” “user32.lib” “bcrypt.lib” “ws2_32.lib” “user32.lib” “bcrypt.lib” “kernel32.lib” “user32.lib” “gdi32.lib” “winspool.lib” “shell32.lib” “ole32.lib” “oleaut32.lib” “uuid.lib” “comdlg32.lib” “advapi32.lib”
Creating library subprojects\gst-libav\ext/libav\gstlibav.lib and object subprojects\gst-libav\ext/libav\gstlibav.exp
libavformat.a(libavformat_rtmpproto.c.obj) : error LNK2019: unresolved external symbol ff_rtmpe_gen_pub_key referenced in function rtmp_handshake
libavformat.a(libavformat_rtmpproto.c.obj) : error LNK2019: unresolved external symbol ff_rtmpe_compute_secret_key referenced in function rtmp_handshake
libavformat.a(libavformat_rtmpproto.c.obj) : error LNK2019: unresolved external symbol ff_rtmpe_encrypt_sig referenced in function rtmp_handshake
libavformat.a(libavformat_rtmpproto.c.obj) : error LNK2019: unresolved external symbol ff_rtmpe_update_keystream referenced in function rtmp_handshake
libavcodec.a(libavcodec_x86_fdctdsp_init.c.obj) : error LNK2019: unresolved external symbol ff_fdct_sse2 referenced in function ff_fdctdsp_init_x86
libavcodec.a(libavcodec_x86_vc1dsp_init.c.obj) : error LNK2019: unresolved external symbol ff_vc1dsp_init_mmx referenced in function ff_vc1dsp_init_x86
libavcodec.a(libavcodec_x86_vc1dsp_init.c.obj) : error LNK2019: unresolved external symbol ff_vc1dsp_init_mmxext referenced in function ff_vc1dsp_init_x86
subprojects\gst-libav\ext\libav\gstlibav.dll : fatal error LNK1120: 7 unresolved externals
[30/253] Linking target subprojects/gst-rtsp-server/gst/rtsp-sink/gstrtspclientsink.dll
Creating library subprojects\gst-rtsp-server\gst\rtsp-sink\gstrtspclientsink.lib and object subprojects\gst-rtsp-server\gst\rtsp-sink\gstrtspclientsink.exp
[34/253] Compiling C object subprojects/gst-rtsp-server/examples/test-onvif-client.exe.p/test-onvif-client.c.obj
…/gstreamer/subprojects/gst-rtsp-server/examples/test-onvif-client.c(649): warning C4090: ‘initializing’: different ‘const’ qualifiers
…/gstreamer/subprojects/gst-rtsp-server/examples/test-onvif-client.c(653): warning C4090: ‘initializing’: different ‘const’ qualifiers
…/gstreamer/subprojects/gst-rtsp-server/examples/test-onvif-client.c(655): warning C4090: ‘initializing’: different ‘const’ qualifiers
ninja: build stopped: subcommand failed.

Regards,
Asif