--- a/src/main.c
+++ b/src/main.c
@@ -213,6 +213,8 @@ int main (int argc, char *argv[])
 
 void check_options (void)
 {
+	const char * staging_dir = NULL;
+	char * m4_staging = NULL;
 	int     i;
     const char * m4 = NULL;
 
@@ -341,7 +343,10 @@ void check_options (void)
 
     /* Setup the filter chain. */
     output_chain = filter_create_int(NULL, filter_tee_header, headerfilename);
-    if ( !(m4 = getenv("M4"))) {
+    if ( (staging_dir = getenv("STAGING_DIR_HOST"))) {
+	asprintf(&m4_staging, "%s/bin/m4", staging_dir);
+	m4 = m4_staging;
+    } else if ( !(m4 = getenv("M4"))) {
 	    char *slash;
 		m4 = M4;
 		if ((slash = strrchr(M4, '/')) != NULL) {