# v3p/netlib/CMakeLists.txt PROJECT( netlib C ) # # Begin NOTE: # # The following lines should be removed because the # "Triangle" program by Jonathan Richard Shewchuk is # distributed under a restrictive license that is # incompatible with the BDS license used by ITK. # # SET(netlib_sources # # The "Triangle" program of Jonathan Richard Shewchuk # triangle.c triangle.h # ) # #ADD_LIBRARY( netlib ${netlib_sources} ) #IF(UNIX) # TARGET_LINK_LIBRARIES( netlib m ) #ENDIF(UNIX) # # End NOTE. # IF(BUILD_TESTING) SUBDIRS(tests) ENDIF(BUILD_TESTING) # Allow sources in subdirectories to see the include files. INCLUDE_DIRECTORIES(${netlib_SOURCE_DIR}) # Inform header files they are being included from a source inside the # v3p_netlib library. ADD_DEFINITIONS(-DV3P_NETLIB_SRC) # List sources for each library component. SET(V3P_NETLIB_base_SOURCES v3p_f2c.h v3p_f2c_mangle.h v3p_f2c_original.h v3p_f2c_unmangle.h v3p_netlib.h v3p_netlib_mangle.h v3p_netlib_prototypes.h v3p_netlib_unmangle.h v3p_netlib_init.c ) SET(V3P_NETLIB_libf2c_SOURCES libf2c/f77_aloc.c libf2c/exit_.c libf2c/c_abs.c libf2c/c_div.c libf2c/c_sqrt.c libf2c/cabs.c libf2c/d_cnjg.c libf2c/d_imag.c libf2c/d_lg10.c libf2c/d_sign.c libf2c/i_dnnt.c libf2c/pow_dd.c libf2c/pow_di.c libf2c/pow_ii.c libf2c/pow_ri.c libf2c/r_cnjg.c libf2c/r_imag.c libf2c/r_sign.c libf2c/s_cat.c libf2c/s_cmp.c libf2c/s_copy.c libf2c/sig_die.c libf2c/z_abs.c libf2c/z_div.c libf2c/z_sqrt.c ) SET(V3P_NETLIB_blas_SOURCES blas/caxpy.c blas/caxpy.h blas/ccopy.c blas/ccopy.h blas/cdotc.c blas/cdotc.h blas/cscal.c blas/cscal.h blas/csrot.c blas/csrot.h blas/cswap.c blas/cswap.h blas/dasum.c blas/dasum.h blas/daxpy.c blas/daxpy.h blas/dcabs1.c blas/dcabs1.h blas/dcopy.c blas/dcopy.h blas/ddot.c blas/ddot.h blas/dgemm.c blas/dgemm.h blas/dgemv.c blas/dgemv.h blas/dger.c blas/dger.h blas/dlamch.c blas/dlamch.h blas/dnrm2.c blas/dnrm2.h blas/drot.c blas/drot.h blas/drotg.c blas/drotg.h blas/dscal.c blas/dscal.h blas/dswap.c blas/dswap.h blas/dtrmm.c blas/dtrmm.h blas/dtrmv.c blas/dtrmv.h blas/dtrsv.c blas/dtrsv.h blas/dzasum.c blas/dzasum.h blas/dznrm2.c blas/dznrm2.h blas/idamax.c blas/idamax.h blas/isamax.c blas/isamax.h blas/izamax.c blas/izamax.h blas/saxpy.c blas/saxpy.h blas/scnrm2.c blas/scnrm2.h blas/scopy.c blas/scopy.h blas/sdot.c blas/sdot.h blas/sgemv.c blas/sgemv.h blas/sger.c blas/sger.h blas/slamch.c blas/slamch.h blas/snrm2.c blas/snrm2.h blas/srot.c blas/srot.h blas/srotg.c blas/srotg.h blas/sscal.c blas/sscal.h blas/sswap.c blas/sswap.h blas/xerbla.c blas/xerbla.h blas/zaxpy.c blas/zaxpy.h blas/zcopy.c blas/zcopy.h blas/zdotc.c blas/zdotc.h blas/zdotu.c blas/zdotu.h blas/zdrot.c blas/zdrot.h blas/zdscal.c blas/zdscal.h blas/zgemm.c blas/zgemm.h blas/zgemv.c blas/zgemv.h blas/zgerc.c blas/zgerc.h blas/zscal.c blas/zscal.h blas/zswap.c blas/zswap.h blas/ztrmm.c blas/ztrmm.h blas/ztrmv.c blas/ztrmv.h blas/ztrsv.c blas/ztrsv.h ) SET(V3P_NETLIB_linpack_SOURCES linpack/sqrdc.c linpack/sqrdc.h linpack/dqrdc.c linpack/dqrdc.h linpack/cqrdc.c linpack/cqrdc.h linpack/zqrdc.c linpack/zqrdc.h linpack/sqrsl.c linpack/sqrsl.h linpack/dqrsl.c linpack/dqrsl.h linpack/cqrsl.c linpack/cqrsl.h linpack/zqrsl.c linpack/zqrsl.h linpack/csvdc.c linpack/csvdc.h linpack/dsvdc.c linpack/dsvdc.h linpack/ssvdc.c linpack/ssvdc.h linpack/zsvdc.c linpack/zsvdc.h linpack/dpoco.c linpack/dpoco.h linpack/dpodi.c linpack/dpodi.h linpack/dpofa.c linpack/dpofa.h linpack/dposl.c linpack/dposl.h ) SET(V3P_NETLIB_temperton_SOURCES temperton/dgpfa.c temperton/dgpfa.h temperton/dgpfa2f.c temperton/dgpfa2f.h temperton/dgpfa3f.c temperton/dgpfa3f.h temperton/dgpfa5f.c temperton/dgpfa5f.h temperton/gpfa.c temperton/gpfa.h temperton/gpfa2f.c temperton/gpfa2f.h temperton/gpfa3f.c temperton/gpfa3f.h temperton/gpfa5f.c temperton/gpfa5f.h temperton/setdgpfa.c temperton/setdgpfa.h temperton/setgpfa.c temperton/setgpfa.h ) SET(V3P_NETLIB_eispack_SOURCES eispack/balanc.c eispack/balanc.h eispack/balbak.c eispack/balbak.h eispack/cdiv.c eispack/cdiv.h eispack/elmhes.c eispack/elmhes.h eispack/eltran.c eispack/eltran.h eispack/epslon.c eispack/epslon.h eispack/hqr.c eispack/hqr.h eispack/hqr2.c eispack/hqr2.h eispack/otqlrat.c eispack/otqlrat.h eispack/pythag.c eispack/pythag.h eispack/rebak.c eispack/rebak.h eispack/reduc.c eispack/reduc.h eispack/rg.c eispack/rg.h eispack/rs.c eispack/rs.h eispack/rsg.c eispack/rsg.h eispack/tql1.c eispack/tql1.h eispack/tql2.c eispack/tql2.h eispack/tred1.c eispack/tred1.h eispack/tred2.c eispack/tred2.h ) SET(V3P_NETLIB_laso_SOURCES laso/dlabax.c laso/dlabax.h laso/dlabcm.c laso/dlabcm.h laso/dlabfc.c laso/dlabfc.h laso/dlaeig.c laso/dlaeig.h laso/dlager.c laso/dlager.h laso/dlaran.c laso/dlaran.h laso/dmvpc.c laso/dmvpc.h laso/dnlaso.c laso/dnlaso.h laso/dnppla.c laso/dnppla.h laso/dortqr.c laso/dortqr.h laso/dvsort.c laso/dvsort.h laso/urand.c laso/urand.h ) SET(V3P_NETLIB_lapack_SOURCES lapack/complex16/zgebak.c lapack/complex16/zgebak.h lapack/complex16/zgebal.c lapack/complex16/zgebal.h lapack/complex16/zgeev.c lapack/complex16/zgeev.h lapack/complex16/zgehd2.c lapack/complex16/zgehd2.h lapack/complex16/zgehrd.c lapack/complex16/zgehrd.h lapack/complex16/zhseqr.c lapack/complex16/zhseqr.h lapack/complex16/zlacgv.c lapack/complex16/zlacgv.h lapack/complex16/zlacpy.c lapack/complex16/zlacpy.h lapack/complex16/zladiv.c lapack/complex16/zladiv.h lapack/complex16/zlahqr.c lapack/complex16/zlahqr.h lapack/complex16/zlahrd.c lapack/complex16/zlahrd.h lapack/complex16/zlange.c lapack/complex16/zlange.h lapack/complex16/zlanhs.c lapack/complex16/zlanhs.h lapack/complex16/zlarf.c lapack/complex16/zlarf.h lapack/complex16/zlarfb.c lapack/complex16/zlarfb.h lapack/complex16/zlarfg.c lapack/complex16/zlarfg.h lapack/complex16/zlarft.c lapack/complex16/zlarft.h lapack/complex16/zlarfx.c lapack/complex16/zlarfx.h lapack/complex16/zlascl.c lapack/complex16/zlascl.h lapack/complex16/zlaset.c lapack/complex16/zlaset.h lapack/complex16/zlassq.c lapack/complex16/zlassq.h lapack/complex16/zlatrs.c lapack/complex16/zlatrs.h lapack/complex16/ztrevc.c lapack/complex16/ztrevc.h lapack/complex16/zung2r.c lapack/complex16/zung2r.h lapack/complex16/zunghr.c lapack/complex16/zunghr.h lapack/complex16/zungqr.c lapack/complex16/zungqr.h lapack/double/dgecon.c lapack/double/dgecon.h lapack/double/dgeqr2.c lapack/double/dgeqr2.h lapack/double/dgeqrf.c lapack/double/dgeqrf.h lapack/double/dgerq2.c lapack/double/dgerq2.h lapack/double/dgesc2.c lapack/double/dgesc2.h lapack/double/dgetc2.c lapack/double/dgetc2.h lapack/double/dggbak.c lapack/double/dggbak.h lapack/double/dggbal.c lapack/double/dggbal.h lapack/double/dgges.c lapack/double/dgges.h lapack/double/dgghrd.c lapack/double/dgghrd.h lapack/double/dhgeqz.c lapack/double/dhgeqz.h lapack/double/dlabad.c lapack/double/dlabad.h lapack/double/dlacon.c lapack/double/dlacon.h lapack/double/dlacpy.c lapack/double/dlacpy.h lapack/double/dladiv.c lapack/double/dladiv.h lapack/double/dlaev2.c lapack/double/dlaev2.h lapack/double/dlag2.c lapack/double/dlag2.h lapack/double/dlagv2.c lapack/double/dlagv2.h lapack/double/dlange.c lapack/double/dlange.h lapack/double/dlanhs.c lapack/double/dlanhs.h lapack/double/dlapy2.c lapack/double/dlapy2.h lapack/double/dlapy3.c lapack/double/dlapy3.h lapack/double/dlarf.c lapack/double/dlarf.h lapack/double/dlarfb.c lapack/double/dlarfb.h lapack/double/dlarfg.c lapack/double/dlarfg.h lapack/double/dlarft.c lapack/double/dlarft.h lapack/double/dlartg.c lapack/double/dlartg.h lapack/double/dlascl.c lapack/double/dlascl.h lapack/double/dlaset.c lapack/double/dlaset.h lapack/double/dlassq.c lapack/double/dlassq.h lapack/double/dlasv2.c lapack/double/dlasv2.h lapack/double/dlaswp.c lapack/double/dlaswp.h lapack/double/dlatdf.c lapack/double/dlatdf.h lapack/double/dlatrs.c lapack/double/dlatrs.h lapack/double/dorg2r.c lapack/double/dorg2r.h lapack/double/dorgqr.c lapack/double/dorgqr.h lapack/double/dorgr2.c lapack/double/dorgr2.h lapack/double/dorm2r.c lapack/double/dorm2r.h lapack/double/dormqr.c lapack/double/dormqr.h lapack/double/dormr2.c lapack/double/dormr2.h lapack/double/drscl.c lapack/double/drscl.h lapack/double/dsptrf.c lapack/double/dsptrf.h lapack/double/dsptrs.c lapack/double/dsptrs.h lapack/double/dspr.c lapack/double/dspr.h lapack/double/dtgex2.c lapack/double/dtgex2.h lapack/double/dtgexc.c lapack/double/dtgexc.h lapack/double/dtgsen.c lapack/double/dtgsen.h lapack/double/dtgsy2.c lapack/double/dtgsy2.h lapack/double/dtgsyl.c lapack/double/dtgsyl.h lapack/single/sgeqpf.c lapack/single/sgeqpf.h lapack/single/sgeqr2.c lapack/single/sgeqr2.h lapack/single/sgerq2.c lapack/single/sgerq2.h lapack/single/sggsvd.c lapack/single/sggsvd.h lapack/single/sggsvp.c lapack/single/sggsvp.h lapack/single/slacpy.c lapack/single/slacpy.h lapack/single/slags2.c lapack/single/slags2.h lapack/single/slange.c lapack/single/slange.h lapack/single/slapll.c lapack/single/slapll.h lapack/single/slapmt.c lapack/single/slapmt.h lapack/single/slapy2.c lapack/single/slapy2.h lapack/single/slarf.c lapack/single/slarf.h lapack/single/slarfg.c lapack/single/slarfg.h lapack/single/slartg.c lapack/single/slartg.h lapack/single/slas2.c lapack/single/slas2.h lapack/single/slaset.c lapack/single/slaset.h lapack/single/slassq.c lapack/single/slassq.h lapack/single/slasv2.c lapack/single/slasv2.h lapack/single/sorg2r.c lapack/single/sorg2r.h lapack/single/sorm2r.c lapack/single/sorm2r.h lapack/single/sormr2.c lapack/single/sormr2.h lapack/single/stgsja.c lapack/single/stgsja.h lapack/util/ieeeck.c lapack/util/ieeeck.h lapack/util/ilaenv.c lapack/util/ilaenv.h lapack/util/lsame.c lapack/util/lsame.h ) SET(V3P_NETLIB_napack_SOURCES napack/cg.c napack/cg.h ) SET(V3P_NETLIB_minpack_SOURCES minpack/dpmpar.c minpack/dpmpar.h minpack/enorm.c minpack/enorm.h minpack/fdjac2.c minpack/fdjac2.h minpack/lmder.c minpack/lmder.h minpack/lmder1.c minpack/lmder1.h minpack/lmdif.c minpack/lmdif.h minpack/lmpar.c minpack/lmpar.h minpack/qrfac.c minpack/qrfac.h minpack/qrsolv.c minpack/qrsolv.h ) SET(V3P_NETLIB_opt_SOURCES opt/lbfgs.c opt/lbfgs.h opt/lbfgsb.c opt/lbfgsb.h ) SET(V3P_NETLIB_linalg_SOURCES ) SET(V3P_NETLIB_datapac_SOURCES datapac/camsun.c datapac/camsun.h ) SET(V3P_NETLIB_mathews_SOURCES mathews/simpson.c mathews/simpson.h mathews/trapezod.c mathews/trapezod.h mathews/adaquad.c mathews/adaquad.h ) SET(V3P_NETLIB_sparse_SOURCES sparse/spAllocate.c sparse/spBuild.c sparse/spFactor.c sparse/spSolve.c sparse/spUtils.c sparse/spOutput.c sparse/spConfig.h sparse/spDefs.h sparse/spMatrix.h ) # Collect full source list. SET(v3p_netlib_sources ${V3P_NETLIB_base_SOURCES} ${V3P_NETLIB_libf2c_SOURCES} ${V3P_NETLIB_blas_SOURCES} ${V3P_NETLIB_linpack_SOURCES} ${V3P_NETLIB_temperton_SOURCES} ${V3P_NETLIB_eispack_SOURCES} ${V3P_NETLIB_laso_SOURCES} ${V3P_NETLIB_lapack_SOURCES} ${V3P_NETLIB_napack_SOURCES} ${V3P_NETLIB_minpack_SOURCES} ${V3P_NETLIB_opt_SOURCES} ${V3P_NETLIB_linalg_SOURCES} ${V3P_NETLIB_datapac_SOURCES} ${V3P_NETLIB_mathews_SOURCES} ${V3P_NETLIB_sparse_SOURCES} ) # Adjust the compiler flags to avoid problems with f2c-generated code. IF(CMAKE_COMPILER_IS_GNUCC) # Hide warnings in f2c-generated code. #SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -w") # CMake versions before 2.4 did not put the source-file-specific flags # after the directory-level flags. Remove optimization flags from the # CMAKE_C_FLAGS* variables so they can be overridden. IF("${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION}" LESS 2.4) FOREACH(c "" "_DEBUG" "_RELEASE" "_MINSIZEREL" "_RELWITHDEBINFO") STRING(REGEX REPLACE "-O[^ ]*( |$)" "" CMAKE_C_FLAGS${c} "${CMAKE_C_FLAGS${c}}") ENDFOREACH(c) ENDIF("${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION}" LESS 2.4) # Disable buggy optimization on some source files. #SET_SOURCE_FILES_PROPERTIES( # temperton/gpfa5f.c # temperton/dgpfa5f.c # laso/dnlaso.c # PROPERTIES COMPILE_FLAGS -O0 # ) # Adjust optimization of floating point computation for some sources. # See comments in the sources for details. SET_SOURCE_FILES_PROPERTIES( linpack/ssvdc.c linpack/dsvdc.c PROPERTIES COMPILE_FLAGS -ffloat-store ) # Disable global optimizations for some source files. # See comments in the sources for details. SET_SOURCE_FILES_PROPERTIES( lapack/complex16/zlarfx.c PROPERTIES COMPILE_FLAGS -fno-gcse ) # Adjust optimization of floating point computation and disable global # optimizations for some sources. # See comments in the sources for details. SET_SOURCE_FILES_PROPERTIES( blas/slamch.c blas/dlamch.c PROPERTIES COMPILE_FLAGS "-fno-gcse -ffloat-store" ) ENDIF(CMAKE_COMPILER_IS_GNUCC) IF(CMAKE_C_COMPILER MATCHES "icc") # Adjust optimization of floating point computation for some sources. SET_SOURCE_FILES_PROPERTIES( blas/slamch.c blas/dlamch.c # PROPERTIES COMPILE_FLAGS -O0 PROPERTIES COMPILE_FLAGS -fp_port ) ENDIF(CMAKE_C_COMPILER MATCHES "icc") # Create a netlib library with mangled symbols. ADD_LIBRARY(itkv3p_netlib ${v3p_netlib_sources}) IF(UNIX) TARGET_LINK_LIBRARIES( itkv3p_netlib m ) ENDIF(UNIX) IF(ITK_LIBRARY_PROPERTIES) SET_TARGET_PROPERTIES(itkv3p_netlib PROPERTIES ${ITK_LIBRARY_PROPERTIES}) ENDIF(ITK_LIBRARY_PROPERTIES) IF(NOT VXL_INSTALL_NO_LIBRARIES) INSTALL(TARGETS itkv3p_netlib RUNTIME DESTINATION ${VXL_INSTALL_BIN_DIR_CM24} COMPONENT RuntimeLibraries LIBRARY DESTINATION ${VXL_INSTALL_LIB_DIR_CM24} COMPONENT RuntimeLibraries ARCHIVE DESTINATION ${VXL_INSTALL_LIB_DIR_CM24} COMPONENT Development) ENDIF(NOT VXL_INSTALL_NO_LIBRARIES) IF(NOT VXL_INSTALL_NO_DEVELOPMENT) INSTALL_NOBASE_HEADER_FILES(${VXL_INSTALL_ROOT}/v3p/netlib ${v3p_netlib_sources}) ENDIF(NOT VXL_INSTALL_NO_DEVELOPMENT) SUBDIRS(linalg)