diff --git a/include/slibtool/slibtool.h b/include/slibtool/slibtool.h
index cd61300..3268a3e 100644
--- a/include/slibtool/slibtool.h
+++ b/include/slibtool/slibtool.h
@@ -187,6 +187,7 @@ struct slbt_common_ctx {
 	enum slbt_warning_level		warnings;
 	const char *			target;
 	const char *			output;
+	const char *			shrext;
 	char *				libname;
 	const char *			rpath;
 	const char *			release;
diff --git a/src/driver/slbt_driver_ctx.c b/src/driver/slbt_driver_ctx.c
index e97130f..4815d34 100644
--- a/src/driver/slbt_driver_ctx.c
+++ b/src/driver/slbt_driver_ctx.c
@@ -258,6 +258,10 @@ static int slbt_split_argv(
 			*targv++ = argv[i++];
 			*targv++ = argv[i];
 
+		} else if (!(strcmp("shrext",&argv[i][1]))) {
+			*targv++ = argv[i++];
+			*targv++ = argv[i];
+
 		} else if (!(strcmp("rpath",&argv[i][1]))) {
 			*targv++ = argv[i++];
 			*targv++ = argv[i];
@@ -518,6 +522,9 @@ static void slbt_init_flavor_settings(
 	}
 
 	memcpy(psettings,settings,sizeof(*settings));
+
+	if (cctx->shrext)
+		psettings->dsosuffix = cctx->shrext;
 }
 
 static int slbt_init_version_info(
@@ -832,6 +839,10 @@ int slbt_get_driver_ctx(
 					cctx.output = entry->arg;
 					break;
 
+				case TAG_SHREXT:
+					cctx.shrext = entry->arg;
+					break;
+
 				case TAG_RPATH:
 					cctx.rpath = entry->arg;
 					break;
diff --git a/src/internal/slibtool_driver_impl.h b/src/internal/slibtool_driver_impl.h
index 1bd7ce7..09c1f10 100644
--- a/src/internal/slibtool_driver_impl.h
+++ b/src/internal/slibtool_driver_impl.h
@@ -35,6 +35,7 @@ enum app_tags {
 	TAG_OUTPUT,
 	TAG_BINDIR,
 	TAG_LDRPATH,
+	TAG_SHREXT,
 	TAG_RPATH,
 	TAG_RELEASE,
 	TAG_EXPSYM_FILE,
diff --git a/src/skin/slbt_skin_default.c b/src/skin/slbt_skin_default.c
index e0c4886..74d668b 100644
--- a/src/skin/slbt_skin_default.c
+++ b/src/skin/slbt_skin_default.c
@@ -99,6 +99,13 @@ const struct argv_option slbt_default_options[] = {
 				"PE shared libraries. Not needed, ignored for "
 				"compatibility"},
 
+	{"shrext",		0,TAG_SHREXT,ARGV_OPTARG_REQUIRED,
+				ARGV_OPTION_HYBRID_ONLY|ARGV_OPTION_HYBRID_SPACE,0,0,
+				"shared library extention, including the dot, that "
+				"should override the default for the target system. "
+				"regardless of build target and type (native/cross), "
+				"you should never need to use this option."},
+
 	{"rpath",		0,TAG_RPATH,ARGV_OPTARG_REQUIRED,
 				ARGV_OPTION_HYBRID_ONLY|ARGV_OPTION_HYBRID_SPACE,0,0,
 				"where a library should eventually be "