aboutsummaryrefslogtreecommitdiff
path: root/ports/spdk-isal
diff options
context:
space:
mode:
authorErnest Zaslavsky <kreuzerkrieg@gmail.com>2019-05-01 22:59:11 +0300
committerPhil Christensen <philc@microsoft.com>2019-05-01 12:59:11 -0700
commit3468013fcd4014ab7a40b2b5355e86cbe4cbcf07 (patch)
tree63a6943e405fb3613362f9770de058338486c62d /ports/spdk-isal
parent1e0b106d15c9b5d3f3d5914fa7c01d43260c7700 (diff)
downloadvcpkg-3468013fcd4014ab7a40b2b5355e86cbe4cbcf07.tar.gz
vcpkg-3468013fcd4014ab7a40b2b5355e86cbe4cbcf07.zip
SPDK - Storage performance development kit (#5877)
Diffstat (limited to 'ports/spdk-isal')
-rw-r--r--ports/spdk-isal/CMakeLists.txt56
-rw-r--r--ports/spdk-isal/CONTROL4
-rw-r--r--ports/spdk-isal/portfile.cmake52
-rw-r--r--ports/spdk-isal/spdk-isalConfig.cmake17
-rw-r--r--ports/spdk-isal/usage1
5 files changed, 130 insertions, 0 deletions
diff --git a/ports/spdk-isal/CMakeLists.txt b/ports/spdk-isal/CMakeLists.txt
new file mode 100644
index 000000000..c2623d387
--- /dev/null
+++ b/ports/spdk-isal/CMakeLists.txt
@@ -0,0 +1,56 @@
+CMAKE_MINIMUM_REQUIRED(VERSION 3.9)
+PROJECT(isal C)
+
+IF (SOURCE_PATH)
+ SET(CMAKE_SOURCE_DIR ${SOURCE_PATH})
+ENDIF ()
+
+INCLUDE(ProcessorCount)
+PROCESSORCOUNT(PROCS)
+
+FIND_PROGRAM(NASM nasm)
+IF (NOT NASM)
+ MESSAGE(FATAL_ERROR "NASM not found")
+ENDIF ()
+
+FIND_PROGRAM(YASM yasm)
+IF (NOT YASM)
+ MESSAGE(FATAL_ERROR "YASM not found")
+ENDIF ()
+
+IF (EXEC_ENV STREQUAL "Windows")
+ FIND_PROGRAM(MAKE nmake)
+ IF (NOT MAKE)
+ MESSAGE(FATAL_ERROR "nmake not found")
+ ENDIF ()
+ELSEIF(EXEC_ENV STREQUAL "Linux")
+ FIND_PROGRAM(MAKE make)
+ IF (NOT MAKE)
+ MESSAGE(FATAL_ERROR "MAKE not found")
+ ENDIF ()
+ENDIF()
+
+SET(MAKE_FLAGS "-f")
+
+IF (EXEC_ENV STREQUAL Windows)
+ STRING(APPEND MAKE_FLAGS " Makefile.nmake /E CC=cl AS=nasm")
+ELSEIF (EXEC_ENV STREQUAL Linux)
+ STRING(APPEND MAKE_FLAGS "Makefile.unx")
+ENDIF ()
+
+ADD_CUSTOM_TARGET(isal ALL
+ COMMAND ${MAKE} ${MAKE_FLAGS}
+ WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}/
+ )
+
+SET(LIB_PATH ${CMAKE_SOURCE_DIR}/bin/)
+IF (LIBRARY_LINKAGE STREQUAL "dynamic")
+ STRING(APPEND LIB_PATH isal.so)
+ELSEIF (LIBRARY_LINKAGE STREQUAL "static")
+ STRING(APPEND LIB_PATH isa-l.a)
+ELSE ()
+ MESSAGE(FATAL_ERROR "Unknown linkage type ${LIBRARY_LINKAGE}")
+ENDIF ()
+INSTALL(FILES ${LIB_PATH}
+ DESTINATION ${CMAKE_SOURCE_DIR}/${CMAKE_BUILD_TYPE}/lib/)
+INSTALL(DIRECTORY ${CMAKE_SOURCE_DIR}/include DESTINATION ${CMAKE_SOURCE_DIR}/${CMAKE_BUILD_TYPE}/) \ No newline at end of file
diff --git a/ports/spdk-isal/CONTROL b/ports/spdk-isal/CONTROL
new file mode 100644
index 000000000..abfbe3de0
--- /dev/null
+++ b/ports/spdk-isal/CONTROL
@@ -0,0 +1,4 @@
+Source: spdk-isal
+Version: 20181006
+Description: SPDK mirror of isa-l. Intel(R) Intelligent Storage Acceleration Library
+
diff --git a/ports/spdk-isal/portfile.cmake b/ports/spdk-isal/portfile.cmake
new file mode 100644
index 000000000..530d8da83
--- /dev/null
+++ b/ports/spdk-isal/portfile.cmake
@@ -0,0 +1,52 @@
+INCLUDE(vcpkg_common_functions)
+
+IF (NOT VCPKG_CMAKE_SYSTEM_NAME)
+ SET(EXEC_ENV "Windows")
+ELSE ()
+ SET(EXEC_ENV "${VCPKG_CMAKE_SYSTEM_NAME}")
+ENDIF ()
+
+IF (NOT EXEC_ENV STREQUAL "Linux")
+ MESSAGE(FATAL_ERROR "Intel(R) Intelligent Storage Acceleration Library currently only supports Linux platforms")
+ MESSAGE(STATUS "Well, it is not true, but I didnt manage to get it working on Windows")
+ENDIF ()
+
+IF (VCPKG_TARGET_ARCHITECTURE STREQUAL "x86" OR VCPKG_TARGET_ARCHITECTURE STREQUAL "arm")
+ MESSAGE(FATAL_ERROR "Intel(R) Intelligent Storage Acceleration Library currently only supports x64 architecture")
+ELSEIF (NOT VCPKG_TARGET_ARCHITECTURE STREQUAL "x64")
+ MESSAGE(FATAL_ERROR "Unsupported architecture: ${VCPKG_TARGET_ARCHITECTURE}")
+ENDIF ()
+
+VCPKG_FROM_GITHUB(
+ OUT_SOURCE_PATH SOURCE_PATH
+ REPO spdk/isa-l
+ REF spdk
+ SHA512 1d170ed050fb612816c77b3586f1cdce9129eedc559e3fcefc983ede05b6c8e13a52e400ee6935f5da6ab045a899c97f6ed6be3a79691284e211ea8a6d697f7c
+ HEAD_REF master
+)
+
+VCPKG_FIND_ACQUIRE_PROGRAM(NASM)
+GET_FILENAME_COMPONENT(NASM_PATH ${NASM} DIRECTORY)
+SET(ENV{PATH} "$ENV{PATH};${NASM_PATH}")
+
+VCPKG_FIND_ACQUIRE_PROGRAM(YASM)
+
+VCPKG_CONFIGURE_CMAKE(
+ SOURCE_PATH ${CMAKE_CURRENT_LIST_DIR}
+ PREFER_NINJA
+ OPTIONS
+ -DSOURCE_PATH=${SOURCE_PATH}
+ -DEXEC_ENV:STRING=${EXEC_ENV}
+ -DLIBRARY_LINKAGE:STRING=${VCPKG_LIBRARY_LINKAGE}
+)
+
+VCPKG_INSTALL_CMAKE()
+
+FILE(INSTALL ${SOURCE_PATH}/Release/lib/ DESTINATION ${CURRENT_PACKAGES_DIR}/lib/spdk)
+FILE(INSTALL ${SOURCE_PATH}/Debug/lib/ DESTINATION ${CURRENT_PACKAGES_DIR}/debug/lib/spdk)
+FILE(INSTALL ${SOURCE_PATH}/Release/include/ DESTINATION ${CURRENT_PACKAGES_DIR}/include/${PORT})
+FILE(INSTALL ${CMAKE_CURRENT_LIST_DIR}/spdk-isalConfig.cmake DESTINATION ${CURRENT_PACKAGES_DIR}/share/${PORT})
+FILE(INSTALL ${CMAKE_CURRENT_LIST_DIR}/usage DESTINATION ${CURRENT_PACKAGES_DIR}/share/${PORT})
+FILE(INSTALL ${SOURCE_PATH}/LICENSE DESTINATION ${CURRENT_PACKAGES_DIR}/share/${PORT} RENAME copyright)
+
+VCPKG_TEST_CMAKE(PACKAGE_NAME ${PORT})
diff --git a/ports/spdk-isal/spdk-isalConfig.cmake b/ports/spdk-isal/spdk-isalConfig.cmake
new file mode 100644
index 000000000..f14282ff1
--- /dev/null
+++ b/ports/spdk-isal/spdk-isalConfig.cmake
@@ -0,0 +1,17 @@
+
+FUNCTION(SET_LIBRARY_TARGET NAMESPACE LIB_NAME DEBUG_LIB_FILE_NAME RELEASE_LIB_FILE_NAME INCLUDE_DIR)
+ ADD_LIBRARY(${NAMESPACE}::${LIB_NAME} STATIC IMPORTED)
+ SET_TARGET_PROPERTIES(${NAMESPACE}::${LIB_NAME} PROPERTIES
+ IMPORTED_CONFIGURATIONS "RELEASE;DEBUG"
+ IMPORTED_LOCATION_RELEASE "${RELEASE_LIB_FILE_NAME}"
+ IMPORTED_LOCATION_DEBUG "${DEBUG_LIB_FILE_NAME}"
+ INTERFACE_INCLUDE_DIRECTORIES "${INCLUDE_DIR}"
+ )
+ SET(${NAMESPACE}_${LIB_NAME}_FOUND 1)
+ENDFUNCTION()
+
+GET_FILENAME_COMPONENT(ROOT "${CMAKE_CURRENT_LIST_FILE}" PATH)
+GET_FILENAME_COMPONENT(ROOT "${ROOT}" PATH)
+GET_FILENAME_COMPONENT(ROOT "${ROOT}" PATH)
+
+SET_LIBRARY_TARGET("SPDK" "isal" "${ROOT}/debug/lib/spdk/isa-l.a" "${ROOT}/lib/spdk/isa-l.a" "${ROOT}/include/spdk-isal")
diff --git a/ports/spdk-isal/usage b/ports/spdk-isal/usage
new file mode 100644
index 000000000..4fc9ddf25
--- /dev/null
+++ b/ports/spdk-isal/usage
@@ -0,0 +1 @@
+This package is a dependency of SPDK port. It is not intended for direct consumption by end-user. \ No newline at end of file