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)