Skip to content

Commit e4344de

Browse files
authored
Merge pull request #5505 from martin-frbg/issue5493
Rewrite lapacke headers with pre/postfixes if necessary
2 parents 80951a2 + 8882409 commit e4344de

File tree

2 files changed

+53
-2
lines changed

2 files changed

+53
-2
lines changed

CMakeLists.txt

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -708,6 +708,39 @@ if(NOT NO_LAPACKE)
708708
COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_SOURCE_DIR}/lapack-netlib/LAPACKE/include/lapacke_mangling_with_flags.h.in "${CMAKE_BINARY_DIR}/lapacke_mangling.h"
709709
)
710710
install (FILES ${CMAKE_BINARY_DIR}/lapacke_mangling.h DESTINATION ${CMAKE_INSTALL_INCLUDEDIR})
711+
if (NOT (x${SYMBOLPREFIX}${SYMBOLSUFFIX} STREQUAL "x"))
712+
message (STATUS "Generating lapacke.h in ${CMAKE_INSTALL_INCLUDEDIR}")
713+
set(LAPACKE_H ${CMAKE_BINARY_DIR}/generated/lapacke.h)
714+
file(READ ${CMAKE_CURRENT_SOURCE_DIR}/lapack-netlib/LAPACKE/include/lapacke.h LAPACKE_H_CONTENTS)
715+
if (NOT ${SYMBOLPREFIX} STREQUAL "")
716+
string(REGEX REPLACE "(LAPACKE_*)" " ${SYMBOLPREFIX}\\1" LAPACKE_H_CONTENTS_NEW "${LAPACKE_H_CONTENTS}")
717+
string(REPLACE "_ ${SYMBOLPREFIX}LAPACKE_H_" "_LAPACKE_H_" LAPACKE_H_CONTENTS ${LAPACKE_H_CONTENTS_NEW})
718+
string(REPLACE "${SYMBOLPREFIX}LAPACKE_malloc" "LAPACKE_malloc" LAPACKE_H_CONTENTS_NEW ${LAPACKE_H_CONTENTS})
719+
string(REPLACE "${SYMBOLPREFIX}LAPACKE_free" "LAPACKE_free" LAPACKE_H_CONTENTS ${LAPACKE_H_CONTENTS_NEW})
720+
set(LAPACKE_H_CONTENTS_NEW ${LAPACKE_H_CONTENTS})
721+
endif()
722+
if (NOT ${SYMBOLSUFFIX} STREQUAL "")
723+
string(REGEX REPLACE "(${SYMBOLPREFIX}LAPACKE_[a-z1-9]*[^ (]*)" "\\1${SYMBOLSUFFIX}" LAPACKE_H_CONTENTS_NEW "${LAPACKE_H_CONTENTS}")
724+
string(REPLACE "#define${SYMBOLSUFFIX}" "#define" LAPACKE_H_CONTENTS ${LAPACKE_H_CONTENTS_NEW})
725+
string(REPLACE "LAPACKE_malloc${SYMBOLSUFFIX}" "LAPACKE_malloc" LAPACKE_H_CONTENTS_NEW ${LAPACKE_H_CONTENTS})
726+
string(REPLACE "LAPACKE_free${SYMBOLSUFFIX}" "LAPACKE_free" LAPACKE_H_CONTENTS ${LAPACKE_H_CONTENTS_NEW})
727+
set(LAPACKE_H_CONTENTS_NEW ${LAPACKE_H_CONTENTS})
728+
endif()
729+
file(WRITE ${LAPACKE_H} "${LAPACKE_H_CONTENTS_NEW}")
730+
install (FILES ${LAPACKE_H} DESTINATION ${CMAKE_INSTALL_INCLUDEDIR})
731+
message (STATUS "Generating lapack.h in ${CMAKE_INSTALL_INCLUDEDIR}")
732+
set(LAPACK_H ${CMAKE_BINARY_DIR}/generated/lapack.h)
733+
file(READ ${CMAKE_CURRENT_SOURCE_DIR}/lapack-netlib/LAPACKE/include/lapack.h LAPACK_H_CONTENTS)
734+
if (NOT ${SYMBOLPREFIX} STREQUAL "")
735+
string(REGEX REPLACE "(LAPACK_[a-z1-9]*[ \(][.\)]*)" "${SYMBOLPREFIX}\\1" LAPACK_H_CONTENTS_NEW "${LAPACK_H_CONTENTS}")
736+
set(LAPACK_H_CONTENTS ${LAPACK_H_CONTENTS_NEW})
737+
endif()
738+
if (NOT ${SYMBOLSUFFIX} STREQUAL "")
739+
string(REGEX REPLACE "(${SYMBOLPREFIX}LAPACK_[a-z1-9]*)([ \(].\)" "\\1${SYMBOLSUFFIX}\\2" LAPACK_H_CONTENTS_NEW "${LAPACK_H_CONTENTS}")
740+
endif()
741+
file(WRITE ${LAPACK_H} "${LAPACK_H_CONTENTS_NEW}")
742+
install (FILES ${LAPACK_H} DESTINATION ${CMAKE_INSTALL_INCLUDEDIR})
743+
endif()
711744
endif()
712745

