pantry/projects/facebook.com/folly/package.yml
Jacob Heider fdfa834456
fix(folly) (#3285)
* fix(folly)

* ignore the symlinks
2023-09-11 10:40:54 -04:00

102 lines
3 KiB
YAML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

distributable:
url: https://github.com/facebook/folly/releases/download/{{version.tag}}/folly-{{version.tag}}.tar.gz
strip-components: 0
versions:
github: facebook/folly
dependencies:
boost.org: '*'
gflags.github.io: '*'
google.com/glog: '*'
libevent.org: '*'
lz4.org: 1
openssl.org: ^1.1
tukaani.org/xz: 5
facebook.com/zstd: 1
gnu.org/coreutils: 9
google.github.io/snappy: '*'
google.com/double-conversion: ^3
fmt.dev: ^9
darwin:
sourceware.org/bzip2: '*'
zlib.net: '*'
build:
dependencies:
tea.xyz/gx/cc: c99
tea.xyz/gx/make: '*'
cmake.org: ^3.0.2
freedesktop.org/pkg-config: ^0.29
working-directory:
/tmp/xyz.tea.folly
# ^^ facebook use a shitty custom regex function to remove sources that
# shouldnt be compiled from the library target. They start with *all sources*
# our default build directory has a `+` in it which breaks facebooks
# piss awful code.
#TODO dont use exotic characters in our build directories
script:
- test -d xyz.tea.srcs && rm -rf xyz.tea.srcs
- mv $SRCROOT xyz.tea.srcs
- cmake $ARGS -DBUILD_SHARED_LIBS=ON -S xyz.tea.srcs -B shared
- cmake --build shared
- cmake --install shared
- cmake $ARGS -DBUILD_SHARED_LIBS=OFF -S xyz.tea.srcs -B static
- cmake --build static
- run: cp /tmp/xyz.tea.folly/static/libfolly.a libfollybenchmark.a
working-directory: ${{prefix}}/static/folly
- run: |
sed -E -i.bak \
-e "s:{{tea.prefix}}:\$\{_IMPORT_PREFIX\}/../../..:g" \
-e '/^ INTERFACE_INCLUDE_DIRECTORIES/ s|/v([0-9]+)(\.[0-9]+)*[a-z]?/include|/v\1/include|g' \
-e '/^ INTERFACE_LINK_LIBRARIES/ s|/v([0-9]+)(\.[0-9]+)*[a-z]?/lib|/v\1/lib|g' \
folly-targets.cmake
rm folly-targets.cmake.bak
working-directory: ${{prefix}}/lib/cmake/folly
- run: |
sed -i.bak -e 's/-I[^ ]* *//g' libfolly.pc
rm libfolly.pc.bak
working-directory: ${{prefix}}/lib/pkgconfig
# folly has libs that end up with name @rpath/libfolly.{{version}}.dylib (offset 24)
# so we need to add @loader_path to the rpath
- run: |
for LIB in libfolly*.*.*.*-dev.dylib; do
install_name_tool -add_rpath @loader_path $LIB
done
working-directory: ${{prefix}}/lib
if: darwin
env:
ARGS:
- -DCMAKE_INSTALL_PREFIX={{prefix}}
- -DCMAKE_BUILD_TYPE=Release
- -DBUILD_TESTING=OFF
- -DCMAKE_VERBOSE_MAKEFILE=ON
linux/aarch64:
ARGS:
- -DCMAKE_C_FLAGS=-fPIC
- -DCMAKE_CXX_FLAGS=-fPIC
- -DCMAKE_EXE_LINKER_FLAGS=-pie
test:
dependencies:
tea.xyz/gx/cc: c99
fixture: |
#include <folly/FBVector.h>
int main() {
folly::fbvector<int> numbers({0, 1, 2, 3});
numbers.reserve(10);
for (int i = 4; i < 10; i++) {
numbers.push_back(i * 2);
}
assert(numbers[6] == 12);
return 0;
}
script: |
mv $FIXTURE b.cc
c++ -std=c++17 b.cc -lfolly -ldl -lfmt -lglog
./a.out