Hello,
I'm doing packages for CYGWIN, with updated or missing libraries that
you can find here:

https://github.com/carlo-bramini/packages-cygwin

While doing this task, I got troubles when using Cygport with Meson.
If I create packages for CYGWIN, x86_64 or i686, I works fine.
But if I create packages by using cross compilers, in other words
NOARCH stuff, it doesn't work.
To be more precise, existing libraries and tools into the sysroot are not found.
This is an example output when building librubberband with MinGW cross
compilers:

Run-time dependency fftw3 found: NO (tried pkgconfig and cmake)
Run-time dependency sleef found: NO (tried pkgconfig and cmake)
Run-time dependency sleefdft found: NO (tried pkgconfig and cmake)
Run-time dependency samplerate found: NO (tried pkgconfig and cmake)
Run-time dependency speexdsp found: NO (tried pkgconfig and cmake)

I did a correction to Meson.cygclass and now it works like this:

Run-time dependency fftw3 found: YES 3.3.5
Run-time dependency sleef found: NO (tried pkgconfig and cmake)
Run-time dependency sleefdft found: NO (tried pkgconfig and cmake)
Run-time dependency samplerate found: YES 0.1.8
Run-time dependency speexdsp found: YES 1.2rc3

After applying attached patch, the object files will be generated
inside ${B} rather than into a subdir of ${S}.
I have found no other way to make it working.
But afterall, ${B} exists for this purpose and I don't see a good
reason because ${S} should be polluted with object files.

I hope that you will find this patch useful.
Sincerely,

Carlo Bramini.
diff --git a/cygclass/meson.cygclass b/cygclass/meson.cygclass
index 20df753..4f86210 100644
--- a/cygclass/meson.cygclass
+++ b/cygclass/meson.cygclass
@@ -55,12 +55,9 @@ inherit ninja
 cygmeson() {
        local crossargs mdir meson_version
 
-       if [ ! -e meson.build ]
+       if [ ! -e ${S}/meson.build ]
        then
                error "cygmeson: meson directory not found";
-       elif [ -e ../meson.build ]
-       then
-               error "cygmeson: must be run from the top-level directory";
        fi
 
        if cross_compiling
@@ -93,7 +90,7 @@ cygmeson() {
                --sysconfdir=$(__host_sysconfdir) \
                --buildtype=plain --wrap-mode=nodownload \
                --auto-features=enabled \
-               ${crossargs} ${CYGMESON_ARGS} "${@}" ${CHOST} \
+               ${crossargs} ${CYGMESON_ARGS} "${@}" ${S} \
                || error "meson failed"
 }
 
@@ -107,8 +104,9 @@ cygmeson() {
 #  meson_compile should be run in the directory containing the top-level 
meson.build.
 #****
 meson_compile() {
+       cd ${B}
        cygmeson ${@}
-       cygninja -C ${CHOST}
+       cygninja
 }
 
 #****T* meson.cygclass/meson_test
@@ -120,7 +118,8 @@ meson_compile() {
 #  meson_test should be run in the directory containing the top-level 
meson.build.
 #****
 meson_test() {
-       ninja_test -C ${CHOST}
+       cd ${B}
+       ninja_test
 }
 
 #****I* meson.cygclass/meson_install
@@ -132,13 +131,14 @@ meson_test() {
 #  meson_install should be run in the directory containing the top-level 
meson.build.
 #****
 meson_install() {
-       ninja_install -C ${CHOST}
+       cd ${B}
+       ninja_install
 }
 
 #****o* meson.cygclass/src_compile (meson)
 #  DEFINITION
 src_compile() {
-       cd ${S}
+       cd ${B}
        meson_compile
 }
 #****
@@ -146,7 +146,7 @@ src_compile() {
 #****o* meson.cygclass/src_test (meson)
 #  DEFINITION
 src_test() {
-       cd ${S}
+       cd ${B}
        meson_test
 }
 #****
@@ -154,7 +154,7 @@ src_test() {
 #****o* meson.cygclass/src_install (meson)
 #  DEFINITION
 src_install() {
-       cd ${S}
+       cd ${B}
        meson_install
 }
 #****

Reply via email to