@@ -734,18 +734,46 @@ if(NOT NO_CBLAS)
734734 set (CBLAS_H ${CMAKE_BINARY_DIR } /generated/cblas.h)
735735 file (READ ${CMAKE_CURRENT_SOURCE_DIR } /cblas.h CBLAS_H_CONTENTS )
736736 string (REPLACE "common" "openblas_config" CBLAS_H_CONTENTS_NEW "${CBLAS_H_CONTENTS} " )
737+
738+ # Symbol prefix/suffix settings rename exported functions, not C typedefs.
739+ # Protect callback type names from the textual function-name rewriting below.
740+ string (REPLACE "openblas_dojob_callback" "OPENBLAS_DOJOB_CALLBACK_TYPE"
741+ CBLAS_H_CONTENTS_NEW "${CBLAS_H_CONTENTS_NEW} " )
742+ string (REPLACE "openblas_threads_callback" "OPENBLAS_THREADS_CALLBACK_TYPE"
743+ CBLAS_H_CONTENTS_NEW "${CBLAS_H_CONTENTS_NEW} " )
744+ string (REPLACE "openblas_xerbla_handler" "OPENBLAS_XERBLA_HANDLER_TYPE"
745+ CBLAS_H_CONTENTS_NEW "${CBLAS_H_CONTENTS_NEW} " )
746+
737747 if (NOT ${SYMBOLPREFIX} STREQUAL "" )
738- string (REPLACE " cblas" " ${SYMBOLPREFIX} cblas" CBLAS_H_CONTENTS "${CBLAS_H_CONTENTS_NEW} " )
739- string (REPLACE " openblas" " ${SYMBOLPREFIX} openblas" CBLAS_H_CONTENTS_NEW "${CBLAS_H_CONTENTS} " )
740- string (REPLACE " ${SYMBOLPREFIX} openblas_complex" " openblas_complex" CBLAS_H_CONTENTS "${CBLAS_H_CONTENTS_NEW} " )
741- string (REPLACE " goto" " ${SYMBOLPREFIX} goto" CBLAS_H_CONTENTS_NEW "${CBLAS_H_CONTENTS} " )
748+ string (REPLACE " cblas" " ${SYMBOLPREFIX} cblas"
749+ CBLAS_H_CONTENTS_NEW "${CBLAS_H_CONTENTS_NEW} " )
750+ string (REPLACE " openblas" " ${SYMBOLPREFIX} openblas"
751+ CBLAS_H_CONTENTS_NEW "${CBLAS_H_CONTENTS_NEW} " )
752+ string (REPLACE " ${SYMBOLPREFIX} openblas_complex" " openblas_complex"
753+ CBLAS_H_CONTENTS_NEW "${CBLAS_H_CONTENTS_NEW} " )
754+ string (REPLACE " goto" " ${SYMBOLPREFIX} goto"
755+ CBLAS_H_CONTENTS_NEW "${CBLAS_H_CONTENTS_NEW} " )
742756 endif ()
743757 if (NOT ${SYMBOLSUFFIX} STREQUAL "" )
744- string (REGEX REPLACE "(cblas[^ (]*)" "\\ 1${SYMBOLSUFFIX} " CBLAS_H_CONTENTS "${CBLAS_H_CONTENTS_NEW} " )
745- string (REGEX REPLACE "(openblas[^ (]*)" "\\ 1${SYMBOLSUFFIX} " CBLAS_H_CONTENTS_NEW "${CBLAS_H_CONTENTS} " )
746- string (REGEX REPLACE "(openblas_complex[^ ]*)${SYMBOLSUFFIX} " "\\ 1" CBLAS_H_CONTENTS "${CBLAS_H_CONTENTS_NEW} " )
747- string (REGEX REPLACE "(goto[^ (]*)" "\\ 1${SYMBOLSUFFIX} " CBLAS_H_CONTENTS_NEW "${CBLAS_H_CONTENTS} " )
748- endif ()
758+ string (REGEX REPLACE "(cblas[A-Za-z0-9_]*)" "\\ 1${SYMBOLSUFFIX} "
759+ CBLAS_H_CONTENTS_NEW "${CBLAS_H_CONTENTS_NEW} " )
760+ string (REGEX REPLACE "(openblas[A-Za-z0-9_]*)" "\\ 1${SYMBOLSUFFIX} "
761+ CBLAS_H_CONTENTS_NEW "${CBLAS_H_CONTENTS_NEW} " )
762+ string (REPLACE "openblas_config${SYMBOLSUFFIX} " "openblas_config"
763+ CBLAS_H_CONTENTS_NEW "${CBLAS_H_CONTENTS_NEW} " )
764+ string (REGEX REPLACE "(openblas_complex[A-Za-z0-9_]*)${SYMBOLSUFFIX} " "\\ 1"
765+ CBLAS_H_CONTENTS_NEW "${CBLAS_H_CONTENTS_NEW} " )
766+ string (REGEX REPLACE "(goto[A-Za-z0-9_]*)" "\\ 1${SYMBOLSUFFIX} "
767+ CBLAS_H_CONTENTS_NEW "${CBLAS_H_CONTENTS_NEW} " )
768+ endif ()
769+
770+ string (REPLACE "OPENBLAS_DOJOB_CALLBACK_TYPE" "openblas_dojob_callback"
771+ CBLAS_H_CONTENTS_NEW "${CBLAS_H_CONTENTS_NEW} " )
772+ string (REPLACE "OPENBLAS_THREADS_CALLBACK_TYPE" "openblas_threads_callback"
773+ CBLAS_H_CONTENTS_NEW "${CBLAS_H_CONTENTS_NEW} " )
774+ string (REPLACE "OPENBLAS_XERBLA_HANDLER_TYPE" "openblas_xerbla_handler"
775+ CBLAS_H_CONTENTS_NEW "${CBLAS_H_CONTENTS_NEW} " )
776+
749777 file (WRITE ${CBLAS_H} "${CBLAS_H_CONTENTS_NEW} " )
750778 install (FILES ${CBLAS_H} DESTINATION ${CMAKE_INSTALL_INCLUDEDIR} )
751779endif ()
0 commit comments