[monit-dev] [PATCH] configure.ac: support cross-compilation

classic Classic list List threaded Threaded
3 messages Options
Reply | Threaded
Open this post in threaded view
|

[monit-dev] [PATCH] configure.ac: support cross-compilation

Thomas Petazzoni-2
configure.ac: support cross-compilation

The libmonit/configure.ac file does two checks using the AC_RUN_IFELSE
autoconf macro. Unfortunately, this macro requires *executing* a
program, which is not possible when doing cross-compilation (since the
machine on which the program will run is not the same as the build
machine).

Therefore, we enclose those AC_RUN_IFELSE tests into a AC_CACHE_CHECK
so that people doing cross-compilation can pass
libmonit_cv_setjmp_available=yes and
libmonit_cv_vsnprintf_c99_conformant=yes if they know their target
machine has support for those features.

If no value is passed and we're cross-compiling, the configure script
aborts with an error. If no value is passed and we're not
cross-compiling, then the normal AC_RUN_IFELSE test is conducted,
which aborts the configure script if the feature is not available.

Signed-off-by: Thomas Petazzoni <[hidden email]>

Index: monit-5.3.2/libmonit/configure.ac
===================================================================
--- monit-5.3.2.orig/libmonit/configure.ac
+++ monit-5.3.2/libmonit/configure.ac
@@ -100,16 +100,33 @@
 # ------------------------------------------------------------------------
 
 # Require a working setjmp