713746
# Install pkg-config files

Makefile.install

Lines changed: 20 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -93,9 +93,27 @@ endif
9393

9494
ifneq ($(OSNAME), AIX)
9595
ifneq ($(NO_LAPACKE), 1)
96+
@cp $(NETLIB_LAPACK_DIR)/LAPACKE/include/lapacke.h lapacke_h.tmp
97+
ifdef SYMBOLPREFIX
98+
@sed 's/LAPACKE_[a-z1-9].[^() ]*/$(SYMBOLPREFIX)&/g' lapacke_h.tmp > lapacke.tmp2
99+
@mv lapacke.tmp2 lapacke_h.tmp
100+
endif
101+
ifdef SYMBOLSUFFIX
102+
@sed 's/LAPACKE_[a-z1-9].[^() ]*/&$(SYMBOLSUFFIX)/g' lapacke_h.tmp > lapacke.tmp2
103+
@mv lapacke.tmp2 lapacke_h.tmp
104+
endif
105+
@-install -m644 lapacke_h.tmp "$(DESTDIR)$(OPENBLAS_INCLUDE_DIR)/lapacke.h"
96106
@echo Copying LAPACKE header files to $(DESTDIR)$(OPENBLAS_INCLUDE_DIR)
97-
@-install -m644 $(NETLIB_LAPACK_DIR)/LAPACKE/include/lapack.h "$(DESTDIR)$(OPENBLAS_INCLUDE_DIR)/lapack.h"
98-
@-install -m644 $(NETLIB_LAPACK_DIR)/LAPACKE/include/lapacke.h "$(DESTDIR)$(OPENBLAS_INCLUDE_DIR)/lapacke.h"
107+
@cp $(NETLIB_LAPACK_DIR)/LAPACKE/include/lapack.h lapack_h.tmp
108+
ifdef SYMBOLPREFIX
109+
@sed 's/LAPACK_[a-z1-9]*(\.\.\.)/$(SYMBOLPREFIX)&/g' lapack_h.tmp > lapack.tmp2
110+
@mv lapack.tmp2 lapack_h.tmp
111+
endif
112+
ifdef SYMBOLSUFFIX
113+
@sed 's/\(#define $(SYMBOLPREFIX)LAPACK_[a-z1-9].*\)\((...)\)/\1$(SYMBOLSUFFIX)\2/g' lapack_h.tmp > lapack.tmp2
114+
@mv lapack.tmp2 lapack_h.tmp
115+
endif
116+
@-install -m644 lapack_h.tmp "$(DESTDIR)$(OPENBLAS_INCLUDE_DIR)/lapack.h"
99117
@-install -m644 $(NETLIB_LAPACK_DIR)/LAPACKE/include/lapacke_config.h "$(DESTDIR)$(OPENBLAS_INCLUDE_DIR)/lapacke_config.h"
100118
@-install -m644 $(NETLIB_LAPACK_DIR)/LAPACKE/include/lapacke_mangling_with_flags.h.in "$(DESTDIR)$(OPENBLAS_INCLUDE_DIR)/lapacke_mangling.h"
101119
@-install -m644 $(NETLIB_LAPACK_DIR)/LAPACKE/include/lapacke_utils.h "$(DESTDIR)$(OPENBLAS_INCLUDE_DIR)/lapacke_utils.h"

0 commit comments

Comments
 (0)