diff --git a/Build/AtlasBuildScripts/build_Gaudi.sh b/Build/AtlasBuildScripts/build_Gaudi.sh
index 6576d026f2359db391c82488b4db2e76df4f1c4e..36a2a613b57d996dd239aa1ac93775a9a1a8daab 100755
--- a/Build/AtlasBuildScripts/build_Gaudi.sh
+++ b/Build/AtlasBuildScripts/build_Gaudi.sh
@@ -14,7 +14,7 @@ set -o pipefail
 usage() {
     echo "Usage: build_Gaudi.sh <-s source dir> <-b build dir> " \
         "<-i install dir> <-e externals dir> <-p externals project name> " \
-        "<-f platform name> [-r RPM dir] [-t build type]"
+        "<-f platform name> [-r RPM dir] [-t build type] [-x extra CMake arguments]"
 }
 
 # Parse the command line arguments:
@@ -26,7 +26,8 @@ EXTPROJECT=""
 PLATFORM=""
 RPMDIR=""
 BUILDTYPE="Release"
-while getopts ":s:b:i:e:p:f:r:t:h" opt; do
+EXTRACMAKE=""
+while getopts ":s:b:i:e:p:f:r:t:x:h" opt; do
     case $opt in
         s)
             SOURCEDIR=$OPTARG
@@ -52,6 +53,9 @@ while getopts ":s:b:i:e:p:f:r:t:h" opt; do
         t)
             BUILDTYPE=$OPTARG
             ;;
+        x)
+            EXTRACMAKE=$OPTARG
+            ;;
         h)
             usage
             exit 0
@@ -94,7 +98,7 @@ rm -f CMakeCache.txt
 rm -rf * # Remove the full build temporarily, to fix GAUDI-1315
 cmake -DCMAKE_BUILD_TYPE:STRING=${BUILDTYPE} -DCTEST_USE_LAUNCHERS:BOOL=TRUE \
     -DGAUDI_ATLAS:BOOL=TRUE -DGAUDI_ATLAS_BASE_PROJECT:STRING=${EXTPROJECT} \
-    -DCMAKE_INSTALL_PREFIX:PATH=/InstallArea/${PLATFORM} \
+    -DCMAKE_INSTALL_PREFIX:PATH=/InstallArea/${PLATFORM} ${EXTRACMAKE} \
     ${SOURCEDIR} || touch $error_stamp
 } 2>&1 | tee cmake_config.log 
 test -f $error_stamp && ((ERROR_COUNT++))
diff --git a/Build/AtlasBuildScripts/build_atlasexternals.sh b/Build/AtlasBuildScripts/build_atlasexternals.sh
index db38b481339c306f47dc668bafb072140a91465d..903cc6deb4bf43d26e39db70450ddd8081017267 100755
--- a/Build/AtlasBuildScripts/build_atlasexternals.sh
+++ b/Build/AtlasBuildScripts/build_atlasexternals.sh
@@ -14,7 +14,8 @@ set -o pipefail
 # Function printing the usage information for the script
 usage() {
     echo "Usage: build_atlasexternals.sh <-s source dir> <-b build dir> " \
-        "<-i install dir> [-p project] [-r RPM dir] [-t build type] [-d (debug output)]"
+        "<-i install dir> [-p project] [-r RPM dir] [-t build type] [-d (debug output)]" \
+        "[-e extra CMake arguments]"
 }
 
 # Parse the command line arguments:
@@ -26,7 +27,8 @@ RPMDIR=""
 BUILDTYPE="Release"
 PROJECTVERSION=""
 DEBUGCMAKE=""
-while getopts ":s:b:i:p:r:t:v:h:d" opt; do
+EXTRACMAKE=""
+while getopts ":s:b:i:p:r:t:v:h:x:d" opt; do
     case $opt in
         s)
             SOURCEDIR=$OPTARG
@@ -46,6 +48,9 @@ while getopts ":s:b:i:p:r:t:v:h:d" opt; do
         t)
             BUILDTYPE=$OPTARG
             ;;
+        x)
+            EXTRACMAKE=$OPTARG
+            ;;
         d)
             DEBUGCMAKE="--trace"
             echo "Using the '--trace' option to debug the CMake configuration --> Verbose output!"
@@ -93,6 +98,7 @@ error_stamp=`mktemp .tmp.error.XXXXX` ; rm -f $error_stamp
  rm -f CMakeCache.txt
  cmake ${DEBUGCMAKE} -DCMAKE_BUILD_TYPE:STRING=${BUILDTYPE} -DCTEST_USE_LAUNCHERS:BOOL=TRUE \
     ${EXTRACONF} \
+    ${EXTRACMAKE} \
     ${SOURCEDIR}/Projects/${PROJECT}/ || touch $error_stamp
 } 2>&1 | tee cmake_config.log 
 test -f $error_stamp && ((ERROR_COUNT++)) 
