aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--CMakeLists.txt145
-rw-r--r--README68
2 files changed, 213 insertions, 0 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt
new file mode 100644
index 0000000..590a5a5
--- /dev/null
+++ b/CMakeLists.txt
@@ -0,0 +1,145 @@
+#########################################################################
+#
+# Copyright (c) 2018 Huawei Technologies Co.,Ltd.
+# 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.
+#########################################################################
+
+
+CMAKE_MINIMUM_REQUIRED(VERSION 2.8.11)
+PROJECT(nStack)
+SET(CMAKE_C_COMPILER "gcc")
+SET(EXECUTABLE_PATH ${CMAKE_CURRENT_LIST_DIR}/release/bin)
+SET(LIB_PATH_STATIC ${PROJECT_BINARY_DIR})
+SET(LIB_PATH_SHARED ${CMAKE_CURRENT_LIST_DIR}/release/lib64)
+SET(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${LIB_PATH_STATIC})
+SET(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${EXECUTABLE_PATH})
+SET(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${LIB_PATH_SHARED})
+SET(DMM_DPDK_INSTALL_DIR "" CACHE STRING "to get the dpdk install path by cmd")
+
+MESSAGE(STATUS "Top dir is: " ${CMAKE_CURRENT_LIST_DIR})
+MESSAGE(STATUS "Static library dir: " ${CMAKE_ARCHIVE_OUTPUT_DIRECTORY})
+MESSAGE(STATUS "Executable binary dir: " ${CMAKE_RUNTIME_OUTPUT_DIRECTORY})
+MESSAGE(STATUS "Shared library dir: " ${CMAKE_LIBRARY_OUTPUT_DIRECTORY})
+
+
+add_custom_target(clean-cmake-files
+ COMMAND ${CMAKE_COMMAND} -P clean-all.cmake
+)
+
+option(WITH_SECUREC_LIB "Option description" OFF)
+option(WITH_HAL_LIB "Option description" OFF)
+
+if(WITH_SECUREC_LIB)
+ add_definitions(-DSECUREC_LIB)
+endif()
+
+if(WITH_HAL_LIB)
+ add_definitions(-DHAL_LIB)
+endif()
+
+SET(post_compile "${PROJECT_BINARY_DIR}/post_compile.sh")
+FILE(WRITE ${post_compile} "#!/bin/bash\n")
+if(WITH_HAL_LIB)
+else()
+FILE(APPEND ${post_compile}
+"
+
+cp -f ${CMAKE_CURRENT_LIST_DIR}/src/nSocket/include/nstack_dmm_api.h ${CMAKE_CURRENT_LIST_DIR}/release/include/
+cp -f ${CMAKE_CURRENT_LIST_DIR}/src/adapt/nstack_dmm_adpt.h ${CMAKE_CURRENT_LIST_DIR}/release/include/
+cp -f ${CMAKE_CURRENT_LIST_DIR}/src/adapt/nstack_share_res.h ${CMAKE_CURRENT_LIST_DIR}/release/include/
+cp -f ${CMAKE_CURRENT_LIST_DIR}/src/adapt/nstack_rd_mng.h ${CMAKE_CURRENT_LIST_DIR}/release/include/
+cp -f ${CMAKE_CURRENT_LIST_DIR}/src/nSocket/include/declare_syscalls.h ${CMAKE_CURRENT_LIST_DIR}/release/include/
+cp -f ${CMAKE_CURRENT_LIST_DIR}/src/framework/include/* ${CMAKE_CURRENT_LIST_DIR}/release/include/
+cp -rf ${CMAKE_CURRENT_LIST_DIR}/src/framework/common/base/include/*.h ${CMAKE_CURRENT_LIST_DIR}/release/include/
+cp -rf ${CMAKE_CURRENT_LIST_DIR}/src/framework/common/base/include/common/* ${CMAKE_CURRENT_LIST_DIR}/release/include/
+
+cp -f ${CMAKE_CURRENT_LIST_DIR}/src/framework/common/include/* ${CMAKE_CURRENT_LIST_DIR}/release/include/
+cp -f ${CMAKE_CURRENT_LIST_DIR}/src/framework/ipc/mgr_com/mgr_com.h ${CMAKE_CURRENT_LIST_DIR}/release/include/
+cp -f ${CMAKE_CURRENT_LIST_DIR}/src/framework/hal/hal.h ${CMAKE_CURRENT_LIST_DIR}/release/include/
+cp -f ${CMAKE_CURRENT_LIST_DIR}/build/libdmm_api.a ${CMAKE_CURRENT_LIST_DIR}/release/lib64/
+echo post compile process success.
+"
+)
+endif()
+
+SET(clean_compile "${PROJECT_BINARY_DIR}/clean_compile.sh")
+FILE(WRITE ${clean_compile} "#!/bin/bash\n")
+FILE(APPEND ${clean_compile}
+"
+
+rm -rf ${CMAKE_CURRENT_LIST_DIR}/release/include/*.h
+rm -rf ${CMAKE_CURRENT_LIST_DIR}/release/include/generic
+rm -rf ${CMAKE_CURRENT_LIST_DIR}/release/lib64/libdmm_api.a
+
+echo post clean process success.
+"
+)
+
+ADD_CUSTOM_TARGET(DPDK ALL COMMAND sh post_compile.sh)
+ADD_DEPENDENCIES(DPDK dmm_api)
+
+ADD_CUSTOM_TARGET(clean-all
+ COMMAND ${CMAKE_BUILD_TOOL} clean
+ COMMAND sh clean_compile.sh)
+
+SET(JSON_C_URL https://github.com/json-c/json-c/archive/json-c-0.12.1-20160607.tar.gz)
+SET(JSON_C_DOWNLOAD_DIR ${CMAKE_CURRENT_LIST_DIR}/thirdparty/json/)
+SET(JSON_C_SRC ${CMAKE_CURRENT_LIST_DIR}/thirdparty/json/json-c-0.12.1)
+if(EXISTS "${JSON_C_DOWNLOAD_DIR}/json-c-0.12.1.tar.gz")
+ SET(JSON_DOWNLOAD_CMD tar -xvf ${JSON_C_DOWNLOAD_DIR}/json-c-0.12.1.tar.gz -C ${JSON_C_DOWNLOAD_DIR}/json-c-0.12.1 --strip-components 1)
+else()
+ SET(JSON_DOWNLOAD_CMD wget --no-check-certificate -O json-c-0.12.1.tar.gz ${JSON_C_URL} && tar -xvf ${JSON_C_DOWNLOAD_DIR}/json-c-0.12.1.tar.gz -C ${JSON_C_DOWNLOAD_DIR}/json-c-0.12.1 --strip-components 1)
+endif()
+INCLUDE(ExternalProject)
+ExternalProject_Add(
+ JSON
+ DOWNLOAD_DIR ${JSON_C_DOWNLOAD_DIR}
+ DOWNLOAD_COMMAND ${JSON_DOWNLOAD_CMD}
+ BUILD_IN_SOURCE 1
+ SOURCE_DIR ${JSON_C_SRC}
+ CONFIGURE_COMMAND sh autogen.sh COMMAND sh ./configure --enable-static --with-pic
+ BUILD_COMMAND make -j 8
+ INSTALL_COMMAND cp -f .libs/libjson-c.a ${LIB_PATH_STATIC}/
+)
+
+SET(SECUREC_SRC ${CMAKE_CURRENT_LIST_DIR}/thirdparty/SecureC/src)
+SET(SECUREC_SRC_H ${CMAKE_CURRENT_LIST_DIR}/thirdparty/SecureC/include)
+
+if(WITH_SECUREC_LIB)
+INCLUDE(ExternalProject)
+ExternalProject_Add(
+ SECUREC
+ SOURCE_DIR ${SECUREC_SRC}
+ BUILD_IN_SOURCE 1
+ CONFIGURE_COMMAND ""
+ BUILD_COMMAND COMMAND make -j 8
+ INSTALL_COMMAND cp -f ${SECUREC_SRC}/../lib/libsecurec.so ${LIB_PATH_SHARED}/
+)
+endif()
+
+SET(GLOG_SRC ${CMAKE_CURRENT_LIST_DIR}/thirdparty/glog/glog-0.3.4)
+INCLUDE(ExternalProject)
+ExternalProject_Add(
+ GLOG
+ SOURCE_DIR ${GLOG_SRC}
+ BUILD_IN_SOURCE 1
+ CONFIGURE_COMMAND autoreconf COMMAND sh configure CFLAGS=-fPIC CXXFLAGS=-fPIC
+ BUILD_COMMAND COMMAND make -j 8
+ INSTALL_COMMAND cp -f ${GLOG_SRC}/.libs/libglog.a ${LIB_PATH_STATIC}/
+)
+
+ADD_SUBDIRECTORY(src)
+ADD_SUBDIRECTORY(app_example)
+
+#ADD_SUBDIRECTORY(thirdparty/rsrdma)
+ADD_SUBDIRECTORY(thirdparty/apps)
diff --git a/README b/README
new file mode 100644
index 0000000..b0f3243
--- /dev/null
+++ b/README
@@ -0,0 +1,68 @@
+一、DMM compile
+
+1.compile all module:
+cd build
+cmake -D DMM_DPDK_INSTALL_DIR=$DPDK_INSTALL_PATH ..
+make -j 8
+
+Note: DPDK_INSTALL_PATH - the path in which DPDK has been installed
+
+libnStackAdpt.so, libnStackAPI.so, libsecurec.so will be copyed to release\lib64 folder.
+declare_syscalls.h, nsocket_dmm_api.h will be copyed to release\include folder
+
+configure files :
+ release\configure
+ module_config.json is the stack module config file.
+ rd_config.json is the rd config file.
+ the content of these two configure files just a simple.
+
+2. run DMM
+nStack DMM is just a library linked by APP, no need run any other.
+
+for example:
+ gcc -g -o sendmsg sendmsg.c -L./DMM/release/lib64 -lnStackAPI
+ sendmsg.c is a APP that create a socket and connect to the service.
+ run app:./sendmsg 192.168.1.10 1024 1
+
+ module_config.json rd_config.json should be put together with sendmsg
+
+ module_config.json for example:
+ {
+ "default_stack_name": "kernel", /*when rd can't not be find maybe choose the defualt one*/
+ "module_list": [
+ {
+ "stack_name": "kernel",
+ "function_name": "kernel_stack_register",
+ "libname": "", /*library name, if loadtype is static, this maybe null, else must give a library name*/
+ "loadtype": "static", /*library load type: static or dynamic*/
+ "deploytype": "1",
+ "maxfd": "1024",
+ "minfd": "0",
+ "priorty": "1",
+ "stackid": "0", /*must be ordered and not be repeated*/
+ }
+ ]
+ }
+
+ rd_config.json for example:
+ {
+ "ip_route": [
+ {
+ "subnet": "192.165.1.1/16",
+ "type": "nstack-kernel", /*output interface type, nstack-kernel: indicate that this ip should go through linux protocol, nstack-dpdk: go through stackx protocol*/
+ },
+ {
+ "subnet": "192.167.1.1/16",
+ "type": "nstack-kernel",
+ }
+ ]
+ "prot_route": [
+ {
+ "proto_type": "11",
+ "type": "nstack-kernel",
+ },
+ }
+
+
+
+ \ No newline at end of file