summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorDamjan Marion <damarion@cisco.com>2019-01-26 18:50:29 +0100
committerDave Barach <openvpp@barachs.net>2019-01-26 20:32:00 +0000
commitf23a885b892e432c7eac0f00c9e010fc21b6b211 (patch)
tree67e0bf7102f08428f898c9ecd76be823a0fb7935 /src
parente52973260730662d336a4044b33e847f40eec5f5 (diff)
cmake: parse DPDK config without compilation
Previous scheme was not cross-compile friendly... Change-Id: Ib103b136231673157a02b8750312aa6073052c7e Signed-off-by: Damjan Marion <damarion@cisco.com>
Diffstat (limited to 'src')
-rw-r--r--src/plugins/dpdk/CMakeLists.txt72
1 files changed, 15 insertions, 57 deletions
diff --git a/src/plugins/dpdk/CMakeLists.txt b/src/plugins/dpdk/CMakeLists.txt
index 6c987ecf72b..a5cfea566a1 100644
--- a/src/plugins/dpdk/CMakeLists.txt
+++ b/src/plugins/dpdk/CMakeLists.txt
@@ -11,11 +11,6 @@
# See the License for the specific language governing permissions and
# limitations under the License.
-if (CMAKE_CROSSCOMPILING)
- # not supported yet
- return()
-endif()
-
##############################################################################
# macros
##############################################################################
@@ -46,64 +41,27 @@ if (NOT DPDK_LIB)
endif()
##############################################################################
-# Find DPDK Version
-##############################################################################
-file(WRITE ${CMAKE_CURRENT_BINARY_DIR}/dpdk_vars.c
-"
-#include <stdio.h>
-#include <rte_version.h>
-int main()
-{
- printf(\"VERSION=%s\\n\", strchr(rte_version(), ' ') + 1);
- printf(\"RTE_PKTMBUF_HEADROOM=%u\\n\", RTE_PKTMBUF_HEADROOM);
-#ifdef RTE_LIBRTE_PMD_AESNI_MB
- printf(\"RTE_LIBRTE_PMD_AESNI_MB=%u\\n\", RTE_LIBRTE_PMD_AESNI_MB);
-#endif
-#ifdef RTE_LIBRTE_PMD_AESNI_GCM
- printf(\"RTE_LIBRTE_PMD_AESNI_GCM=%u\\n\", RTE_LIBRTE_PMD_AESNI_GCM);
-#endif
-#ifdef RTE_LIBRTE_MLX4_PMD
- printf(\"RTE_LIBRTE_MLX4_PMD=%u\\n\", RTE_LIBRTE_MLX4_PMD);
-#endif
-#ifdef RTE_LIBRTE_MLX5_PMD
- printf(\"RTE_LIBRTE_MLX5_PMD=%u\\n\", RTE_LIBRTE_MLX5_PMD);
-#ifdef RTE_LIBRTE_MLX5_DLOPEN_DEPS
- printf(\"RTE_LIBRTE_MLX5_DLOPEN_DEPS=%u\\n\", RTE_LIBRTE_MLX5_DLOPEN_DEPS);
-#endif
-#endif
- return 0;
-}
-")
-
-try_compile(DPDK_VARS_COMPILED
- ${CMAKE_CURRENT_BINARY_DIR}
- ${CMAKE_CURRENT_BINARY_DIR}/dpdk_vars.c
- CMAKE_FLAGS
- -DINCLUDE_DIRECTORIES=${DPDK_INCLUDE_DIR}
- COPY_FILE ${CMAKE_CURRENT_BINARY_DIR}/dpdk_vars.bin
-)
+# Parse DPDK config and version header files
+##############################################################################
-if(DPDK_VARS_COMPILED)
- execute_process(
- WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
- COMMAND ./dpdk_vars.bin
- OUTPUT_VARIABLE DPDK_VARS
- OUTPUT_STRIP_TRAILING_WHITESPACE
- )
- string(REPLACE "\n" ";" DPDK_VARS ${DPDK_VARS})
- foreach(v ${DPDK_VARS})
- string(REPLACE "=" ";" v ${v})
+file(STRINGS ${DPDK_INCLUDE_DIR}/rte_config.h rte_config)
+file(STRINGS ${DPDK_INCLUDE_DIR}/rte_version.h rte_version)
+
+foreach(l ${rte_config} ${rte_version})
+ if (l MATCHES "^#define[\t ]*RTE_")
+ STRING(REGEX REPLACE "^#define[\t ]*([A-Z1-9_]+)[\t ]*(.+)" "\\1;\\2" v "${l}")
list(GET v 0 name)
list(GET v 1 value)
set(DPDK_${name} ${value})
- endforeach()
-endif()
+ endif()
+endforeach()
-file(REMOVE
- ${CMAKE_CURRENT_BINARY_DIR}/dpdk_vars.c
- ${CMAKE_CURRENT_BINARY_DIR}/dpdk_vars.bin
-)
+set(DPDK_VERSION
+ "${DPDK_RTE_VER_YEAR}.${DPDK_RTE_VER_MONTH}.${DPDK_RTE_VER_MINOR}")
+##############################################################################
+# verify headroom size
+##############################################################################
if(NOT ${DPDK_RTE_PKTMBUF_HEADROOM} EQUAL ${PRE_DATA_SIZE})
message(
FATAL_ERROR