<div dir="auto">Yeah, my hope was that I could build individual binaries via mingw that I could test by dropping into the MSVC binaries folder. It appears aa though various interdependencies are preventing that. I'm all honesty, I'd rather build from Linux if possible, that was my goal. But that's just not the case. <div dir="auto"><br></div><div dir="auto">I'll focus on building from Windows for this particular goal of mine (though I still intend to build from source for Linux, just not for my day job). </div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Mon, Jul 20, 2020, 11:27 PM Matthew Waters <<a href="mailto:ystreet00@gmail.com">ystreet00@gmail.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
  
    
  
  <div>
    <div>Ah, then that requires a windows native
      build.  That cannot currently be cross-compiled from linux.<br>
      <br>
      Cheers<br>
      -Matt<br>
      <br>
      On 21/7/20 1:47 pm, Ben Rush wrote:<br>
    </div>
    <blockquote type="cite">
      
      <div dir="ltr">At the moment I'd like to generate the Visual
        Studio binaries. But, thanks for the docker link. </div>
      <br>
      <div class="gmail_quote">
        <div dir="ltr" class="gmail_attr">On Mon, Jul 20, 2020 at 9:33
          PM Matthew Waters <<a href="mailto:ystreet00@gmail.com" target="_blank" rel="noreferrer">ystreet00@gmail.com</a>> wrote:<br>
        </div>
        <blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
          <div>
            <div>Yes, for non-linux platforms.  It doesn't mean that
              gst-build can't do it, just that gst-build requires more
              setup and is not as regularly tested for this case :).<br>
              <br>
              We do have a docker-based CI for the cross-mingw cases
              already that you may want to borrow: <a href="https://gitlab.freedesktop.org/gstreamer/gst-ci/-/blob/master/docker/cerbero/Dockerfile-fedora" target="_blank" rel="noreferrer">https://gitlab.freedesktop.org/gstreamer/gst-ci/-/blob/master/docker/cerbero/Dockerfile-fedora</a>
              and <a href="https://gitlab.freedesktop.org/gstreamer/gst-ci/-/blob/master/gitlab/ci_template.yml#L896" target="_blank" rel="noreferrer">https://gitlab.freedesktop.org/gstreamer/gst-ci/-/blob/master/gitlab/ci_template.yml#L896</a>.<br>
              <br>
              Cheers<br>
              -Matt<br>
              <br>
              On 20/7/20 2:11 am, Ben Rush wrote:<br>
            </div>
            <blockquote type="cite">
              <div dir="ltr">I see, so -- you technically do a lot of
                your dev work using cerbero too? You're the expert, so
                I'll follow your lead. <br>
                <br>
                FYI: once I get this working and am able to do a
                cross-compile build of all the components (and in
                particular, webrtcbin), I'm going to respond to this
                thread with my dockerfile so that it's reproducible for
                posterity's sake. <br>
                <br>
                Cheers. </div>
              <br>
              <div class="gmail_quote">
                <div dir="ltr" class="gmail_attr">On Sun, Jul 19, 2020
                  at 10:51 AM Matthew Waters <<a href="mailto:ystreet00@gmail.com" target="_blank" rel="noreferrer">ystreet00@gmail.com</a>>
                  wrote:<br>
                </div>
                <blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
                  <div>
                    <div>That's cool!  We'd love to see those
                      improvements/suggestions.<br>
                      <br>
                      It is possible to develop with cerbero however the
                      required steps are a little bit more involved.<br>
                      <br>
                      For branches that track git (all GStreamer recipes
                      and some others), what I personally do is push a
                      branch to the cerbero local sources of the
                      specific project (on linux by default is at
                      '$HOME/.cache/cerbero-sources/$project'). 
                      './cerbero-uninstalled show-config' will tell you
                      exactly where.<br>
                      <br>
                      Then either, change the branch in the recipe, or
                      add a '$HOME/.cerbero/cerbero.cfg' file (python
                      syntax) with something like the following (where
                      the values are a git commit reference, branch
                      names in this case).<br>
                      <br>
                      ```<br>
                      recipes_commits = {<br>
                      #  "libusrsctp" : "hang-fix",<br>
                        "gst-plugins-base-1.0" :
                      "egl-display-debug-cat",<br>
                      #  "gstreamer-1.0" : "fail",<br>
                        "gst-plugins-bad-1.0" :
                      "amcvideodec-gl-sync-meta-copy",<br>
                      #  "gst-validate" : "android",<br>
                      #  "gst-editing-services-1.0" : "android",<br>
                      }<br>
                      ```<br>
                      <br>
                      For tarball-based sources, creating a patch in the
                      local sources directory and then adding the patch
                      to the recipe is usually the goto move.<br>
                      <br>
                      Cheers<br>
                      -Matt<br>
                      <br>
                      On 20/7/20 1:33 am, Ben Rush wrote:<br>
                    </div>
                    <blockquote type="cite">
                      <div dir="ltr">Thanks. I will take a look at your
                        suggestions. 
                        <div><br>
                        </div>
                        <div>On the Cerbero v. meson front: my company
                          relies on windows a lot, and so I'm doing a
                          lot of use of GStreamer on Windows. I've got a
                          lot of suggestions / tweaks / etc. that I'd
                          love to be able to contribute to the project
                          to better help people such as myself who are
                          doing things exclusively on Windows. It's my
                          understanding that cerbero is best for
                          building what's in master, but that if I want
                          to do any sort of rapid iteration / testing,
                          meson is the route to go. So, that's my
                          driving force. <br>
                          <br>
                          And thanks again, mate. Your work on
                          everything is appreciated by a lot of people. </div>
                      </div>
                      <br>
                      <div class="gmail_quote">
                        <div dir="ltr" class="gmail_attr">On Sun, Jul
                          19, 2020 at 10:21 AM Matthew Waters <<a href="mailto:ystreet00@gmail.com" target="_blank" rel="noreferrer">ystreet00@gmail.com</a>>
                          wrote:<br>
                        </div>
                        <blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
                          <div>
                            <div>You also need to be careful with
                              constructing all of the necessary paths
                              and environment variables so that no
                              system libraries are found and that your
                              custom build versions are found instead. 
                              <a href="https://gitlab.freedesktop.org/gstreamer/cerbero/-/blob/master/cerbero/config.py#L450" target="_blank" rel="noreferrer">https://gitlab.freedesktop.org/gstreamer/cerbero/-/blob/master/cerbero/config.py#L450</a>
                              contains a non-exhaustive list.  There are
                              also platform-specific configurations that
                              may modify some of those values: e.g. for
                              windows: <a href="https://gitlab.freedesktop.org/gstreamer/cerbero/-/blob/master/config/windows.config" target="_blank" rel="noreferrer">https://gitlab.freedesktop.org/gstreamer/cerbero/-/blob/master/config/windows.config</a>
                              and then there may be recipe-specific
                              workarounds, e.g. for openssl: <a href="https://gitlab.freedesktop.org/gstreamer/cerbero/-/blob/master/recipes/openssl.recipe#L150" target="_blank" rel="noreferrer">https://gitlab.freedesktop.org/gstreamer/cerbero/-/blob/master/recipes/openssl.recipe#L150</a>.<br>
                              <br>
                              Generally we would recommend the cerbero
                              route as it tries takes care of all of
                              this for you.  If something doesn't work,
                              we can attempt to fix it.<br>
                              <br>
                              On 20/7/20 1:05 am, Ben Rush wrote:<br>
                            </div>
                            <blockquote type="cite">
                              <div dir="ltr">
                                <div dir="ltr">
                                  <div dir="ltr">I see, yes. That's a
                                    distinct possibility given the fact
                                    my docker container has libnice-dev,
                                    which made it in on accident.
                                    However, what's odd is that I did do
                                    a cross build of openssl as part of
                                    the docker container. Is this not
                                    enough? <br>
                                    <br>
                                    <div dir="ltr">RUN git clone <a href="https://github.com/openssl/openssl.git" target="_blank" rel="noreferrer">https://github.com/openssl/openssl.git</a>
                                      && \</div>
                                    <div dir="ltr"><span style="white-space:pre-wrap">  </span>cd
                                      openssl && \</div>
                                    <div dir="ltr"><span style="white-space:pre-wrap">  </span>./Configure
