diff --git a/applications/utilities/mesh/generation/foamyMesh/cellSizeAndAlignmentGrid/Make/options b/applications/utilities/mesh/generation/foamyMesh/cellSizeAndAlignmentGrid/Make/options
index 8059fdffa79b443038168348d809010ba83bd625..1cc0174df38165d76578559c1490922fbd88369b 100644
--- a/applications/utilities/mesh/generation/foamyMesh/cellSizeAndAlignmentGrid/Make/options
+++ b/applications/utilities/mesh/generation/foamyMesh/cellSizeAndAlignmentGrid/Make/options
@@ -4,7 +4,7 @@ EXE_NDEBUG = -DNDEBUG
 CGAL_EXACT = /*-DCGAL_DONT_USE_LAZY_KERNEL*/
 CGAL_INEXACT = -DCGAL_INEXACT
 
-include $(GENERAL_RULES)/CGAL
+include $(GENERAL_RULES)/cgal
 
 EXE_INC = \
     ${ROUNDING_MATH} \
diff --git a/applications/utilities/mesh/generation/foamyMesh/conformalVoronoiMesh/Make/options b/applications/utilities/mesh/generation/foamyMesh/conformalVoronoiMesh/Make/options
index b65c905e0f360aea13f2cc58717d1219a177443a..afff9fbfad4d20d552991c39e966310eb89b0a76 100644
--- a/applications/utilities/mesh/generation/foamyMesh/conformalVoronoiMesh/Make/options
+++ b/applications/utilities/mesh/generation/foamyMesh/conformalVoronoiMesh/Make/options
@@ -4,7 +4,7 @@ EXE_NDEBUG = -DNDEBUG
 CGAL_EXACT = /*-DCGAL_DONT_USE_LAZY_KERNEL*/
 CGAL_INEXACT = -DCGAL_INEXACT
 
-include $(GENERAL_RULES)/CGAL
+include $(GENERAL_RULES)/cgal
 
 EXE_INC = \
     ${ROUNDING_MATH} \
diff --git a/applications/utilities/mesh/generation/foamyMesh/foamyHexMesh/Make/options b/applications/utilities/mesh/generation/foamyMesh/foamyHexMesh/Make/options
index 0155c4b209d92b1af24fdf879246117baf022c2a..2591762d9a80b6e839201ad0520d444819a123c9 100644
--- a/applications/utilities/mesh/generation/foamyMesh/foamyHexMesh/Make/options
+++ b/applications/utilities/mesh/generation/foamyMesh/foamyHexMesh/Make/options
@@ -4,7 +4,7 @@ EXE_NDEBUG = -DNDEBUG
 CGAL_EXACT = /*-DCGAL_DONT_USE_LAZY_KERNEL*/
 CGAL_INEXACT = -DCGAL_INEXACT
 
-include $(GENERAL_RULES)/CGAL
+include $(GENERAL_RULES)/cgal
 
 EXE_INC = \
     ${ROUNDING_MATH} \
diff --git a/applications/utilities/mesh/generation/foamyMesh/foamyHexMeshBackgroundMesh/Make/options b/applications/utilities/mesh/generation/foamyMesh/foamyHexMeshBackgroundMesh/Make/options
index e71aedddb0b54fb80323f980d3a51604e4be7ba9..921245b6a9a5d547d82e31d4d70c44fa218cdc7f 100644
--- a/applications/utilities/mesh/generation/foamyMesh/foamyHexMeshBackgroundMesh/Make/options
+++ b/applications/utilities/mesh/generation/foamyMesh/foamyHexMeshBackgroundMesh/Make/options
@@ -1,7 +1,7 @@
 EXE_DEBUG = -DFULLDEBUG -g -O0
 EXE_NDEBUG = -DNDEBUG
 
-include $(GENERAL_RULES)/CGAL
+include $(GENERAL_RULES)/cgal
 
 EXE_INC = \
     ${ROUNDING_MATH} \
