diff options
author | Michael Grunder <michael.grunder@gmail.com> | 2021-12-16 12:36:05 -0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-12-16 12:36:05 -0800 |
commit | e3a479e4098dddbf0b075bbe81b0baca5fe0e3df (patch) | |
tree | ad8daeeae56c70fee9f0a43fda5f65933800f555 | |
parent | da5a4ff3622e8744b772a76f6ce580dc9134fb38 (diff) |
FreeBSD build fixes + CI (#1026)
* BSD linkage fix proposal
* Touch up the Makefile to fix BSD builds
Fixes #984
* Add a build in FreeBSD to GitHub Actions
Lots of people use hiredis in FreeBSD so this should reduce some pain
moving forward.
Co-authored-by: David Carlier <devnexen@gmail.com>
-rw-r--r-- | .github/workflows/build.yml | 23 | ||||
-rw-r--r-- | CMakeLists.txt | 3 | ||||
-rw-r--r-- | Makefile | 12 |
3 files changed, 37 insertions, 1 deletions
diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index e4dde05..fbc739d 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -3,6 +3,7 @@ on: [push, pull_request] jobs: ubuntu: + name: Ubuntu runs-on: ubuntu-latest steps: - name: Checkout code @@ -40,6 +41,7 @@ jobs: # run: $GITHUB_WORKSPACE/test.sh centos7: + name: CentOS 7 runs-on: ubuntu-latest container: centos:7 steps: @@ -79,6 +81,7 @@ jobs: run: $GITHUB_WORKSPACE/test.sh centos8: + name: CentOS 8 runs-on: ubuntu-latest container: centos:8 steps: @@ -118,7 +121,26 @@ jobs: TEST_PREFIX: valgrind --error-exitcode=99 --track-origins=yes --leak-check=full run: $GITHUB_WORKSPACE/test.sh + freebsd: + runs-on: macos-10.15 + name: FreeBSD + steps: + - name: Checkout code + uses: actions/checkout@v2 + with: + repository: ${{ env.GITHUB_REPOSITORY }} + ref: ${{ env.GITHUB_HEAD_REF }} + + - name: Build in FreeBSD + uses: vmactions/freebsd-vm@v0.1.5 + with: + prepare: pkg install -y gmake cmake + run: | + mkdir build && cd build && cmake .. && make && cd .. + gmake + macos: + name: macOS runs-on: macos-latest steps: - name: Checkout code @@ -140,6 +162,7 @@ jobs: run: $GITHUB_WORKSPACE/test.sh windows: + name: Windows runs-on: windows-latest steps: - name: Checkout code diff --git a/CMakeLists.txt b/CMakeLists.txt index 6d290a7..19c6578 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -59,6 +59,9 @@ SET_TARGET_PROPERTIES(hiredis_static IF(WIN32 OR MINGW) TARGET_LINK_LIBRARIES(hiredis PUBLIC ws2_32 crypt32) TARGET_LINK_LIBRARIES(hiredis_static PUBLIC ws2_32 crypt32) +ELSEIF(CMAKE_SYSTEM_NAME MATCHES "FreeBSD") + TARGET_LINK_LIBRARIES(hiredis PUBLIC m) + TARGET_LINK_LIBRARIES(hiredis_static PUBLIC m) ENDIF() TARGET_INCLUDE_DIRECTORIES(hiredis PUBLIC $<INSTALL_INTERFACE:include> $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}>) @@ -92,6 +92,16 @@ else SSL_LDFLAGS+=-L$(OPENSSL_PREFIX)/lib -lssl -lcrypto endif +ifeq ($(uname_S),FreeBSD) + LDFLAGS+=-lm + IS_GCC=$(shell sh -c '$(CC) --version 2>/dev/null |egrep -i -c "gcc"') + ifeq ($(IS_GCC),1) + REAL_CFLAGS+=-pedantic + endif +else + REAL_CFLAGS+=-pedantic +endif + ifeq ($(uname_S),SunOS) IS_SUN_CC=$(shell sh -c '$(CC) -V 2>&1 |egrep -i -c "sun|studio"') ifeq ($(IS_SUN_CC),1) @@ -231,7 +241,7 @@ check: hiredis-test TEST_SSL=$(USE_SSL) ./test.sh .c.o: - $(CC) -std=c99 -pedantic -c $(REAL_CFLAGS) $< + $(CC) -std=c99 -c $(REAL_CFLAGS) $< clean: rm -rf $(DYLIBNAME) $(STLIBNAME) $(SSL_DYLIBNAME) $(SSL_STLIBNAME) $(TESTS) $(PKGCONFNAME) examples/hiredis-example* *.o *.gcda *.gcno *.gcov |