enable_language(Fortran)
enable_language(ASM)
-message(WARNING "CMake support is experimental. This will not produce the same Makefiles that OpenBLAS ships with.")
+message(WARNING "CMake support is experimental. This will not produce the same Makefiles that OpenBLAS ships with. Only DOUBLE and x86 support is currently available.")
include("${CMAKE_SOURCE_DIR}/cmake/utils.cmake")
include("${CMAKE_SOURCE_DIR}/cmake/system.cmake")
# netlib:
# Can't just use lapack-netlib's CMake files, since they are set up to search for BLAS, build and install a binary. We just want to build a couple of lib files out of lapack and lapacke.
-
-# aux files
-set(ALLAUX
- ${NETLIB_LAPACK_DIR}/SRC/ilaenv.f ${NETLIB_LAPACK_DIR}/SRC/ieeeck.f ${NETLIB_LAPACK_DIR}/SRC/lsamen.f ${NETLIB_LAPACK_DIR}/SRC/xerbla_array.f ${NETLIB_LAPACK_DIR}/SRC/iparmq.f
- ${NETLIB_LAPACK_DIR}/SRC/ilaprec.f ${NETLIB_LAPACK_DIR}/SRC/ilatrans.f ${NETLIB_LAPACK_DIR}/SRC/ilauplo.f ${NETLIB_LAPACK_DIR}/SRC/iladiag.f ${NETLIB_LAPACK_DIR}/SRC/chla_transtype.f
- ${NETLIB_LAPACK_DIR}/INSTALL/ilaver.f ${NETLIB_LAPACK_DIR}/INSTALL/slamch.f
-)
-add_library(AUX_OBJ OBJECT ${ALLAUX})
-set_target_properties(${AUX_OBJ} PROPERTIES COMPILE_FLAGS ${LAPACK_FFLAGS})
-list(APPEND TARGET_OBJS "$<TARGET_OBJECTS:AUX_OBJ>")
-
-# N.B. if a source is added or removed you MUST re-run the cmake command manually; make will not do it.
-file(GLOB DLA_SOURCES "${NETLIB_LAPACK_DIR}/SRC/d*.f")
-
-add_library(DLA_OBJ OBJECT ${DLA_SOURCES})
-set_target_properties(${DLA_OBJ} PROPERTIES COMPILE_FLAGS ${LAPACK_FFLAGS})
-list(APPEND TARGET_OBJS "$<TARGET_OBJECTS:DLA_OBJ>")
+# Not using add_subdirectory here because lapack-netlib already has its own CMakeLists.txt. Instead include a cmake script with the sources we want.
+include("${CMAKE_SOURCE_DIR}/cmake/lapack.cmake")
+add_library(LA_OBJ OBJECT ${LA_SOURCES})
+set_target_properties(LA_OBJ PROPERTIES COMPILE_FLAGS "${LAPACK_FFLAGS}")
+list(APPEND TARGET_OBJS "$<TARGET_OBJECTS:LA_OBJ>")
# add objects to the openblas lib
add_library(openblas ${TARGET_OBJS})
--- /dev/null
+# Sources for compiling lapack-netlib. Can't use CMakeLists.txt because lapack-netlib already has its own cmake files.\r
+\r
+set(ALLAUX\r
+ ilaenv.f ieeeck.f lsamen.f xerbla_array.f iparmq.f \r
+ ilaprec.f ilatrans.f ilauplo.f iladiag.f chla_transtype.f \r
+ ../INSTALL/ilaver.f ../INSTALL/slamch.f\r
+)\r
+\r
+set(DZLAUX\r
+ dbdsdc.f \r
+ dbdsqr.f ddisna.f dlabad.f dlacpy.f dladiv.f dlae2.f dlaebz.f \r
+ dlaed0.f dlaed1.f dlaed2.f dlaed3.f dlaed4.f dlaed5.f dlaed6.f \r
+ dlaed7.f dlaed8.f dlaed9.f dlaeda.f dlaev2.f dlagtf.f \r
+ dlagts.f dlamrg.f dlanst.f \r
+ dlapy2.f dlapy3.f dlarnv.f \r
+ dlarra.f dlarrb.f dlarrc.f dlarrd.f dlarre.f dlarrf.f dlarrj.f \r
+ dlarrk.f dlarrr.f dlaneg.f \r
+ dlartg.f dlaruv.f dlas2.f dlascl.f \r
+ dlasd0.f dlasd1.f dlasd2.f dlasd3.f dlasd4.f dlasd5.f dlasd6.f \r
+ dlasd7.f dlasd8.f dlasda.f dlasdq.f dlasdt.f \r
+ dlaset.f dlasq1.f dlasq2.f dlasq3.f dlasq4.f dlasq5.f dlasq6.f \r
+ dlasr.f dlasrt.f dlassq.f dlasv2.f dpttrf.f dstebz.f dstedc.f \r
+ dsteqr.f dsterf.f dlaisnan.f disnan.f \r
+ dlartgp.f dlartgs.f \r
+ ../INSTALL/dlamch.f ../INSTALL/dsecnd_${TIMER}.f\r
+)\r
+\r
+set(DLASRC\r
+ dgbbrd.f dgbcon.f dgbequ.f dgbrfs.f dgbsv.f \r
+ dgbsvx.f dgbtf2.f dgbtrf.f dgbtrs.f dgebak.f dgebal.f dgebd2.f \r
+ dgebrd.f dgecon.f dgeequ.f dgees.f dgeesx.f dgeev.f dgeevx.f \r
+ dgegs.f dgegv.f dgehd2.f dgehrd.f dgelq2.f dgelqf.f \r
+ dgels.f dgelsd.f dgelss.f dgelsx.f dgelsy.f dgeql2.f dgeqlf.f \r
+ dgeqp3.f dgeqpf.f dgeqr2.f dgeqr2p.f dgeqrf.f dgeqrfp.f dgerfs.f \r
+ dgerq2.f dgerqf.f dgesc2.f dgesdd.f dgesvd.f dgesvx.f \r
+ dgetc2.f dgetri.f \r
+ dggbak.f dggbal.f dgges.f dggesx.f dggev.f dggevx.f \r
+ dggglm.f dgghrd.f dgglse.f dggqrf.f \r
+ dggrqf.f dggsvd.f dggsvp.f dgtcon.f dgtrfs.f dgtsv.f \r
+ dgtsvx.f dgttrf.f dgttrs.f dgtts2.f dhgeqz.f \r
+ dhsein.f dhseqr.f dlabrd.f dlacon.f dlacn2.f \r
+ dlaein.f dlaexc.f dlag2.f dlags2.f dlagtm.f dlagv2.f dlahqr.f \r
+ dlahrd.f dlahr2.f dlaic1.f dlaln2.f dlals0.f dlalsa.f dlalsd.f \r
+ dlangb.f dlange.f dlangt.f dlanhs.f dlansb.f dlansp.f \r
+ dlansy.f dlantb.f dlantp.f dlantr.f dlanv2.f \r
+ dlapll.f dlapmt.f \r
+ dlaqgb.f dlaqge.f dlaqp2.f dlaqps.f dlaqsb.f dlaqsp.f dlaqsy.f \r
+ dlaqr0.f dlaqr1.f dlaqr2.f dlaqr3.f dlaqr4.f dlaqr5.f \r
+ dlaqtr.f dlar1v.f dlar2v.f iladlr.f iladlc.f \r
+ dlarf.f dlarfb.f dlarfg.f dlarfgp.f dlarft.f dlarfx.f \r
+ dlargv.f dlarrv.f dlartv.f \r
+ dlarz.f dlarzb.f dlarzt.f dlasy2.f dlasyf.f dlasyf_rook.f \r
+ dlatbs.f dlatdf.f dlatps.f dlatrd.f dlatrs.f dlatrz.f dlatzm.f \r
+ dopgtr.f dopmtr.f dorg2l.f dorg2r.f \r
+ dorgbr.f dorghr.f dorgl2.f dorglq.f dorgql.f dorgqr.f dorgr2.f \r
+ dorgrq.f dorgtr.f dorm2l.f dorm2r.f \r
+ dormbr.f dormhr.f dorml2.f dormlq.f dormql.f dormqr.f dormr2.f \r
+ dormr3.f dormrq.f dormrz.f dormtr.f dpbcon.f dpbequ.f dpbrfs.f \r
+ dpbstf.f dpbsv.f dpbsvx.f \r
+ dpbtf2.f dpbtrf.f dpbtrs.f dpocon.f dpoequ.f dporfs.f dposv.f \r
+ dposvx.f dpotrs.f dpstrf.f dpstf2.f \r
+ dppcon.f dppequ.f \r
+ dpprfs.f dppsv.f dppsvx.f dpptrf.f dpptri.f dpptrs.f dptcon.f \r
+ dpteqr.f dptrfs.f dptsv.f dptsvx.f dpttrs.f dptts2.f drscl.f \r
+ dsbev.f dsbevd.f dsbevx.f dsbgst.f dsbgv.f dsbgvd.f dsbgvx.f \r
+ dsbtrd.f dspcon.f dspev.f dspevd.f dspevx.f dspgst.f \r
+ dspgv.f dspgvd.f dspgvx.f dsprfs.f dspsv.f dspsvx.f dsptrd.f \r
+ dsptrf.f dsptri.f dsptrs.f dstegr.f dstein.f dstev.f dstevd.f dstevr.f \r
+ dstevx.f \r
+ dsycon.f dsyev.f dsyevd.f dsyevr.f \r
+ dsyevx.f dsygs2.f dsygst.f dsygv.f dsygvd.f dsygvx.f dsyrfs.f \r
+ dsysv.f dsysvx.f \r
+ dsytd2.f dsytf2.f dsytrd.f dsytrf.f dsytri.f dsytri2.f dsytri2x.f \r
+ dsyswapr.f dsytrs.f dsytrs2.f dsyconv.f \r
+ dsytf2_rook.f dsytrf_rook.f dsytrs_rook.f \r
+ dsytri_rook.f dsycon_rook.f dsysv_rook.f \r
+ dtbcon.f dtbrfs.f dtbtrs.f dtgevc.f dtgex2.f dtgexc.f dtgsen.f \r
+ dtgsja.f dtgsna.f dtgsy2.f dtgsyl.f dtpcon.f dtprfs.f dtptri.f \r
+ dtptrs.f \r
+ dtrcon.f dtrevc.f dtrexc.f dtrrfs.f dtrsen.f dtrsna.f dtrsyl.f \r
+ dtrtrs.f dtzrqf.f dtzrzf.f dstemr.f \r
+ dsgesv.f dsposv.f dlag2s.f slag2d.f dlat2s.f \r
+ dlansf.f dpftrf.f dpftri.f dpftrs.f dsfrk.f dtfsm.f dtftri.f dtfttp.f \r
+ dtfttr.f dtpttf.f dtpttr.f dtrttf.f dtrttp.f \r
+ dgejsv.f dgesvj.f dgsvj0.f dgsvj1.f \r
+ dgeequb.f dsyequb.f dpoequb.f dgbequb.f \r
+ dbbcsd.f dlapmr.f dorbdb.f dorbdb1.f dorbdb2.f dorbdb3.f dorbdb4.f \r
+ dorbdb5.f dorbdb6.f dorcsd.f dorcsd2by1.f \r
+ dgeqrt.f dgeqrt2.f dgeqrt3.f dgemqrt.f \r
+ dtpqrt.f dtpqrt2.f dtpmqrt.f dtprfb.f dpotri.f\r
+)\r
+\r
+set(LA_REL_SRC ${ALLAUX} ${DZLAUX} ${DLASRC})\r
+\r
+# add lapack-netlib folder to the sources\r
+set(LA_SOURCES "")\r
+foreach (LA_FILE ${LA_REL_SRC})\r
+ list(APPEND LA_SOURCES "${NETLIB_LAPACK_DIR}/SRC/${LA_FILE}")\r
+endforeach ()\r
+\r