diff --git a/applications/utilities/mesh/generation/foamyMesh/foamyHexMeshSurfaceSimplify/Make/options b/applications/utilities/mesh/generation/foamyMesh/foamyHexMeshSurfaceSimplify/Make/options
index 67cd78a01af0213fad1ebabaebda4c75f5fd023e..23df4fe774a0c66a8d9c8f94c4393b931553defd 100644
--- a/applications/utilities/mesh/generation/foamyMesh/foamyHexMeshSurfaceSimplify/Make/options
+++ b/applications/utilities/mesh/generation/foamyMesh/foamyHexMeshSurfaceSimplify/Make/options
@@ -1,6 +1,6 @@
 MarchingCubes = fastdualoctree_sgp
 
-include $(GENERAL_RULES)/CGAL
+include $(GENERAL_RULES)/cgal
 
 EXE_INC = \
     -DUNIX \
diff --git a/applications/utilities/mesh/generation/foamyMesh/foamyQuadMesh/Make/options b/applications/utilities/mesh/generation/foamyMesh/foamyQuadMesh/Make/options
index 7905272444776694e5ea5be74d19d1e46ea6ef57..c2720a1233c3a94c449240d408bfdcc32ba89769 100644
--- a/applications/utilities/mesh/generation/foamyMesh/foamyQuadMesh/Make/options
+++ b/applications/utilities/mesh/generation/foamyMesh/foamyQuadMesh/Make/options
@@ -1,7 +1,7 @@
 EXE_DEBUG = -DFULLDEBUG -g -O0
 EXE_NDEBUG = -DNDEBUG
 
-include $(GENERAL_RULES)/CGAL
+include $(GENERAL_RULES)/cgal
 
 EXE_INC = \
     ${ROUNDING_MATH} \
diff --git a/applications/utilities/surface/surfaceBooleanFeatures/Make/options b/applications/utilities/surface/surfaceBooleanFeatures/Make/options
index 39fd117548579ef80411b2e0c1870b0ed7639de2..ef8abccf9309d279ce0d3a1454a87dc8e0cd47dc 100644
--- a/applications/utilities/surface/surfaceBooleanFeatures/Make/options
+++ b/applications/utilities/surface/surfaceBooleanFeatures/Make/options
@@ -7,7 +7,7 @@ c++CGALWARN = -Wno-old-style-cast
 /*-- Define CGAL_INEXACT to use inexact CGAL constructions */
 
 ifeq (,$(findstring NO_CGAL,$(COMP_FLAGS)))
-include $(GENERAL_RULES)/CGAL
+include $(GENERAL_RULES)/cgal
 endif
 
 EXE_INC = \
diff --git a/applications/utilities/surface/surfaceBooleanFeatures/PolyhedronReader/Make/options b/applications/utilities/surface/surfaceBooleanFeatures/PolyhedronReader/Make/options
index 8321bcd04613e803dc25777cdfe2ba9667c07f8d..7a400a830df0a47446552febec3b4d09a7daf230 100644
--- a/applications/utilities/surface/surfaceBooleanFeatures/PolyhedronReader/Make/options
+++ b/applications/utilities/surface/surfaceBooleanFeatures/PolyhedronReader/Make/options
@@ -5,7 +5,7 @@ c++CGALWARN = -Wno-old-style-cast
 
 /*-- Define CGAL_INEXACT to use inexact CGAL constructions */
 
-include $(GENERAL_RULES)/CGAL
+include $(GENERAL_RULES)/cgal
 
 EXE_INC = \
     ${ROUNDING_MATH} \
