Skip to content

Commit ba9b1c9

Browse files
committed
WIP working aarch64 build
1 parent d87b2f0 commit ba9b1c9

File tree

5 files changed

+36
-16
lines changed

5 files changed

+36
-16
lines changed

Shakefile.hs

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,8 @@ main = do
2222
shakeVersion = shakefilesHash
2323
} $ do
2424

25-
StdoutTrim gitDescribe <- liftIO $ cmd "git" [ "describe", "--abbrev=8", "--match", "[0-9]*", "--always" ]
25+
-- StdoutTrim gitDescribe <- liftIO $ cmd "git" [ "describe", "--abbrev=8", "--match", "[0-9]*", "--always" ]\
26+
let gitDescribe = "0.19.1-20-gd87b2f0d"
2627
StdoutTrim gitSha <- liftIO $ cmd "git" [ "describe", "--always", "--match", "NOT A TAG", "--dirty" ]
2728

2829
let lamdera = "_build" </> "lamdera" <.> exe
@@ -77,12 +78,12 @@ main = do
7778
, "gitDescribe = " ++ show (gitDescribe :: String)
7879
]
7980

80-
Shakefiles.Haskell.cabalProject "avh4-lib"
81-
[ "avh4-lib/avh4-lib.cabal" ]
82-
[ "avh4-lib/src//*.hs" ]
83-
[]
84-
[ "avh4-lib/test//*.hs" ]
85-
[]
81+
-- Shakefiles.Haskell.cabalProject "avh4-lib"
82+
-- [ "avh4-lib/avh4-lib.cabal" ]
83+
-- [ "avh4-lib/src//*.hs" ]
84+
-- []
85+
-- [ "avh4-lib/test//*.hs" ]
86+
-- []
8687

8788
-- Shakefiles.Haskell.cabalProject "elm-format-markdown"
8889
-- [ "elm-format-markdown/elm-format-markdown.cabal" ]

Shakefiles/Dependencies.hs

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,9 @@ import Development.Shake.Util
99
localBinDir :: String
1010
localBinDir = "bin"
1111

12+
--ghc-option required because of https://gitlab.haskell.org/ghc/ghc/-/issues/20592
13+
ghcOptionFFI = "--ghc-option=-I/Library/Developer/CommandLineTools/SDKs/MacOSX11.sdk/usr/include/ffi"
14+
1215

1316
cabalInstallExe :: String -> Action ()
1417
cabalInstallExe package =
@@ -19,6 +22,7 @@ cabalInstallExe package =
1922
-- these are currently needed because Windows doesn't support the default symlink method
2023
, "--install-method=copy"
2124
, "--overwrite-policy=always"
25+
, ghcOptionFFI
2226
]
2327

2428

@@ -41,7 +45,7 @@ rules = do
4145
, "cabal.project"
4246
, "cabal.project.freeze"
4347
]
44-
cmd_ "cabal" [ "v2-build", "--only-dependencies" ]
48+
cmd_ "cabal" [ "v2-build", "--only-dependencies", ghcOptionFFI ]
4549
writeFile' out ""
4650

4751
"_build/cabal-test-dependencies.ok" %> \out -> do
@@ -50,7 +54,7 @@ rules = do
5054
, "cabal.project"
5155
, "cabal.project.freeze"
5256
]
53-
cmd_ "cabal" [ "v2-build", "--only-dependencies", "--enable-tests" ]
57+
cmd_ "cabal" [ "v2-build", "--only-dependencies", "--enable-tests", ghcOptionFFI ]
5458
writeFile' out ""
5559

5660
shellcheck %> \out -> do

Shakefiles/Haskell.hs

Lines changed: 19 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,9 @@ import Data.Char (isSpace)
1111
import Data.List (dropWhileEnd, stripPrefix)
1212
import Shakefiles.Extra
1313

14+
-- --ghc-option required because of https://gitlab.haskell.org/ghc/ghc/-/issues/20592
15+
ghcOptionFFI = "--ghc-option=-I/Library/Developer/CommandLineTools/SDKs/MacOSX11.sdk/usr/include/ffi"
16+
1417

