Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions rules/frr.mk
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,8 @@ FRR_TAG = frr-$(FRR_VERSION)
export FRR_VERSION FRR_SUBVERSION FRR_TAG

FRR = frr_$(FRR_VERSION)-sonic-$(FRR_SUBVERSION)_$(CONFIGURED_ARCH).deb
$(FRR)_DEPENDS += $(LIBSNMP_DEV) $(LIBYANG3_DEV)
$(FRR)_RDEPENDS += $(LIBYANG3)
$(FRR)_DEPENDS += $(LIBSNMP_DEV) $(LIBYANG3_DEV) $(LIBFIB_DEV)
$(FRR)_RDEPENDS += $(LIBYANG3) $(LIBFIB)
$(FRR)_UNINSTALLS = $(LIBYANG3_DEV)
$(FRR)_SRC_PATH = $(SRC_PATH)/sonic-frr
SONIC_MAKE_DEBS += $(FRR)
Expand Down
12 changes: 12 additions & 0 deletions rules/sonic-fib.dep
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@

SPATH := $($(LIBFIB)_SRC_PATH)
DEP_FILES := $(SONIC_COMMON_FILES_LIST) rules/sonic-fib.mk rules/sonic-fib.dep
DEP_FILES += $(SONIC_COMMON_BASE_FILES_LIST)
SMDEP_FILES := $(addprefix $(SPATH)/,$(shell cd $(SPATH) && git ls-files))

$(LIBFIB)_CACHE_MODE := GIT_CONTENT_SHA
$(LIBFIB)_DEP_FLAGS := $(SONIC_COMMON_FLAGS_LIST)
$(LIBFIB)_DEP_FILES := $(DEP_FILES)
$(LIBFIB)_SMDEP_FILES := $(SMDEP_FILES)
$(LIBFIB)_SMDEP_PATHS := $(SPATH)

24 changes: 24 additions & 0 deletions rules/sonic-fib.mk
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
# libFIB package

LIBFIB_VERSION = 1.0.0
LIBFIB_NAME = libnexthopgroup

LIBFIB = $(LIBFIB_NAME)_$(LIBFIB_VERSION)_$(CONFIGURED_ARCH).deb
$(LIBFIB)_SRC_PATH = $(SRC_PATH)/libraries/sonic-fib
$(LIBFIB)_VERSION = $(LIBFIB_VERSION)
$(LIBFIB)_NAME = $(LIBFIB_NAME)

SONIC_DPKG_DEBS += $(LIBFIB)

LIBFIB_DEV = $(LIBFIB_NAME)-dev_$(LIBFIB_VERSION)_$(CONFIGURED_ARCH).deb
$(eval $(call add_derived_package,$(LIBFIB),$(LIBFIB_DEV)))





# The .c, .cpp, .h & .hpp files under src/{$DBG_SRC_ARCHIVE list}
# are archived into debug one image to facilitate debugging.
#
DBG_SRC_ARCHIVE += libraries/sonic-fib

4 changes: 2 additions & 2 deletions rules/swss.mk
Original file line number Diff line number Diff line change
Expand Up @@ -3,13 +3,13 @@
SWSS = swss_1.0.0_$(CONFIGURED_ARCH).deb
$(SWSS)_SRC_PATH = $(SRC_PATH)/sonic-swss
$(SWSS)_DEPENDS += $(LIBSAIREDIS_DEV) $(LIBSAIMETADATA_DEV) $(LIBTEAM_DEV) \
$(LIBTEAMDCTL) $(LIBTEAM_UTILS) $(LIBSWSSCOMMON_DEV) \
$(LIBTEAMDCTL) $(LIBTEAM_UTILS) $(LIBSWSSCOMMON_DEV) $(LIBFIB_DEV) \
$(LIBSAIVS) $(LIBSAIVS_DEV) $(STP)\
$(PROTOBUF) $(PROTOBUF_LITE) $(PROTOBUF_DEV) $(LIB_SONIC_DASH_API)
$(SWSS)_UNINSTALLS = $(LIBSAIVS_DEV)

$(SWSS)_RDEPENDS += $(LIBSAIREDIS) $(LIBSAIMETADATA) $(LIBTEAM) \
$(LIBTEAMDCTL) $(LIBSWSSCOMMON) $(PYTHON3_SWSSCOMMON) \
$(LIBTEAMDCTL) $(LIBSWSSCOMMON) $(PYTHON3_SWSSCOMMON) $(LIBFIB) \
$(PROTOBUF) $(PROTOBUF_LITE) $(PYTHON3_PROTOBUF) $(LIB_SONIC_DASH_API)
SONIC_DPKG_DEBS += $(SWSS)