diff --git a/wmake/rules/General/CGAL b/wmake/rules/General/CGAL
index d68fc0d1fbf3e0a9b8ad553b45d67e888ac0e1fe..98b266f76f7aaafbb23c3ff20a5a6049311006a4 100644
--- a/wmake/rules/General/CGAL
+++ b/wmake/rules/General/CGAL
@@ -1,69 +1 @@
-# ----------------------------------------------------------------------------
-# CGAL definitions - several possibilities
-#
-#  0. missing
-#  1. header-only
-#  2. library, no mpfr
-#  3. library, with mpfr (a likely default)
-#
-# Dispatch according to the defined 'CGAL_FLAVOUR'
-# - names may change [see wmake/scripts/have_cgal]
-# (no-cgal | cgal-header | cgal-no-mpfr | cgal-mpfr)
-
-cgal_subrule := cgal-mpfr
-ifneq (,$(findstring header,$(CGAL_FLAVOUR)))
-    cgal_subrule := cgal-header-only
-endif
-ifneq (,$(findstring no-mpfr,$(CGAL_FLAVOUR)))
-    cgal_subrule := cgal-no-mpfr
-endif
-
-# ----------------------------------------------------------------------------
-# BOOST include/library directories - synthesize from ARCH_PATH as required
-
-ifeq (,$(strip $(BOOST_INC_DIR)))
-ifneq (,$(strip $(BOOST_ARCH_PATH)))
-  BOOST_INC_DIR = $(BOOST_ARCH_PATH)/include
-  BOOST_LIB_DIR = $(BOOST_ARCH_PATH)/lib \
-    $(BOOST_ARCH_PATH)/lib$(WM_COMPILER_LIB_ARCH)
-endif
-endif
-
-# ----------------------------------------------------------------------------
-# CGAL include/library directories - synthesize from ARCH_PATH as required
-
-ifeq (,$(strip $(CGAL_INC_DIR)))
-ifneq (,$(strip $(CGAL_ARCH_PATH)))
-  CGAL_INC_DIR = $(CGAL_ARCH_PATH)/include
-  CGAL_LIB_DIR = $(CGAL_ARCH_PATH)/lib \
-    $(CGAL_ARCH_PATH)/lib$(WM_COMPILER_LIB_ARCH)
-endif
-endif
-
-# ----------------------------------------------------------------------------
-
-CGAL_INC  =
-CGAL_LIBS =
-
-include $(GENERAL_RULES)/$(cgal_subrule)
-
-# Override
-sinclude $(DEFAULT_RULES)/CGAL
-sinclude $(DEFAULT_RULES)/$(cgal_subrule)
-
-# DEBUG
-# -----
-
-## $(info CGAL_FLAVOUR $(CGAL_FLAVOUR))
-## $(info subrule $(cgal_subrule))
-
-## CGAL_INC += -Wp,-v
-## $(info CGAL_INC: $(CGAL_INC))
-## $(info CGAL_LIB: $(CGAL_LIBS))
-
-## $(info BOOST_INC_DIR: $(BOOST_INC_DIR))
-## $(info BOOST_LIB_DIR: $(BOOST_LIB_DIR))
-## $(info CGAL_INC_DIR: $(CGAL_INC_DIR))
-## $(info CGAL_LIB_DIR: $(CGAL_LIB_DIR))
-
-# ---------------------------------------------------------------------------
+include $(GENERAL_RULES)/cgal
diff --git a/wmake/rules/General/cgal b/wmake/rules/General/cgal
new file mode 100644
index 0000000000000000000000000000000000000000..7442d4071e6dca676014596ff08f499844723ee4
--- /dev/null
+++ b/wmake/rules/General/cgal
@@ -0,0 +1,69 @@
+# ----------------------------------------------------------------------------
+# CGAL definitions - several possibilities
+#
+#  0. missing
+#  1. header-only
+#  2. library, no mpfr
+#  3. library, with mpfr (a likely default)
+#
+# Dispatch according to the defined 'CGAL_FLAVOUR'
+# - names may change [see wmake/scripts/have_cgal]
+# (no-cgal | cgal-header | cgal-no-mpfr | cgal-mpfr)
+
+cgal_subrule := cgal-mpfr
+ifneq (,$(findstring header,$(CGAL_FLAVOUR)))
+    cgal_subrule := cgal-header-only
+endif
+ifneq (,$(findstring no-mpfr,$(CGAL_FLAVOUR)))
+    cgal_subrule := cgal-no-mpfr
+endif
+
+# ----------------------------------------------------------------------------
+# BOOST include/library directories - synthesize from ARCH_PATH as required
+
+ifeq (,$(strip $(BOOST_INC_DIR)))
+ifneq (,$(strip $(BOOST_ARCH_PATH)))
+  BOOST_INC_DIR = $(BOOST_ARCH_PATH)/include
+  BOOST_LIB_DIR = $(BOOST_ARCH_PATH)/lib \
+    $(BOOST_ARCH_PATH)/lib$(WM_COMPILER_LIB_ARCH)
+endif
+endif
+
+# ----------------------------------------------------------------------------
+# CGAL include/library directories - synthesize from ARCH_PATH as required
+
+ifeq (,$(strip $(CGAL_INC_DIR)))
+ifneq (,$(strip $(CGAL_ARCH_PATH)))
+  CGAL_INC_DIR = $(CGAL_ARCH_PATH)/include
+  CGAL_LIB_DIR = $(CGAL_ARCH_PATH)/lib \
+    $(CGAL_ARCH_PATH)/lib$(WM_COMPILER_LIB_ARCH)
+endif
+endif
+
+# ----------------------------------------------------------------------------
+
+CGAL_INC  =
+CGAL_LIBS =
+
+include $(GENERAL_RULES)/$(cgal_subrule)
+
+# Override
+sinclude $(DEFAULT_RULES)/cgal
+sinclude $(DEFAULT_RULES)/$(cgal_subrule)
+
+# DEBUG
+# -----
+
+## $(info CGAL_FLAVOUR $(CGAL_FLAVOUR))
+## $(info subrule $(cgal_subrule))
+
+## CGAL_INC += -Wp,-v
+## $(info CGAL_INC: $(CGAL_INC))
+## $(info CGAL_LIB: $(CGAL_LIBS))
+
+## $(info BOOST_INC_DIR: $(BOOST_INC_DIR))
+## $(info BOOST_LIB_DIR: $(BOOST_LIB_DIR))
+## $(info CGAL_INC_DIR: $(CGAL_INC_DIR))
+## $(info CGAL_LIB_DIR: $(CGAL_LIB_DIR))
+
+# ---------------------------------------------------------------------------
diff --git a/wmake/rules/General/cuda b/wmake/rules/General/cuda
new file mode 100644
index 0000000000000000000000000000000000000000..5a30f6a66319e46c132d05cb2bdf33537052b353
--- /dev/null
+++ b/wmake/rules/General/cuda
@@ -0,0 +1,26 @@
+#------------------------------------------------------------------------------
+# Additional rules for handling CUDA files
+
+SUFFIXES += .cu
+
+ifeq (,$(NVARCH))
+    NVARCH  = 70
+endif
+
+NVCC        = nvcc -std=c++14 --compiler-options='-fPIC'
+
+cuARCH      = -arch=sm_$(NVARCH)
+cuOPT       = -O3
+cuDBUG      =
+
+# Similar to c++FLAGS
+cuFLAGS     = $(GFLAGS) -DNoRepository $(cuARCH) $(cuOPT) $(cuDBUG) $(LIB_HEADER_DIRS)
+
+cutoo       = $(WM_SCHEDULER) $(NVCC) $(cuFLAGS) -c $< -o $@
+
+$(OBJECTS_DIR)/%.o : %.cu
+	$(cutoo)
+
+CUDA_LINKLIBSO  = $(NVCC) -shared
+
+#------------------------------------------------------------------------------
diff --git a/wmake/rules/General/moc b/wmake/rules/General/moc
index 1a0d4160cc68ab4dc6c7e489757c94fda35a25fe..ed1b508d77faef746942ce76de404fbd45f08671 100644
--- a/wmake/rules/General/moc
+++ b/wmake/rules/General/moc
@@ -1,5 +1,5 @@
 SUFFIXES += .qt
 
 qttoo = $E $(call QUIET_MESSAGE,moc,$(<F)) \
-       $(WM_SCHEDULER) $(QTDIR)/bin/moc -f $< -o $(@D)/$(<F).C $(AND) \
+       $(WM_SCHEDULER) $(QTDIR)/bin/moc -f $< $< -o $(@D)/$(<F).C $(AND) \
        $(CC) $(c++FLAGS) -c $(@D)/$(<F).C -o $@
diff --git a/wmake/rules/darwin64Clang/CGAL b/wmake/rules/darwin64Clang/cgal
similarity index 100%
rename from wmake/rules/darwin64Clang/CGAL
rename to wmake/rules/darwin64Clang/cgal