+# Macro definitions referenced below
+#
+empty =
+space =$(empty) $(empty)
+
# INCLUDE Directories
-QMSS_INC_DIR = $(PDK_INSTALL_PATH)/ti/drv/qmss
-CPPI_INC_DIR = $(PDK_INSTALL_PATH)/ti/drv/cppi
+QMSS_INC_DIR ?= $(PDK_INSTALL_PATH)/ti/drv/qmss
+SA_INSTALL_PATH ?= $(PDK_INSTALL_PATH)/ti/drv/sa
+CPPI_INC_DIR ?= $(PDK_INSTALL_PATH)/ti/drv/cppi
+
+
+NETAPI_INC_DIR ?= $(TRANS_SDK_INSTALL_PATH)
+NETAPI_SRC_DIR ?= $(TRANS_SDK_INSTALL_PATH)/ti/runtime/netapi
+
+#HPLIB_INC_DIR = $(HPLIB_INSTALL_PATH)/ti/runtime/hplib
-INCDIR := $(PDK_INSTALL_PATH); $(QMSS_INC_DIR); $(CPPI_INC_DIR)
+HPLIB_INC_DIR ?= $(PDK_INSTALL_PATH)/ti/runtime/hplib
+INCDIR := $(PDK_INSTALL_PATH);$(QMSS_INC_DIR);$(CPPI_INC_DIR);$(HPLIB_INC_DIR);$(NETAPI_INC_DIR)
-# Output for prebuilt generated libraries
-export ARMV7LIBDIR ?= ../lib
-export ARMV7OBJDIR ?= ../obj
+export PDK_VER ?= v3
+NETAPI_NAVIG_INIT_SRC=$(NETAPI_SRC_DIR)/src/pdk$(PDK_VER)
+
+ifeq ($(CPU), cortex-a8)
+ CFLAGS += -DCORTEX_A8
+endif
+
+export DEVICE?= k2h
+ifeq ($(PDK_VER),v3)
+QMSS_DEV_DIR = $(PDK_INSTALL_PATH)/ti/drv/qmss/device/$(DEVICE)/src
+CPPI_DEV_DIR = $(PDK_INSTALL_PATH)/ti/drv/cppi/device/$(DEVICE)/src
+endif
+ifeq ($(PDK_VER),v2)
+QMSS_DEV_DIR = $(PDK_INSTALL_PATH)/ti/drv/qmss/device
+CPPI_DEV_DIR = $(PDK_INSTALL_PATH)/ti/drv/cppi/device
+endif
# Set NETAPI INSTALL PATH to Transport SDK for default
export NETAPI_INSTALL_PATH ?= $(TRANS_SDK_INSTALL_PATH)
+NETAPI_DOCS_DIR := $(NETAPI_INSTALL_PATH)/ti/runtime/netapi/docs
+
#NETAPI dirs
-OBJEXT = o
+OBJEXT = o
INTERNALLINKDEFS =
-NETAPI_INC_DIR = $(NETAPI_INSTALL_PATH)/ti/runtime/netapi
-SRCDIR = $(NETAPI_INC_DIR)/src
-
-VPATH=$(SRCDIR)
-
-
+SRCDIR = ./src
+#VPATH=$(SRCDIR):$(NETAPI_NAVIG_INIT_SRC)
+VPATH=$(SRCDIR):./src/pdk$(PDK_VER)
+
+ifdef CROSS_TOOL_INSTALL_PATH
+## Support backwards compatibility with KeyStone1 approach
+ CC = $(CROSS_TOOL_INSTALL_PATH)/$(CROSS_TOOL_PRFX)gcc
+ AC = $(CROSS_TOOL_INSTALL_PATH)/$(CROSS_TOOL_PRFX)as
+ AR = $(CROSS_TOOL_INSTALL_PATH)/$(CROSS_TOOL_PRFX)ar
+ LD = $(CROSS_TOOL_INSTALL_PATH)/$(CROSS_TOOL_PRFX)gcc
+endif
#Cross tools
-CC = $(CROSS_TOOL_INSTALL_PATH)/$(CROSS_TOOL_PRFX)gcc -c
-AR = $(CROSS_TOOL_INSTALL_PATH)/$(CROSS_TOOL_PRFX)ar -r
+#CC = $(CROSS_TOOL_INSTALL_PATH)/$(CROSS_TOOL_PRFX)gcc -c
+#AR = $(CROSS_TOOL_INSTALL_PATH)/$(CROSS_TOOL_PRFX)ar -r
#List the COMMONSRC Files
COMMONSRCC = \
netapi.c \
+ netapi_sec.c \
netapi_init.c \
netapi_sched.c \
- netapi_timer.c \
- netapi_vm.c \
netcp_cfg.c \
- osal.c \
pktio.c \
- tim64.c\
- timlist.c
+ netapi_navig.c\
-CFLAGS= $(DEBUG_FLAG) -I$(NETAPI_INC_DIR) -I. -I $(SRCDIR) -I$(PDK_INSTALL_PATH) -I$(TRANS_SDK_INSTALL_PATH) -I$(QMSS_INC_DIR) -I$(CPPI_INC_DIR) -D__ARMv7 -D_VIRTUAL_ADDR_SUPPORT -D__LINUX_USER_SPACE -D_LITTLE_ENDIAN=1 -DMAKEFILE_BUILD -pthread -D _GNU_SOURCE
-INCS = -I$(strip $(subst ;, -I,$(subst $(space),\$(space),$(INCDIR))))
-all: lib
+CFLAGS+= $(DEBUG_FLAG) -I. -I $(SRCDIR) -I$(PDK_INSTALL_PATH) -I$(NWAL_INSTALL_PATH) -I$(PKTLIB_INSTALL_PATH) -I$(TRANS_SDK_INSTALL_PATH) -I$(QMSS_INC_DIR) -I$(CPPI_INC_DIR) -I$(HPLIB_INC_DIR) -I$(QMSS_DEV_DIR) -I$(CPPI_DEV_DIR) -I$(NETAPI_NAVIG_INIT_SRC) -I$(SA_INSTALL_PATH) $(CSL_DEVICE) -D__ARMv7 -D_VIRTUAL_ADDR_SUPPORT -D__LINUX_USER_SPACE -D_LITTLE_ENDIAN=1 -DMAKEFILE_BUILD -DNWAL_ENABLE_SA -pthread -D _GNU_SOURCE
-lib: $(ARMV7LIBDIR)/libnetapi.a
-# Make Rule for the COMMONSRC Files
-COMMONSRCCOBJS = $(patsubst %.c, $(ARMV7OBJDIR)/netapi/lib/%.$(OBJEXT), $(COMMONSRCC))
+INCS = -I$(strip $(subst ;, -I,$(subst $(space),\$(space),$(INCDIR))))
+all: lib
+
+lib: $(ARMV7LIBDIR)/libnetapi_$(DEVICE).a
-$(COMMONSRCCOBJS): $(ARMV7OBJDIR)/netapi/lib/%.$(OBJEXT): %.c
- -@echo compiling $< ...
- @mkdir -p $(ARMV7OBJDIR)/netapi/lib/
- $(CC) $(CFLAGS) $(INCS) $< -o $@
-$(ARMV7LIBDIR)/libnetapi.a: $(COMMONSRCCOBJS)
+# Make Rule for the COMMONSRC Files
+COMMONSRCCOBJS = $(patsubst %.c, $(ARMV7OBJDIR)/%.$(OBJEXT), $(COMMONSRCC))
+COMMONSRCCOBJS_SO = $(patsubst %.c, $(ARMV7OBJDIR_SO)/%.$(OBJEXT), $(COMMONSRCC))
+
+$(COMMONSRCCOBJS): $(ARMV7OBJDIR)/%.$(OBJEXT): %.c
+ -@echo compiling $< ........
+ -@echo vpath = $(VPATH)
+ @mkdir -p $(ARMV7OBJDIR)
+ $(CC) -c $(CFLAGS) $(INCS) $< -o $@
+
+$(COMMONSRCCOBJS_SO): $(ARMV7OBJDIR_SO)/%.$(OBJEXT): %.c
+ -@echo **** compiling this file $< ...
+ @mkdir -p $(ARMV7OBJDIR_SO)
+ $(CC) -c $(CFLAGS) -fPIC $(INCS) $< -o $@
+
+$(ARMV7LIBDIR)/libnetapi_$(DEVICE).a: $(COMMONSRCCOBJS)
+ @mkdir -p $(ARMV7LIBDIR)
@echo archiving $? into $@ ...
- @$(AR) $@ $?
+ @$(AR) -r $@ $?
+
+
+libnetapi_$(DEVICE).so: $(COMMONSRCCOBJS_SO)
+ -@echo archiving $? into $(ARMV7LIBDIR)/$@.1 ...
+ @$(CC) $(DEBUG_FLAG) -ggdb2 -Wl,-soname=$@.1 -shared -fPIC ${LDFLAGS} -o $@.1.0.0 $^
+ @ln -s $@.1.0.0 $@.1
+ @ln -s $@.1 $@
+ mkdir -p $(ARMV7LIBDIR)
+ @mv -f $@.1.0.0 $(ARMV7LIBDIR)/$@.1.0.0
+ @mv -f $@.1 $(ARMV7LIBDIR)/$@.1
+ @mv -f $@ $(ARMV7LIBDIR)/$@
+
+clean:
+ rm -f $(ARMV7OBJDIR)/*.o
+ rm -f $(ARMV7OBJDIR_SO)/*.o
+ rm -f $(ARMV7LIBDIR)/libnetapi_$(DEVICE).a
+ rm -f $(ARMV7LIBDIR)/libnetapi_$(DEVICE).so*
+
+doxygen:
+ rm -rf $(NETAPI_DOCS_DIR)/html
+ rm -rf $(NETAPI_DOCS_DIR)/latex
+ doxygen netapi_doxygen.cfg
+
+clean_doxygen:
+ rm -rf $(NETAPI_DOCS_DIR)/html
+ rm -rf $(NETAPI_DOCS_DIR)/latex
-clean:
- rm -f $(ARMV7OBJDIR)/netapi/lib/*.o
- rm -f $(ARMV7LIBDIR)/libnetapi.a