forked from OSchip/OpenVML
59 lines
2.0 KiB
CMake
59 lines
2.0 KiB
CMake
############ Set LIBSRC #################
|
|
|
|
set(OpenVML_LIBSRC_S "")
|
|
set(OpenVML_LIBSRC_D "")
|
|
set(OpenVML_LIBSRC_C "")
|
|
set(OpenVML_LIBSRC_Z "")
|
|
|
|
set(REAL_INTERFACE_LIST add sub)
|
|
set(COMPLEX_INTERFACE_LIST add sub)
|
|
|
|
function(cap_string var_name var_name_cap)
|
|
string(SUBSTRING ${var_name} 0 1 FIRST_LETTER)
|
|
string(TOUPPER ${FIRST_LETTER} FIRST_LETTER)
|
|
string(REGEX REPLACE "^.(.*)" "${FIRST_LETTER}\\1" PROTO_NAME_CAP "${var_name}")
|
|
set(${var_name_cap} ${PROTO_NAME_CAP} PARENT_SCOPE)
|
|
endfunction()
|
|
|
|
foreach(INTERFACE ${REAL_INTERFACE_LIST})
|
|
|
|
set(OpenVML_LIBSRC_S
|
|
${OpenVML_LIBSRC_S}
|
|
${CMAKE_CURRENT_SOURCE_DIR}/${INTERFACE}.c
|
|
)
|
|
|
|
set(OpenVML_LIBSRC_D
|
|
${OpenVML_LIBSRC_D}
|
|
${CMAKE_CURRENT_BINARY_DIR}/${INTERFACE}_d.c
|
|
)
|
|
|
|
set(OpenVML_INTERFACE_NAME "")
|
|
|
|
cap_string(${INTERFACE} OpenVML_INTERFACE_NAME)
|
|
|
|
set_property(SOURCE ${CMAKE_CURRENT_SOURCE_DIR}/${INTERFACE}.c
|
|
APPEND
|
|
PROPERTY COMPILE_DEFINITIONS ${OpenVML_S_DEFINITIONS} )
|
|
|
|
set_property(SOURCE ${CMAKE_CURRENT_SOURCE_DIR}/${INTERFACE}.c
|
|
APPEND
|
|
PROPERTY COMPILE_DEFINITIONS CNAME=${OpenVML_FUNC_PREFIX}vs${OpenVML_INTERFACE_NAME}${OpenVML_FUNC_SUFFIX} )
|
|
|
|
add_custom_command( OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/${INTERFACE}_d.c
|
|
DEPENDS ${INTERFACE}.c
|
|
COMMAND ${CMAKE_COMMAND} -E copy_if_different ${CMAKE_CURRENT_SOURCE_DIR}/${INTERFACE}.c ${CMAKE_CURRENT_BINARY_DIR}/${INTERFACE}_d.c
|
|
COMMAND ${CMAKE_COMMAND} -E touch ${CMAKE_CURRENT_BINARY_DIR}/${INTERFACE}_d.c)
|
|
|
|
set_property(SOURCE ${CMAKE_CURRENT_BINARY_DIR}/${INTERFACE}_d.c
|
|
APPEND
|
|
PROPERTY COMPILE_DEFINITIONS ${OpenVML_D_DEFINITIONS} )
|
|
|
|
set_property(SOURCE ${CMAKE_CURRENT_BINARY_DIR}/${INTERFACE}_d.c
|
|
APPEND
|
|
PROPERTY COMPILE_DEFINITIONS CNAME=${OpenVML_FUNC_PREFIX}vd${OpenVML_INTERFACE_NAME}${OpenVML_FUNC_SUFFIX} )
|
|
|
|
endforeach(INTERFACE)
|
|
|
|
add_library(openvml_interface_core OBJECT ${OpenVML_LIBSRC_S} ${OpenVML_LIBSRC_D} ${OpenVML_LIBSRC_C} ${OpenVML_LIBSRC_Z} ${OpenVML_LIBSRC_OTHER})
|
|
|