hsignal 0.2.6.1 → 0.2.7
raw patch · 3 files changed
+29/−160 lines, 3 filesPVP ok
version bump matches the API change (PVP)
API changes (from Hackage documentation)
Files
- CHANGES +3/−0
- Config.hs +0/−141
- hsignal.cabal +26/−19
CHANGES view
@@ -127,3 +127,6 @@ 0.2.6.1: added warning about data conversion to loadBDFRaw++0.2.7:+ Update build configuration : copied from hmatrix
− Config.hs
@@ -1,141 +0,0 @@-{-- GSL and LAPACK may require auxiliary libraries which depend on OS,- distribution, and implementation. This script tries to to find out- the correct link command for your system.- Suggestions and contributions are welcome.-- By default we try to link -lgsl -llapack. This works in ubuntu/debian,- both with and without ATLAS.- If this fails we try different sets of additional libraries which are- known to work in some systems.-- The desired libraries can also be explicitly given by the user using cabal- flags (e.g., -fmkl, -faccelerate) or --configure-option=link:lib1,lib2,lib3,...---}--module Config(config) where--import System.Process-import System.Exit-import System.Environment-import System.Directory(createDirectoryIfMissing)-import Data.List(isPrefixOf, intercalate)-import Distribution.Simple.LocalBuildInfo-import Distribution.Simple.Configure-import Distribution.PackageDescription---- possible additional dependencies for the desired libs (by default gsl lapack)--opts = [ "" -- Ubuntu/Debian- , "blas"- , "blas cblas"- , "cblas"- , "gslcblas"- , "blas gslcblas"- , "f77blas"- , "f77blas cblas atlas gcc_s" -- Arch Linux (older version of atlas-lapack)- , "blas gslcblas gfortran" -- Arch Linux with normal blas and lapack- ]---- compile a simple program with symbols from GSL and LAPACK with the given libs-testprog bInfo buildInfo libs fmks =- "echo \"#include <gsl/gsl_sf_gamma.h>\nint main(){zgesvd_(); gsl_sf_gamma(5);}\""- ++" > " ++ (buildDir bInfo) ++ "/dummy.c; gcc "- ++ (join_ $ ccOptions buildInfo) ++ " "- ++ (join_ $ cppOptions buildInfo) ++ " "- ++ (join_ $ map ("-I"++) $ includeDirs buildInfo) ++ " " - ++ (buildDir bInfo) ++ "/dummy.c -o "- ++ (buildDir bInfo) ++ "/dummy "- ++ (join_ $ map ("-L"++) $ extraLibDirs buildInfo) ++ " "- ++ (prepend "-l" $ libs) ++ " "- ++ (prepend "-framework " fmks) ++ " > /dev/null 2> /dev/null"--join_ = intercalate " "-prepend x = unwords . map (x++) . words--check bInfo buildInfo libs fmks = (ExitSuccess ==) `fmap` system (testprog bInfo buildInfo libs fmks)---- simple test for GSL-gsl bInfo buildInfo = "echo \"#include <gsl/gsl_sf_gamma.h>\nint main(){gsl_sf_gamma(5);}\""- ++" > " ++ (buildDir bInfo) ++ "/dummy.c; gcc "- ++ (join_ $ ccOptions buildInfo) ++ " "- ++ (join_ $ cppOptions buildInfo) ++ " "- ++ (join_ $ map ("-I"++) $ includeDirs buildInfo) ++ " " - ++ (buildDir bInfo) ++ "/dummy.c -o "- ++ (buildDir bInfo) ++ "/dummy "- ++ (join_ $ map ("-L"++) $ extraLibDirs buildInfo) ++ " -lgsl -lgslcblas"- ++ " > /dev/null 2> /dev/null"---- test for gsl >= 1.12-gsl112 bInfo buildInfo =- "echo \"#include <gsl/gsl_sf_exp.h>\nint main(){gsl_sf_exprel_n_CF_e(1,1,0);}\""- ++" > " ++ (buildDir bInfo) ++ "/dummy.c; gcc " - ++ (buildDir bInfo) ++ "/dummy.c "- ++ (join_ $ ccOptions buildInfo) ++ " "- ++ (join_ $ cppOptions buildInfo) ++ " "- ++ (join_ $ map ("-I"++) $ includeDirs buildInfo)- ++" -o " ++ (buildDir bInfo) ++ "/dummy "- ++ (join_ $ map ("-L"++) $ extraLibDirs buildInfo) ++ " -lgsl -lgslcblas"- ++ " > /dev/null 2> /dev/null"---checkCommand c = (ExitSuccess ==) `fmap` system c---- test different configurations until the first one works-try _ _ _ _ [] = return Nothing-try l i b f (opt:rest) = do- ok <- check l i (b ++ " " ++ opt) f- if ok then return (Just opt)- else try l i b f rest---- read --configure-option=link:lib1,lib2,lib3,etc-linkop = "link:"-getUserLink = concatMap (g . drop (length linkop)) . filter (isPrefixOf linkop)- where g = map cs- cs ',' = ' '- cs x = x--config :: LocalBuildInfo -> IO HookedBuildInfo- -config bInfo = do- putStr "Checking foreign libraries..."- args <- getArgs-- let Just lib = library . localPkgDescr $ bInfo- buildInfo = libBuildInfo lib- base = unwords . extraLibs $ buildInfo- fwks = unwords . frameworks $ buildInfo- auxpref = getUserLink args-- -- We extract the desired libs from hmatrix.cabal (using a cabal flags)- -- and from a posible --configure-option=link:lib1,lib2,lib3- -- by default the desired libs are gsl lapack.-- let pref = if null (words (base ++ " " ++ auxpref)) then "gsl lapack" else auxpref- fullOpts = map ((pref++" ")++) opts-- -- create the build directory (used for tmp files) if necessary- createDirectoryIfMissing True $ buildDir bInfo- - r <- try bInfo buildInfo base fwks fullOpts-- case r of- Nothing -> do- putStrLn " FAIL"- g <- checkCommand $ gsl bInfo buildInfo- if g- then putStrLn " *** Sorry, I can't link LAPACK."- else putStrLn " *** Sorry, I can't link GSL."- putStrLn " *** Please make sure that the appropriate -dev packages are installed."- putStrLn " *** You can also specify the required libraries using"- putStrLn " *** cabal install hmatrix --configure-option=link:lib1,lib2,lib3,etc." - return (Just emptyBuildInfo { buildable = False }, [])- Just ops -> do- putStrLn $ " OK " ++ ops- g <- checkCommand $ gsl112 bInfo buildInfo- let hbi = if g- then emptyBuildInfo { extraLibs = words ops}- else emptyBuildInfo { extraLibs = words ops, ccOptions = ["-DGSL110"]}- return (Just hbi, [])-
hsignal.cabal view
@@ -1,8 +1,8 @@ Name: hsignal-Version: 0.2.6.1+Version: 0.2.7 License: BSD3 License-file: LICENSE-Copyright: (c) A.V.H. McPhail 2010, 2011, 2014+Copyright: (c) A.V.H. McPhail 2010, 2011, 2014, 2105 Author: Vivian McPhail Maintainer: haskell.vivian.mcphail <at> gmail <dot> com Stability: provisional@@ -17,17 +17,17 @@ . Feature requests, suggestions, and bug fixes welcome. Category: Math-tested-with: GHC ==7.8.1+tested-with: GHC ==7.10.1 cabal-version: >=1.8 -build-type: Custom+build-type: Simple -extra-source-files: Config.hs README INSTALL CHANGES+extra-source-files: README INSTALL CHANGES extra-tmp-files: hsignal.buildinfo -flag mkl- description: Link with Intel's MKL optimized libraries.+flag openblas+ description: Link with OpenBLAS (https://github.com/xianyi/OpenBLAS) optimized libraries. default: False library@@ -59,27 +59,34 @@ -fno-warn-orphans -fno-warn-unused-binds + cc-options: -O4 -msse2 -Wall - if flag(mkl)- if arch(x86_64)- extra-libraries: gsl mkl_lapack mkl_intel_lp64 mkl_sequential mkl_core- else- extra-libraries: gsl mkl_lapack mkl_intel mkl_sequential mkl_core+ if flag(openblas)+ extra-lib-dirs: /usr/lib/openblas/lib + extra-libraries: openblas+ else + extra-libraries: blas lapack if os(OSX) extra-lib-dirs: /opt/local/lib/ include-dirs: /opt/local/include/- extra-libraries: gsl+ extra-lib-dirs: /usr/local/lib/+ include-dirs: /usr/local/include/+ if arch(i386)+ cc-options: -arch i386 frameworks: Accelerate - if os(windows)- extra-libraries: gsl-0 blas lapack+ if os(freebsd)+ extra-lib-dirs: /usr/local/lib+ include-dirs: /usr/local/include+ extra-libraries: blas lapack gfortran --- The extra-libraries required for GSL--- should now be automatically detected by configure(.hs)+ if os(windows)+ extra-libraries: blas lapack - extra-libraries:- extra-lib-dirs:+ if os(linux)+ if arch(x86_64)+ cc-options: -fPIC source-repository head type: git