From f358573091ef9c14c39ea56d9d9883410a533992 Mon Sep 17 00:00:00 2001 From: Nicolas Noble Date: Sun, 15 Mar 2015 20:05:24 -0700 Subject: [PATCH] FreeBSD preliminary work. -) You can't assume bash is installed. Scripts needs to be cleaned out of bashisms. -) You can't assume python is in /usr/bin. Use env instead. -) AF_INET is in sys/socket.h -) Added port_platform's basic structure for FreeBSD, based off Darwin. -) FreeBSD doesn't have and doesn't need libdl for OpenSSL. --- Makefile | 12 ++++++++++-- include/grpc/support/port_platform.h | 24 ++++++++++++++++++++++++ templates/Makefile.template | 12 ++++++++++-- test/core/end2end/gen_build_json.py | 2 +- test/core/iomgr/tcp_server_posix_test.c | 1 + tools/buildgen/build-cleaner.py | 2 +- tools/buildgen/generate_projects.sh | 8 ++++---- tools/buildgen/mako_renderer.py | 2 +- tools/run_tests/run_tests.py | 2 +- 9 files changed, 53 insertions(+), 12 deletions(-) diff --git a/Makefile b/Makefile index 3e1efc7646a..9a860456664 100644 --- a/Makefile +++ b/Makefile @@ -272,7 +272,10 @@ else IS_GIT_FOLDER = true endif -OPENSSL_ALPN_CHECK_CMD = $(CC) $(CFLAGS) $(CPPFLAGS) -o $(TMPOUT) test/build/openssl-alpn.c -lssl -lcrypto -ldl $(LDFLAGS) +OPENSSL_ALPN_CHECK_CMD = $(CC) $(CFLAGS) $(CPPFLAGS) -o $(TMPOUT) test/build/openssl-alpn.c -lssl -lcrypto $(LDFLAGS) +ifeq ($(SYSTEM),Linux) +OPENSSL_ALPN_CHECK_CMD += -ldl +endif ZLIB_CHECK_CMD = $(CC) $(CFLAGS) $(CPPFLAGS) -o $(TMPOUT) test/build/zlib.c -lz $(LDFLAGS) PERFTOOLS_CHECK_CMD = $(CC) $(CFLAGS) $(CPPFLAGS) -o $(TMPOUT) test/build/perftools.c -lprofiler $(LDFLAGS) PROTOBUF_CHECK_CMD = $(CXX) $(CXXFLAGS) $(CPPFLAGS) -o $(TMPOUT) test/build/protobuf.cc -lprotobuf $(LDFLAGS) @@ -344,12 +347,17 @@ OPENSSL_MERGE_LIBS += $(LIBDIR)/$(CONFIG)/openssl/libssl.a $(LIBDIR)/$(CONFIG)/o # need to prefix these to ensure overriding system libraries CPPFLAGS := -Ithird_party/openssl/include $(CPPFLAGS) LDFLAGS := -L$(LIBDIR)/$(CONFIG)/openssl $(LDFLAGS) +ifeq ($(SYSTEM),Linux) LIBS_SECURE = dl +endif else NO_SECURE = true endif else -LIBS_SECURE = ssl crypto dl +LIBS_SECURE = ssl crypto +ifeq ($(SYSTEM),Linux) +LIBS_SECURE += dl +endif endif LDLIBS_SECURE += $(addprefix -l, $(LIBS_SECURE)) diff --git a/include/grpc/support/port_platform.h b/include/grpc/support/port_platform.h index f04c2e76afa..17f2851f923 100644 --- a/include/grpc/support/port_platform.h +++ b/include/grpc/support/port_platform.h @@ -137,6 +137,30 @@ #else /* _LP64 */ #define GPR_ARCH_32 1 #endif /* _LP64 */ +#elif defined(__FreeBSD__) +#ifndef _BSD_SOURCE +#define _BSD_SOURCE +#endif +#define GPR_CPU_POSIX 1 +#define GPR_GCC_ATOMIC 1 +#define GPR_POSIX_LOG 1 +#define GPR_POSIX_MULTIPOLL_WITH_POLL 1 +#define GPR_POSIX_WAKEUP_FD 1 +#define GPR_POSIX_NO_SPECIAL_WAKEUP_FD 1 +#define GPR_POSIX_SOCKET 1 +#define GPR_POSIX_SOCKETADDR 1 +#define GPR_POSIX_SOCKETUTILS 1 +#define GPR_POSIX_ENV 1 +#define GPR_POSIX_FILE 1 +#define GPR_POSIX_STRING 1 +#define GPR_POSIX_SYNC 1 +#define GPR_POSIX_TIME 1 +#define GPR_GETPID_IN_UNISTD_H 1 +#ifdef _LP64 +#define GPR_ARCH_64 1 +#else /* _LP64 */ +#define GPR_ARCH_32 1 +#endif /* _LP64 */ #else #error Could not auto-detect platform #endif diff --git a/templates/Makefile.template b/templates/Makefile.template index a69c7a7f2f1..621b008161f 100644 --- a/templates/Makefile.template +++ b/templates/Makefile.template @@ -289,7 +289,10 @@ else IS_GIT_FOLDER = true endif -OPENSSL_ALPN_CHECK_CMD = $(CC) $(CFLAGS) $(CPPFLAGS) -o $(TMPOUT) test/build/openssl-alpn.c -lssl -lcrypto -ldl $(LDFLAGS) +OPENSSL_ALPN_CHECK_CMD = $(CC) $(CFLAGS) $(CPPFLAGS) -o $(TMPOUT) test/build/openssl-alpn.c -lssl -lcrypto $(LDFLAGS) +ifeq ($(SYSTEM),Linux) +OPENSSL_ALPN_CHECK_CMD += -ldl +endif ZLIB_CHECK_CMD = $(CC) $(CFLAGS) $(CPPFLAGS) -o $(TMPOUT) test/build/zlib.c -lz $(LDFLAGS) PERFTOOLS_CHECK_CMD = $(CC) $(CFLAGS) $(CPPFLAGS) -o $(TMPOUT) test/build/perftools.c -lprofiler $(LDFLAGS) PROTOBUF_CHECK_CMD = $(CXX) $(CXXFLAGS) $(CPPFLAGS) -o $(TMPOUT) test/build/protobuf.cc -lprotobuf $(LDFLAGS) @@ -361,12 +364,17 @@ OPENSSL_MERGE_LIBS += $(LIBDIR)/$(CONFIG)/openssl/libssl.a $(LIBDIR)/$(CONFIG)/o # need to prefix these to ensure overriding system libraries CPPFLAGS := -Ithird_party/openssl/include $(CPPFLAGS) LDFLAGS := -L$(LIBDIR)/$(CONFIG)/openssl $(LDFLAGS) +ifeq ($(SYSTEM),Linux) LIBS_SECURE = dl +endif else NO_SECURE = true endif else -LIBS_SECURE = ssl crypto dl +LIBS_SECURE = ssl crypto +ifeq ($(SYSTEM),Linux) +LIBS_SECURE += dl +endif endif LDLIBS_SECURE += $(addprefix -l, $(LIBS_SECURE)) diff --git a/test/core/end2end/gen_build_json.py b/test/core/end2end/gen_build_json.py index 67fc0a6e539..23349daafe8 100755 --- a/test/core/end2end/gen_build_json.py +++ b/test/core/end2end/gen_build_json.py @@ -1,4 +1,4 @@ -#!/usr/bin/python2.7 +#!/usr/bin/env python # Copyright 2015, Google Inc. # All rights reserved. # diff --git a/test/core/iomgr/tcp_server_posix_test.c b/test/core/iomgr/tcp_server_posix_test.c index 2689c3f38e5..708444a2872 100644 --- a/test/core/iomgr/tcp_server_posix_test.c +++ b/test/core/iomgr/tcp_server_posix_test.c @@ -38,6 +38,7 @@ #include #include "test/core/util/test_config.h" +#include #include #include #include diff --git a/tools/buildgen/build-cleaner.py b/tools/buildgen/build-cleaner.py index 1d9157aad7d..6c5355bce39 100755 --- a/tools/buildgen/build-cleaner.py +++ b/tools/buildgen/build-cleaner.py @@ -1,4 +1,4 @@ -#!/usr/bin/python +#!/usr/bin/env python # Copyright 2015, Google Inc. # All rights reserved. # diff --git a/tools/buildgen/generate_projects.sh b/tools/buildgen/generate_projects.sh index 7a12440db2c..45f08df38fe 100755 --- a/tools/buildgen/generate_projects.sh +++ b/tools/buildgen/generate_projects.sh @@ -1,4 +1,4 @@ -#!/bin/bash +#!/bin/sh # Copyright 2015, Google Inc. # All rights reserved. # @@ -31,7 +31,7 @@ set -e -if [ "x$TEST" == "x" ] ; then +if [ "x$TEST" = "x" ] ; then TEST=false fi @@ -61,12 +61,12 @@ for dir in . ; do out=${out%.*} # strip template extension json_files="build.json $end2end_test_build" data=`for i in $json_files; do echo -n "-d $i "; done` - if [ $TEST == true ] ; then + if [ "x$TEST" = "xtrue" ] ; then actual_out=$out out=`mktemp /tmp/gentXXXXXX` fi $mako_renderer $plugins $data -o $out $file - if [ $TEST == true ] ; then + if [ "x$TEST" = "xtrue" ] ; then diff -q $out $actual_out rm $out fi diff --git a/tools/buildgen/mako_renderer.py b/tools/buildgen/mako_renderer.py index f0dc818c0c0..534377e69ec 100755 --- a/tools/buildgen/mako_renderer.py +++ b/tools/buildgen/mako_renderer.py @@ -1,4 +1,4 @@ -#!/usr/bin/python2.7 +#!/usr/bin/env python # Copyright 2015, Google Inc. # All rights reserved. # diff --git a/tools/run_tests/run_tests.py b/tools/run_tests/run_tests.py index aee19cdc42d..338f5649486 100755 --- a/tools/run_tests/run_tests.py +++ b/tools/run_tests/run_tests.py @@ -1,4 +1,4 @@ -#!/usr/bin/python2.7 +#!/usr/bin/env python # Copyright 2015, Google Inc. # All rights reserved. #