Commit graph

31 commits

Author SHA1 Message Date
Nikhil Benesch 11c5d4741a cross-platform compatibility improvements
Summary:
We've had a couple CockroachDB users fail to build RocksDB on exotic platforms, so I figured I'd try my hand at solving these issues upstream. The problems stem from a) `USE_SSE=1` being too aggressive about turning on SSE4.2, even on toolchains that don't support SSE4.2 and b) RocksDB attempting to detect support for thread-local storage based on OS, even though it can vary by compiler on the same OS.

See the individual commit messages for details. Regarding SSE support, this PR should change virtually nothing for non-CMake based builds. `make`, `PORTABLE=1 make`, `USE_SSE=1 make`, and `PORTABLE=1 USE_SSE=1 make` function exactly as before, except that SSE support will be automatically disabled when a simple SSE4.2-using test program fails to compile, as it does on OpenBSD. (OpenBSD's ports GCC supports SSE4.2, but its binutils do not, so `__SSE_4_2__` is defined but an SSE4.2-using program will fail to assemble.) A warning is emitted in this case. The CMake build is modified to support the same set of options, except that `USE_SSE` is spelled `FORCE_SSE42` because `USE_SSE` is rather useless now that we can automatically detect SSE support, and I figure changing options in the CMake build is less disruptive than changing the non-CMake build.

I've tested these changes on all the platforms I can get my hands on (macOS, Windows MSVC, Windows MinGW, and OpenBSD) and it all works splendidly. Let me know if there's anything you object to—I obviously don't mean to break any of your build pipelines in the process of fixing ours downstream.
Closes https://github.com/facebook/rocksdb/pull/2199

Differential Revision: D5054042

Pulled By: yiwu-arbug

fbshipit-source-id: 938e1fc665c049c02ae15698e1409155b8e72171
2017-05-15 16:15:38 -07:00
Adam Retter 1a60982a5a Simplified instructions for CentOS
Summary:
Minimal changes for improvements to INSTALL.md for CentOS/RHEL
Closes https://github.com/facebook/rocksdb/pull/2266

Differential Revision: D5053530

Pulled By: yiwu-arbug

fbshipit-source-id: c05f30299f8efec949b9001a73969d649536ea8a
2017-05-12 12:23:18 -07:00
Tomas Kolda 04d58970cb AIX and Solaris Sparc Support
Summary:
Replacement of #2147

The change was squashed due to a lot of conflicts.
Closes https://github.com/facebook/rocksdb/pull/2194

Differential Revision: D4929799

Pulled By: siying

fbshipit-source-id: 5cd49c254737a1d5ac13f3c035f128e86524c581
2017-04-21 20:48:04 -07:00
Jevon Qiao a12306fab7 Add a notice on gflags installation in INSTALL.md
Summary:
Add a notice on gflags installation to help people build and install
RocksDB from source code correctly.
Please see https://github.com/facebook/rocksdb/issues/1775
Closes https://github.com/facebook/rocksdb/pull/2061

Differential Revision: D4831323

Pulled By: yiwu-arbug

fbshipit-source-id: 0df1f0e
2017-04-04 16:39:25 -07:00
Doogie Lee 72e6000947 fixed misses on Centos library installation instructions
Summary:
Following the instructions on INSTALL.md,
I found some errors while installing gflags and zstandard libraries on Centos and fixed them.
Thanks :)
Closes https://github.com/facebook/rocksdb/pull/2077

Differential Revision: D4820804

Pulled By: ajkr

fbshipit-source-id: db4abb3
2017-04-03 12:09:14 -07:00
Tamir Duberstein 36ad75778b INSTALL: document USE_SSE
Summary:
Fixes #1790.

adamretter siying
Closes https://github.com/facebook/rocksdb/pull/1996

Differential Revision: D4730449

Pulled By: IslamAbdelRahman

fbshipit-source-id: 19944fa
2017-03-17 11:54:11 -07:00
Adam Retter 0227c16d67 Update static library versions and add checksums
Summary:
The previous version of zlib is no longer available. I have also updated the versions of the other static libraries and added checkum checks for the downloads; This is related to https://github.com/facebook/rocksdb/issues/1769
Closes https://github.com/facebook/rocksdb/pull/1863

Differential Revision: D4550742

Pulled By: yiwu-arbug

fbshipit-source-id: 4414150
2017-02-12 23:09:09 -08:00
Nipunn Koorapati 25f5742f0b Update documentation to point at gcc 4.8
Summary:
Rocksdb currently has many references to std::map.emplace_back()
which is not implemented in gcc 4.7, but valid in gcc 4.8. Confirmed that
it did not build with gcc 4.7, but builds fine with gcc 4.8
Closes https://github.com/facebook/rocksdb/pull/1272

Differential Revision: D4101385

Pulled By: IslamAbdelRahman

fbshipit-source-id: f6af453
2016-10-29 12:09:17 -07:00
bcbrock f423f05dcd Simple changes to support builds for ppc64[le] consistent with X86
These simple changes are required to allow builds on ppc64[le] systems
consistent with X86. The Makefile now recognizes both ppc64 and ppc64le, and
in the absence of PORTABLE=1, the code will be built analogously to the X86
-march=native.

Note that although GCC supports -mcpu=native -mtune=native on POWER, it
doesn't work correctly on all systems. This is why we need to get the actual
machine model from the AUX vector.
2016-01-19 09:08:19 -06:00
Dmitri Smirnov 8c2fe68fd2 Update 4 is required for building with MS Visual Studio 13 2015-10-15 11:06:02 -07:00
Igor Canadi 831101b5fa Make it harder for users to run debug builds in production
Summary:
I see a lot of users compiling RocksDB with `make` or `make all` and then using those binaries in production. They end up running debug builds :(

This diff makes it harder for them:
1. I added an explicit warning to INSTALL.md
2. When you compile with `make all`, your resulting library will be librocksdb_debug.a
3. I also print out a warning when you compile in debug mode.

Hopefully should be enough :)

