Added shared object library support, updated release version.
authorTinku Mannan <tmannan@ti.com>
Tue, 17 Sep 2013 18:39:28 +0000 (14:39 -0400)
committerTinku Mannan <tmannan@ti.com>
Tue, 17 Sep 2013 18:39:28 +0000 (14:39 -0400)
ti/runtime/netapi/build/Makefile
ti/runtime/netapi/makefile_armv7
ti/runtime/netapi/netapi_ver.h
ti/runtime/netapi/test/build/Makefile

index 46bb3ec164060e537c6b48008319698f337b723d..62f27ac3f6d23e6c397a4908005479cb5e23dd50 100755 (executable)
@@ -34,12 +34,6 @@ QMSS_DEV_DIR = $(PDK_INSTALL_PATH)/ti/drv/qmss/device
 CPPI_DEV_DIR = $(PDK_INSTALL_PATH)/ti/drv/cppi/device
 endif
 
-# Output for prebuilt generated libraries
-export ARMV7LIBDIR ?= ./lib
-export ARMV7OBJDIR ?= ./obj
-ARMV7OBJDIR := $(ARMV7OBJDIR)/netapi/lib
-ARMV7BINDIR ?= ./bin
-
 # Set NETAPI INSTALL PATH to Transport SDK for default
 export NETAPI_INSTALL_PATH ?= $(TRANS_SDK_INSTALL_PATH)
 
@@ -86,22 +80,40 @@ lib: $(ARMV7LIBDIR)/libnetapi.a
 
 
 # Make Rule for the COMMONSRC Files
-COMMONSRCCOBJS = $(patsubst %.c, $(ARMV7OBJDIR)/netapi/lib/%.$(OBJEXT), $(COMMONSRCC))
+COMMONSRCCOBJS = $(patsubst %.c, $(ARMV7OBJDIR)/%.$(OBJEXT), $(COMMONSRCC))
+COMMONSRCCOBJS_SO = $(patsubst %.c, $(ARMV7OBJDIR_SO)/%.$(OBJEXT), $(COMMONSRCC))
 
-$(COMMONSRCCOBJS): $(ARMV7OBJDIR)/netapi/lib/%.$(OBJEXT): %.c
+$(COMMONSRCCOBJS): $(ARMV7OBJDIR)/%.$(OBJEXT): %.c
        -@echo compiling $< ........
        -@echo vpath = $(VPATH)
-       @mkdir -p $(ARMV7OBJDIR)/netapi/lib/
+       @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.a: $(COMMONSRCCOBJS)
        @mkdir -p $(ARMV7LIBDIR)
        @echo archiving $? into $@ ...
        @$(AR) -r $@ $?
 
+
+libnetapi.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     $@
+       @mv -f $@.1.0.0 $(ARMV7LIBDIR)/$@.1.0.0
+       @mv -f $@.1 $(ARMV7LIBDIR)/$@.1
+       @mv -f $@   $(ARMV7LIBDIR)/$@
+
 clean:
-       rm -f $(ARMV7OBJDIR)/netapi/lib/*.o
+       rm -f $(ARMV7OBJDIR)/*.o
+       rm -f $(ARMV7OBJDIR_SO)/*.o
        rm -f $(ARMV7LIBDIR)/libnetapi.a
+       rm -f $(ARMV7LIBDIR)/libnetapi.so*
 
 doxygen:
        rm -rf $(NETAPI_DOCS_DIR)/html
index 522ace0dd35a15febe3980f81986b59252746508..80ef727604c7e0098259841d9c663203dc26d4a8 100755 (executable)
@@ -14,6 +14,9 @@
 # Output for prebuilt generated libraries
 export ARMV7LIBDIR ?= ./lib
 export ARMV7OBJDIR ?= ./obj
+export ARMV7OBJDIR_SO := $(ARMV7OBJDIR)/netapi/lib_so
+export ARMV7OBJDIR := $(ARMV7OBJDIR)/netapi/lib
+
 export ARMV7BINDIR ?= ./bin
 
 export DEVICE ?=k2h
@@ -59,16 +62,22 @@ endif
 # all rule
 all: .executables install installbin
 .executables: lib tests examples
-lib:
 
 # Make rule to create $(ARMV7LIBDIR)/libnetapi.a library
-lib: $(ARMV7LIBDIR)/libnetapi.a
+lib: $(ARMV7LIBDIR)/libnetapi.a libnetapi.so
 
 $(ARMV7LIBDIR)/libnetapi.a:
        -@echo Building library...
        -@echo ARMV7OBJDIR = $(ARMV7OBJDIR)
        @$(MAKE) -f ./build/Makefile $@
 
+
+libnetapi.so:
+       -@echo Building library...
+       -@echo ARMV7OBJDIR = $(ARMV7OBJDIR_SO)
+       @$(MAKE) -f ./build/Makefile $@
+
+
 # Rule to clean $(ARMV7LIBDIR)/libnetapi.a library
 clean:
        -@echo Cleaning netapi package... $@
@@ -80,7 +89,8 @@ install:
        install -d $(INSTALL_INC_BASE_DIR)/ti/runtime/netapi/src
        install -d $(INSTALL_LIB_BASE_DIR)
        $(CP) ./*.h                $(INSTALL_INC_BASE_DIR)/ti/runtime/netapi
-       @$(CP) -r $(ARMV7LIBDIR)/*.a         $(INSTALL_LIB_BASE_DIR)
+       @$(CP) -r $(ARMV7LIBDIR)/libnetapi.a         $(INSTALL_LIB_BASE_DIR)
+       @$(CP) -rp $(ARMV7LIBDIR)/libnetapi.so*         $(INSTALL_LIB_BASE_DIR)
        $(CP) src/*.h                $(INSTALL_INC_BASE_DIR)/ti/runtime/netapi/src
 
 installbin:
index cf27bd6bbea56f552e65b67ac19273161062f49b..631857291a1dab0ff49037dfe5295a331e54b310 100755 (executable)
  *      format:
  *              0xAABBCCDD -> Arch (AA); API Changes (BB); Major (CC); Minor (DD)
  */
-#define NETAPI_VERSION_ID                   (0x01000008)
+#define NETAPI_VERSION_ID                   (0x01000009)
 
 /**
  * @def NETAPI_VERSION_STR
  *      This is the version string which describes the NETAPI along with the
  *      date and build information.
  */
