Skip to content

Commit 1d87581

Browse files
authored
Merge 80b492d into e2428ec
2 parents e2428ec + 80b492d commit 1d87581

File tree

2 files changed

+32
-18
lines changed

2 files changed

+32
-18
lines changed

BLAS/SRC/CMakeLists.txt

Lines changed: 14 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -110,13 +110,20 @@ endif()
110110
list(REMOVE_DUPLICATES SOURCES)
111111

112112
add_library(${BLASLIB}_obj OBJECT ${SOURCES})
113-
target_compile_options(${BLASLIB}_obj PRIVATE -fPIC)
113+
set_target_properties(${BLASLIB}_obj PROPERTIES POSITION_INDEPENDENT_CODE ON)
114114

115115
if(BUILD_INDEX64_EXT_API)
116+
set(SOURCES_64_F)
117+
# Copy files so we can set source property specific to /${BLASLIB}_64_obj target
118+
file(MAKE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/${BLASLIB}_64_obj)
119+
file(COPY ${SOURCES} DESTINATION ${CMAKE_CURRENT_BINARY_DIR}/${BLASLIB}_64_obj)
120+
file(GLOB SOURCES_64_F ${CMAKE_CURRENT_BINARY_DIR}/${BLASLIB}_64_obj/*.f*)
121+
add_library(${BLASLIB}_64_obj OBJECT ${SOURCES_64_F})
122+
target_compile_options(${BLASLIB}_64_obj PRIVATE ${FOPT_ILP64})
123+
set_target_properties(${BLASLIB}_64_obj PROPERTIES POSITION_INDEPENDENT_CODE ON)
116124
#Add _64 suffix to all Fortran functions via macros
117-
set(COPT_64_F)
118-
list(APPEND COPT_64_F -cpp)
119-
foreach(F IN LISTS SOURCES)
125+
foreach(F IN LISTS SOURCES_64_F)
126+
set(COPT_64_F -cpp)
120127
file(STRINGS ${F} ${F}.lst)
121128
list(FILTER ${F}.lst INCLUDE REGEX "subroutine|SUBROUTINE|external|EXTERNAL|function|FUNCTION")
122129
list(FILTER ${F}.lst EXCLUDE REGEX "^!.*")
@@ -128,10 +135,9 @@ if(BUILD_INDEX64_EXT_API)
128135
string(STRIP ${FUNC} FUNC)
129136
list(APPEND COPT_64_F "-D${FUNC}=${FUNC}_64")
130137
endforeach()
138+
list(REMOVE_DUPLICATES COPT_64_F)
139+
set_source_files_properties(${F} PROPERTIES COMPILE_OPTIONS "${COPT_64_F}")
131140
endforeach()
132-
list(REMOVE_DUPLICATES COPT_64_F)
133-
add_library(${BLASLIB}_64_obj OBJECT ${SOURCES})
134-
target_compile_options(${BLASLIB}_64_obj PRIVATE -fPIC ${FOPT_ILP64} ${COPT_64_F})
135141
endif()
136142

137143
add_library(${BLASLIB}
@@ -142,6 +148,7 @@ set_target_properties(
142148
${BLASLIB} PROPERTIES
143149
VERSION ${LAPACK_VERSION}
144150
SOVERSION ${LAPACK_MAJOR_VERSION}
151+
POSITION_INDEPENDENT_CODE ON
145152
)
146153
lapack_install_library(${BLASLIB})
147154

CBLAS/src/CMakeLists.txt

Lines changed: 18 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -122,31 +122,38 @@ set_target_properties(${CBLASLIB}_obj PROPERTIES POSITION_INDEPENDENT_CODE ON)
122122

123123
if(BUILD_INDEX64_EXT_API)
124124
# 64bit Integer Interface
125+
# Define list of C files
125126
set(SOURCES_64_C)
126-
set(SOURCES_64_F)
127127
list(APPEND SOURCES_64_C ${SOURCES})
128-
list(APPEND SOURCES_64_F ${SOURCES})
129128
list(FILTER SOURCES_64_C EXCLUDE REGEX "\.f$")
130-
list(FILTER SOURCES_64_F INCLUDE REGEX "\.f$")
131129
list(REMOVE_ITEM SOURCES_64_C cblas_globals.c)
130+
# Define list of Fortran files
131+
set(SOURCES_64_F)
132+
list(APPEND SOURCES_64_F ${SOURCES})
133+
list(FILTER SOURCES_64_F INCLUDE REGEX "\.f$")
134+
# Copy files so we can set source property specific to /${CBLASLIB}_64_obj target
135+
file(MAKE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/${CBLASLIB}_64_fobj)
136+
file(COPY ${SOURCES_64_F} DESTINATION ${CMAKE_CURRENT_BINARY_DIR}/${CBLASLIB}_64_fobj)
137+
file(GLOB SOURCES_64_F ${CMAKE_CURRENT_BINARY_DIR}/${CBLASLIB}_64_fobj/*)
138+
add_library(${CBLASLIB}_64_cobj OBJECT ${SOURCES_64_C})
139+
add_library(${CBLASLIB}_64_fobj OBJECT ${SOURCES_64_F})
140+
set_target_properties(${CBLASLIB}_64_cobj ${CBLASLIB}_64_fobj PROPERTIES
141+
POSITION_INDEPENDENT_CODE ON
142+
Fortran_PREPROCESS ON)
143+
target_compile_options(${CBLASLIB}_64_cobj PRIVATE -DWeirdNEC -DCBLAS_API64)
144+
target_compile_options(${CBLASLIB}_64_fobj PRIVATE ${FOPT_ILP64})
132145
#Add suffix to all Fortran functions via macros
133-
set(COPT_64_F)
134146
foreach(F IN LISTS SOURCES_64_F)
147+
set(COPT_64_F)
135148
file(STRINGS ${F} ${F}.lst)
136149
list(FILTER ${F}.lst INCLUDE REGEX "subroutine|external")
137150
foreach(FUNC IN LISTS ${F}.lst)
138151
string(REGEX REPLACE "[ ]*(subroutine|external)[ ]*" "" FUNC ${FUNC})
139152
string(REGEX REPLACE "[(][a-zA-Z0-9, ]*[)]" "" FUNC ${FUNC})
140153
list(APPEND COPT_64_F "-D${FUNC}=${FUNC}_64")
141154
endforeach()
155+
set_source_files_properties(${F} PROPERTIES COMPILE_OPTIONS "${COPT_64_F}")
142156
endforeach()
143-
add_library(${CBLASLIB}_64_cobj OBJECT ${SOURCES_64_C})
144-
add_library(${CBLASLIB}_64_fobj OBJECT ${SOURCES_64_F})
145-
set_target_properties(${CBLASLIB}_64_cobj ${CBLASLIB}_64_fobj PROPERTIES
146-
POSITION_INDEPENDENT_CODE ON
147-
Fortran_PREPROCESS ON)
148-
target_compile_options(${CBLASLIB}_64_cobj PRIVATE -DWeirdNEC -DCBLAS_API64)
149-
target_compile_options(${CBLASLIB}_64_fobj PRIVATE ${FOPT_ILP64} ${COPT_64_F})
150157
endif()
151158

152159
add_library(${CBLASLIB}

0 commit comments

Comments
 (0)