--cross-compile-prefix=x86_64-w64-mingw32- mingw64 && \</div>
                                    <div dir="ltr"><span style="white-space:pre-wrap">  </span>make
                                      && \</div>
                                    <div dir="ltr"><span style="white-space:pre-wrap">  </span>make
                                      install</div>
                                    <div dir="ltr"><br>
                                    </div>
                                    <div>All of this ran before any of
                                      the output I mentioned above. </div>
                                  </div>
                                </div>
                              </div>
                              <br>
                              <div class="gmail_quote">
                                <div dir="ltr" class="gmail_attr">On
                                  Sun, Jul 19, 2020 at 10:03 AM Matthew
                                  Waters <<a href="mailto:ystreet00@gmail.com" target="_blank" rel="noreferrer">ystreet00@gmail.com</a>>
                                  wrote:<br>
                                </div>
                                <blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
                                  <div>
                                    <div>You need to have a cross-build
                                      of openssl or gnutls to be able to
                                      build libnice.<br>
                                      <br>
                                      I assume that the 'pkg-config
                                      --version openssl' is only showing
                                      you the system versions which
                                      would be built for linux, not
                                      mingw.<br>
                                      <br>
                                      On 20/7/20 12:16 am, Ben Rush
                                      wrote:<br>
                                    </div>
                                    <blockquote type="cite">
                                      <div dir="ltr">
                                        <div dir="ltr">
                                          <div dir="ltr">In particular,
                                            I'm having trouble getting
                                            the webrtc library to build,
                                            and it appears as though --
                                            if I track it back far
                                            enough -- the issue is with
                                            libnice. The meson build
                                            output results in the output
                                            at the end of this email
                                            (I'll defer posting it now
                                            to make the email reading
                                            easier). <br>
                                            <br>
                                            According to the error, the
                                            problem is that pkg-config
                                            is unable to find openssl.
                                            But running this at the
                                            command prompt (after
                                            attaching to the container),
                                            results in what appears to
                                            be a positive for finding
                                            openssl: <br>
                                            <br>
                                            <div dir="ltr">root@b5f46e708137:/gst-build#
                                              pkg-config --version
                                              openssl</div>
                                            <div dir="ltr">0.29.1</div>
                                            <div dir="ltr"><br>
                                            </div>
                                            <div>Ultimately I'm curious
                                              if someone has been able
                                              to build webrtc and the
                                              like cross compiled for
                                              Windows from Ubuntu, etc.
                                              I'd love to have a nice,
                                              dockerized system for
                                              building for Windows but
                                              after about day of
                                              fighting, I've yet to get
                                              it to work completely. </div>
                                            <div><br>
                                            </div>
                                            <div>Here is the output: </div>
                                            <br>
                                            <div>|Executing subproject
                                              libnice method meson</div>
                                            <div>|</div>
                                            <div>|Project name: libnice</div>
                                            <div>|Project version:
                                              0.1.17.1</div>
                                            <div>|C compiler for the
                                              build machine: cc (gcc
                                              7.5.0 "cc (Ubuntu
                                              7.5.0-3ubuntu1~18.04)
                                              7.5.0")</div>
                                            <div>|C linker for the build
                                              machine: cc ld.bfd 2.30</div>
                                            <div>|C compiler for the
                                              host machine:
                                              x86_64-w64-mingw32-gcc
                                              (gcc 7.3.0
                                              "x86_64-w64-mingw32-gcc
                                              (GCC) 7.3-win32 20180312")</div>
                                            <div>|C linker for the host
                                              machine:
                                              x86_64-w64-mingw32-gcc
                                              ld.bfd 2.30</div>
                                            <div>|Library iphlpapi
                                              found: YES</div>
                                            <div>|Library ws2_32 found:
                                              YES</div>
                                            <div>|Checking for function
                                              "clock_gettime" : NO
                                              (cached)</div>
                                            <div>|Library rt found: NO</div>
                                            <div>|Checking for function
                                              "clock_gettime" with
                                              dependency -lrt: NO
                                              (cached)</div>
                                            <div>|Has header
                                              "arpa/inet.h" : NO
                                              (cached)</div>
                                            <div>|Has header "net/in.h"
                                              : NO</div>
                                            <div>|Has header "netdb.h" :
                                              NO (cached)</div>
                                            <div>|Has header "ifaddrs.h"
                                              : NO</div>
                                            <div>|Has header "unistd.h"
                                              : YES (cached)</div>
                                            <div>|Checking for function
                                              "poll" : NO (cached)</div>
                                            <div>|Checking for function
                                              "getifaddrs" : NO</div>
                                            <div>|Compiler for C
                                              supports arguments
                                              -fno-strict-aliasing: YES</div>
                                            <div>|Message: warning
                                              level: 1</div>
                                            <div>|Message: werror
                                              enabled: false</div>
                                            <div>|Dependency gio-2.0
                                              found: YES 2.62.6 (cached)</div>
                                            <div>|Dependency (anonymous)
                                              from subproject
                                              subprojects/glib found:
                                              YES 2.62.6</div>
                                            <div>|Dependency (anonymous)
                                              from subproject
                                              subprojects/glib found:
                                              YES 2.62.6</div>
                                            <div>|Dependency (anonymous)
                                              from subproject
                                              subprojects/glib found:
                                              YES 2.62.6</div>
                                            <div>|Dependency gthread-2.0
                                              from subproject
                                              subprojects/glib found:
                                              YES 2.62.6</div>
                                            <div>|Message: Crypto
                                              library requested: auto</div>
                                            <div>|Run-time dependency
                                              gnutls found: NO (tried
                                              pkgconfig and cmake)</div>
                                            <div>|Run-time dependency
                                              openssl found: NO (tried
                                              pkgconfig and cmake)</div>
                                            <div>|Looking for a fallback
                                              subproject for the
                                              dependency openssl</div>
                                            <div>|Subproject directory
                                              not found and openssl.wrap
                                              file not found</div>
                                            <div>|Subproject 
                                              subprojects/openssl is
                                              buildable: NO (disabling)</div>
                                            <div>|Dependency openssl
                                              from subproject
                                              subprojects/openssl found:
                                              NO</div>
                                            <div>|Library crypto found:
                                              NO</div>
                                            <div>|Library eay32 found:
                                              NO</div>
                                            <div>|</div>
                                            <div>|subprojects/libnice/meson.build:249:4:
                                              Exception: Problem
                                              encountered: Either GnuTLS
                                              or OpenSSL is required as
                                              crypto library, but
                                              neither was found</div>
                                          </div>
                                        </div>
                                      </div>
                                      <br>
                                      <fieldset></fieldset>
                                      <pre>_______________________________________________
gstreamer-devel mailing list
<a href="mailto:gstreamer-devel@lists.freedesktop.org" target="_blank" rel="noreferrer">gstreamer-devel@lists.freedesktop.org</a>
<a href="https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel" target="_blank" rel="noreferrer">https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel</a>
</pre>
                                    </blockquote>
                                    <br>
                                  </div>
                                </blockquote>
                              </div>
                            </blockquote>
                            <br>
                          </div>
                        </blockquote>
                      </div>
                    </blockquote>
                  </div>
                </blockquote>
              </div>
            </blockquote>
            <br>
          </div>
        </blockquote>
      </div>
    </blockquote>
    <br>
  </div>

</blockquote></div>