diff --git a/cmake/CORALBuildFlags.cmake b/cmake/CORALBuildFlags.cmake
index 2a3ce7d90d45d24ec3939c269de0490e2cdfb2a5..c7bf9270fb008e0fdcf5a36562582606b186a755 100644
--- a/cmake/CORALBuildFlags.cmake
+++ b/cmake/CORALBuildFlags.cmake
@@ -2,20 +2,12 @@
 option(BUILD_SHARED_LIBS "Set to OFF to build static libraries." ON)
 
 # Build flags (C++ std)
-# [NB Keep flags passed from outside, e.g. from lcgcmake (CORALCOOL-2854)]
-IF(NOT CMAKE_CXX_FLAGS MATCHES "std=c\\+\\+11" AND NOT CMAKE_CXX_FLAGS MATCHES "std=c\\+\\+1y" AND NOT CMAKE_CXX_FLAGS MATCHES "std=c\\+\\+14")
-  IF(BINARY_TAG MATCHES "clang")
-    set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++14")
-  ELSEIF(BINARY_TAG MATCHES "gcc6") # CORALCOOL-2895 and CORALCOOL-2913
-    set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++14")
-  ELSEIF(BINARY_TAG MATCHES "gcc5")
-    set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++14")
-  ELSEIF(BINARY_TAG MATCHES "gcc49")
-    set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++1y")
-  ELSEIF(BINARY_TAG MATCHES "gcc48")
-    set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
-  ENDIF()
-ENDIF()
+# [NB Keep flags passed from lcgcmake or setupLCG.sh (CORALCOOL-2854)]
+# [NB The -std=c++11 flags must be passed from outside (CORALCOOL-2846)]
+
+# Build flags (gcc-toolchain options for clang)
+# [NB Keep flags passed from lcgcmake or setupLCG.sh (CORALCOOL-2854)]
+# [NB The --gcc-toolchain flags must be passed from outside (CORALCOOL-2846)]
 
 # Build flags (warnings and other common options)
 set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -pedantic -Wall -Wextra -Wno-long-long -Wno-deprecated -pthread -fPIC")
@@ -23,11 +15,9 @@ set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -pedantic -Wall -Wextra -Wno-long-long -
 # Build flags (other platform-dependent settings)
 IF(CMAKE_HOST_SYSTEM_NAME MATCHES "Darwin")
   set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}")
-ELSEIF(BINARY_TAG MATCHES "clang35") # See CORALCOOL-2821
-  set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} --gcc-toolchain=/cvmfs/sft.cern.ch/lcg/releases/gcc/4.9.1/x86_64-slc6") # cvmfs instead of AFS, see CORALCOOL-2855
+ELSEIF(BINARY_TAG MATCHES "clang35")
   set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Qunused-arguments") # CORALCOOL-2871
-ELSEIF(BINARY_TAG MATCHES "clang37") # See CORALCOOL-2821
-  set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} --gcc-toolchain=/cvmfs/sft.cern.ch/lcg/releases/gcc/4.9.3/x86_64-slc6") # cvmfs instead of AFS, see CORALCOOL-2855
+ELSEIF(BINARY_TAG MATCHES "clang37")
   set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Qunused-arguments") # CORALCOOL-2871
 ELSE()
   set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wl,--no-undefined")
diff --git a/setupLCG.sh b/setupLCG.sh
index 69454691b654c2b1cc30fedd1a14f5612dad67ba..1746db4ffdc7ba3d59cd22ff9030e91cd1854ddc 100644
--- a/setupLCG.sh
+++ b/setupLCG.sh
@@ -172,6 +172,33 @@ else
   return 1
 fi
 
+#-------------------------------------------------------------------------------
+# Set up CMAKE_CXX_FLAGS from BINARY_TAG (CORALCOOL-2854 and CORALCOOL-2846)
+#-------------------------------------------------------------------------------
+
+# Build flags (C++ std)
+if [[ $BINARY_TAG == *clang* ]]; then
+  CMAKE_CXX_FLAGS="-std=c++14"
+elif [[ $BINARY_TAG == *gcc6* ]]; then # CORALCOOL-2895 and CORALCOOL-2913
+  CMAKE_CXX_FLAGS="-std=c++14"
+elif [[ $BINARY_TAG == *gcc5* ]]; then
+  CMAKE_CXX_FLAGS="-std=c++14"
+elif [[ $BINARY_TAG == *gcc49* ]]; then
+  CMAKE_CXX_FLAGS="-std=c++1y"
+elif [[ $BINARY_TAG == *gcc48* ]]; then
+  CMAKE_CXX_FLAGS="-std=c++11"
+fi
+
+# Build flags (gcc-toolchain options for clang)
+# [NB These are now no longer passed to lcgcmake (CORALCOOL-2846): is this ok?]
+if [[ $BINARY_TAG == *mac* ]]; then
+  : # noop
+elif [[ $BINARY_TAG == *clang35* ]]; then # See CORALCOOL-2821
+  CMAKE_CXX_FLAGS="${CMAKE_CXX_FLAGS} --gcc-toolchain=/cvmfs/sft.cern.ch/lcg/releases/gcc/4.9.1/x86_64-slc6" # cvmfs instead of AFS, see CORALCOOL-2855
+elif [[ $BINARY_TAG == *clang37* ]]; then # See CORALCOOL-2821
+  CMAKE_CXX_FLAGS="${CMAKE_CXX_FLAGS} --gcc-toolchain=/cvmfs/sft.cern.ch/lcg/releases/gcc/4.9.3/x86_64-slc6" # cvmfs instead of AFS, see CORALCOOL-2855
+fi
+
 #-------------------------------------------------------------------------------
 # Set up Cmake
 #-------------------------------------------------------------------------------
@@ -240,6 +267,9 @@ CMAKEFLAGS="-DBINARY_TAG=$BINARY_TAG $CMAKEFLAGS"
 # [This is a CMake standard variable]
 CMAKEFLAGS="-DCMAKE_BUILD_TYPE=$CMAKE_BUILD_TYPE $CMAKEFLAGS"
 
+# Set CMAKE_CXX_FLAGS
+CMAKEFLAGS="-DCMAKE_CXX_FLAGS=$CMAKE_CXX_FLAGS $CMAKEFLAGS"
+
 # Set CMAKE_VERBOSE_MAKEFILE
 # ** This is now enabled by default only in lcgcmake and cc-build, not here! **
 # [This is a CMake standard variable]
@@ -269,9 +299,6 @@ export CMAKEFLAGS
 ###export CMAKEFLAGS="-DCMAKE_INSTALL_PREFIX=../my.${BINARY_TAG} $CMAKEFLAGS"
 ###export CMAKEFLAGS="-DCMAKE_INSTALL_PREFIX=/tmp/my.${BINARY_TAG} $CMAKEFLAGS"
 
-# FIXME! Test passing CMAKE_CXX_FLAGS as in lcgcmake
-###export CMAKEFLAGS="-DCMAKE_CXX_FLAGS=-std=c++1y $CMAKEFLAGS"
-
 # Add setup overrides if any are present
 if [ -f $topdir/overrideSetupCMake.sh ]; then
   echo "INFO: override defaults using $topdir/overrideSetupCMake.sh"