-#define NETAPI_VERSION_STR      "NETAPI Revision: 01.00.00.08"
+#define NETAPI_VERSION_STR      "NETAPI Revision: 01.00.00.09"
 
 /**
  *  @ingroup netapi_gen_functions
index 1539d702a00b0c3b5d0e214b4ff51b8aa16e1eef..331a9d54c3656bcb259912313c7efb62463249e0 100755 (executable)
@@ -44,8 +44,6 @@ NT_BENCH_OBJS= $(ARMV7OBJDIR)/netapi/test/net_test_bench.o  $(ARMV7OBJDIR)/netap
 QMSS_LIB = -lqmss
 CPPI_LIB = -lcppi
 PA_LIB   = -lpa
-#without security enabled
-#NWAL_LIB = -lnwal
 PKTLIB_LIB = -lpktlib
 NETAPI_LIB = -lnetapi
 HP_LIB = -lhplib
@@ -54,6 +52,19 @@ SA_LIB = -lsa
 #with security enabled..
 NWAL_LIB = -lnwalsa
 
+
+
+ifeq ($(USEDYNAMIC_LIB), yes)
+#presuming ARM executable would depend on dynamic library dependency
+EXE_EXTN = _so
+LIBS     = $(NETAPI_LIB) $(QMSS_LIB) $(CPPI_LIB) $(PA_LIB) $(PKTLIB_LIB) $(NETAPI_LIB) $(HP_LIB) $(SA_LIB) $(NWAL_LIB)
+else
+#forcing ARM executable to depend on static LLD libraries
+LIBS = -static $(NETAPI_LIB) $(QMSS_LIB) $(CPPI_LIB) $(PA_LIB) $(PKTLIB_LIB) $(NETAPI_LIB) $(HP_LIB) $(SA_LIB) $(NWAL_LIB) -Wl,-Bdynamic
+EXE_EXTN =
+endif
+
+
 ifdef CROSS_TOOL_INSTALL_PATH
 ## Support backwards compatibility with KeyStone1 approach
  CC = $(CROSS_TOOL_INSTALL_PATH)/$(CROSS_TOOL_PRFX)gcc
@@ -62,13 +73,9 @@ ifdef CROSS_TOOL_INSTALL_PATH
  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
-
-CFLAGS+= $(DEBUG_FLAG) -I../ -I. -I$(NETAPI_SRC_DIR) -I$(NETAPI_SRC_DIR)/src -I$(HPLIB_INC_DIR) -I$(NETAPI_INC_DIR)-I$(PDK_INSTALL_PATH)  -I$(NWAL_INSTALL_PATH) -I$(PKTLIB_INSTALL_PATH) -I$(SA_INSTALL_PATH) -I$(QMSS_INC_DIR) -I$(CPPI_INC_DIR) -I$(SA_INC_DIR) $(CSL_DEVICE) -D__ARMv7 -D_VIRTUAL_ADDR_SUPPORT -D__LINUX_USER_SPACE -D_LITTLE_ENDIAN=1 -DNWAL_ENABLE_SA -DMAKEFILE_BUILD -D _GNU_SOURCE
+CFLAGS+= $(DEBUG_FLAG) -I../ -I. -I$(NETAPI_SRC_DIR) -I$(NETAPI_SRC_DIR)/src -I$(HPLIB_INC_DIR) -I$(NETAPI_INC_DIR)-I$(PDK_INSTALL_PATH) -I$(NWAL_INSTALL_PATH) -I$(PKTLIB_INSTALL_PATH) -I$(SA_INSTALL_PATH) -I$(QMSS_INC_DIR) -I$(CPPI_INC_DIR) -I$(SA_INC_DIR) $(CSL_DEVICE) -D__ARMv7 -D_VIRTUAL_ADDR_SUPPORT -D__LINUX_USER_SPACE -D_LITTLE_ENDIAN=1 -DNWAL_ENABLE_SA -DMAKEFILE_BUILD -D _GNU_SOURCE
 # Linker options
-INTERNALLINKDEFS = -Wl,--start-group $(NETAPI_LIB) $(PKTLIB_LIB) $(HP_LIB) $(QMSS_LIB) $(CPPI_LIB) $(NWAL_LIB) $(PA_LIB) $(SA_LIB) -Wl,--end-group -lrt -pthread  -L$(ARMV7LIBDIR)  -L$(ARMV7LIBDIRLOCAL) -L$(ARMV7SALIBDIR)
+INTERNALLINKDEFS = -Wl,--start-group $(LIBS) -Wl,--end-group -lrt -pthread  -L$(ARMV7LIBDIR)  -L$(ARMV7LIBDIRLOCAL) -L$(ARMV7SALIBDIR)
 
 
 all: tests 
@@ -83,12 +90,7 @@ api_clean:
 clean: 
        rm -f $(ARMV7OBJDIR)/netapi/test/*.o
        rm -f $(ARMV7LIBDIR)/libnetapi.a
-       rm -f $(ARMV7BINDIR)/netapi/test/net_test_loopback
-       rm -f $(ARMV7BINDIR)/netapi/test/net_test_router 
-       rm -f $(ARMV7BINDIR)/netapi/test/net_test_max_params
-       rm -f $(ARMV7BINDIR)/netapi/test/ifdma_test
-       rm -f $(ARMV7BINDIR)/netapi/test/net_test_bench
-
+       rm -f $(ARMV7BINDIR)/netapi/test/*
 
 $(ARMV7OBJDIR)/netapi/test/%.o: $(NETAPI_SRC_DIR)/test/%.c $(ARMV7OBJDIR)/netapi/test/.created
        @echo compiling $<
@@ -100,21 +102,19 @@ $(ARMV7OBJDIR)/netapi/test/.created:
 $(ARMV7BINDIR)/netapi/test/.created:
        @mkdir -p $(ARMV7BINDIR)/netapi/test/
 
-
-
 $(ARMV7BINDIR)/netapi/test/net_test_loopback:  $(NT_OBJS) $(TRIE_OBJS)
-       $(CC) $(LDFLAGS)  $(NT_OBJS) $(TRIE_OBJS) $(INTERNALLINKDEFS)  -o $(ARMV7BINDIR)/netapi/test/net_test_loopback
+       $(CC) $(LDFLAGS)  $(NT_OBJS) $(TRIE_OBJS) $(INTERNALLINKDEFS)  -o $(ARMV7BINDIR)/netapi/test/net_test_loopback$(EXE_EXTN)
 
 $(ARMV7BINDIR)/netapi/test/net_test_max_params:  $(NT_MAX_PARAMS_OBJS) $(TRIE_OBJS)
-       $(CC) $(LDFLAGS)  $(NT_MAX_PARAMS_OBJS) $(TRIE_OBJS) $(INTERNALLINKDEFS)  -o $(ARMV7BINDIR)/netapi/test/net_test_max_params
+       $(CC) $(LDFLAGS)  $(NT_MAX_PARAMS_OBJS) $(TRIE_OBJS) $(INTERNALLINKDEFS)  -o $(ARMV7BINDIR)/netapi/test/net_test_max_params$(EXE_EXTN)
 $(ARMV7BINDIR)/netapi/test/net_test_router:  $(NT_ROUTER_OBJS) $(TRIE_OBJS)
-       $(CC) $(LDFLAGS)  $(NT_ROUTER_OBJS) $(TRIE_OBJS) $(INTERNALLINKDEFS)  -o $(ARMV7BINDIR)/netapi/test/net_test_router
+       $(CC) $(LDFLAGS)  $(NT_ROUTER_OBJS) $(TRIE_OBJS) $(INTERNALLINKDEFS)  -o $(ARMV7BINDIR)/netapi/test/net_test_router$(EXE_EXTN)
 
 $(ARMV7BINDIR)/netapi/test/nt_bridge:  $(NTB_OBJS) $(TRIE_OBJS)
-       $(CC) $(LDFLAGS)  $(NTB_OBJS) $(TRIE_OBJS) $(INTERNALLINKDEFS)  -o $(ARMV7BINDIR)/netapi/test/nt_bridge
+       $(CC) $(LDFLAGS)  $(NTB_OBJS) $(TRIE_OBJS) $(INTERNALLINKDEFS)  -o $(ARMV7BINDIR)/netapi/test/nt_bridge$(EXE_EXTN)
 
 $(ARMV7BINDIR)/netapi/test/ifdma_test:  $(IFDMA_OBJS)
-       $(CC) $(LDFLAGS)  $(IFDMA_OBJS) $(INTERNALLINKDEFS)  -o $(ARMV7BINDIR)/netapi/test/ifdma_test
+       $(CC) $(LDFLAGS)  $(IFDMA_OBJS) $(INTERNALLINKDEFS)  -o $(ARMV7BINDIR)/netapi/test/ifdma_test$(EXE_EXTN)
 
 $(ARMV7BINDIR)/netapi/test/net_test_bench:  $(NT_BENCH_OBJS)
-       $(CC) $(LDFLAGS)  $(NT_BENCH_OBJS) $(INTERNALLINKDEFS)  -o $(ARMV7BINDIR)/netapi/test/net_test_bench
+       $(CC) $(LDFLAGS)  $(NT_BENCH_OBJS) $(INTERNALLINKDEFS)  -o $(ARMV7BINDIR)/netapi/test/net_test_bench$(EXE_EXTN)