This drops the required version to 2.0.2 on Linux and *BSD, as there are no known bugs that require us to have a later version on these platforms. Windows and Os X remains as 2.0.4.
This hopefully makes the file more readable and gets rid of an amount of
obsolete documentation and information about unsupported configurations.
General changes:
* Sections and section headings are more visible.
* Build prerequisites are listed in a cleaner structured format.
* Added a new section listing common options for both CMake and SCons
in a unified format to avoid repeating content (and inviting the
possibility of it diverging over time).
Specific content changes:
* CMake examples use -DCMAKE_BUILD_TYPE=Release because CMake sucks and
doesn't provide an officially-sanctioned mechanism to make the
default build type anything other than Debug.
* Unsupported build configurations (1.2.0 <= SDL_mixer < 1.2.12,
disabling Boost.filesystem on master/Windows, etc.) are no longer
mentioned as the instructions are too wordy and confusing and they
are unsupported so why would you use them without asking us first.
* All information about the autotools->scons transition is gone as it
stopped being relevant after 1.10.x, the first stable series released
after autotools support was finally removed in 1.9.4.
* cmake -i is no longer mentioned as it was removed in CMake 3.0.
* cmake-gui (Qt GUI front-end) is now mentioned alongside ccmake
(curses front-end).
* The CMake option for setting compiler flags is documented more
concisely now since most people reading this file don't need to know
all the gory details (where to put them though?).
* SCons targets are explained in a more concise fashion. The `all`
target is not mentioned anymore since it only adds targets which are
only useful to project members (cutter, exploder, campaignd, and the
Boost.Test test suite). In particular, building campaignd is not
officially supported under any configuration.
* Download links for external libraries are gone. Most people will want
to use their distribution's libraries rather than download them by
themselves. Those who actually want or need to do the latter will
know where to find them unless they live under a rock.
It was reported on Dec 22 2014 in irc that the game is broken if
this is missing, and a search shows that bigmaps and many campaign
story screens use jpg images.
It makes more sense imo to document this as an official dependency
now, and if we decide to change everything to png's then we can go
back and disable the jpg check then.
The dependency's version is decreased to version 1.21.3. This is the
version currently used in XCode (on the Mac). Upgrading there is
troublesome.
This partly reverts 2b939cebc7.
Most references to and dependencies on Subversion have been removed.
"+svn" is now "+dev". Files that can't be fixed yet have a FIXME-GIT
comment in them; most of these are in the website tests.
At the moment the flags are determined on the first run and stored in
CMAKE_CXX_FLAGS, CMAKE_CXX_FLAGS_DEBUG and CMAKE_CXX_FLAGS_RELEASE[*].
This was actuall not a good idea, since CMake combines CMAKE_CXX_FLAGS
with the CMAKE_CXX_FLAGS_<BUILD_TYPE>. The problem with this setup is
when the compiler is changed the flags are reset to their defaults and
the user made changes to the flags are lost. The second issue with the
old implementation is that the ENABLE_STRICT_COMPILATION CMake option
must be directly set; changing its value after the initial generation
had no effect.
The change will only set CMAKE_CXX_FLAGS, based on the environment
variable $CXXFLAGS, this is stored in its own variable, named
CXX_FLAGS_USER, in CMake and can be changed later. This flag is only
initialised on the first run. It is also based on the default flags we
use for Wesnoth and the _current_ state of the ENABLE_STRICT_COMPILATION
option. For the transition from the old to the new system the old
CMAKE_CXX_FLAGS are used as initial value for the CXX_FLAGS_USER. This
means no flags are lost, but some extra flags are added, will CMake to
cause a recompilation. So it's advised to regenerate the project files
or change the CXX_FLAGS_USER after CMake as updated the flags.
[*] Note I removed the CFlags since all C based code has been removed,
with the removal of the poolallocator.
Since 2010-12-27T04:03:39Z!ai0867@gmail.com, wesnoth no longer builds (due to duplicate
strings), and it would be a lot of work to fix the build system, so
better drop it.