-AC_RUN_IFELSE([AC_LANG_PROGRAM([[#include <setjmp.h>]],
-        [[jmp_buf env; setjmp(env);]])],
-        [], [AC_MSG_FAILURE([setjmp is required])])
+AC_CACHE_CHECK([setjmp is available],[libmonit_cv_setjmp_available],
+  [
+  AC_RUN_IFELSE(
+  [AC_LANG_PROGRAM([[#include <setjmp.h>]],
+     [[jmp_buf env; setjmp(env);]])],
+     [
+     AC_MSG_RESULT(yes)
+  ],[
+     AC_MSG_FAILURE([setjmp is required])
+  ],[
+     AC_MSG_ERROR(cross-compiling: please set 'libmonit_cv_setjmp_available')
+  ])])
 
 # Require that we have vsnprintf that conforms to c99. I.e. does bounds check
-AC_RUN_IFELSE([AC_LANG_PROGRAM([[#include <stdarg.h>
+AC_CACHE_CHECK([vsnprintf is c99 conformant],[libmonit_cv_vsnprintf_c99_conformant],
+  [
+  AC_RUN_IFELSE(
+  [AC_LANG_PROGRAM([[#include <stdarg.h>
         #include <stdio.h>]],
-[[char t[1]; va_list ap; int n = vsnprintf(t, 1, "hello", ap); if(n == 5) return 0;return 1;]])],
-[], [AC_MSG_FAILURE([vsnprintf does not conform to c99])])
-
+     [[char t[1]; va_list ap; int n = vsnprintf(t, 1, "hello", ap); if(n == 5) return 0;return 1;]])],
+   [
+    AC_MSG_RESULT(yes)
+  ],[
+    AC_MSG_FAILURE([vsnprintf does not conform to c99])
+  ],[
+    AC_MSG_ERROR(cross-compiling: please set 'libmonit_cv_vsnprintf_c99_conformant')
+  ])])
 
 # ------------------------------------------------------------------------
 # Architecture/OS


--
Thomas Petazzoni, Free Electrons
Kernel, drivers, real-time and embedded Linux
development, consulting, training and support.
http://free-electrons.com

_______________________________________________
monit-dev mailing list
[hidden email]
https://lists.nongnu.org/mailman/listinfo/monit-dev
Reply | Threaded
Open this post in threaded view
|

Re: [monit-dev] [PATCH] configure.ac: support cross-compilation

martinp@tildeslash.com
hi Thomas, thanks for the patch, it was added to the next Monit release.

Best regards,
Martin


On Mar 21, 2012, at 3:42 PM, Thomas Petazzoni wrote:

> configure.ac: support cross-compilation
>
> The libmonit/configure.ac file does two checks using the AC_RUN_IFELSE
> autoconf macro. Unfortunately, this macro requires *executing* a
> program, which is not possible when doing cross-compilation (since the
> machine on which the program will run is not the same as the build
> machine).
>
> Therefore, we enclose those AC_RUN_IFELSE tests into a AC_CACHE_CHECK
> so that people doing cross-compilation can pass
> libmonit_cv_setjmp_available=yes and
> libmonit_cv_vsnprintf_c99_conformant=yes if they know their target
> machine has support for those features.
>
> If no value is passed and we're cross-compiling, the configure script
> aborts with an error. If no value is passed and we're not
> cross-compiling, then the normal AC_RUN_IFELSE test is conducted,
> which aborts the configure script if the feature is not available.
>
> Signed-off-by: Thomas Petazzoni <[hidden email]>
>
> Index: monit-5.3.2/libmonit/configure.ac
> ===================================================================
> --- monit-5.3.2.orig/libmonit/configure.ac
> +++ monit-5.3.2/libmonit/configure.ac
> @@ -100,16 +100,33 @@
> # ------------------------------------------------------------------------
>
> # Require a working setjmp
> -AC_RUN_IFELSE([AC_LANG_PROGRAM([[#include <setjmp.h>]],
> -        [[jmp_buf env; setjmp(env);]])],
> -        [], [AC_MSG_FAILURE([setjmp is required])])
> +AC_CACHE_CHECK([setjmp is available],[libmonit_cv_setjmp_available],
> +  [
> +  AC_RUN_IFELSE(
> +  [AC_LANG_PROGRAM([[#include <setjmp.h>]],
> +     [[jmp_buf env; setjmp(env);]])],
> +     [
> +     AC_MSG_RESULT(yes)
> +  ],[
> +     AC_MSG_FAILURE([setjmp is required])
> +  ],[
> +     AC_MSG_ERROR(cross-compiling: please set 'libmonit_cv_setjmp_available')
> +  ])])
>
> # Require that we have vsnprintf that conforms to c99. I.e. does bounds check
> -AC_RUN_IFELSE([AC_LANG_PROGRAM([[#include <stdarg.h>
> +AC_CACHE_CHECK([vsnprintf is c99 conformant],[libmonit_cv_vsnprintf_c99_conformant],
> +  [
> +  AC_RUN_IFELSE(
> +  [AC_LANG_PROGRAM([[#include <stdarg.h>
>         #include <stdio.h>]],
> -[[char t[1]; va_list ap; int n = vsnprintf(t, 1, "hello", ap); if(n == 5) return 0;return 1;]])],
> -[], [AC_MSG_FAILURE([vsnprintf does not conform to c99])])
> -
> +     [[char t[1]; va_list ap; int n = vsnprintf(t, 1, "hello", ap); if(n == 5) return 0;return 1;]])],
> +   [
> +    AC_MSG_RESULT(yes)
> +  ],[
> +    AC_MSG_FAILURE([vsnprintf does not conform to c99])
> +  ],[
> +    AC_MSG_ERROR(cross-compiling: please set 'libmonit_cv_vsnprintf_c99_conformant')
> +  ])])
>
> # ------------------------------------------------------------------------
> # Architecture/OS
>
>
> --
> Thomas Petazzoni, Free Electrons
> Kernel, drivers, real-time and embedded Linux
> development, consulting, training and support.
> http://free-electrons.com
>
> _______________________________________________
> monit-dev mailing list
> [hidden email]
> https://lists.nongnu.org/mailman/listinfo/monit-dev


_______________________________________________
monit-dev mailing list
[hidden email]
https://lists.nongnu.org/mailman/listinfo/monit-dev
Reply | Threaded
Open this post in threaded view
|

Re: [monit-dev] [PATCH] configure.ac: support cross-compilation

Thomas Petazzoni-2
Hello Martin,

Le Thu, 29 Mar 2012 13:21:37 +0200,
Martin Pala <[hidden email]> a écrit :

> hi Thomas, thanks for the patch, it was added to the next Monit
> release.

Thanks.

Is there a version control system available for Monit? Git repository
or something similar?

Thanks,

Thomas
--
Thomas Petazzoni, Free Electrons
Kernel, drivers, real-time and embedded Linux
development, consulting, training and support.
http://free-electrons.com

_______________________________________________
monit-dev mailing list
[hidden email]
https://lists.nongnu.org/mailman/listinfo/monit-dev