diff --git a/Projects/Athena/build.sh b/Projects/Athena/build.sh
index 71fad29f7daa20cabfc864925a4ee5fca7237958..3333b297778c3eebed7f54fbc9a67bf826312e4d 100755
--- a/Projects/Athena/build.sh
+++ b/Projects/Athena/build.sh
@@ -6,12 +6,13 @@
 
 # Function printing the usage information for the script
 usage() {
-    echo "Usage: build.sh [-t build type] [-b build dir] [-c] [-m] [-i] [-p] [-a]"
+    echo "Usage: build.sh [-t build type] [-b build dir] [-c] [-m] [-i] [-p] [-a] [-e] [-N]"
     echo " -c: Execute CMake step"
     echo " -m: Execute make step"
     echo " -i: Execute install step"
     echo " -p: Execute CPack step"
     echo " -a: Abort on error"
+    echo " -e: Add extra CMake argument"
     echo " -N: Use Ninja"
 
     echo "If none of the c, m, i or p options are set then the script will do"
@@ -30,7 +31,7 @@ NIGHTLY=true
 BUILDTOOLTYPE=""
 BUILDTOOL="make -k"
 INSTALLRULE="install/fast"
-while getopts ":t:b:hcmipaN" opt; do
+while getopts ":t:b:hcmipax:N" opt; do
     case $opt in
         t)
             BUILDTYPE=$OPTARG
@@ -53,6 +54,9 @@ while getopts ":t:b:hcmipaN" opt; do
         a)
             NIGHTLY=false
             ;;
+        x)
+            EXTRACMAKE=$OPTARG
+            ;;
         N)
             BUILDTOOL="ninja -k 0"
             BUILDTOOLTYPE="-GNinja"
@@ -124,6 +128,7 @@ if [ -n "$EXE_CMAKE" ]; then
     rm -f CMakeCache.txt
     # Now run the actual CMake configuration:
     { time cmake ${BUILDTOOLTYPE} -DCMAKE_BUILD_TYPE:STRING=${BUILDTYPE} \
+        ${EXTRACMAKE} \
         -DCTEST_USE_LAUNCHERS:BOOL=TRUE \
         ${AthenaSrcDir}; } 2>&1 | tee cmake_config.log
 fi
diff --git a/Projects/Athena/build_externals.sh b/Projects/Athena/build_externals.sh
index b8e1dffea02b28f185598278a955a9157c78ba7f..f215020ad5fdeb069f2b99b8e5ecc768cfb9fca6 100755
--- a/Projects/Athena/build_externals.sh
+++ b/Projects/Athena/build_externals.sh
@@ -5,13 +5,14 @@
 
 # Function printing the usage information for the script
 usage() {
-    echo "Usage: build_externals.sh [-t build_type] [-b build_dir] [-f] [-c] [-d]"
+    echo "Usage: build_externals.sh [-t build_type] [-b build_dir] [-f] [-c] [-d] [-e]"
     echo " -f: Force rebuild of externals from scratch, otherwise if script"
     echo "     finds an external build present it will only do an incremental"
     echo "     build"
     echo " -c: Build the externals for the continuous integration (CI) system,"
     echo "     skipping the build of the externals RPMs."
     echo " -d: For debugging the CMake configuration: run 'cmake' with the '--trace' option (very verbose output!)" 
+    echo " -e: To pass arbitrary extra arguments to the CMake configuration"
     echo "If a build_dir is not given the default is '../build'"
     echo "relative to the athena checkout"
 }
@@ -22,7 +23,8 @@ BUILDTYPE="RelWithDebInfo"
 FORCE=""
 CI=""
 DEBUG_CMAKE_CONFIG=""
-while getopts ":t:b:fchd" opt; do
+EXTRACMAKE=""
+while getopts ":t:b:fchdx:" opt; do
     case $opt in
         t)
             BUILDTYPE=$OPTARG
@@ -39,6 +41,9 @@ while getopts ":t:b:fchd" opt; do
         d)
             DEBUG_CMAKE_CONFIG="-d"
             ;;
+        x)
+            EXTRACMAKE="-x $OPTARG"
+            ;;
         h)
             usage
             exit 0
@@ -153,7 +158,8 @@ ${scriptsdir}/checkout_atlasexternals.sh \
  } || true
 }
 
-# Build AthenaExternals:
+
+## Build AthenaExternals:
 export NICOS_PROJECT_HOME=$(cd ${BUILDDIR}/install;pwd)/AthenaExternals
 ${scriptsdir}/build_atlasexternals.sh \
     -s ${BUILDDIR}/src/AthenaExternals \
@@ -161,7 +167,8 @@ ${scriptsdir}/build_atlasexternals.sh \
     -i ${BUILDDIR}/install/AthenaExternals/${NICOS_PROJECT_VERSION} \
     -p AthenaExternals ${RPMOPTIONS} -t ${BUILDTYPE} \
     -v ${NICOS_PROJECT_VERSION} \
-    ${DEBUG_CMAKE_CONFIG}
+    ${DEBUG_CMAKE_CONFIG} \
+    ${EXTRACMAKE}
 
 {
  test "X${NIGHTLY_STATUS}" != "X" && {
@@ -199,7 +206,7 @@ ${scriptsdir}/build_Gaudi.sh \
     -b ${BUILDDIR}/build/GAUDI \
     -i ${BUILDDIR}/install/GAUDI/${NICOS_PROJECT_VERSION} \
     -e ${BUILDDIR}/install/AthenaExternals/${NICOS_PROJECT_VERSION}/InstallArea/${platform} \
-    -p AthenaExternals -f ${platform} ${RPMOPTIONS} -t ${BUILDTYPE}
+    -p AthenaExternals -f ${platform} ${RPMOPTIONS} -t ${BUILDTYPE} ${EXTRACMAKE}
 
 {
  test "X${NIGHTLY_STATUS}" != "X" && {