From 7f6765ece4391cfed18577a92dd15c16da9fefe1 Mon Sep 17 00:00:00 2001 From: "Michael R. Fisher" Date: Mon, 15 Jul 2013 16:35:20 -0500 Subject: OSX GUI - Prevent compiler errors when -std=c++11 is switched on --- gtk2_ardour/au_pluginui.mm | 2 +- gtk2_ardour/cocoacarbon.mm | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/gtk2_ardour/au_pluginui.mm b/gtk2_ardour/au_pluginui.mm index 7bebcee84f..bbae272116 100644 --- a/gtk2_ardour/au_pluginui.mm +++ b/gtk2_ardour/au_pluginui.mm @@ -658,7 +658,7 @@ AUPluginUI::parent_cocoa_window () /* move the au_view down so that it doesn't overlap the top_box contents */ - NSPoint origin = { 0, a.height }; + NSPoint origin = { 0, static_cast (a.height) }; [au_view setFrameOrigin:origin]; [view addSubview:au_view positioned:NSWindowBelow relativeTo:nil]; diff --git a/gtk2_ardour/cocoacarbon.mm b/gtk2_ardour/cocoacarbon.mm index 072008e9a1..76b92cb91f 100644 --- a/gtk2_ardour/cocoacarbon.mm +++ b/gtk2_ardour/cocoacarbon.mm @@ -112,7 +112,7 @@ set_language_preference () break; } } - NSRange r = { 0, count }; + NSRange r = { 0, static_cast (count) }; setenv ("LANGUAGE", [[[languages subarrayWithRange:r] componentsJoinedByString:@":"] UTF8String], 0); cout << "LANGUAGE set to " << getenv ("LANGUAGE") << endl; } -- cgit v1.2.3 From 5e739dbfc1ee5b631c285c68f69327951db53494 Mon Sep 17 00:00:00 2001 From: "Michael R. Fisher" Date: Mon, 15 Jul 2013 16:38:54 -0500 Subject: Typo fixed: call class method instead of trying to use as a variable --- libs/evoral/evoral/PatchChange.hpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libs/evoral/evoral/PatchChange.hpp b/libs/evoral/evoral/PatchChange.hpp index b1a42c6f2e..53b50a3383 100644 --- a/libs/evoral/evoral/PatchChange.hpp +++ b/libs/evoral/evoral/PatchChange.hpp @@ -123,7 +123,7 @@ public: return time() < o.time(); } - if (bank != o.bank()) { + if (bank() != o.bank()) { return bank() < o.bank(); } -- cgit v1.2.3 From 3e11c80ac3adc2679b013e0d24746e4cc6308a1c Mon Sep 17 00:00:00 2001 From: "Michael R. Fisher" Date: Mon, 15 Jul 2013 16:42:20 -0500 Subject: C++11 Building - Add space between macros and quoted strings --- gtk2_ardour/audio_clock.cc | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/gtk2_ardour/audio_clock.cc b/gtk2_ardour/audio_clock.cc index a0b48b3557..12d3a1642f 100644 --- a/gtk2_ardour/audio_clock.cc +++ b/gtk2_ardour/audio_clock.cc @@ -997,18 +997,18 @@ AudioClock::set_slave_info () switch (sync_src) { case JACK: - _left_layout->set_markup (string_compose (""TXTSPAN"%2", + _left_layout->set_markup (string_compose ("" TXTSPAN "%2", INFO_FONT_SIZE, sync_source_to_string(sync_src, true))); _right_layout->set_text (""); break; case MIDIClock: if (slave) { - _left_layout->set_markup (string_compose (""TXTSPAN"%2", + _left_layout->set_markup (string_compose ("" TXTSPAN "%2", INFO_FONT_SIZE, sync_source_to_string(sync_src, true))); - _right_layout->set_markup (string_compose (""TXTSPAN"%2", + _right_layout->set_markup (string_compose ("" TXTSPAN "%2", INFO_FONT_SIZE, slave->approximate_current_delta())); } else { - _left_layout->set_markup (string_compose (""TXTSPAN"%2", + _left_layout->set_markup (string_compose ("" TXTSPAN "%2", INFO_FONT_SIZE, _("--pending--"))); _right_layout->set_text (""); } @@ -1020,21 +1020,21 @@ AudioClock::set_slave_info () TimecodeSlave* tcslave; if ((tcslave = dynamic_cast(_session->slave())) != 0) { matching = (tcslave->apparent_timecode_format() == _session->config.get_timecode_format()); - _left_layout->set_markup (string_compose (""TXTSPAN"%2%4", + _left_layout->set_markup (string_compose ("" TXTSPAN "%2%4", INFO_FONT_SIZE, sync_source_to_string(sync_src, true)[0], (matching?"green":"red"), dynamic_cast(slave)->approximate_current_position())); - _right_layout->set_markup (string_compose (""TXTSPAN"%2", + _right_layout->set_markup (string_compose ("" TXTSPAN "%2", INFO_FONT_SIZE, slave->approximate_current_delta())); } } else { - _left_layout->set_markup (string_compose (""TXTSPAN"%2", + _left_layout->set_markup (string_compose ("" TXTSPAN "%2", INFO_FONT_SIZE, _("--pending--"))); _right_layout->set_text (""); } break; } } else { - _left_layout->set_markup (string_compose (""TXTSPAN"INT/%2", + _left_layout->set_markup (string_compose ("" TXTSPAN "INT/%2", INFO_FONT_SIZE, sync_source_to_string(sync_src, true))); _right_layout->set_text (""); } @@ -1079,17 +1079,17 @@ AudioClock::set_frames (framepos_t when, bool /*force*/) sprintf (buf, "%" PRId64 "Hz", rate); } - _left_layout->set_markup (string_compose (""TXTSPAN"%2 %3", + _left_layout->set_markup (string_compose ("" TXTSPAN "%2 %3", INFO_FONT_SIZE, _("SR"), buf)); float vid_pullup = _session->config.get_video_pullup(); if (vid_pullup == 0.0) { - _right_layout->set_markup (string_compose (""TXTSPAN"%2 off", + _right_layout->set_markup (string_compose ("" TXTSPAN "%2 off", INFO_FONT_SIZE, _("Pull"))); } else { sprintf (buf, _("%+.4f%%"), vid_pullup); - _right_layout->set_markup (string_compose (""TXTSPAN"%2 %3", + _right_layout->set_markup (string_compose ("" TXTSPAN "%2 %3", INFO_FONT_SIZE, _("Pull"), buf)); } } @@ -1233,11 +1233,11 @@ AudioClock::set_bbt (framepos_t when, bool /*force*/) TempoMetric m (_session->tempo_map().metric_at (pos)); sprintf (buf, "%-5.1f", m.tempo().beats_per_minute()); - _left_layout->set_markup (string_compose (""TXTSPAN"%3 %2", + _left_layout->set_markup (string_compose ("" TXTSPAN "%3 %2", INFO_FONT_SIZE, buf, _("Tempo"))); sprintf (buf, "%g/%g", m.meter().divisions_per_bar(), m.meter().note_divisor()); - _right_layout->set_markup (string_compose (""TXTSPAN"%3 %2", + _right_layout->set_markup (string_compose ("" TXTSPAN "%3 %2", INFO_FONT_SIZE, buf, _("Meter"))); } } -- cgit v1.2.3 From 693713ecdb0bd4024f0a45aac6b74bd00d00eae4 Mon Sep 17 00:00:00 2001 From: "Michael R. Fisher" Date: Mon, 15 Jul 2013 16:44:03 -0500 Subject: Allow compiling with c++11 enabled --- libs/audiographer/audiographer/debug_utils.h | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/libs/audiographer/audiographer/debug_utils.h b/libs/audiographer/audiographer/debug_utils.h index a1d8259716..a1dad22eaf 100644 --- a/libs/audiographer/audiographer/debug_utils.h +++ b/libs/audiographer/audiographer/debug_utils.h @@ -3,6 +3,7 @@ #include "flag_field.h" +#include #include #ifdef __GNUC__ @@ -24,7 +25,7 @@ struct DebugUtils char * res = abi::__cxa_demangle (typeid(obj).name(), 0, 0, &status); if (status == 0) { std::string s(res); - free (res); + std::free (res); return s; } #endif -- cgit v1.2.3 From 65eb0b845f1e028d0b310cfe112730c6a62f3efd Mon Sep 17 00:00:00 2001 From: "Michael R. Fisher" Date: Mon, 15 Jul 2013 16:45:34 -0500 Subject: Include evoral/Note.hpp before pbd/compose.h - This workaround prevents a clang compiler error about template visibility --- libs/evoral/src/Sequence.cpp | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/libs/evoral/src/Sequence.cpp b/libs/evoral/src/Sequence.cpp index b56c234d75..204ef58f33 100644 --- a/libs/evoral/src/Sequence.cpp +++ b/libs/evoral/src/Sequence.cpp @@ -24,6 +24,10 @@ #include #include +#if __clang__ +#include "evoral/Note.hpp" +#endif + #include "pbd/compose.h" #include "pbd/error.h" -- cgit v1.2.3 From bf153e58a5e3b31536648bff4b95bf6e0a107c6c Mon Sep 17 00:00:00 2001 From: "Michael R. Fisher" Date: Mon, 15 Jul 2013 16:47:07 -0500 Subject: C++11 Building - Use new style struct field inititializing - clang with std=c++11 enabled was failing here --- libs/surfaces/generic_midi/interface.cc | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/libs/surfaces/generic_midi/interface.cc b/libs/surfaces/generic_midi/interface.cc index 94edb0ba80..57f56bd399 100644 --- a/libs/surfaces/generic_midi/interface.cc +++ b/libs/surfaces/generic_midi/interface.cc @@ -56,17 +56,17 @@ probe_generic_midi_protocol (ControlProtocolDescriptor* /*descriptor*/) } static ControlProtocolDescriptor generic_midi_descriptor = { - name : "Generic MIDI", - id : "uri://ardour.org/surfaces/generic_midi:0", - ptr : 0, - module : 0, - mandatory : 0, - supports_feedback : true, - probe : probe_generic_midi_protocol, - initialize : new_generic_midi_protocol, - destroy : delete_generic_midi_protocol + .name = "Generic MIDI", + .id = "uri://ardour.org/surfaces/generic_midi:0", + .ptr = 0, + .module = 0, + .mandatory = 0, + .supports_feedback = true, + .probe = probe_generic_midi_protocol, + .initialize = new_generic_midi_protocol, + .destroy = delete_generic_midi_protocol }; - + extern "C" { ControlProtocolDescriptor* -- cgit v1.2.3 From fa1086d82d497d61140bb164abd7b9c94d1a9d28 Mon Sep 17 00:00:00 2001 From: "Michael R. Fisher" Date: Mon, 15 Jul 2013 16:52:50 -0500 Subject: Dereference pointers in ctors where appropriate. (c++11 wants this) --- gtk2_ardour/window_manager.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/gtk2_ardour/window_manager.h b/gtk2_ardour/window_manager.h index 3a80840891..ca33b30234 100644 --- a/gtk2_ardour/window_manager.h +++ b/gtk2_ardour/window_manager.h @@ -151,7 +151,7 @@ class ProxyWithConstructor: public ProxyBase { : ProxyBase (name, menu_name) , creator (c) {} ProxyWithConstructor (const std::string& name, const std::string& menu_name, const boost::function& c, const XMLNode* node) - : ProxyBase (name, menu_name, node) , creator (c) {} + : ProxyBase (name, menu_name, *node) , creator (c) {} Gtk::Window* get (bool create = false) { if (!_window) { @@ -198,7 +198,7 @@ class Proxy : public ProxyBase { : ProxyBase (name, menu_name) {} Proxy (const std::string& name, const std::string& menu_name, const XMLNode* node) - : ProxyBase (name, menu_name, node) {} + : ProxyBase (name, menu_name, *node) {} Gtk::Window* get (bool create = false) { if (!_window) { -- cgit v1.2.3 From 066df0d218ee4391eb3e15259deca5ccc190ed84 Mon Sep 17 00:00:00 2001 From: "Michael R. Fisher" Date: Mon, 15 Jul 2013 16:53:55 -0500 Subject: Temporary OSX/Clang/C++11 workaround - Adds a directive that includes upon specific conditions - WIP --- libs/pbd/pbd/stl_delete.h | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/libs/pbd/pbd/stl_delete.h b/libs/pbd/pbd/stl_delete.h index 66fb027387..ac2161560c 100644 --- a/libs/pbd/pbd/stl_delete.h +++ b/libs/pbd/pbd/stl_delete.h @@ -20,11 +20,19 @@ #ifndef __libmisc_stl_delete_h__ #define __libmisc_stl_delete_h__ + +#if __clang__ && __APPLE__ && __cplusplus >= 201103L +#include +#ifndef _CPP_VECTOR +#define _CPP_VECTOR +#endif +#endif + /* To actually use any of these deletion functions, you need to first include the revelant container type header. */ #if defined(_CPP_VECTOR) || defined(_GLIBCXX_VECTOR) || defined(__SGI_STL_VECTOR) -template void vector_delete (std::vector *vec) +template void vector_delete (std::vector *vec) { typename std::vector::iterator i; -- cgit v1.2.3 From cdef4aa50f64daf784590a8f27f1ba11c03f1884 Mon Sep 17 00:00:00 2001 From: "Michael R. Fisher" Date: Mon, 15 Jul 2013 17:27:21 -0500 Subject: Add c++11 enablement options in wscript - adds "--cxx11" toggle for ./waf configure - The switch adds appropriate compiler flags and tests the compiler for usability of c++11 - This 'should' be compatible for linux, osx, and windows systems that have gcc and/or clang with support c++11 --- wscript | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/wscript b/wscript index a6106c0aef..48e30ef7ea 100644 --- a/wscript +++ b/wscript @@ -110,6 +110,22 @@ def set_compiler_flags (conf,opt): # waf adds -O0 -g itself. thanks waf! is_clang = conf.env['CXX'][0].endswith('clang++') + + if conf.options.cxx11: + conf.check_cxx(cxxflags=["-std=c++11"]) + conf.env.append_unique('CXXFLAGS', ['-std=c++11']) + if platform == "darwin": + conf.env.append_unique('CXXFLAGS', ['-stdlib=libc++']) + conf.env.append_unique('LINKFLAGS', ['-lc++']) + # Prevents visibility issues in standard headers + conf.define("_DARWIN_C_SOURCE", 1) + + if is_clang and platform == "darwin": + # Silence warnings about the non-existing osx clang compiler flags + # -compatibility_version and -current_version. These are Waf + # generated and not needed with clang + conf.env.append_unique ("CXXFLAGS", ["-Qunused-arguments"]) + if opt.gprofile: debug_flags = [ '-pg' ] @@ -454,6 +470,8 @@ def options(opt): help='directory where Wine\'s Windows header files can be found') opt.add_option('--noconfirm', action='store_true', default=False, dest='noconfirm', help='Do not ask questions that require confirmation during the build') + opt.add_option('--cxx11', action='store_true', default=False, dest='cxx11', + help='Turn on c++11 compiler flags (-std=c++11)') for i in children: opt.recurse(i) -- cgit v1.2.3