Commit Graph

190 Commits

Author SHA1 Message Date
Marijn van der Werf 0cb3a05f5d Include google test for cmake 2016-09-16 19:43:28 +02:00
Marijn van der Werf 1b1b26aeb8 Hack cmakelists to compile test project 2016-09-16 19:43:00 +02:00
Michał Janiszewski b0a8fb0a7c Enable more warnings for CMake 2016-09-11 11:20:39 +01:00
Michał Janiszewski 3c2569dbea Add -Wnon-virtual-dtor to CMakeLists.txt 2016-09-10 22:00:35 +02:00
Marijn van der Werf d1801f860b Fix CMake builds on macOS (#4398) 2016-09-10 17:30:07 +02:00
Michał Janiszewski 27799bc187 Remove unnecessary compiler options 2016-09-04 17:29:43 +02:00
Michał Janiszewski 47e343a88d Fix PIC options for mingw 2016-09-04 17:27:53 +02:00
Michał Janiszewski cdc447e92a Refactor compiler flags in CMakeLists.txt 2016-09-04 17:27:53 +02:00
Michał Janiszewski f6e9216b7d Use PIC/pie flags to satisfy Launchpad 2016-09-04 17:27:53 +02:00
Michał Janiszewski 4481859898 Fix Launchpad builds 2016-09-04 17:27:53 +02:00
Michał Janiszewski d9274ffd82 Enable all warnings as errors for 64 bit builds (cmake) 2016-09-04 12:16:09 +00:00
Michael Steenbeek fe8f14be58 Fix cmake in directories with apostrophes (#4366) 2016-09-02 18:18:59 +00:00
Michał Janiszewski 645bb44eb4 Minor fixes to 64 bit builds 2016-08-08 23:06:10 +01:00
Aaron van Geffen 95ef81b4c8 CMake: split OpenGL check for macOS and Linux.
The GL check doesn't work nicely with macOS, while find_package doesn't work well with multiarch on Ubuntu.
2016-08-08 07:25:22 +02:00
Michał Janiszewski 7e5102dd6f mmap data segment to arbitrary location 2016-08-08 07:25:22 +02:00
LRFLEW 69404bd394 Fix OpenSSL CMake Dependency on macOS 2016-08-08 07:25:22 +02:00
Michał Janiszewski 2e319c4dd6 Fix CMake flags setup 2016-08-01 23:14:42 +02:00
Aaron van Geffen 24fde98837 Define Git variables for CMake. 2016-07-31 17:32:33 +02:00
Michał Janiszewski 550ac03ab7 Enforce proper declarations for every function
Enables -Wmissing-declarations for CMake projects
2016-07-14 14:11:50 +02:00
Michał Janiszewski f82b4b4425 Add -Wundef to CMake-based builds
Verifies all the defines are checked properly
2016-07-09 10:06:09 +02:00
Michał Janiszewski 9240280005 Only disable optimisations when using RCT2 segments (#4007) 2016-07-09 09:57:29 +02:00
Michał Janiszewski cdab4bc0fd Add CMake target not using RCT2, use it for linux64 job 2016-06-16 11:37:52 +02:00
Michał Janiszewski 0ac5c3698b Fix CMake projects, restore testing with OpenGL disabled 2016-06-12 18:49:26 +02:00
Michał Janiszewski 39472ce3f3 Update CMake targets with OpenGL linking (#17) 2016-06-08 13:28:33 +01:00
Michał Janiszewski f8fa637b68 Require OpenSSL in all but network-less builds (#3829) 2016-06-05 21:57:28 +01:00
Michał Janiszewski a79e793e67 Disable whole-project alignment for MSVC & MinGW (#3807)
As OpenRCT2/OpenRCT2#3783 has now been merged, this should be
unnecessary.
2016-06-03 19:07:52 +01:00
LRFLEW 859d861f14 Fix CMake OS X Build (#12) 2016-06-01 22:35:58 +02:00
Michał Janiszewski 778de4e285 Explicitly require OpenSSL>=1.0.0
This is to make sure CMake won't try using OS X's stale version of SSL
2016-06-01 22:23:20 +02:00
Michał Janiszewski 1c459c8186 Add NetworkKey class 2016-05-27 20:28:33 +02:00
Michał Janiszewski 0ddf5ea4c5 Turn on -Werror for all warnings (#3716)
Exclude int-to-pointer-cast and pointer-to-int-cast for 64 bit builds
for now.
2016-05-23 21:28:59 +01:00
janisozaur e28d6634fd Allow builds without -fno-omit-frame-pointer (#3554)
Disables optimizations done to addresses.c, so frame pointer doesn't
have to be kept, allowing for more aggressive optimizations to be done.
2016-05-09 20:24:37 +01:00
Michał Janiszewski b30bab65d8 Add experimental build job for x86-64
This is **build job only**. It does not work yet.
2016-04-26 22:35:47 +02:00
janisozaur e7eae9aff2 Fix clang optimized builds (#3336)
This apparently applies to non-Apple clang only.

When passed any optimization level other than 0, clang took liberty and
re-organised arguments passed to `RCT2_CALL*`, even in presence of
attributes put in place to prevent that: optnone,noinline.

This change allows easier project setup. It was previously possible to
produce a clang optimized build by manually recompiling and relinking
addresses.c.o.
2016-04-18 14:31:38 +01:00
Michał Janiszewski da80a691bc Start 0.0.5
changelog.txt not updated yet
2016-04-13 14:20:40 +02:00
Michał Janiszewski e28de49a34 Breakpad integration
Provide your own breakpad and point cmake at it.

git clone https://chromium.googlesource.com/chromium/tools/depot_tools.git
mkdir breakpad && cd breakpad
../depot_tools/fetch breakpad # edit the script to use python2
cd src
LDFLAGS="-m32" CXXFLAGS="-m32" CFLAGS="-m32" CPPFLAGS="-m32" ./configure
LDFLAGS="-m32" CXXFLAGS="-m32" CFLAGS="-m32" CPPFLAGS="-m32" make -j 8

Run cmake on openrct2:
cd openrct2
vim CMakeLists.txt # provide your path to breakpad
mkdir build && cd build
cmake ../ -DWITH_BREAKPAD=ON
make -j 8
./openrct2 # open a game, select "about openrct2", crash
2016-04-09 18:57:14 +02:00
Michał Janiszewski 5fe2623613 Prefer libpng1.6 over libpng1.2 if available 2016-04-02 00:52:53 +02:00
Michał Janiszewski f372666d30 Lower libpng requirement to 1.2 2016-04-02 00:52:53 +02:00
Ted John d2cc88099e Merge pull request #3188 from janisozaur/headers-cmake
Add headers to CmakeLists.txt
2016-03-27 22:44:37 +01:00
Michał Janiszewski 2b790e1b5a Add guard to prevent from building in-source 2016-03-27 23:29:45 +02:00
Michał Janiszewski 8de2310d63 Add headers to CmakeLists.txt
This doesn't really affect compilation in any way, but allows
CMake-based project generators to include the header files as well.

Previously headers without accompanying source files (like version.h)
were skipped when generating project files.
2016-03-27 22:22:58 +02:00
Michał Janiszewski d274abdcce Fixes for GCC
Makes jansson library required as well
2016-02-03 18:23:47 +00:00
Michał Janiszewski b7820c09cd Add docs to CPack-generated packages
Includes licence, contributors, readme, etc.
2016-01-25 11:17:25 +01:00
Michał Janiszewski 8599468760 Cleanup unused lodepng stuff 2016-01-23 17:13:15 +01:00
Michał Janiszewski abe6841e0b Update libraries 2016-01-21 00:01:03 +01:00
Michał Janiszewski 753d430eaa Add zlib-based compression and decompression 2016-01-20 15:30:59 +01:00
Michał Janiszewski b8b50684ba Bump CMakeLists' version to match other places 2016-01-17 16:19:54 +01:00
Michał Janiszewski e7ea6381cc Drop support for lodepng
All platforms can now use libpng 1.6
2016-01-09 21:50:08 +00:00
Michał Janiszewski ed8ac6f1cd Update CMakeLists.txt with new argparse location
Argparse library got merged into main repository, there's no need to
call out to it now.
2016-01-09 21:50:07 +00:00
Michał Janiszewski d29faf25c4 Remove tests
Tests were quite old, used very simple framework which did not allow
much fidelity and were probably never executed.
2016-01-09 21:50:06 +00:00
Michał Janiszewski db95b3ada3 Enable strict aliasing and make sure it gets spotted 2015-12-31 09:15:16 +01:00
Michał Janiszewski 94a3ccdab5 Detect libpng>=1.6 and fall back to lodepng 2015-12-30 13:36:15 +00:00
Michał Janiszewski 9321c53b87 Enable libpng on Linux builds
Lodepng is still available.
2015-12-30 13:34:51 +00:00
Michał Janiszewski c293572d3f Add SSL dependency from curl 2015-12-28 10:54:06 +01:00
Michał Janiszewski 8ebc3e7f85 Modify CMakeLists to enable STATIC support on Linux
This enables compilation with `-DSTATIC=ON` for native Linux builds.

Do note that Linux systems rarely come with static libraries, so it may
not be a popular option.
2015-12-28 10:10:13 +01:00
Michał Janiszewski f502b5ec1b Provide explicit option for static linkage
This solves woes of missing libraries on some systems by providing
user-accessible option to control static linkage.
2015-12-28 02:27:49 +01:00
Michał Janiszewski 6a5fc90cd4 Fix CMakeLists for MinGW cross-compilation
This makes sure that shared library built with MinGW toolchain is linked
statically to *all* its dependencies, including libc, libstdc++, libsdl2
and all the others. This allows producing of working `openrct2.dll` by
cross-compiling.

I hit a bug with libcrypto, a dependency of libssl, which in turn is a
dependency of curl, which creates a `DllMain` entrypoint for static lib
too, but since we don't do anything in ours, this should be safe.

I have only had chance to try it out when cross-compiling, ideally it
should be tested under Cygwin/MSYS too, but it is too bothersome to
setup for me.
2015-12-28 01:17:28 +01:00
Aaron van Geffen 43e193ba10 Remove FontConfig as a required module on OS X. 2015-12-25 14:32:49 +09:00
Michał Janiszewski 9b838aa0ee Add missing fontconfig lib for Travis and Docker 2015-12-25 01:53:53 +09:00
Aaron van Geffen dd604afc89 Use FontConfig to find suitable TrueType fonts on Linux and OS X. Fixes #2537. 2015-12-25 01:53:52 +09:00
Michał Janiszewski 3ba9ec8c81 CMake updates for packaging on Linux
This enables install and package targets for make.

You can specify installation prefix with -DCMAKE_INSTALL_PREFIX=path,
when doing `make install`, OpenRCT shall be found there.

You can also use `make package` for creating packaged release files.
2015-12-22 22:47:44 +01:00
Kyle Kirbatski 20df0a0be7 Add `.m` files 2015-12-17 11:52:57 -06:00
Gymnasiast 3db574b8bb Fix building in paths with spaces not working properly on Linux 2015-12-16 20:31:33 +01:00
Michał Janiszewski 7d132d8fe1 Extract and embed sections into binary itself
Fixed some CMakeLists.txt problems, made another target for converting
section images into something palatable by ld, modified the linker
script to place these ssection at predefined VMAs and updated openrct2.c
with new checks.
2015-12-16 19:16:27 +01:00
Michał Janiszewski 40059ced39 Add g2 target for easy generation 2015-12-12 23:28:56 +01:00
LRFLEW c9be2e1bc9 Resolved struct packing error and crash on OS X 2015-12-10 17:29:58 -06:00
Kyle Kirbatski af382b1884 Switched to -sectcreate instead of mmap on OS X 2015-12-10 16:32:46 -06:00
Michał Janiszewski 1bafbde113 Shift segments in Mach-O to outside of required AS
Mach-O defaults to having .text segment starting at 0x1000 RVA, which
clashes with the address space required for mmap to work properly.

This change tells linker to move the segment outside of required AS, and
then some, so that mmap can properly allocate required addresses without
evicting anything else.
2015-12-10 16:32:45 -06:00
Linus Unnebäck c4356c1ecc cmake: add iconv libraries 2015-12-10 09:35:38 +01:00
Michał Janiszewski c4ad2346e3 Fixes for building optimized binary on Linux
Use `-DCMAKE_BUILD_TYPE=X`, where X:
- `RELEASE`
- `RELWITHDEBINFO`
- `MINSIZEREL`

Only works for GCC, clang binaries crash for now.
2015-11-18 21:29:08 +01:00
Michał Janiszewski c0e2a5c7be Add get_current_rotation function and DEBUG_LEVEL macros 2015-11-02 22:58:15 +01:00
Michał Janiszewski 31f412d0e4 Fixes: scope & types, control flow, cmake, platform support 2015-10-29 20:26:47 +01:00
Michał Janiszewski f8407176d1 drop no longer needed debug switch for gcc 2015-10-22 23:39:09 +02:00
Michał Janiszewski 10587cb5ab Port non-VS inline asm to AT&T syntax
This is much more liked by other compilers
2015-10-22 23:32:27 +02:00
Alexander Overvoorde 8321b14a33 Link with libdl 2015-10-04 00:10:55 +02:00
Michał Janiszewski 33857d287b Require speex, use zipped version only when targetting mingw 2015-10-03 15:04:21 +02:00
Michał Janiszewski 9e62198546 Partially revert c93c1c7, for mingw builds only
Conditionally restore old functionality which got broken for mingw
builds with commit c93c1c7. Allow building with old version of code, but
generate a warning when doing so.
2015-09-29 00:13:27 +02:00
Michał Janiszewski a16de307d7 Refactor project build scripts
This is mostly refactoring of cmake scripts, but also touches build.sh
and install.sh. The cmake should be much more palatable now for major
Linux distributions.

At the same time, new configuration is introduced to Linux version, one
with Twitch enabled.

Please note, however, this change requires update of orctlibs.zip for
mingw builds.
2015-09-28 21:10:21 +02:00
zsilencer 9ac89c2b5e remove directsound and get sound working for linux native 2015-09-23 09:42:55 -06:00
Michał Janiszewski b64d4225be Declare link directories prior to using them
As it turns out, you have to declare your link directories before you
use them in cmake, otherwise your executables/binaries will have no
knowledge of them.

This should fix travis builds for mingw.
2015-09-20 23:19:38 +02:00
Michał Janiszewski 4ce0e3a8b2 Linux platform file
Add bulk of the platform file for linux, change the compilation target
from shared library to executable for linux, provide necessary changes
to make it compile & load the stub of a process.

Make sure functions are marked as stubs where needed, and implementation
is expected.
2015-09-20 23:19:08 +02:00
Michał Janiszewski 4df8761831 remove windows-only code
Step 1 on road towards Linux.

Remove windows-specific code, stub it out where needed and make sure we
can still compile it the way it is.

Take care of Travis' build matrix to include new build configuration.

Install new packages.
2015-09-18 16:01:38 +02:00
Michał Janiszewski fc533c92c4 Add switch to disable network at compile-time 2015-08-19 01:47:33 +02:00
Michał Janiszewski 189c6bb0ee travis fixes 2015-08-05 23:25:49 +02:00
Miso Zmiric (Mike Squinter) ca4f2d0fa3 remove libs from orct repo, add dependencies pull to prebuilds, update unix scripts 2015-07-03 08:45:56 +01:00
Miso Zmiric (Mike Squinter) c2c9bbf4ef add twitch integration, part 2 2015-05-25 20:38:33 +01:00
IntelOrca daf231a2e9 organisation: move peep and staff to sub directory of its own 2014-10-06 19:41:43 +01:00
zsilencer 02cacd45c1 cmake build 2014-09-05 20:35:16 -06:00
zsilencer 6250331bd0 compile test 2014-08-26 21:48:47 -06:00
anyc 7da7e483a3 added .travis.yml and modified CMake scripts 2014-05-24 16:18:28 +02:00
anyc 5e4f313471 added cmake build scripts 2014-05-22 23:47:23 +02:00