Expand Down
52 changes: 52 additions & 0 deletions src/libraries/sonic-fib/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
# Compiled Source #
###################
*.la
*.lo
*.o
*.swp
*.gcda
*.gcno
*.gcov
*.deb



# Packaging Files #
###################
debian/.debhelper/
debian/autoreconf.after
debian/autoreconf.before
debian/debhelper-build-stamp
debian/files
debian/*.debhelper.log
debian/*.substvars
debian/tmp/

aclocal.m4
autom4te.cache/
config
config.h
config.h.in
config.h.in~
config.log
config.status
configure
libtool
m4/libtool.m4
m4/ltoptions.m4
m4/ltsugar.m4
m4/ltversion.m4
m4/lt~obsolete.m4
Makefile.in
stamp-h1
.dirstamp
**/.deps/
**/.libs/
**/Makefile

# Executables #
###############
tests/tests

# Bazel Build System #
/bazel-*
18 changes: 18 additions & 0 deletions src/libraries/sonic-fib/Makefile.am
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
lib_LTLIBRARIES =
bin_PROGRAMS =

if DEBUG
DBGFLAGS = -ggdb -DDEBUG -gdwarf-5
else
DBGFLAGS = -g -DNDEBUG
endif

CLEANFILES =

include src/Makefile.am
include tests/Makefile.am

ACLOCAL_AMFLAGS = -I m4


EXTRA_DIST += scripts/render_schema.py
25 changes: 25 additions & 0 deletions src/libraries/sonic-fib/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
# sonic-fib

## Cheating Sheet
### 1. Clean stale build artifacts
make distclean 2>/dev/null || true
rm -rf autom4te.cache config.log config.status

### 2. Regenerate build system (critical after Makefile.am changes)
autoreconf -fiv

### 3. Reconfigure
./configure

### 4. Build (includes tests)
make -j$(nproc)

### 5. Run tests (uses pre-built binary)
```
make check
make check V=1 # Verbose output
```

Note:
1. Step 1 and Step 2 are used for installing test_drivers. Use the following command to check ls -la config/test-driver
2. test log is at tests/tests.log
6 changes: 6 additions & 0 deletions src/libraries/sonic-fib/autogen.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
#!/bin/bash

libtoolize --force --copy &&
autoreconf --force --install -I m4
rm -Rf autom4te.cache

82 changes: 82 additions & 0 deletions src/libraries/sonic-fib/configure.ac
Original file line number Diff line number Diff line change
@@ -0,0 +1,82 @@
AC_INIT([fib],[1.0.0])
AC_CONFIG_SRCDIR([])
AC_CONFIG_AUX_DIR(config)
AM_CONFIG_HEADER(config.h)
AC_CONFIG_MACRO_DIR([m4])
AM_INIT_AUTOMAKE([foreign subdir-objects parallel-tests])
AC_LANG_C
AC_LANG([C++])
AC_PROG_CC
AC_PROG_CXX
AC_PROG_LIBTOOL
AC_HEADER_STDC
AM_PATH_PYTHON
AM_PATH_PYTHON3
AX_ADD_AM_MACRO_STATIC([])

AC_ARG_ENABLE(debug,
[ --enable-debug Compile with debugging flags],
[case "${enableval}" in
yes) debug=true ;;
no) debug=false ;;
*) AC_MSG_ERROR(bad value ${enableval} for --enable-debug) ;;
esac],[debug=false])
AM_CONDITIONAL(DEBUG, test x$debug = xtrue)
if test x$CONFIGURED_ARCH = xarmhf && test x$CROSS_BUILD_ENVIRON = xy; then
AM_CONDITIONAL(ARCH64, false)
else
AM_CONDITIONAL(ARCH64, test `getconf LONG_BIT` = "64")
fi


