Project: switch to C++14
This means we have rather tight compiler requirements now. Beyond that, we expect no serious impact; the most notable C++14 feature we're likely to use soon is type inference on lambda arguments.
This commit is contained in:
parent
24d7f55935
commit
c2d5896a3b
6 changed files with 19 additions and 13 deletions
|
|
@ -74,7 +74,7 @@ def defineBuildEnvironment():
|
||||||
env.Replace( CPPPATH =["#src"] # used to find includes, "#" means always absolute to build-root
|
env.Replace( CPPPATH =["#src"] # used to find includes, "#" means always absolute to build-root
|
||||||
, CPPDEFINES=['LUMIERA_VERSION='+VERSION ] # note: it's a list to append further defines
|
, CPPDEFINES=['LUMIERA_VERSION='+VERSION ] # note: it's a list to append further defines
|
||||||
, CCFLAGS='-Wall -Wextra'
|
, CCFLAGS='-Wall -Wextra'
|
||||||
, CXXFLAGS='-std=gnu++11 -Wno-enum-compare'
|
, CXXFLAGS='-std=gnu++14 -Wno-enum-compare'
|
||||||
, CFLAGS='-std=gnu99'
|
, CFLAGS='-std=gnu99'
|
||||||
)
|
)
|
||||||
env.Append(LINKFLAGS='-Wl,--no-undefined') # require every dependency is given on link, in the right order
|
env.Append(LINKFLAGS='-Wl,--no-undefined') # require every dependency is given on link, in the right order
|
||||||
|
|
|
||||||
|
|
@ -48,9 +48,9 @@ Languages and Tools
|
||||||
|
|
||||||
* C / C++
|
* C / C++
|
||||||
|
|
||||||
- a C99 / C++11 compatible compiler footnote:[in practice, we build using GCC and
|
- a C99 / C++14 compatible compiler footnote:[in practice, we build using GCC and
|
||||||
occasionally we check using Clang]
|
occasionally we check using Clang]
|
||||||
- GCC *4.7* or Clang *3.3* should be fine footnote:[basically we try to use just the stock language.
|
- GCC *4.9* or Clang *3.5* should be fine footnote:[basically we try to use just the stock language.
|
||||||
On rare occasions in the past, we _did_ use some GCC extensions, like `typeof()`, but we care for
|
On rare occasions in the past, we _did_ use some GCC extensions, like `typeof()`, but we care for
|
||||||
workarounds, in case this becomes a problem].
|
workarounds, in case this becomes a problem].
|
||||||
|
|
||||||
|
|
@ -62,7 +62,7 @@ Languages and Tools
|
||||||
- libboost-regex-dev
|
- libboost-regex-dev
|
||||||
|
|
||||||
* Script languages
|
* Script languages
|
||||||
- Python (*2.6*) for build scripts
|
- Python (*2.7*) for build scripts
|
||||||
- bash (some test scripts use bash specific extensions)
|
- bash (some test scripts use bash specific extensions)
|
||||||
|
|
||||||
Build Tools
|
Build Tools
|
||||||
|
|
@ -79,10 +79,7 @@ We maintain a link:/documentation/technical/infra/debianDepot.html[Debian/Ubuntu
|
||||||
Libraries
|
Libraries
|
||||||
~~~~~~~~~
|
~~~~~~~~~
|
||||||
|
|
||||||
* BOOST footnote:[as of [yellow-background]#5/2014#, we rely on the quite recent Boost-1.55,
|
* BOOST
|
||||||
which isn't in Debian/stable and not even in Debian/testing. +
|
|
||||||
As always in such cases, we provide backported packages in our
|
|
||||||
link:http://lumiera.org/debian/pool/experimental/b/boost1.55/[Lumiera package repository], until these versions become mainstream.]
|
|
||||||
* link:http://nobug.pipapo.org/[NoBug]
|
* link:http://nobug.pipapo.org/[NoBug]
|
||||||
* http://gmerlin.sourceforge.net/gavl.html[GAVL] (for raw media support)
|
* http://gmerlin.sourceforge.net/gavl.html[GAVL] (for raw media support)
|
||||||
* ALSA: libasound2-dev
|
* ALSA: libasound2-dev
|
||||||
|
|
|
||||||
|
|
@ -12,7 +12,9 @@ language and compiler support wasn't ready for what we consider _state of the cr
|
||||||
amended deficiencies by rolling our own helper facilities, with a little help from Boost.
|
amended deficiencies by rolling our own helper facilities, with a little help from Boost.
|
||||||
Thus there was no urge for us to adopt the new language standard; we could simply wait for
|
Thus there was no urge for us to adopt the new language standard; we could simply wait for
|
||||||
the compiler support to mature. In spring 2014, finally, we were able to switch our codebase
|
the compiler support to mature. In spring 2014, finally, we were able to switch our codebase
|
||||||
to C++11 with minimal effort. Following this switch, we're now able to reap the benefits of
|
to C++11 with minimal effort.footnote[since 8/2015 -- after the switch to Debian/Jessie
|
||||||
|
as a »reference platform«, we even compile with `-std=gnu++14`]
|
||||||
|
Following this switch, we're now able to reap the benefits of
|
||||||
this approach; we may now gradually replace our sometimes clunky helpers and workarounds
|
this approach; we may now gradually replace our sometimes clunky helpers and workarounds
|
||||||
with the smooth syntax of the ``new language'' -- without being forced to learn or adopt
|
with the smooth syntax of the ``new language'' -- without being forced to learn or adopt
|
||||||
an entirely new coding style, since that style isn't exactly new for us.
|
an entirely new coding style, since that style isn't exactly new for us.
|
||||||
|
|
|
||||||
|
|
@ -29,7 +29,7 @@ There is nothing really fancy with the configuration, things work as you'd expec
|
||||||
actually enabled. This provider is used by the IDE to retrieve definitions from the compiler for syntax checks
|
actually enabled. This provider is used by the IDE to retrieve definitions from the compiler for syntax checks
|
||||||
while you type and for building the search index. Typically, this provider is called ``GCC Builtin Compiler Settings'';
|
while you type and for building the search index. Typically, this provider is called ``GCC Builtin Compiler Settings'';
|
||||||
please ensure in the global (or the project specific) configuration that the invocation command line includes
|
please ensure in the global (or the project specific) configuration that the invocation command line includes
|
||||||
the argument `-std=gnu++11` -- otherwise you'll get a lot of red squiggles on the new language features ;-)
|
the argument `-std=gnu++14` -- otherwise you'll get a lot of red squiggles on the new language features ;-)
|
||||||
|
|
||||||
Indexer troubleshooting
|
Indexer troubleshooting
|
||||||
~~~~~~~~~~~~~~~~~~~~~~~
|
~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
|
||||||
|
|
@ -46,7 +46,7 @@ authoritative information about the build dependencies is encoded into the
|
||||||
link:{ldoc}/technical/build/SCons.html[build system]. Thus, when the build
|
link:{ldoc}/technical/build/SCons.html[build system]. Thus, when the build
|
||||||
system aborts, indicating that a never version of some library is required,
|
system aborts, indicating that a never version of some library is required,
|
||||||
then usually the build system is right...]
|
then usually the build system is right...]
|
||||||
More specifically, you'll need the GNU C/C++ compiler with C++11 support (Version >= 4.7)
|
More specifically, you'll need the GNU C/C++ compiler with C++14 support (Version >= 4.9)
|
||||||
in addition to the following tools and libraries:
|
in addition to the following tools and libraries:
|
||||||
|
|
||||||
* link:http://git-scm.com/[Git VCS]
|
* link:http://git-scm.com/[Git VCS]
|
||||||
|
|
@ -73,7 +73,7 @@ For Debian based systems, e.g. Mint, Ubuntu..., you can install these packages a
|
||||||
-------------------------------------------------------------------------------------
|
-------------------------------------------------------------------------------------
|
||||||
sudo apt-get install build-essential scons git-core valgrind intltool \
|
sudo apt-get install build-essential scons git-core valgrind intltool \
|
||||||
libboost-dev libboost-program-options-dev libboost-regex-dev libboost-filesystem-dev \
|
libboost-dev libboost-program-options-dev libboost-regex-dev libboost-filesystem-dev \
|
||||||
libgavl-dev libgtkmm-2.4-dev librsvg2-dev libxv-dev
|
libgavl-dev libgtkmm-3.0-dev libgdl-3-dev librsvg2-dev libxv-dev
|
||||||
-------------------------------------------------------------------------------------
|
-------------------------------------------------------------------------------------
|
||||||
|
|
||||||
Optionally, you may also want to install the `gtk2-engines` package.
|
Optionally, you may also want to install the `gtk2-engines` package.
|
||||||
|
|
@ -136,6 +136,14 @@ sudo make install
|
||||||
GDL: building and installing
|
GDL: building and installing
|
||||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
|
NOTE: 8/2015 the information in this paragraph is outdated!
|
||||||
|
We have switched to GTK-3 recently. Now we're able just to use the
|
||||||
|
official GDL from upstream (or your distribution). But we have also
|
||||||
|
switched to C++ bindings, and thus need a gdlmm installation, which
|
||||||
|
is not yet provided through the offial repositories on most distributions.
|
||||||
|
Thus, instead of shipping our own libGDL, now we're providing a DEB package
|
||||||
|
of gdlmm through our repository...
|
||||||
|
|
||||||
The *GNOME Docking library* is sometimes available through your package manager,
|
The *GNOME Docking library* is sometimes available through your package manager,
|
||||||
but we provide a suitable custom package as well; the following shows how to
|
but we provide a suitable custom package as well; the following shows how to
|
||||||
build the latter
|
build the latter
|
||||||
|
|
|
||||||
|
|
@ -266,7 +266,6 @@ Proc Layer::
|
||||||
* expand on the work done for a pooling small objects allocator.
|
* expand on the work done for a pooling small objects allocator.
|
||||||
* develop a backend for our various allocation schemes to use this allocator.
|
* develop a backend for our various allocation schemes to use this allocator.
|
||||||
|
|
||||||
- help with the C++11 transition
|
|
||||||
- Command system at the GUI interface
|
- Command system at the GUI interface
|
||||||
|
|
||||||
* expand on the work done for generic commands
|
* expand on the work done for generic commands
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue