On Fri, Nov 27, 2020 at 12:55:41PM -0800, Jianxin Xiong wrote: > > +function(rdma_multifile_module PY_MODULE MODULE_NAME LINKER_FLAGS) I think just replace rdma_cython_module with this? No good reason I can see to have two APIs? > + set(ALL_CFILES "") > + foreach(SRC_FILE ${ARGN}) > + get_filename_component(FILENAME ${SRC_FILE} NAME_WE) > + get_filename_component(DIR ${SRC_FILE} DIRECTORY) > + get_filename_component(EXT ${SRC_FILE} EXT) > + if (DIR) > + set(SRC_PATH "${CMAKE_CURRENT_SOURCE_DIR}/${DIR}") > + else() > + set(SRC_PATH "${CMAKE_CURRENT_SOURCE_DIR}") > + endif() > + if (${EXT} STREQUAL ".pyx") > + set(PYX "${SRC_PATH}/${FILENAME}.pyx") > + set(CFILE "${CMAKE_CURRENT_BINARY_DIR}/${FILENAME}.c") > + include_directories(${PYTHON_INCLUDE_DIRS}) > + add_custom_command( > + OUTPUT "${CFILE}" > + MAIN_DEPENDENCY "${PYX}" > + COMMAND ${CYTHON_EXECUTABLE} "${PYX}" -o "${CFILE}" > + "-I${PYTHON_INCLUDE_DIRS}" > + COMMENT "Cythonizing ${PYX}" > + ) > + set(ALL_CFILES "${ALL_CFILES};${CFILE}") > + elseif(${EXT} STREQUAL ".c") > + set(CFILE_ORIG "${SRC_PATH}/${FILENAME}.c") > + set(CFILE "${CMAKE_CURRENT_BINARY_DIR}/${FILENAME}.c") > + if (NOT ${CFILE_ORIG} STREQUAL ${CFILE}) > + rdma_create_symlink("${CFILE_ORIG}" "${CFILE}") > + endif() Why does this need the create_symlink? The compiler should work OK from the source file? > + set(ALL_CFILES "${ALL_CFILES};${CFILE}") > + elseif(${EXT} STREQUAL ".h") > + set(HFILE_ORIG "${SRC_PATH}/${FILENAME}.h") > + set(HFILE "${CMAKE_CURRENT_BINARY_DIR}/${FILENAME}.h") > + if (NOT ${HFILE_ORIG} STREQUAL ${HFILE}) > + rdma_create_symlink("${HFILE_ORIG}" "${HFILE}") Here too? You probably don't need to specify h files at all, at worst they should only be used with publish_internal_headers > + endif() > + else() > + continue() > + endif() > + endforeach() > + string(REGEX REPLACE "\\.so$" "" SONAME "${MODULE_NAME}${CMAKE_PYTHON_SO_SUFFIX}") > + add_library(${SONAME} SHARED ${ALL_CFILES}) > + set_target_properties(${SONAME} PROPERTIES > + COMPILE_FLAGS "${CMAKE_C_FLAGS} -fPIC -fno-strict-aliasing -Wno-unused-function -Wno-redundant-decls -Wno-shadow -Wno-cast-function-type -Wno-implicit-fallthrough -Wno-unknown-warning -Wno-unknown-warning-option -Wno-deprecated-declarations ${NO_VAR_TRACKING_FLAGS}" Ugh, you copy and pasted this, but it shouldn't have existed in the first place. Compiler arguments like this should not be specified manually. I should fix it.. Also you should cc edward on all this pyverbs stuff, he knows it all very well It all looks reasonable to me Jason _______________________________________________ dri-devel mailing list dri-devel@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/dri-devel