Skip to content

Commit 84c3315

Browse files
committed
Build a universal binary to support M1 (Apple silicon)
Analogous to Level/leveldown#781
1 parent a54ad1e commit 84c3315

6 files changed

Lines changed: 29 additions & 12 deletions

File tree

.github/workflows/release.yml

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,8 +11,9 @@ jobs:
1111
include:
1212
- os: ubuntu-latest
1313
build-group: linux-x64
14-
- os: macos-latest
15-
build-group: darwin-x64
14+
# At the time of writing macos-latest is mac 10; we need 11 to build a universal binary.
15+
- os: macos-11
16+
build-group: darwin-x64+arm64
1617
- os: windows-latest
1718
build-group: win32-x64
1819
runs-on: ${{ matrix.os }}

.github/workflows/test.yml

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,8 @@ jobs:
66
test:
77
strategy:
88
matrix:
9-
os: [ubuntu-latest, macos-latest, windows-latest]
9+
# At the time of writing macos-latest is mac 10; we need 11 to build a universal binary.
10+
os: [ubuntu-latest, macos-11, windows-latest]
1011
node: [10, 12, 14]
1112
runs-on: ${{ matrix.os }}
1213
name: ${{ matrix.os }} / Node ${{ matrix.node }}

binding.gyp

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -38,14 +38,20 @@
3838
, '-Wno-ignored-qualifiers'
3939
]
4040
, 'OTHER_CPLUSPLUSFLAGS': [
41-
'-mmacosx-version-min=10.8'
41+
'-mmacosx-version-min=10.12'
4242
, '-std=c++11'
4343
, '-stdlib=libc++'
44+
, '-arch x86_64'
45+
, '-arch arm64'
46+
]
47+
, 'OTHER_LDFLAGS': [
48+
'-stdlib=libc++'
49+
, '-arch x86_64'
50+
, '-arch arm64'
4451
]
45-
, 'OTHER_LDFLAGS': ['-stdlib=libc++']
4652
, 'GCC_ENABLE_CPP_RTTI': 'YES'
4753
, 'GCC_ENABLE_CPP_EXCEPTIONS': 'YES'
48-
, 'MACOSX_DEPLOYMENT_TARGET': '10.8'
54+
, 'MACOSX_DEPLOYMENT_TARGET': '10.12'
4955
}
5056
}]
5157
, ['OS == "linux"', {

deps/rocksdb/rocksdb.gyp

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -147,7 +147,10 @@
147147
]
148148
}]
149149
, ['OS == "mac"', {
150-
'defines': [
150+
'sources': [
151+
'rocksdb/util/crc32c_arm64.cc'
152+
]
153+
, 'defines': [
151154
'OS_MACOSX=1',
152155
'ROCKSDB_LIB_IO_POSIX=1',
153156
'ROCKSDB_BACKTRACE=1'
@@ -161,16 +164,18 @@
161164
, '-Wno-unused-function'
162165
]
163166
, 'OTHER_CPLUSPLUSFLAGS': [
164-
'-mmacosx-version-min=10.8'
167+
'-mmacosx-version-min=10.12'
165168
, '-std=c++11'
166169
, '-stdlib=libc++'
167170
, '-fno-omit-frame-pointer'
168171
, '-momit-leaf-frame-pointer'
172+
, '-arch x86_64'
173+
, '-arch arm64'
169174
]
170175
# , 'OTHER_LDFLAGS': ['-stdlib=libc++']
171176
, 'GCC_ENABLE_CPP_RTTI': 'YES'
172177
, 'GCC_ENABLE_CPP_EXCEPTIONS': 'YES'
173-
, 'MACOSX_DEPLOYMENT_TARGET': '10.8'
178+
, 'MACOSX_DEPLOYMENT_TARGET': '10.12'
174179
}
175180
}]
176181
, ['target_arch == "arm64" or target_arch == "aarch64"', {

deps/snappy/snappy.gyp

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -71,6 +71,10 @@
7171
'-Wno-sign-compare'
7272
, '-Wno-unused-function'
7373
]
74+
, 'OTHER_CFLAGS': [
75+
'-arch x86_64'
76+
, '-arch arm64'
77+
]
7478
}
7579
}]
7680
]

package.json

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414
"rebuild": "npm run install --build-from-source",
1515
"prebuild": "prebuildify -t 8.14.0 --napi --strip",
1616
"prebuild-linux-x64": "prebuildify-cross -i centos7-devtoolset7 -i alpine -t 8.14.0 --napi --strip",
17-
"prebuild-darwin-x64": "prebuildify -t 8.14.0 --napi --strip",
17+
"prebuild-darwin-x64+arm64": "prebuildify -t 8.14.0 --napi --strip --arch x64+arm64",
1818
"prebuild-win32-x64": "prebuildify -t 8.14.0 --napi --strip",
1919
"download-prebuilds": "prebuildify-ci download",
2020
"hallmark": "hallmark --fix",
@@ -24,7 +24,7 @@
2424
"dependencies": {
2525
"abstract-leveldown": "^7.0.0",
2626
"napi-macros": "^2.0.0",
27-
"node-gyp-build": "^4.2.3"
27+
"node-gyp-build": "^4.3.0"
2828
},
2929
"devDependencies": {
3030
"async-each": "^1.0.3",
@@ -40,7 +40,7 @@
4040
"mkfiletree": "^2.0.0",
4141
"node-gyp": "^7.1.2",
4242
"nyc": "^15.0.0",
43-
"prebuildify": "^4.1.1",
43+
"prebuildify": "^4.2.1",
4444
"prebuildify-ci": "^1.0.4",
4545
"prebuildify-cross": "^4.0.1",
4646
"readfiletree": "^1.0.0",

0 commit comments

Comments
 (0)