diff options
| author | songyanchao <[email protected]> | 2022-02-17 22:47:11 -0500 |
|---|---|---|
| committer | songyanchao <[email protected]> | 2022-02-17 22:47:11 -0500 |
| commit | 272973702b54901dd01ca4478c9703246e23bb9b (patch) | |
| tree | 77e2986eea655b5a057e4e3bb22eadf34b296d8b /cmake | |
| parent | ad801d927c33328d242ed989ed5b813a8e319228 (diff) | |
✨ feat(FindDpdk.cmake): 修改编译方式为动态链接并剥离PMD动态库
修改编译方式为动态链接,并剥离PMD动态库
Diffstat (limited to 'cmake')
| -rw-r--r-- | cmake/FindDPDK.cmake | 32 |
1 files changed, 30 insertions, 2 deletions
diff --git a/cmake/FindDPDK.cmake b/cmake/FindDPDK.cmake index 2162a72..4a61b9e 100644 --- a/cmake/FindDPDK.cmake +++ b/cmake/FindDPDK.cmake @@ -2,7 +2,7 @@ # DPDK Envoirment Support based on CMake 2.6+ # In DPDK2.2.0+, It supports compile as dynamic library and install In # Systems. This file is used to support this. -# +# # Author : Lu Qiuwen # E-mail : [email protected] # Date : 2016-01-03 @@ -98,7 +98,35 @@ if(CMAKE_SYSTEM_PROCESSOR MATCHES "i686") endif() # Additional library -file(GLOB DPDK_LIBRARY_GEN "${DPDK_LIBRARY_DIR}/librte*.a" "${DPDK_LIBRARY_DIR}/libeth*.a") +## 1. find pmd .so +file(GLOB PMD_PATH "${DPDK_LIBRARY_DIR}/dpdk/pmds-*/librte*.so") +foreach(PMD_PATH_ITEM ${PMD_PATH}) + string(REGEX REPLACE ".+/(.+)" "\\1" PMD_NAME_ITEM ${PMD_PATH_ITEM}) + list(APPEND PMD_NAME_LIST ${PMD_NAME_ITEM}) +endforeach(PMD_PATH_ITEM) + +## 2. find dpdk .so for all +file(GLOB DPDK_LIBRARY_PATH "${DPDK_LIBRARY_DIR}/librte*.so") +foreach(DPDK_LIBRARY_PATH_ITEM ${DPDK_LIBRARY_PATH}) + string(REGEX REPLACE ".+/(.+)" "\\1" DPDK_LIBRARY_NAME_ITEM ${DPDK_LIBRARY_PATH_ITEM}) + list(APPEND DPDK_LIBRARY_NAME_LIST ${DPDK_LIBRARY_NAME_ITEM}) +endforeach(DPDK_LIBRARY_PATH_ITEM) + +## 3. from dpdk .so exclude pmd .so +foreach(PMD_NAME_ITEM ${PMD_NAME_LIST}) + list(REMOVE_ITEM DPDK_LIBRARY_NAME_LIST "${PMD_NAME_ITEM}") +endforeach(PMD_NAME_ITEM) + +## 4. on the basis of dpdk .so name list,find the library path of dpdk .so +foreach(DPDK_LIBRARY_ITEM ${DPDK_LIBRARY_NAME_LIST}) + file(GLOB DPDK_LIBRARY_GEN_ITEM "${DPDK_LIBRARY_DIR}/${DPDK_LIBRARY_ITEM}" "${DPDK_LIBRARY_DIR}/libeth*.so") + list(APPEND DPDK_LIBRARY_GEN "${DPDK_LIBRARY_GEN_ITEM}") +endforeach(DPDK_LIBRARY_ITEM) + +## 5. remove duplicates item +list(REMOVE_DUPLICATES DPDK_LIBRARY_GEN) + +## 6. set DPDK_LIBRARY set(DPDK_LIBRARY -Wl,--whole-archive ${DPDK_LIBRARY_GEN} -Wl,--no-whole-archive rt m dl pcap numa) # Force Include |
