diff --git a/configure b/configure
index 0590c09f4f2973f758e699960061337765524a5b..6528970cc2444ffc87667da53eb0466966c9d5f7 100755
--- a/configure
+++ b/configure
@@ -11552,6 +11552,7 @@ fi
 
 
 
+
 
 
 for ac_func in \
@@ -11570,6 +11571,7 @@ for ac_func in \
 	ftruncate64 \
 	getnetbyaddr \
 	getnetbyname \
+	getopt_long \
 	getpagesize \
 	getprotobyname \
 	getprotobynumber \
@@ -11743,6 +11745,7 @@ done
 
 
 
+
 
 
 for ac_header in \
@@ -11752,6 +11755,7 @@ for ac_header in \
 	direct.h \
 	elf.h \
 	float.h \
+	getopt.h \
 	ieeefp.h \
 	io.h \
 	libio.h \
diff --git a/configure.ac b/configure.ac
index e9135cc265da1c16d9257fbe34253424b240adfa..f446767f854684cad4cafb13d4763caae9e96763 100644
--- a/configure.ac
+++ b/configure.ac
@@ -932,6 +932,7 @@ AC_CHECK_FUNCS(\
 	ftruncate64 \
 	getnetbyaddr \
 	getnetbyname \
+	getopt_long \
 	getpagesize \
 	getprotobyname \
 	getprotobynumber \
@@ -980,6 +981,7 @@ AC_CHECK_HEADERS(\
 	direct.h \
 	elf.h \
 	float.h \
+	getopt.h \
 	ieeefp.h \
 	io.h \
 	libio.h \
diff --git a/include/config.h.in b/include/config.h.in
index a0124e6b63a2ca3e9d3be09a6aa6eb30290b099b..6d03a8d2c663c97e16e581d1cefc1bd99de9960e 100644
--- a/include/config.h.in
+++ b/include/config.h.in
@@ -134,6 +134,12 @@
 /* Define to 1 if you have the `getnetbyname' function. */
 #undef HAVE_GETNETBYNAME
 
+/* Define to 1 if you have the <getopt.h> header file. */
+#undef HAVE_GETOPT_H
+
+/* Define to 1 if you have the `getopt_long' function. */
+#undef HAVE_GETOPT_LONG
+
 /* Define to 1 if you have the `getpagesize' function. */
 #undef HAVE_GETPAGESIZE
 
diff --git a/tools/wrc/wrc.c b/tools/wrc/wrc.c
index 96e39a36988cfc77bb46b008fa28e7be75e59901..098eee4163c599ec0451c3076994f9778b760ab6 100644
--- a/tools/wrc/wrc.c
+++ b/tools/wrc/wrc.c
@@ -59,7 +59,9 @@
 #include <assert.h>
 #include <ctype.h>
 #include <signal.h>
-#include <getopt.h>
+#ifdef HAVE_GETOPT_H
+# include <getopt.h>
+#endif
 
 #include "wrc.h"
 #include "utils.h"
@@ -284,6 +286,7 @@ int getopt (int argc, char *const *argv, const char *optstring);
 static void rm_tempfile(void);
 static void segvhandler(int sig);
 
+#ifdef HAVE_GETOPT_LONG
 static struct option long_options[] = {
 	{ "input", 1, 0, 'i' },
 	{ "output", 1, 0, 'o' },
@@ -297,6 +300,7 @@ static struct option long_options[] = {
 	{ "version", 0, 0, 3 },
 	{ 0, 0, 0, 0 }
 };
+#endif
 
 int main(int argc,char *argv[])
 {
@@ -327,7 +331,11 @@ int main(int argc,char *argv[])
 			strcat(cmdline, " ");
 	}
 
+#ifdef HAVE_GETOPT_LONG
 	while((optc = getopt_long(argc, argv, "a:AbB:cC:d:D:eEF:ghH:i:I:l:LmnNo:O:p:rstTVw:W", long_options, &opti)) != EOF)
+#else
+	while((optc = getopt(argc, argv, "a:AbB:cC:d:D:eEF:ghH:i:I:l:LmnNo:O:p:rstTVw:W")) != EOF)
+#endif
 	{
 		switch(optc)
 		{