packages feed

shake-language-c 0.8.6 → 0.9.0

raw patch · 4 files changed

+33/−23 lines, 4 filesPVP ok

version bump matches the API change (PVP)

API changes (from Hackage documentation)

- Development.Shake.Language.C.Target.Android: toolChain :: FilePath -> Version -> (ToolChainVariant, Version) -> Target -> ToolChain
+ Development.Shake.Language.C.Target.Android: toolChain :: FilePath -> Version -> ToolChainVariant -> Target -> ToolChain

Files

CHANGELOG.md view
@@ -1,5 +1,9 @@ # Changelog for shake-language-c +## v0.9.0++* Add support for the Android *arm64-v8a* target architecture and drop support for specifying the toolchain version; this API breaking change requires a minimum Android NDK revision 11c+ ## v0.8.6  * Fix Windows host target
shake-language-c.cabal view
@@ -13,14 +13,14 @@ -- limitations under the License.  Name:         shake-language-c-Version:      0.8.6+Version:      0.9.0 Synopsis:     Utilities for cross-compiling with Shake Description:  This library provides <http://hackage.haskell.org/package/shake Shake> utilities for cross-compiling @C@, @C++@ and @ObjC@ code for various target platforms. Currently supported target platforms are Android, iOS, Linux, MacOS X, Windows\/MinGW and Google Portable Native Client (PNaCl). Supported host platforms are MacOS X, Linux and Windows. Category:     Development License:      Apache-2.0 License-File: LICENSE -Copyright:    Copyright (c) 2012-2014 Samplecount S.L.+Copyright:    Copyright (c) 2012-2016 Samplecount S.L. Homepage:     https://github.com/samplecount/shake-language-c Bug-Reports:  https://github.com/samplecount/shake-language-c/issues Maintainer:   stefan@samplecount.com
src/Development/Shake/Language/C/Host/Windows.hs view
@@ -1,4 +1,4 @@--- Copyright 2012-2014 Samplecount S.L.+-- Copyright 2012-2016 Samplecount S.L. -- -- Licensed under the Apache License, Version 2.0 (the "License"); -- you may not use this file except in compliance with the License.
src/Development/Shake/Language/C/Target/Android.hs view
@@ -1,4 +1,4 @@--- Copyright 2012-2013 Samplecount S.L.+-- Copyright 2012-2016 Samplecount S.L. -- -- Licensed under the Apache License, Version 2.0 (the "License"); -- you may not use this file except in compliance with the License.@@ -18,6 +18,8 @@ This module provides toolchain definitions and utilities for targeting Android. See "Development.Shake.Language.C.Rules" for examples of how to use a target toolchain.++The minimum required Android NDK revision is 11c. -} module Development.Shake.Language.C.Target.Android (     target@@ -45,6 +47,7 @@ toolChainPrefix x =     case targetArch x of         X86 _ -> "x86-"+        Arm Arm64 -> "aarch64-linux-android-"         Arm _ -> "arm-linux-androideabi-"         arch  -> unsupportedArch arch @@ -85,9 +88,10 @@               </> "platforms"               </> "android-" ++ show (head (versionBranch version))               </> "arch-" ++ case arch of-                              (X86 _) -> "x86"-                              (Arm _) -> "arm"-                              _       -> unsupportedArch arch+                              (X86 _)     -> "x86"+                              (Arm Arm64) -> "arm64"+                              (Arm _)     -> "arm"+                              _           -> unsupportedArch arch     march = "-march=" ++ case arch of                           X86 I386   -> "i386"                           X86 I686   -> "i686"@@ -95,8 +99,10 @@                           Arm Armv5  -> "armv5te"                           Arm Armv6  -> "armv5te"                           Arm Armv7  -> "armv7-a"+                          Arm Arm64  -> "armv8-a"                           _ -> unsupportedArch arch-    archCompilerFlags (Arm Armv7) = [(Nothing, ["-mfloat-abi=softfp", "-mfpu=neon" {- vfpv3-d16 -}])]+    archCompilerFlags (Arm Armv7) = [(Nothing, ["-mfloat-abi=softfp", "-mfpu=neon"])]+    archCompilerFlags (Arm Arm64) = []     archCompilerFlags (Arm _)     = [(Nothing, ["-mtune=xscale", "-msoft-float"])]     archCompilerFlags _           = []     archLinkerFlags (Arm Armv7)   = ["-Wl,--fix-cortex-a8"]@@ -108,42 +114,42 @@ sdkVersion :: Int -> Version sdkVersion n = Version [n] [] -gccToolChain :: FilePath -> Target -> Version -> FilePath-gccToolChain ndk target version =+gccToolChain :: FilePath -> Target -> FilePath+gccToolChain ndk target =   ndk </> "toolchains"-      </> toolChainPrefix target ++ showVersion version+      </> toolChainPrefix target ++ showVersion (Version [4,9] [])       </> "prebuilt"       </> osPrefix  -- | Construct an Android toolchain. toolChain :: FilePath                     -- ^ NDK source directory           -> Version                      -- ^ SDK version, see `sdkVersion`-          -> (ToolChainVariant, Version)  -- ^ Toolchain variant and version+          -> ToolChainVariant             -- ^ Toolchain variant           -> Target                       -- ^ Build target, see `target`           -> ToolChain                    -- ^ Resulting toolchain-toolChain "" _ (_, _) _ = error "Empty NDK directory"-toolChain ndk version (GCC, tcVersion) t =+toolChain "" _ _ _ = error "Empty NDK directory"+toolChain ndk version GCC t =     set variant GCC-  $ set toolDirectory (Just (gccToolChain ndk t tcVersion </> "bin"))+  $ set toolDirectory (Just (gccToolChain ndk t </> "bin"))   $ set toolPrefix (toolPrefix_ t)   $ set compilerCommand "gcc"   $ set archiverCommand "ar"   $ set linkerCommand "g++"   $ set defaultBuildFlags (return $ mkDefaultBuildFlags ndk version (targetArch t))   $ defaultToolChain-toolChain ndk version (LLVM, tcVersion) t =+toolChain ndk version LLVM t =     set variant LLVM   $ set toolDirectory (Just (ndk </> "toolchains"-                                 </> "llvm-" ++ showVersion tcVersion+                                 </> "llvm"                                  </> "prebuilt"                                  </> osPrefix                                  </> "bin"))   $ set compilerCommand "clang"-  $ set archiverCommand "llvm-ar"+  $ set archiverCommand (gccToolChain ndk t </> "bin" </> toolPrefix_ t ++ "ar")   $ set linkerCommand "clang++"   $ set defaultBuildFlags (return $     let flags = [ "-target", llvmTarget t-                , "-gcc-toolchain", gccToolChain ndk t (Version [4,8] []) ]+                , "-gcc-toolchain", gccToolChain ndk t ]     in  mkDefaultBuildFlags ndk version (targetArch t)       . append compilerFlags [(Nothing, flags)]       . append linkerFlags flags@@ -154,18 +160,18 @@       case targetArch x of         Arm Armv5 -> "armv5te-none-linux-androideabi"         Arm Armv7 -> "armv7-none-linux-androideabi"+        Arm Arm64 -> "aarch64-none-linux-android"         X86 I386  -> "i686-none-linux-android"         arch      -> unsupportedArch arch-toolChain _ _ (tcVariant, tcVersion) _ =-  error $ "Unknown toolchain variant "-        ++ show tcVariant ++ " "-        ++ showVersion tcVersion+toolChain _ _ tcVariant _ =+  error $ "Unsupported toolchain variant " ++ show tcVariant  -- | Valid Android ABI identifier for the given architecture. abiString :: Arch -> String abiString (Arm Armv5) = "armeabi" abiString (Arm Armv6) = "armeabi" abiString (Arm Armv7) = "armeabi-v7a"+abiString (Arm Arm64) = "arm64-v8a" abiString (X86 _)     = "x86" abiString arch        = unsupportedArch arch