CFLAGS_COMMON=""
CFLAGS_COMMON+=" -ansi"
CFLAGS_COMMON+=" -fPIC"
CFLAGS_COMMON+=" -std=c++14"
CFLAGS_COMMON+=" -Wall"
CFLAGS_COMMON+=" -Wcast-align"
CFLAGS_COMMON+=" -Wcast-qual"
CFLAGS_COMMON+=" -Wconversion"
CFLAGS_COMMON+=" -Wdisabled-optimization"
CFLAGS_COMMON+=" -Werror"
CFLAGS_COMMON+=" -Wextra"
CFLAGS_COMMON+=" -Wfloat-equal"
CFLAGS_COMMON+=" -Wformat=2"
CFLAGS_COMMON+=" -Wformat-nonliteral"
CFLAGS_COMMON+=" -Wformat-security"
CFLAGS_COMMON+=" -Wformat-y2k"
CFLAGS_COMMON+=" -Wimport"
CFLAGS_COMMON+=" -Winit-self"
CFLAGS_COMMON+=" -Winvalid-pch"
CFLAGS_COMMON+=" -Wlong-long"
CFLAGS_COMMON+=" -Wmissing-field-initializers"
CFLAGS_COMMON+=" -Wmissing-format-attribute"
CFLAGS_COMMON+=" -Wmissing-include-dirs"
CFLAGS_COMMON+=" -Wmissing-noreturn"
CFLAGS_COMMON+=" -Wno-aggregate-return"
CFLAGS_COMMON+=" -Wno-padded"
CFLAGS_COMMON+=" -Wno-switch-enum"
CFLAGS_COMMON+=" -Wno-unused-parameter"
CFLAGS_COMMON+=" -Wpacked"
CFLAGS_COMMON+=" -Wpointer-arith"
CFLAGS_COMMON+=" -Wredundant-decls"
CFLAGS_COMMON+=" -Wshadow"
CFLAGS_COMMON+=" -Wstack-protector"
CFLAGS_COMMON+=" -Wstrict-aliasing=3"
CFLAGS_COMMON+=" -Wswitch"
CFLAGS_COMMON+=" -Wswitch-default"
CFLAGS_COMMON+=" -Wunreachable-code"
CFLAGS_COMMON+=" -Wunused"
CFLAGS_COMMON+=" -Wvariadic-macros"
CFLAGS_COMMON+=" -Wno-write-strings"
CFLAGS_COMMON+=" -Wno-missing-format-attribute"
CFLAGS_COMMON+=" -Wno-long-long"
CFLAGS_COMMON+=" -fstack-protector-strong"

AC_SUBST(CFLAGS_COMMON)

AC_CONFIG_FILES([
Makefile
])

AC_OUTPUT
5 changes: 5 additions & 0 deletions src/libraries/sonic-fib/debian/changelog
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
sonic-fib (1.0.0) stable; urgency=medium

* Initial release.


1 change: 1 addition & 0 deletions src/libraries/sonic-fib/debian/compat
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
12
24 changes: 24 additions & 0 deletions src/libraries/sonic-fib/debian/control
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
Source: sonic-fib
Section: libs
Maintainer: Eddie Ruan <your-email@example.com>
Priority: optional
Build-Depends: debhelper (>= 12),
autotools-dev,
python3,
nlohmann-json3-dev,
Comment thread
GaladrielZhao marked this conversation as resolved.
libgtest-dev,
libgmock-dev
Standards-Version: 1.0.0

Package: libnexthopgroup
Architecture: any
Depends: ${shlibs:Depends}, ${misc:Pre-Depends}
Section: libs
Description: NextHopGroup serialization library for SONiC FIB This library provides JSON-based serialization for NextHopGroup data structures used between FRR (zebra) and fpmsyncd.

Package: libnexthopgroup-dev
Architecture: any
Depends: libnexthopgroup (= ${binary:Version}), nlohmann-json3-dev, ${misc:Depends}
Section: libdevel
Description: This package contains development files for nexthopgroup

2 changes: 2 additions & 0 deletions src/libraries/sonic-fib/debian/libnexthopgroup-dev.dirs
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
usr/lib
usr/include/nexthopgroup
3 changes: 3 additions & 0 deletions src/libraries/sonic-fib/debian/libnexthopgroup-dev.install
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
usr/include/nexthopgroup/
usr/include/nexthopgroup/c-api/
usr/lib/*/libnexthopgroup.so
1 change: 1 addition & 0 deletions src/libraries/sonic-fib/debian/libnexthopgroup.dirs
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
usr/lib
2 changes: 2 additions & 0 deletions src/libraries/sonic-fib/debian/libnexthopgroup.install
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
usr/lib/*/libnexthopgroup.so.*

19 changes: 19 additions & 0 deletions src/libraries/sonic-fib/debian/rules
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
#!/usr/bin/make -f

# Enable security hardening
export DEB_BUILD_MAINT_OPTIONS = hardening=+all

# Import default build flags (CFLAGS, LDFLAGS, etc.)
DPKG_EXPORT_BUILDFLAGS = 1
include /usr/share/dpkg/default.mk

# Configure arguments: disable static lib, enable shared
export CONFIGURE_ARGS = --disable-static --enable-shared

# Use autoreconf to ensure configure is up to date
%:
dh $@ --with autoreconf

# Optional: override configure if you need extra flags later
override_dh_auto_configure:
dh_auto_configure -- $(CONFIGURE_ARGS)
Loading
Loading