OpenVML/interface/CMakeLists.txt

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})