damaris-backends/drivers/Spectrum-MI40xxSeries/CMakeLists.txt

85 lines
3.8 KiB
CMake
Raw Normal View History

cmake_minimum_required(VERSION 3.0)
# unpack headers needed
set(SPC_DRV drv_header_v402b6844.zip)
set(SPC_HEADERS
include/spcerr.h
include/regs.h
include/dlltyp.h
include/spcioctl.inc)
add_custom_command(OUTPUT ${SPC_HEADERS}
COMMAND unzip -o -q -u ${SPC_DRV} "*.h" "*.txt" "*.inc" -d include/
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
COMMENT "Unpacking SPC headers"
VERBATIM)
# Kernelmodule is build from NDA source code.
# just go to the current directory and tar xfz drvsrc_all_V*.tgz
# this will usually create a "linux" folder
# the actual kernel source file is in the src_all/micx_drv subfolder.
# If the "linux" folder exists the driver will be build.
# Alternatively you can set the SPC_SOURCE environment variable to the micx_drv folder
file(GLOB MILIST "drvsrc_all_V*.tgz" )
# sort and select last (alphabetic order) tarball driver
list(SORT MILIST)
if(MILIST)
list(GET MILIST -1 MITGZ )
else()
set(MITGZ "non-existing-file")
endif()
#message(STATUS ${MITGZ})
if(EXISTS ${MITGZ})
message(STATUS "Using spectrum driver source tarball: " ${MITGZ})
add_custom_command(OUTPUT ${CMAKE_CURRENT_SOURCE_DIR}/linux/src_all/micx_drv
COMMAND tar xfvz ${MITGZ}
COMMAND cp -v ${CMAKE_CURRENT_SOURCE_DIR}/linux/src_all/micx_drv/makefile.kernel26 ${CMAKE_CURRENT_SOURCE_DIR}/linux/src_all/micx_drv/Makefile
2019-05-29 06:39:39 +00:00
COMMAND sed -i "s/Wno-deprecated-declarations/w/" ${CMAKE_CURRENT_SOURCE_DIR}/linux/src_all/micx_drv/Makefile
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
COMMENT "Unpacking Spectrum driver tarball"
VERBATIM)
set(SPC_SRC "${CMAKE_CURRENT_SOURCE_DIR}/linux/src_all/micx_drv")
add_custom_target(spc_smp ALL DEPENDS linux/src_all/micx_drv)
elseif(DEFINED ENV{SPC_SOURCE})
2018-12-12 08:45:28 +00:00
message(STATUS "SPC_SOURCE environment variable set: " $ENV{SPC_SOURCE})
set(SPC_SRC $ENV{SPC_SOURCE})
else()
set(SPC_SRC "${CMAKE_CURRENT_SOURCE_DIR}/linux/src_all/micx_drv")
2019-05-29 08:03:37 +00:00
message("\nIf you have signed the NDA from Spectrum and got a kernel driver tarball (i.e. drvsrc_all_V*.tgz), put it in:\n\n\t" ${CMAKE_CURRENT_SOURCE_DIR} "\n\nto get a kernel module built\n")
2018-12-12 08:45:28 +00:00
message(WARNING "Spectrum driver source path not defined in envirnoment variable SPC_SOURCE,\nusing default: " ${SPC_SRC})
endif()
set(DRIVER_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR})
file(GLOB KERNEL_VERSIONS_DIR RELATIVE "/lib/modules" "/lib/modules/*/build")
foreach(KERNEL_DIR ${KERNEL_VERSIONS_DIR})
string(REPLACE "/build" "" KERNEL_VERSION ${KERNEL_DIR})
message(STATUS "Compiling spc_smp.ko for kernel: " ${KERNEL_VERSION})
set(DRIVER_FILE ${KERNEL_VERSION}/spc_smp.ko )
set(KBUILD_CMD ${CMAKE_MAKE_PROGRAM}
-C "/lib/modules/${KERNEL_DIR}"
M=${SPC_SRC} modules)
add_custom_command(OUTPUT ${DRIVER_FILE}
COMMAND ${KBUILD_CMD}
COMMAND mkdir -p ${DRIVER_DIRECTORY}/${KERNEL_VERSION}
COMMAND cp -fv ${SPC_SRC}/spc_smp.ko ${DRIVER_DIRECTORY}/${KERNEL_VERSION}/spc_smp.ko
COMMENT "Building spc_smp.ko for kernel version: " ${KERNEL_VERSION}
WORKING_DIRECTORY ${SPC_SRC}
VERBATIM)
if(EXISTS ${SPC_SRC})
2019-05-29 08:03:37 +00:00
add_custom_target (micx_drv_${KERNEL_VERSION} ALL DEPENDS ${DRIVER_FILE})
install(FILES ${DRIVER_FILE} DESTINATION /lib/modules/${KERNEL_VERSION}/kernel/damaris)
else()
message(WARNING "Spectrum MI40xx kernel driver directory not found\n " ${SPC_SRC} "\nunpack and configure it (i.e. set SPC_SOURCE variable)")
endif()
endforeach(KERNEL_DIR)
add_library(Spectrum_MI40xxSeries STATIC Spectrum-MI40xxSeries.cpp GatedData.cpp ${SPC_HEADERS})
add_executable(hw_test_ext hw_test_extclock.cpp GatedData.cpp ${SPC_HEADERS})
2017-02-06 21:31:58 +00:00
#target_sources(hw_test_ext PRIVATE ${SPC_HEADERS})
add_executable(hw_test_int hw_test_intclock.cpp GatedData.cpp ${SPC_HEADERS})
2017-02-06 21:31:58 +00:00
#target_include_directories(hw_test_int ${SPC_HEADERS})