FILE(GLOB CBLAS_SRCS *.c ) # # Window does not support pthreads so use the pthreads # wrapper to windows threads # IF( NOT WIN32 ) REMOVE( CBLAS_SRCS ${PROJECT_SOURCE_DIR}/src/cblas/pthread.c ) ENDIF( NOT WIN32 ) INCLUDE_DIRECTORIES( ${PROJECT_SOURCE_DIR}/include ${PROJECT_SOURCE_DIR}/include/lapack/include ${ATLAS_INCLUDE_DIR}/${ATLAS_ARCH} ${ATLAS_INCLUDE_DIR} ) IF(APPLE) SET( LIB_G2C ${PROJECT_SOURCE_DIR}/libg2c.a ) ELSE(APPLE) SET( LIB_G2C g2c ) ENDIF(APPLE) # # On multiprocessor systems ATLAS builds two blas libraries one for # single threaded and multi-threaded library. # On single processor systems, ATLAS only builds the single threaded BLAS # library. On mulitprocessors we include ATLAS's multi-threaded BLAS # IF( SINGLE_PROCESSOR ) SET( ATLAS_F77_BLAS libf77blas ) SET( ATLAS_C_BLAS libcblas ) ELSE( SINGLE_PROCESSOR ) SET( ATLAS_F77_BLAS libptf77blas ) SET( ATLAS_C_BLAS libptcblas ) ENDIF( SINGLE_PROCESSOR ) IF(WIN32) ADD_LIBRARY(SimTKblas SHARED ${CBLAS_SRCS} ${PROJECT_SOURCE_DIR}/src/cblas/libSimTKblas.def ) ELSE(WIN32) ADD_LIBRARY(SimTKblas SHARED ${CBLAS_SRCS} ) ENDIF(WIN32) # # Include the entire ATLAS built libs otherwise cmake will generate a library that depends # shares the ATLAS libraries # SET_TARGET_PROPERTIES( SimTKblas PROPERTIES LINK_FLAGS "-Wl,--whole-archive ${ATLAS_LIB_DIR}/libatlas.a ${ATLAS_LIB_DIR}/${ATLAS_C_BLAS}.a ${ATLAS_LIB_DIR}/${ATLAS_F77_BLAS}.a -Wl,--no-whole-archive" ) TARGET_LINK_LIBRARIES( SimTKblas ${LIB_G2C} ) # # If make is used we need to generarte the .lib for the dll # IF( WIN32 ) GET_FILENAME_COMPONENT( mname ${CMAKE_BUILD_TOOL} NAME_WE ) IF( mname MATCHES "make$" ) ADD_CUSTOM_TARGET( blas_dot_lib ALL lib /DEF:${PROJECT_SOURCE_DIR}/src/cblas/libSimTKblas.def /MACHINE:Ix86 /OUT:${LIBRARY_OUTPUT_PATH}/libSimTKblas.lib) ENDIF( mname MATCHES "make$" ) ENDIF( WIN32 )