VOL-4011:Initial commit changes for opendm-agnt
Added test target
building the opendm-agent inside the docker for jenkins
Change-Id: Id27be99dd1770404a94a49b357229a8b97f8a629
diff --git a/Makefile b/Makefile
new file mode 100644
index 0000000..8c75e17
--- /dev/null
+++ b/Makefile
@@ -0,0 +1,117 @@
+#Copyright 2021-present Open Networking Foundation
+#
+#Licensed under the Apache License, Version 2.0 (the "License");
+#you may not use this file except in compliance with the License.
+#You may obtain a copy of the License at
+#
+#http://www.apache.org/licenses/LICENSE-2.0
+#
+#Unless required by applicable law or agreed to in writing, software
+#distributed under the License is distributed on an "AS IS" BASIS,
+#WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+#See the License for the specific language governing permissions and
+#limitations under the License.
+
+##################################################################################
+
+# This makefile builds a opendm-agent and libdmi_grpc library
+# Please refer ./README.md and ./BUILDING.md file for more details
+
+CURDIR := $(shell pwd)
+TARCHDIR ?= x86_64
+BUILD_DIR := build
+OBJDIR := $(CURDIR)
+DMI_SOURCE_DIR := $(BUILD_DIR)/device-management-interface/
+
+ifeq ($(DEB_CODENAME),jessie)
+CXX = g++-4.9
+else
+CXX = g++
+endif
+
+DOCKER ?= docker
+DOCKER_REGISTRY ?=
+DOCKER_REPOSITORY ?= voltha/
+DOCKER_EXTRA_ARGS ?=
+DOCKER_TAG ?= 2.1.1
+IMAGENAME = ${DOCKER_REGISTRY}${DOCKER_REPOSITORY}openolt-test:${DOCKER_TAG}
+
+# Version of Open Network Linux (ONL).
+ONL_KERN_VER_MAJOR = 4.19
+
+CXXFLAGS += -ggdb -Werror -Wall -std=c++11
+CXXFLAGS += $(shell pkg-config --cflags-only-I grpc++)
+GRPCFLAGS += `pkg-config --libs grpc++ grpc`
+CXXFLAGS += -std=c++11 -fpermissive -Wno-write-strings -Wno-literal-suffix -I/usr/local/lib/
+LDFLAGS += -L./build/
+LDFLAGS += -lgrpc++_reflection -Wl,--as-needed -ldmi_grpc -lprotobuf -lpthread -ldl
+
+DMIAGENT_SRCS = src/main.cc \
+ src/dmi_phycomp_factory.cc \
+ src/dmi_hw_mgmt.cc \
+ src/dmi_sw_mgmt.cc \
+ src/dmi_server.cc
+
+DMIAGENT_INC = -I./inc/ \
+ -I./protos/ \
+ -I./protos/dmi/
+
+
+DMIAGENT_OBJS = $(DMIAGENT_SRCS:.cc=.o)
+
+all: onl opendm-agent
+ mv opendm-agent $(BUILD_DIR)
+
+opendm-agent: protos-lib $(DMIAGENT_OBJS)
+ $(CXX) $(CXXFLAGS) $(DMIAGENT_OBJS) $(GRPCFLAGS) $(LDFLAGS) -o $@
+
+src/%.o: src/%.cc
+ $(CXX) $(CXXFLAGS) $(LDFLAGS) $(DMIAGENT_INC) -c $< -o $@
+
+protos-lib: prereq
+ echo "Creating the libdmi_grpc.so using auto generated cpp-protos"
+ if [ ! -e "$(OBJDIR)/protos/" ]; then \
+ mkdir -p $(OBJDIR)/protos/; \
+ cp -r $(DMI_SOURCE_DIR)/cpp/dmi $(OBJDIR)/protos; \
+ g++ -shared -fPIC -g -ggdb -std=c++11 `pkg-config --cflags protobuf grpc` -I$(OBJDIR)/protos/ `find $(OBJDIR)/protos/ -name "*.cc"` -o $(OBJDIR)/$(BUILD_DIR)/libdmi_grpc.so; \
+ cp $(OBJDIR)/$(BUILD_DIR)/libdmi_grpc.so /usr/local/lib/; \
+ fi;
+
+prereq: device-management-interface
+
+device-management-interface:
+ if [ ! -e "$(DMI_SOURCE_DIR)" ]; then \
+ git clone https://github.com/opencord/device-management-interface.git $(DMI_SOURCE_DIR); \
+ fi;
+
+#########################################################################
+##
+##
+## ONL Target refered from openolt agent
+##
+###
+ONL_REPO = onl
+ONL_DIR = $(BUILD_DIR)/$(ONL_REPO)
+
+onl:
+ if [ ! -d "$(ONL_DIR)/OpenNetworkLinux" ]; then \
+ mkdir -p $(ONL_DIR); \
+ git clone https://github.com/opencomputeproject/OpenNetworkLinux.git $(ONL_DIR)/OpenNetworkLinux; \
+ cp download/Makefile.onl $(ONL_DIR)/Makefile; \
+ install -m 755 download/build-onl.sh $(ONL_DIR)/OpenNetworkLinux; \
+ make -C $(ONL_DIR) onl-$(ONL_KERN_VER_MAJOR) INBAND=n; \
+ else \
+ if [ "$(INBAND)" = n -a "$$(grep "inband" $(ONL_DIR)/onl_build.mode | cut -d= -f 2)" = y ]; then \
+ make -C $(ONL_DIR) onl-$(ONL_KERN_VER_MAJOR) INBAND=n; \
+ fi; \
+ fi;
+
+test:
+ ${DOCKER} run --rm -v $(shell pwd):/app $(shell test -t 0 && echo "-it") ${IMAGENAME} make -C unit_test test
+
+clean:
+ rm -rf $(OBJDIR)/protos/
+ rm -rf $(OBJDIR)/src/*.o
+ rm -rf $(BUILD_DIR)/*.so
+ rm -rf $(BUILD_DIR)/opendm-agent
+ rm -rf $(DMIAGENT_OBJS)