--- a/SConscript
+++ b/SConscript
@@ -187,9 +187,8 @@ class Project:
                                                      'src/engine/input/xinput/xinput_device.cpp'])
             
     def configure_boost(self):
-        if not self.conf.CheckLibWithHeader('boost_signals', 'boost/signals.hpp', 'c++'):
-            if not self.conf.CheckLibWithHeader('boost_signals-mt', 'boost/signals.hpp', 'c++'):
-                self.fatal_error += "  * library 'boost_signals' not found\n"
+        if not self.conf.CheckHeader('boost/signals2.hpp', '<>', 'c++'):
+            self.fatal_error += "  * library 'boost_signals2' not found\n"
 
     def configure_png(self):
         if self.conf.CheckMyProgram('pkg-config'):




--- a/src/editor/button.hpp
+++ b/src/editor/button.hpp
@@ -17,7 +17,7 @@
 #ifndef HEADER_PINGUS_EDITOR_BUTTON_HPP
 #define HEADER_PINGUS_EDITOR_BUTTON_HPP
 
-#include <boost/signal.hpp>
+#include <boost/signals2.hpp>
 
 #include "engine/gui/rect_component.hpp"
 
@@ -48,7 +48,7 @@ public:
   void enable()  { enabled = true; }
   void disable() { enabled = false; }
 
-  boost::signal<void()> on_click;
+  boost::signals2::signal<void()> on_click;
 
 private:
   Button (const Button&);




--- a/src/editor/checkbox.hpp
+++ b/src/editor/checkbox.hpp
@@ -17,7 +17,7 @@
 #ifndef HEADER_PINGUS_EDITOR_CHECKBOX_HPP
 #define HEADER_PINGUS_EDITOR_CHECKBOX_HPP
 
-#include <boost/signal.hpp>
+#include <boost/signals2.hpp>
 
 #include "engine/gui/rect_component.hpp"
 
@@ -40,7 +40,7 @@ public:
   bool is_checked() const { return checked; }
   void on_primary_button_press(int x, int y);
 
-  boost::signal<void (bool)> on_change;
+  boost::signals2::signal<void (bool)> on_change;
  
 private:
   Checkbox (const Checkbox&);




--- a/src/editor/combobox.hpp
+++ b/src/editor/combobox.hpp
@@ -18,7 +18,7 @@
 #ifndef HEADER_PINGUS_EDITOR_COMBOBOX_HPP
 #define HEADER_PINGUS_EDITOR_COMBOBOX_HPP
 
-#include <boost/signal.hpp>
+#include <boost/signals2.hpp>
 
 #include "engine/display/sprite.hpp"
 #include "engine/gui/rect_component.hpp"
@@ -88,7 +88,7 @@ public:
   
   void update_layout() {}
   
-  boost::signal<void (const ComboItem&)> on_select;
+  boost::signals2::signal<void (const ComboItem&)> on_select;
 
 private:
   Combobox();




--- a/src/editor/file_list.hpp
+++ b/src/editor/file_list.hpp
@@ -17,7 +17,7 @@
 #ifndef HEADER_PINGUS_EDITOR_FILE_LIST_HPP
 #define HEADER_PINGUS_EDITOR_FILE_LIST_HPP
 
-#include <boost/signal.hpp>
+#include <boost/signals2.hpp>
 
 #include "engine/display/sprite.hpp"
 #include "engine/gui/rect_component.hpp"
@@ -61,7 +61,7 @@ public:
   bool has_more_next_pages();
   bool has_more_prev_pages();
 
-  boost::signal<void (const System::DirectoryEntry&)> on_click;
+  boost::signals2::signal<void (const System::DirectoryEntry&)> on_click;
 
 private:
   int items_per_page();




--- a/src/editor/inputbox.hpp
+++ b/src/editor/inputbox.hpp
@@ -17,7 +17,7 @@
 #ifndef HEADER_PINGUS_EDITOR_INPUTBOX_HPP
 #define HEADER_PINGUS_EDITOR_INPUTBOX_HPP
 
-#include <boost/signal.hpp>
+#include <boost/signals2.hpp>
 
 #include "engine/gui/rect_component.hpp"
 
@@ -40,8 +40,8 @@ public:
 
   void update_layout() {}
 
