@@ -103,23 +103,101 @@ ExternalProject_Add(libecpint
103103 -DCMAKE_INSTALL_PREFIX=<INSTALL_DIR >
104104 INSTALL_COMMAND ${CMAKE_COMMAND} --build <BINARY_DIR > --target install
105105 )
106+ if (_LINALG_LIB_TYPE STREQUAL NetLib)
107+ if (LINALG_LIB_INT64)
108+ set (BLA_LIB_SUFFIX "64" )
109+ else ()
110+ set (BLA_LIB_SUFFIX "" )
111+ endif ()
112+ if (BUILD_SHARED_LIBS )
113+ set (la_fortran_flags "${CMAKE_Fortran_FLAGS} -fpic" )
114+ else ()
115+ set (la_fortran_flags ${CMAKE_Fortran_FLAGS} )
116+ endif ()
117+ set (LAPACK_PREFIX ${CMAKE_BINARY_DIR} /external/lapack CACHE INTERNAL "LAPACK_PREFIX" )
118+ set (LIBLAPACK ${LAPACK_PREFIX} /src/lapack-build/lib/liblapack${BLA_LIB_SUFFIX} .a CACHE INTERNAL "LIBLAPACK" )
119+
120+ set (LIBBLAS ${LAPACK_PREFIX} /src/lapack-build/lib/libblas${BLA_LIB_SUFFIX} .a CACHE INTERNAL "LIBBLAS" )
121+ message (STATUS "BLAS_SUFFIX = ${BLA_LIB_SUFFIX} " )
122+
123+
124+ ExternalProject_Add (LAPACK
125+ PREFIX ${CMAKE_SOURCE_DIR} /external/lapack
126+ URL https://github.com/Reference-LAPACK/lapack/archive/refs/tags/v3.10.0.tar.gz
127+ URL_HASH SHA256=328c1bea493a32cac5257d84157dc686cc3ab0b004e2bea22044e0a59f6f8a19
128+ BINARY_DIR ${CMAKE_BINARY_DIR} /external/lapack/src/lapack-build
129+ STAMP_DIR ${CMAKE_BINARY_DIR} /external/lapack/src/lapack-stamp
130+ BUILD_BYPRODUCTS ${LAPACK_PREFIX} /src/lapack-build/lib/liblapack${BLA_LIB_SUFFIX} .a
131+ ${LAPACK_PREFIX} /src/lapack-build/lib/libblas${BLA_LIB_SUFFIX} .a
132+ UPDATE_COMMAND ""
133+ PATCH_COMMAND /usr/bin/perl -0pi -e "s/cmake_minimum_required\\ (VERSION 3\\ .2\\ )/cmake_minimum_required(VERSION 3.5)/g" <SOURCE_DIR >/CMakeLists.txt <SOURCE_DIR >/INSTALL/CMakeLists.txt
134+ INSTALL_COMMAND ""
135+ CMAKE_ARGS -DBUILD_INDEX64=${LINALG_LIB_INT64}
136+ -DBUILD_SINGLE=OFF
137+ -DBUILD_DOUBLE=ON
138+ -DBUILD_COMPLEX=OFF
139+ -DBUILD_COMPLEX16=OFF
140+ -DUSE_OPTIMIZED_BLAS=OFF
141+ -DUSE_OPTIMIZED_LAPACK=OFF
142+ -DCMAKE_C_COMPILER=${CMAKE_C_COMPILER}
143+ -DCMAKE_CXX_COMPILER=${CMAKE_CXX_COMPILER}
144+ -DCMAKE_Fortran_COMPILER=${CMAKE_Fortran_COMPILER}
145+ -DCMAKE_Fortran_FLAGS=${la_fortran_flags}
146+ -DCMAKE_POLICY_VERSION_MINIMUM=3.5
147+ -DCMAKE_TRY_COMPILE_PLATFORM_VARIABLES=CMAKE_POLICY_VERSION_MINIMUM
148+ -DCMAKE_GENERATOR:INTERNAL=${CMAKE_GENERATOR}
149+ )
150+ endif ()
151+ set (otr_integer_flags "" )
152+ if (LINALG_LIB_INT64)
153+ if ("${CMAKE_Fortran_COMPILER_ID} " STREQUAL "GNU" )
154+ set (otr_integer_flags "-fdefault-integer-8" )
155+ elseif ("${CMAKE_Fortran_COMPILER_ID} " STREQUAL "Flang" )
156+ set (otr_integer_flags "-fdefault-integer-8" )
157+ elseif ("${CMAKE_Fortran_COMPILER_ID} " STREQUAL "Intel" OR "${CMAKE_Fortran_COMPILER_ID} " STREQUAL "IntelLLVM" )
158+ set (otr_integer_flags "-i8" )
159+ endif ()
160+ endif ()
161+ set (otr_fortran_flags "${CMAKE_Fortran_FLAGS} ${OTR_DEFS} ${otr_integer_flags} " )
162+ if ("${CMAKE_Fortran_COMPILER_ID} " STREQUAL "GNU" AND CMAKE_Fortran_COMPILER_VERSION VERSION_GREATER 10.0)
163+ set (otr_fortran_flags "${otr_fortran_flags} -fallow-argument-mismatch" )
164+ endif ()
165+ set (OTR_CMAKE_ARGS
166+ -DCMAKE_INSTALL_PREFIX=${CMAKE_BINARY_DIR} /external/install/opentrustregion
167+ -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE}
168+ -DBLA_SIZEOF_INTEGER=${BLA_SIZEOF_INTEGER}
169+ -DINTEGER_SIZE=${BLA_SIZEOF_INTEGER}
170+ -DBUILD_SHARED_LIBS=OFF
171+ -DBUILD_TESTS=OFF
172+ -DCMAKE_C_COMPILER=${CMAKE_C_COMPILER}
173+ -DCMAKE_Fortran_COMPILER=${CMAKE_Fortran_COMPILER}
174+ -DCMAKE_Fortran_FLAGS=${otr_fortran_flags}
175+ -DCMAKE_GENERATOR:INTERNAL =${CMAKE_GENERATOR}
176+ )
177+ if (_LINALG_LIB_TYPE STREQUAL NetLib)
178+ list (APPEND OTR_CMAKE_ARGS
179+ -DBLAS_LIBRARIES=${LIBBLAS}
180+ -DLAPACK_LIBRARIES=${LIBLAPACK}
181+ )
182+ elseif (DEFINED BLA_VENDOR)
183+ list (APPEND OTR_CMAKE_ARGS -DBLA_VENDOR=${BLA_VENDOR} )
184+ endif ()
185+
106186ExternalProject_Add (libopentrustregion
107187 PREFIX ${CMAKE_SOURCE_DIR} /external/opentrustregion
108188 URL https://github.com/eriksen-lab/opentrustregion/archive/refs/tags/v2.0.0.tar.gz
109189 URL_HASH SHA256=682201cc9cc850a892d132e5e5fc11f6d87f8cd843fdbad88dafbf7277407f1c
110190 UPDATE_COMMAND ""
111191 PATCH_COMMAND
112192 UPDATE_COMMAND ""
113- CMAKE_ARGS
114- -DCMAKE_INSTALL_PREFIX=${CMAKE_BINARY_DIR} /external/install/opentrustregion
115- -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE}
116- -DBLA_SIZEOF_INTEGER=${BLA_SIZEOF_INTEGER}
117- -DBUILD_SHARED_LIBS=OFF
118- -DBUILD_TESTS=OFF
193+ CMAKE_ARGS ${OTR_CMAKE_ARGS}
119194 BINARY_DIR ${CMAKE_BINARY_DIR} /external/opentrustregion/src/libopentrustregion-build-${CMAKE_Fortran_COMPILER_ID}
120195 # INSTALL_DIR ${CMAKE_BINARY_DIR}/external/install/opentrustregion
121196 # STEP_TARGETS build install
122197)
198+ if (_LINALG_LIB_TYPE STREQUAL NetLib)
199+ add_dependencies (libopentrustregion LAPACK )
200+ endif ()
123201
124202set (OTR_LIB_NAME "${CMAKE_STATIC_LIBRARY_PREFIX} opentrustregion${OTR_SUFFIX}${CMAKE_STATIC_LIBRARY_SUFFIX} " )
125203if (ENABLE_Formatter)
@@ -161,47 +239,6 @@ if(ENABLE_Formatter)
161239 )
162240endif ()
163241
164- if (_LINALG_LIB_TYPE STREQUAL NetLib)
165- if (LINALG_LIB_INT64)
166- set (BLA_LIB_SUFFIX "64" )
167- else ()
168- set (BLA_LIB_SUFFIX "" )
169- endif ()
170- if (BUILD_SHARED_LIBS )
171- set (la_fortran_flags "${CMAKE_Fortran_FLAGS} -fpic" )
172- else ()
173- set (la_fortran_flags ${CMAKE_Fortran_FLAGS} )
174- endif ()
175- set (LAPACK_PREFIX ${CMAKE_BINARY_DIR} /external/lapack CACHE INTERNAL "LAPACK_PREFIX" )
176- set (LIBLAPACK ${LAPACK_PREFIX} /src/lapack-build/lib/liblapack${BLA_LIB_SUFFIX} .a CACHE INTERNAL "LIBLAPACK" )
177-
178- set (LIBBLAS ${LAPACK_PREFIX} /src/lapack-build/lib/libblas${BLA_LIB_SUFFIX} .a CACHE INTERNAL "LIBBLAS" )
179- message (STATUS "BLAS_SUFFIX = ${BLA_LIB_SUFFIX} " )
180-
181242
182- ExternalProject_Add (LAPACK
183- PREFIX ${CMAKE_SOURCE_DIR} /external/lapack
184- URL https://github.com/Reference-LAPACK/lapack/archive/refs/tags/v3.10.0.tar.gz
185- URL_HASH SHA256=328c1bea493a32cac5257d84157dc686cc3ab0b004e2bea22044e0a59f6f8a19
186- BINARY_DIR ${CMAKE_BINARY_DIR} /external/lapack/src/lapack-build
187- STAMP_DIR ${CMAKE_BINARY_DIR} /external/lapack/src/lapack-stamp
188- BUILD_BYPRODUCTS ${LAPACK_PREFIX} /src/lapack-build/lib/liblapack${BLA_LIB_SUFFIX} .a
189- ${LAPACK_PREFIX} /src/lapack-build/lib/libblas${BLA_LIB_SUFFIX} .a
190- UPDATE_COMMAND ""
191- INSTALL_COMMAND ""
192- CMAKE_ARGS -DBUILD_INDEX64=${LINALG_LIB_INT64}
193- -DBUILD_SINGLE=OFF
194- -DBUILD_DOUBLE=ON
195- -DBUILD_COMPLEX=OFF
196- -DBUILD_COMPLEX16=OFF
197- -DUSE_OPTIMIZED_BLAS=OFF
198- -DUSE_OPTIMIZED_LAPACK=OFF
199- -DCMAKE_C_COMPILER=${CMAKE_C_COMPILER}
200- -DCMAKE_CXX_COMPILER=${CMAKE_CXX_COMPILER}
201- -DCMAKE_Fortran_COMPILER=${CMAKE_Fortran_COMPILER}
202- -DCMAKE_Fortran_FLAGS=${la_fortran_flags}
203- -DCMAKE_GENERATOR:INTERNAL=${CMAKE_GENERATOR}
204- )
205- endif ()
206243
207244set_directory_properties (PROPERTIES CLEAN_NO_CUSTOM 1 )
0 commit comments