diff --git a/Fltk/highOrderToolsWindow.cpp b/Fltk/highOrderToolsWindow.cpp
index b1b5667eae27ed0383037eaa742bf9e356c376fa..9205b992a8c53141460efb05f5ff5bcf4f135c52 100644
--- a/Fltk/highOrderToolsWindow.cpp
+++ b/Fltk/highOrderToolsWindow.cpp
@@ -35,7 +35,10 @@ typedef unsigned long intptr_t;
 #include "Options.h"
 #include "Context.h"
 #include "HighOrder.h"
+
+#if defined(HAVE_OPTHOM)
 #include "OptHomRun.h"
+#endif
 
 #if defined(HAVE_PARSER)
 #include "Parser.h"
@@ -46,11 +49,11 @@ static void change_completeness_cb(Fl_Widget *w, void *data)
   highOrderToolsWindow *o = FlGui::instance()->highordertools;
   bool onlyVisible = (bool)o->butt[1]->value();
   if (!o->complete){
-    SetHighOrderComplete (GModel::current(), onlyVisible);
+    SetHighOrderComplete(GModel::current(), onlyVisible);
     o->complete = 1;
   }
   else if (o->complete){
-    SetHighOrderInComplete (GModel::current(), onlyVisible);
+    SetHighOrderInComplete(GModel::current(), onlyVisible);
     o->complete = 0;
   }
   CTX::instance()->mesh.changed |= (ENT_LINE | ENT_SURFACE | ENT_VOLUME);
@@ -59,6 +62,7 @@ static void change_completeness_cb(Fl_Widget *w, void *data)
 
 static void highordertools_runp_cb(Fl_Widget *w, void *data)
 {
+#if defined(HAVE_OPTHOM)
   highOrderToolsWindow *o = FlGui::instance()->highordertools;
 
   int order = (int)o->value[0]->value();
@@ -73,16 +77,20 @@ static void highordertools_runp_cb(Fl_Widget *w, void *data)
 
   distanceFromMeshToGeometry_t dist;
   computeDistanceFromMeshToGeometry (GModel::current(), dist);
-  for (std::map<GEntity*, double> ::iterator it = dist.d2.begin(); it !=dist.d2.end();++it){
-    printf ("GEntity %d of dim %d : dist %12.5E\n",it->first->tag(),it->first->dim(),it->second);
+  for (std::map<GEntity*, double> ::iterator it = dist.d2.begin();
+       it !=dist.d2.end();++it){
+    printf ("GEntity %d of dim %d : dist %12.5E\n",
+            it->first->tag(), it->first->dim(), it->second);
   }
 
   CTX::instance()->mesh.changed |= (ENT_LINE | ENT_SURFACE | ENT_VOLUME);
   drawContext::global()->draw();
+#endif
 }
 
 static void chooseopti_cb(Fl_Widget *w, void *data)
 {
+#if defined(HAVE_OPTHOM)
   highOrderToolsWindow *o = FlGui::instance()->highordertools;
   int elastic = o->choice[2]->value();
 
@@ -101,11 +109,12 @@ static void chooseopti_cb(Fl_Widget *w, void *data)
       o->value[i]->activate();
     //    o->push[1]->activate();
   }
-
+#endif
 }
 
 static void highordertools_runelas_cb(Fl_Widget *w, void *data)
 {
+#if defined(HAVE_OPTHOM)
   highOrderToolsWindow *o = FlGui::instance()->highordertools;
 
   bool elastic = o->choice[2]->value() == 1;
@@ -135,6 +144,7 @@ static void highordertools_runelas_cb(Fl_Widget *w, void *data)
 
   CTX::instance()->mesh.changed |= (ENT_LINE | ENT_SURFACE | ENT_VOLUME);
   drawContext::global()->draw();
+#endif
 }
 
 highOrderToolsWindow::highOrderToolsWindow(int deltaFontSize)
@@ -151,7 +161,6 @@ highOrderToolsWindow::highOrderToolsWindow(int deltaFontSize)
   int y = WB;
   int x = 2 * WB;
 
-
   butt[1] = new Fl_Check_Button
     (x,y, 1.5*IW-WB, BH, "Visible entities only");
   butt[1]->type(FL_TOGGLE_BUTTON);
@@ -342,7 +351,7 @@ highOrderToolsWindow::highOrderToolsWindow(int deltaFontSize)
 
 void highOrderToolsWindow::show(bool redrawOnly)
 {
-  getMeshInfoForHighOrder (GModel::current(),meshOrder,complete, CAD);
+  getMeshInfoForHighOrder(GModel::current(), meshOrder, complete, CAD);
 
   if(win->shown() && redrawOnly)
     win->redraw();
diff --git a/Fltk/highOrderToolsWindow.h b/Fltk/highOrderToolsWindow.h
index 6e7124d5fe5701488849db32553a9d03c9fe0ead..aefe04641df52de877f8dfaee35779b6ff70f86b 100644
--- a/Fltk/highOrderToolsWindow.h
+++ b/Fltk/highOrderToolsWindow.h
@@ -14,7 +14,6 @@
 #include <FL/Fl_Check_Button.H>
 #include <FL/Fl_Value_Input.H>
 #include <FL/Fl_Output.H>
-#include "GmshConfig.h"
 
 class highOrderToolsWindow{
  public:
diff --git a/Mesh/meshGRegion.cpp b/Mesh/meshGRegion.cpp
index ca5aa46d86a0f9cef062a8029f5881d119d8f47e..9d007953c85a7d8235654594c114ca5bb28438df 100644
--- a/Mesh/meshGRegion.cpp
+++ b/Mesh/meshGRegion.cpp
@@ -8,6 +8,7 @@
 #include "GmshConfig.h"
 #include "GmshMessage.h"
 #include "meshGRegion.h"
+#include "meshGFaceOptimize.h"
 #include "meshGFaceBoundaryLayers.h"
 #include "meshGRegionDelaunayInsertion.h"
 #include "GModel.h"
diff --git a/wrappers/gmshpy/gmshMesh.i b/wrappers/gmshpy/gmshMesh.i
index e02347e94a9d0dc383fb7a618fdc46a8b871be09..7cb95213c9e2e3af8b515a84ba68087d16112782 100644
--- a/wrappers/gmshpy/gmshMesh.i
+++ b/wrappers/gmshpy/gmshMesh.i
@@ -12,7 +12,9 @@
   #include "meshGFaceLloyd.h"
   #include "meshGFaceOptimize.h"
   #include "meshPartitionOptions.h"
+#if defined(HAVE_OPTHOM)
   #include "OptHomRun.h"
+#endif
 #if defined(HAVE_METIS) || defined(HAVE_CHACO)
   #include "meshPartition.h"
 #endif
@@ -43,7 +45,9 @@ namespace std {
 %include "meshGFaceLloyd.h"
 %include "meshGFaceOptimize.h"
 %include "meshPartitionOptions.h"
+#if defined(HAVE_OPTHOM)
 %include "OptHomRun.h"
+#endif
 #if defined(HAVE_METIS) || defined(HAVE_CHACO)
 %include "meshPartition.h"
 #endif