summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael Grunder <michael.grunder@gmail.com>2021-12-16 12:36:05 -0800
committerGitHub <noreply@github.com>2021-12-16 12:36:05 -0800
commite3a479e4098dddbf0b075bbe81b0baca5fe0e3df (patch)
treead8daeeae56c70fee9f0a43fda5f65933800f555
parentda5a4ff3622e8744b772a76f6ce580dc9134fb38 (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.yml23
-rw-r--r--CMakeLists.txt3
-rw-r--r--Makefile12
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}>)
diff --git a/Makefile b/Makefile
index f30c2ac..37432ac 100644
--- a/Makefile
+++ b/Makefile
@@ -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