1518
cabalProject :: String -> [String] -> [String] -> [String] -> [String] -> [String] -> Rules ()
1619
cabalProject name sourceFiles sourcePatterns deps testPatterns testDeps =
@@ -35,16 +38,16 @@ cabalProject name sourceFiles sourcePatterns deps testPatterns testDeps =
3538
do
3639
"_build/cabal/" </> name </> "build.ok" %> \out -> do
3740
hash <- needProjectFiles
38-
cmd_ "cabal" "v2-build" "-O0" (name ++ ":libs") "--enable-tests"
41+
cmd_ "cabal" "v2-build" ghcOptionFFI "-O0" (cabalName name ++ ":libs") "--enable-tests"
3942
writeFile' out hash
4043

4144
cabalBinPath name "noopt" %> \out -> do
4245
_ <- needProjectFiles
43-
cmd_ "cabal" "v2-build" "-O0" (name ++ ":exes") "--enable-tests"
46+
cmd_ "cabal" "v2-build" ghcOptionFFI "-O0" (cabalName name ++ ":exes") "--enable-tests"
4447

4548
cabalBinPath name "opt" %> \out -> do
4649
_ <- needProjectFiles
47-
cmd_ "cabal" "v2-build" "-O2" (name ++ ":exes")
50+
cmd_ "cabal" "v2-build" ghcOptionFFI "-O2" (cabalName name ++ ":exes")
4851

4952
"_build/cabal/" </> name </> "test.ok" %> \out -> do
5053
need globalConfig
@@ -55,7 +58,7 @@ cabalProject name sourceFiles sourcePatterns deps testPatterns testDeps =
5558
need sourceFilesFromPatterns
5659
testFiles <- getDirectoryFiles "" testPatterns
5760
need testFiles
58-
cmd_ "cabal" "v2-test" "-O0" (name ++ ":tests") "--test-show-details=streaming"
61+
cmd_ "cabal" "v2-test" "-O0" (cabalName name ++ ":tests") "--test-show-details=streaming" ghcOptionFFI
5962
writeFile' out ""
6063

6164

@@ -64,11 +67,21 @@ cabalBinPath projectName opt =
6467
let
6568
version =
6669
case projectName of
67-
"elm" -> "0.8.5"
70+
"elm-format" -> "0.8.5"
71+
"lamdera" -> "0.19.1"
72+
"elm" -> "0.19.1"
6873
_ -> "0.0.0"
6974
in
70-
"dist-newstyle/build" </> Shakefiles.Platform.cabalInstallOs </> "ghc-9.0.2" </> projectName ++ "-" ++ version </> "x" </> projectName </> opt </> "build" </> projectName </> projectName <.> exe
75+
-- dist-newstyle/build/aarch64-osx/ghc-9.0.2/elm-0.19.1/x/lamdera/opt/build/lamdera/lamdera
76+
"dist-newstyle/build" </> Shakefiles.Platform.cabalInstallOs </> "ghc-9.0.2" </> cabalName projectName ++ "-" ++ version </> "x" </> projectName </> opt </> "build" </> projectName </> projectName <.> exe
77+
7178

79+
cabalName :: String -> String
80+
cabalName projectName =
81+
case projectName of
82+
"lamdera" -> "elm"
83+
"elm" -> "elm"
84+
_ -> projectName
7285

7386
executable :: FilePath -> String -> String -> Rules ()
7487
executable target projectName gitDescribe =

Shakefiles/Platform.hs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@ platform =
2424
case (System.Info.os, System.Info.arch) of
2525
("linux", "x86_64") -> Linux
2626
("darwin", "x86_64") -> Mac
27+
("darwin", "aarch64") -> Mac
2728
("osx", "x86_64") -> Mac
2829
("mingw32", "x86_64") -> Windows
2930
("win32", "x86_64") -> Windows

build.sh

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,8 @@ mkdir -p _build
77
# install shake if it's not installed
88
if ! grep -qs '^package-id \(shake\|shk\)-' "$PKG_ENV_FILE"; then
99
echo "$0: installing shake"
10-
cabal v2-install --package-env "$PKG_ENV_FILE" --lib shake
10+
# --ghc-option required because of https://gitlab.haskell.org/ghc/ghc/-/issues/20592
11+
cabal v2-install --package-env "$PKG_ENV_FILE" --ghc-option="`pkg-config --cflags libffi`" --lib shake
1112
fi
1213

1314
# compile the build script

0 commit comments

Comments
 (0)