Test Plan: none

Reviewers: rven, yhchiang, kradhakrishnan, anthony, sdong, dhruba, IslamAbdelRahman

Reviewed By: IslamAbdelRahman

Subscribers: dhruba, leveldb

Differential Revision: https://reviews.facebook.net/D48093
2015-10-08 14:11:32 -07:00
Dima 7b463e657b Fixed a typo in INSTALL.md 2015-09-03 19:46:09 -07:00
Dmitri Smirnov ef4b87f1b2 Commit both PR and internal code review changes 2015-07-07 16:58:20 -07:00
Aaron Feldman 7160f5d80c Fix broken gflags link
Summary: Fix broken gflags link

Test Plan: Follow the link

Reviewers: igor

Reviewed By: igor

Subscribers: dhruba

Differential Revision: https://reviews.facebook.net/D40503
2015-06-22 09:31:52 -07:00
Mikael Högqvist 8b7be1808c Updated OS X instructions, replace homebrew/dupes with homebrew/versions 2015-06-10 21:52:42 +02:00
Igor Canadi 06eed650a0 Optimize default compile to compilation platform by default
Summary:
This diff changes compile to optimize for native platform by default. This will automatically turn on crc32 optimizations for modern processors, which greatly improves rocksdb's performance.

I also did some more changes to compilation documentation.

Test Plan:
compile with `make`, observe -march=native
compile with `PORTABLE=1 make`, observe no -march=native

Reviewers: sdong, rven, yhchiang, MarkCallaghan

Reviewed By: MarkCallaghan

Subscribers: dhruba, leveldb

Differential Revision: https://reviews.facebook.net/D30225
2014-12-15 11:29:41 +01:00
Igor Canadi d122e7bcf4 Update INSTALL.md 2014-10-01 11:15:42 -07:00
sdong ffe3d490d4 Add an instruction about SSE in INSTALL.md
Summary: As tittle.

Test Plan: Not needed

Reviewers: MarkCallaghan, ljin, yhchiang, igor

Reviewed By: igor

Subscribers: rven, leveldb

Differential Revision: https://reviews.facebook.net/D24231
2014-09-29 17:28:54 -07:00
nawu b982e65f8b specify the command to install build_tools/mac-install-gflags.sh file in doc 2014-06-17 17:03:21 -05:00
Igor Canadi 313b2e5da1 Better INSTALL.md and Makefile rules
Summary: We have a lot of problems with gflags. However, when compiling rocksdb static library, we don't need gflags dependency. Reorganize INSTALL.md such that first-time customers don't need any dependency installed to actually build rocksdb static library.

Test Plan: none

Reviewers: dhruba, haobo

Reviewed By: dhruba

CC: leveldb

Differential Revision: https://reviews.facebook.net/D18501
2014-05-07 16:51:30 -07:00
Igor Canadi 51023c3911 Make RocksDB compile for iOS
Summary:
I had to make number of changes to the code and Makefile:
* Add `make lib`, that will create static library without debug info. We need this to avoid growing binary too much. Currently it's 14MB.
* Remove cpuinfo() function and use __SSE4_2__ macro. We actually used the macro as part of Fast_CRC32() function.
As a result, I also accidentally fixed this issue: https://www.facebook.com/groups/rocksdb.dev/permalink/549700778461774/?stream_ref=2
* Remove __thread locals in OS_MACOSX

Test Plan: `make lib PLATFORM=IOS`

Reviewers: ljin, haobo, dhruba, sdong

Reviewed By: haobo

CC: leveldb

Differential Revision: https://reviews.facebook.net/D17475
2014-04-04 13:11:44 -07:00
Yueh-Hsuan Chiang 7624f43e0a Fixed a typo in INSTALL.md
Summary: Replace "RocskDB" by "RocksDB" in INSTALL.md

Test Plan: No code change.

Reviewers: ljin, igor

Reviewed By: ljin

CC: leveldb

Differential Revision: https://reviews.facebook.net/D16977
2014-03-18 12:05:23 -07:00
Kai Liu c9244dcba6 Update the instruction to build shared library 2014-02-24 12:29:26 -08:00
Igor Canadi 9a597dc696 Installation instructions for CentOS 2014-01-29 08:43:11 -08:00
dyu e842b99fc5 docs for shared library builds 2013-12-30 21:34:45 +08:00
Igor Canadi 43d073dff0 Cleaning up INSTALL.md -- there were two occurrences of gflags 2013-12-02 06:48:23 -08:00
Kangmo Kim 06844ab381 Added missing component : gflags in Linux platform.
Added missing component : gflags in Linux platform.
2013-11-26 16:30:52 +09:00
Kai Liu db2e2615f8 Fix the format in INSTALL.md 2013-11-20 14:55:33 -08:00
Kai Liu f5acb2eebb Add more guide for mac users. 2013-11-20 14:54:53 -08:00
Kai Liu 618250b5c5 Update the installation guide for mac users. 2013-11-20 14:38:17 -08:00
Igor Canadi 0d25449d57 Compilation.md
Summary: Explained what it takes to compile it on linux.

Test Plan: -

Reviewers: dhruba, kailiu

Reviewed By: kailiu

CC: leveldb

Differential Revision: https://reviews.facebook.net/D14151
2013-11-18 11:44:17 -08:00