-  boost::signal<void (const std::string&)> on_change;
-  boost::signal<void (const std::string&)> on_enter;
+  boost::signals2::signal<void (const std::string&)> on_change;
+  boost::signals2::signal<void (const std::string&)> on_enter;
 
 private:
   Inputbox (const Inputbox&);




--- a/src/editor/message_box.hpp
+++ b/src/editor/message_box.hpp
@@ -45,7 +45,7 @@ public:
   void on_cancel_button();
 
 public:
-  boost::signal<void()> on_ok;
+  boost::signals2::signal<void()> on_ok;
 
 private:
   MessageBox(const MessageBox&);




--- a/src/editor/object_selector.cpp
+++ b/src/editor/object_selector.cpp
@@ -16,7 +16,7 @@
 
 #include "editor/object_selector.hpp"
 
-#include <boost/signal.hpp>
+#include <boost/signals2.hpp>
 
 #include "editor/generic_level_obj.hpp"
 #include "editor/gui_style.hpp"
@@ -47,7 +47,7 @@ private:
   std::string tooltip;
   
 public:
-  boost::signal<void()> on_click;
+  boost::signals2::signal<void()> on_click;
 
 public:
   ObjectSelectorButton(ObjectSelectorList* object_list_,




--- a/src/editor/viewport.hpp
+++ b/src/editor/viewport.hpp
@@ -18,7 +18,7 @@
 #ifndef HEADER_PINGUS_EDITOR_VIEWPORT_HPP
 #define HEADER_PINGUS_EDITOR_VIEWPORT_HPP
 
-#include <boost/signal.hpp>
+#include <boost/signals2.hpp>
 #include <set>
 
 #include "editor/selection.hpp"
@@ -148,7 +148,7 @@ public:
 
   void clear_selection();
 
-  boost::signal<void (const Selection&)> selection_changed;
+  boost::signals2::signal<void (const Selection&)> selection_changed;
 private:
   Viewport();
   Viewport (const Viewport&);




--- a/src/pingus/components/check_box.hpp
+++ b/src/pingus/components/check_box.hpp
@@ -17,7 +17,7 @@
 #ifndef HEADER_PINGUS_PINGUS_COMPONENTS_CHECK_BOX_HPP
 #define HEADER_PINGUS_PINGUS_COMPONENTS_CHECK_BOX_HPP
 
-#include <boost/signal.hpp>
+#include <boost/signals2.hpp>
 
 #include "engine/display/sprite.hpp"
 #include "engine/gui/rect_component.hpp"
@@ -39,7 +39,7 @@ public:
 
   void set_state(bool v, bool send_signal);
 
-  boost::signal<void (bool)> on_change;
+  boost::signals2::signal<void (bool)> on_change;
 
 private:
   CheckBox (const CheckBox&);




--- a/src/pingus/components/choice_box.hpp
+++ b/src/pingus/components/choice_box.hpp
@@ -17,7 +17,7 @@
 #ifndef HEADER_PINGUS_PINGUS_COMPONENTS_CHOICE_BOX_HPP
 #define HEADER_PINGUS_PINGUS_COMPONENTS_CHOICE_BOX_HPP
 
-#include <boost/signal.hpp>
+#include <boost/signals2.hpp>
 
 #include "engine/gui/rect_component.hpp"
 
@@ -36,7 +36,7 @@ public:
   void add_choice(const std::string& str);
   void set_current_choice(int choice);
   
-  boost::signal<void (std::string)> on_change;
+  boost::signals2::signal<void (std::string)> on_change;
   
 private:
   ChoiceBox (const ChoiceBox&);




--- a/src/pingus/components/slider_box.hpp
+++ b/src/pingus/components/slider_box.hpp
@@ -17,7 +17,7 @@
 #ifndef HEADER_PINGUS_PINGUS_COMPONENTS_SLIDER_BOX_HPP
 #define HEADER_PINGUS_PINGUS_COMPONENTS_SLIDER_BOX_HPP
 
-#include <boost/signal.hpp>
+#include <boost/signals2.hpp>
 
 #include "engine/gui/rect_component.hpp"
 
@@ -39,7 +39,7 @@ public:
 
   void set_value(int v);
 
-  boost::signal<void (int)> on_change;
+  boost::signals2::signal<void (int)> on_change;
 
 private:
   SliderBox (const SliderBox&);




--- a/src/pingus/config_manager.hpp
+++ b/src/pingus/config_manager.hpp
@@ -17,7 +17,7 @@
 #ifndef HEADER_PINGUS_PINGUS_CONFIG_MANAGER_HPP
 #define HEADER_PINGUS_PINGUS_CONFIG_MANAGER_HPP
 
-#include <boost/signal.hpp>
+#include <boost/signals2.hpp>
 
 #include "math/size.hpp"
 #include "pingus/options.hpp"
@@ -39,55 +39,55 @@ public:
 
   void set_master_volume(int);
   int  get_master_volume() const;
-  boost::signal<void(int)> on_master_volume_change;
+  boost::signals2::signal<void(int)> on_master_volume_change;
 
   void set_sound_volume(int);
   int  get_sound_volume() const;
-  boost::signal<void(int)> on_sound_volume_change;
+  boost::signals2::signal<void(int)> on_sound_volume_change;
 
   void set_music_volume(int);
   int  get_music_volume() const;
-  boost::signal<void(int)> on_music_volume_change;
+  boost::signals2::signal<void(int)> on_music_volume_change;
 
   void set_fullscreen_resolution(const Size& size);
   Size get_fullscreen_resolution() const;
-  boost::signal<void(Size)> on_fullscreen_resolution_change;
+  boost::signals2::signal<void(Size)> on_fullscreen_resolution_change;
 
   void set_fullscreen(bool);
   bool get_fullscreen() const;
-  boost::signal<void(bool)> on_fullscreen_change;
+  boost::signals2::signal<void(bool)> on_fullscreen_change;
 
   void set_renderer(FramebufferType type);
   FramebufferType get_renderer() const;
-  boost::signal<void(FramebufferType)> on_renderer_change;
+  boost::signals2::signal<void(FramebufferType)> on_renderer_change;
 
   void set_resizable(bool);
   bool get_resizable() const;
-  boost::signal<void(bool)> on_resizable_change;
+  boost::signals2::signal<void(bool)> on_resizable_change;
 
   void set_mouse_grab(bool);
   bool get_mouse_grab() const;
-  boost::signal<void(bool)> on_mouse_grab_change;
+  boost::signals2::signal<void(bool)> on_mouse_grab_change;
 
   void set_print_fps(bool);
   bool get_print_fps() const;
-  boost::signal<void(bool)> on_print_fps_change;
+  boost::signals2::signal<void(bool)> on_print_fps_change;
 
   void set_language(const tinygettext::Language&);
   tinygettext::Language get_language() const;
-  boost::signal<void(const tinygettext::Language&)> on_language_change;
+  boost::signals2::signal<void(const tinygettext::Language&)> on_language_change;
 
   void set_software_cursor(bool);
   bool get_software_cursor() const;
-  boost::signal<void(bool)> on_software_cursor_change;
+  boost::signals2::signal<void(bool)> on_software_cursor_change;
 
   void set_auto_scrolling(bool);
   bool get_auto_scrolling() const;
-  boost::signal<void(bool)> on_auto_scrolling_change;
+  boost::signals2::signal<void(bool)> on_auto_scrolling_change;
 
   void set_drag_drop_scrolling(bool);
   bool get_drag_drop_scrolling() const;
-  boost::signal<void(bool)> on_drag_drop_scrolling_change;
+  boost::signals2::signal<void(bool)> on_drag_drop_scrolling_change;
 
 private:
   ConfigManager (const ConfigManager&);




--- a/src/pingus/screens/option_menu.hpp
+++ b/src/pingus/screens/option_menu.hpp
@@ -17,7 +17,7 @@
 #ifndef HEADER_PINGUS_PINGUS_SCREENS_OPTION_MENU_HPP
 #define HEADER_PINGUS_PINGUS_SCREENS_OPTION_MENU_HPP
 
-#include <boost/signals.hpp>
+#include <boost/signals2.hpp>
 #include <map>
 #include <vector>
 
@@ -66,7 +66,7 @@ private:
   //Label* defaults_label;
   //CheckBox* defaults_box;
 
-  typedef std::vector<boost::signals::connection> Connections;
+  typedef std::vector<boost::signals2::connection> Connections;
   Connections connections;
 
   tinygettext::Language m_language;
-- 
2.18.1

