Skip to content

[cmake] Add explicit option to build Apple dSYM#296

Closed
alloy wants to merge 1 commit into
facebook:masterfrom
alloy:emit-debug-symbols-for-apple-platforms-take-2
Closed

[cmake] Add explicit option to build Apple dSYM#296
alloy wants to merge 1 commit into
facebook:masterfrom
alloy:emit-debug-symbols-for-apple-platforms-take-2

Conversation

@alloy

@alloy alloy commented Jul 16, 2020

Copy link
Copy Markdown
Contributor

Summary

Add HERMES_BUILD_APPLE_DSYM option to build a dSYM bundle for the libhermes target on Apple platforms.

This will work with any of the build types and is off by default.

Installing the tools with the install/strip target will ensure all tools and the runtime lib are stripped of debug symbols, but leaving the dSYM bundle in tact.

Test Plan

Build

./src/utils/build/configure.py --distribute --cmake-flags='-DHERMES_BUILD_APPLE_DSYM:BOOLEAN=true -DCMAKE_INSTALL_PREFIX:PATH=../destroot_release' build_release
cmake --build ./build_release

Install without stripping

cmake --build ./build_release --target install
nm -a destroot_release/bin/hermesc | wc -l
   27943

Install with stripping

cmake --build ./build_release --target install/strip
nm -a destroot_release/bin/hermesc | wc -l
     250

…and dSYM DWARF metadata is maintained:

dwarfdump --statistics destroot_release/Library/Frameworks/hermes.framework.dSYM
{"version":3,"file":"destroot_release/Library/Frameworks/hermes.framework.dSYM/Contents/Resources/DWARF/hermes","format":"Mach-O 64-bit x86-64","source functions":30305,"source functions with location":30302,"inlined functions":172725,"inlined funcs with abstract origins":172725,"unique source variables":79276,"source variables":353690,"variables with location":232195,"call site entries":186409,"scope bytes total":19161949,"scope bytes covered":10500176,"total function size":1763513,"total inlined function size":998375,"total formal params":300264,"formal params with source location":166067,"formal params with type":300264,"formal params with binary location":200407,"total vars":38809,"vars with source location":38385,"vars with type":38809,"vars with binary location":22161}

This will work with any of the build types and is off by default.

Installing the tools with the install/strip target will ensure all tools
and the runtime lib are stripped of debug symbols, but leaving the dSYM
bundle in tact.
@facebook-github-bot facebook-github-bot added the CLA Signed Do not delete this pull request or issue due to inactivity. label Jul 16, 2020
@alloy

alloy commented Jul 16, 2020

Copy link
Copy Markdown
Contributor Author

Also can confirm the CI build job works as expected:

curl -L -O https://7142-154201259-gh.circle-artifacts.com/0/tmp/hermes/output/hermes-runtime-darwin-v0.5.0.tar.gz
tar -zxvf hermes-runtime-darwin-v0.5.0.tar.gz
nm -a destroot/bin/hermesc | wc -l
     249
dwarfdump --statistics destroot/Library/Frameworks/hermes.framework.dSYM
{"version":3,"file":"destroot/Library/Frameworks/hermes.framework.dSYM/Contents/Resources/DWARF/hermes","format":"Mach-O 64-bit x86-64","source functions":30400,"source functions with location":30397,"inlined functions":171729,"inlined funcs with abstract origins":171729,"unique source variables":73829,"source variables":330467,"variables with location":221038,"call site entries":185658,"scope bytes total":17846456,"scope bytes covered":9692056,"total function size":1746762,"total inlined function size":1016480,"total formal params":263042,"formal params with source location":148090,"formal params with type":263042,"formal params with binary location":188866,"total vars":36254,"vars with source location":35865,"vars with type":36254,"vars with binary location":22512}

@facebook-github-bot facebook-github-bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@willholen has imported this pull request. If you are a Facebook employee, you can view this diff on Phabricator.

alloy added a commit to alloy/hermes that referenced this pull request Jul 16, 2020
@alloy
alloy deleted the emit-debug-symbols-for-apple-platforms-take-2 branch July 16, 2020 21:36
@facebook-github-bot

Copy link
Copy Markdown
Contributor

@willholen merged this pull request in faa5c24.

facebook-github-bot pushed a commit that referenced this pull request Jul 27, 2020
Summary:
{emoji:26a0} _This includes the changes of #296, so I’ll have to rebase this PR once that lands. The changes that pertain to this PR are in 9da61f7a9da01b5bd49e95dca0b98a5204210790_

Adds hermes-engine-darwin to the npm CI job.

Notably the symbolic links need to be stripped from the framework bundle, as npm by design does not support symbolic links to exist in packages. However, seeing as we already package distinct versions of the framework in distinct npm packages, there isn't any need to support multiple versions of Hermes in a single framework bundle; so this should be fine.

Pull Request resolved: #297

Test Plan: TODO: I’ll need to backport all changes to Hermes v0.4.1 in order to pull it into RN macOS v0.62. In the meantime I want to see if CI is correctly cutting this package.

Reviewed By: mhorowitz

Differential Revision: D22700399

Pulled By: willholen

fbshipit-source-id: f72aefa3fd98a85c8da3e9a38dfa6be9723a0270
willholen pushed a commit that referenced this pull request Jul 29, 2020
Summary:
Add `HERMES_BUILD_APPLE_DSYM` option to build a dSYM bundle for the libhermes target on Apple platforms.

This will work with any of the build types and is off by default.

Installing the tools with the install/strip target will ensure all tools and the runtime lib are stripped of debug symbols, but leaving the dSYM bundle in tact.

Pull Request resolved: #296

Test Plan:

```bash
./src/utils/build/configure.py --distribute --cmake-flags='-DHERMES_BUILD_APPLE_DSYM:BOOLEAN=true -DCMAKE_INSTALL_PREFIX:PATH=../destroot_release' build_release
cmake --build ./build_release
```

```bash
cmake --build ./build_release --target install
nm -a destroot_release/bin/hermesc | wc -l
   27943
```

```bash
cmake --build ./build_release --target install/strip
nm -a destroot_release/bin/hermesc | wc -l
     250
```

…and dSYM DWARF metadata is maintained:

```bash
dwarfdump --statistics destroot_release/Library/Frameworks/hermes.framework.dSYM
{"version":3,"file":"destroot_release/Library/Frameworks/hermes.framework.dSYM/Contents/Resources/DWARF/hermes","format":"Mach-O 64-bit x86-64","source functions":30305,"source functions with location":30302,"inlined functions":172725,"inlined funcs with abstract origins":172725,"unique source variables":79276,"source variables":353690,"variables with location":232195,"call site entries":186409,"scope bytes total":19161949,"scope bytes covered":10500176,"total function size":1763513,"total inlined function size":998375,"total formal params":300264,"formal params with source location":166067,"formal params with type":300264,"formal params with binary location":200407,"total vars":38809,"vars with source location":38385,"vars with type":38809,"vars with binary location":22161}
```

Reviewed By: tmikov

Differential Revision: D22576263

Pulled By: willholen

fbshipit-source-id: 2bda49e638d145ba5d029e77069d6adcc0b1dd8c
willholen pushed a commit that referenced this pull request Jul 29, 2020
Summary:
{emoji:26a0} _This includes the changes of #296, so I’ll have to rebase this PR once that lands. The changes that pertain to this PR are in 9da61f7a9da01b5bd49e95dca0b98a5204210790_

Adds hermes-engine-darwin to the npm CI job.

Notably the symbolic links need to be stripped from the framework bundle, as npm by design does not support symbolic links to exist in packages. However, seeing as we already package distinct versions of the framework in distinct npm packages, there isn't any need to support multiple versions of Hermes in a single framework bundle; so this should be fine.

Pull Request resolved: #297

Test Plan: TODO: I’ll need to backport all changes to Hermes v0.4.1 in order to pull it into RN macOS v0.62. In the meantime I want to see if CI is correctly cutting this package.

Reviewed By: mhorowitz

Differential Revision: D22700399

Pulled By: willholen

fbshipit-source-id: f72aefa3fd98a85c8da3e9a38dfa6be9723a0270
willholen pushed a commit that referenced this pull request Jul 29, 2020
Summary:
Add `HERMES_BUILD_APPLE_DSYM` option to build a dSYM bundle for the libhermes target on Apple platforms.

This will work with any of the build types and is off by default.

Installing the tools with the install/strip target will ensure all tools and the runtime lib are stripped of debug symbols, but leaving the dSYM bundle in tact.

Pull Request resolved: #296

Test Plan:

```bash
./src/utils/build/configure.py --distribute --cmake-flags='-DHERMES_BUILD_APPLE_DSYM:BOOLEAN=true -DCMAKE_INSTALL_PREFIX:PATH=../destroot_release' build_release
cmake --build ./build_release
```

```bash
cmake --build ./build_release --target install
nm -a destroot_release/bin/hermesc | wc -l
   27943
```

```bash
cmake --build ./build_release --target install/strip
nm -a destroot_release/bin/hermesc | wc -l
     250
```

…and dSYM DWARF metadata is maintained:

```bash
dwarfdump --statistics destroot_release/Library/Frameworks/hermes.framework.dSYM
{"version":3,"file":"destroot_release/Library/Frameworks/hermes.framework.dSYM/Contents/Resources/DWARF/hermes","format":"Mach-O 64-bit x86-64","source functions":30305,"source functions with location":30302,"inlined functions":172725,"inlined funcs with abstract origins":172725,"unique source variables":79276,"source variables":353690,"variables with location":232195,"call site entries":186409,"scope bytes total":19161949,"scope bytes covered":10500176,"total function size":1763513,"total inlined function size":998375,"total formal params":300264,"formal params with source location":166067,"formal params with type":300264,"formal params with binary location":200407,"total vars":38809,"vars with source location":38385,"vars with type":38809,"vars with binary location":22161}
```

Reviewed By: tmikov

Differential Revision: D22576263

Pulled By: willholen

fbshipit-source-id: 2bda49e638d145ba5d029e77069d6adcc0b1dd8c
willholen pushed a commit that referenced this pull request Jul 29, 2020
Summary:
{emoji:26a0} _This includes the changes of #296, so I’ll have to rebase this PR once that lands. The changes that pertain to this PR are in 9da61f7a9da01b5bd49e95dca0b98a5204210790_

Adds hermes-engine-darwin to the npm CI job.

Notably the symbolic links need to be stripped from the framework bundle, as npm by design does not support symbolic links to exist in packages. However, seeing as we already package distinct versions of the framework in distinct npm packages, there isn't any need to support multiple versions of Hermes in a single framework bundle; so this should be fine.

Pull Request resolved: #297

Test Plan: TODO: I’ll need to backport all changes to Hermes v0.4.1 in order to pull it into RN macOS v0.62. In the meantime I want to see if CI is correctly cutting this package.

Reviewed By: mhorowitz

Differential Revision: D22700399

Pulled By: willholen

fbshipit-source-id: f72aefa3fd98a85c8da3e9a38dfa6be9723a0270
willholen pushed a commit to willholen/hermes that referenced this pull request Jul 29, 2020
Summary:
Add `HERMES_BUILD_APPLE_DSYM` option to build a dSYM bundle for the libhermes target on Apple platforms.

This will work with any of the build types and is off by default.

Installing the tools with the install/strip target will ensure all tools and the runtime lib are stripped of debug symbols, but leaving the dSYM bundle in tact.

Pull Request resolved: facebook#296

Test Plan:

```bash
./src/utils/build/configure.py --distribute --cmake-flags='-DHERMES_BUILD_APPLE_DSYM:BOOLEAN=true -DCMAKE_INSTALL_PREFIX:PATH=../destroot_release' build_release
cmake --build ./build_release
```

```bash
cmake --build ./build_release --target install
nm -a destroot_release/bin/hermesc | wc -l
   27943
```

```bash
cmake --build ./build_release --target install/strip
nm -a destroot_release/bin/hermesc | wc -l
     250
```

…and dSYM DWARF metadata is maintained:

```bash
dwarfdump --statistics destroot_release/Library/Frameworks/hermes.framework.dSYM
{"version":3,"file":"destroot_release/Library/Frameworks/hermes.framework.dSYM/Contents/Resources/DWARF/hermes","format":"Mach-O 64-bit x86-64","source functions":30305,"source functions with location":30302,"inlined functions":172725,"inlined funcs with abstract origins":172725,"unique source variables":79276,"source variables":353690,"variables with location":232195,"call site entries":186409,"scope bytes total":19161949,"scope bytes covered":10500176,"total function size":1763513,"total inlined function size":998375,"total formal params":300264,"formal params with source location":166067,"formal params with type":300264,"formal params with binary location":200407,"total vars":38809,"vars with source location":38385,"vars with type":38809,"vars with binary location":22161}
```

Reviewed By: tmikov

Differential Revision: D22576263

Pulled By: willholen

fbshipit-source-id: 2bda49e638d145ba5d029e77069d6adcc0b1dd8c
willholen pushed a commit to willholen/hermes that referenced this pull request Jul 29, 2020
Summary:
{emoji:26a0} _This includes the changes of facebook#296, so I’ll have to rebase this PR once that lands. The changes that pertain to this PR are in facebook@9da61f7a9da01b5bd49e95dca0b98a5204210790_

Adds hermes-engine-darwin to the npm CI job.

Notably the symbolic links need to be stripped from the framework bundle, as npm by design does not support symbolic links to exist in packages. However, seeing as we already package distinct versions of the framework in distinct npm packages, there isn't any need to support multiple versions of Hermes in a single framework bundle; so this should be fine.

Pull Request resolved: facebook#297

Test Plan: TODO: I’ll need to backport all changes to Hermes v0.4.1 in order to pull it into RN macOS v0.62. In the meantime I want to see if CI is correctly cutting this package.

Reviewed By: mhorowitz

Differential Revision: D22700399

Pulled By: willholen

fbshipit-source-id: f72aefa3fd98a85c8da3e9a38dfa6be9723a0270
willholen pushed a commit to willholen/hermes that referenced this pull request Jul 30, 2020
Summary:
Add `HERMES_BUILD_APPLE_DSYM` option to build a dSYM bundle for the libhermes target on Apple platforms.

This will work with any of the build types and is off by default.

Installing the tools with the install/strip target will ensure all tools and the runtime lib are stripped of debug symbols, but leaving the dSYM bundle in tact.

Pull Request resolved: facebook#296

Test Plan:

```bash
./src/utils/build/configure.py --distribute --cmake-flags='-DHERMES_BUILD_APPLE_DSYM:BOOLEAN=true -DCMAKE_INSTALL_PREFIX:PATH=../destroot_release' build_release
cmake --build ./build_release
```

```bash
cmake --build ./build_release --target install
nm -a destroot_release/bin/hermesc | wc -l
   27943
```

```bash
cmake --build ./build_release --target install/strip
nm -a destroot_release/bin/hermesc | wc -l
     250
```

…and dSYM DWARF metadata is maintained:

```bash
dwarfdump --statistics destroot_release/Library/Frameworks/hermes.framework.dSYM
{"version":3,"file":"destroot_release/Library/Frameworks/hermes.framework.dSYM/Contents/Resources/DWARF/hermes","format":"Mach-O 64-bit x86-64","source functions":30305,"source functions with location":30302,"inlined functions":172725,"inlined funcs with abstract origins":172725,"unique source variables":79276,"source variables":353690,"variables with location":232195,"call site entries":186409,"scope bytes total":19161949,"scope bytes covered":10500176,"total function size":1763513,"total inlined function size":998375,"total formal params":300264,"formal params with source location":166067,"formal params with type":300264,"formal params with binary location":200407,"total vars":38809,"vars with source location":38385,"vars with type":38809,"vars with binary location":22161}
```

Reviewed By: tmikov

Differential Revision: D22576263

Pulled By: willholen

fbshipit-source-id: 2bda49e638d145ba5d029e77069d6adcc0b1dd8c
willholen pushed a commit to willholen/hermes that referenced this pull request Jul 30, 2020
Summary:
{emoji:26a0} _This includes the changes of facebook#296, so I’ll have to rebase this PR once that lands. The changes that pertain to this PR are in facebook@9da61f7a9da01b5bd49e95dca0b98a5204210790_

Adds hermes-engine-darwin to the npm CI job.

Notably the symbolic links need to be stripped from the framework bundle, as npm by design does not support symbolic links to exist in packages. However, seeing as we already package distinct versions of the framework in distinct npm packages, there isn't any need to support multiple versions of Hermes in a single framework bundle; so this should be fine.

Pull Request resolved: facebook#297

Test Plan: TODO: I’ll need to backport all changes to Hermes v0.4.1 in order to pull it into RN macOS v0.62. In the meantime I want to see if CI is correctly cutting this package.

Reviewed By: mhorowitz

Differential Revision: D22700399

Pulled By: willholen

fbshipit-source-id: f72aefa3fd98a85c8da3e9a38dfa6be9723a0270
willholen pushed a commit to willholen/hermes that referenced this pull request Jul 30, 2020
Summary:
Add `HERMES_BUILD_APPLE_DSYM` option to build a dSYM bundle for the libhermes target on Apple platforms.

This will work with any of the build types and is off by default.

Installing the tools with the install/strip target will ensure all tools and the runtime lib are stripped of debug symbols, but leaving the dSYM bundle in tact.

Pull Request resolved: facebook#296

Test Plan:

```bash
./src/utils/build/configure.py --distribute --cmake-flags='-DHERMES_BUILD_APPLE_DSYM:BOOLEAN=true -DCMAKE_INSTALL_PREFIX:PATH=../destroot_release' build_release
cmake --build ./build_release
```

```bash
cmake --build ./build_release --target install
nm -a destroot_release/bin/hermesc | wc -l
   27943
```

```bash
cmake --build ./build_release --target install/strip
nm -a destroot_release/bin/hermesc | wc -l
     250
```

…and dSYM DWARF metadata is maintained:

```bash
dwarfdump --statistics destroot_release/Library/Frameworks/hermes.framework.dSYM
{"version":3,"file":"destroot_release/Library/Frameworks/hermes.framework.dSYM/Contents/Resources/DWARF/hermes","format":"Mach-O 64-bit x86-64","source functions":30305,"source functions with location":30302,"inlined functions":172725,"inlined funcs with abstract origins":172725,"unique source variables":79276,"source variables":353690,"variables with location":232195,"call site entries":186409,"scope bytes total":19161949,"scope bytes covered":10500176,"total function size":1763513,"total inlined function size":998375,"total formal params":300264,"formal params with source location":166067,"formal params with type":300264,"formal params with binary location":200407,"total vars":38809,"vars with source location":38385,"vars with type":38809,"vars with binary location":22161}
```

Reviewed By: tmikov

Differential Revision: D22576263

Pulled By: willholen

fbshipit-source-id: 2bda49e638d145ba5d029e77069d6adcc0b1dd8c
willholen pushed a commit to willholen/hermes that referenced this pull request Jul 30, 2020
Summary:
{emoji:26a0} _This includes the changes of facebook#296, so I’ll have to rebase this PR once that lands. The changes that pertain to this PR are in facebook@9da61f7a9da01b5bd49e95dca0b98a5204210790_

Adds hermes-engine-darwin to the npm CI job.

Notably the symbolic links need to be stripped from the framework bundle, as npm by design does not support symbolic links to exist in packages. However, seeing as we already package distinct versions of the framework in distinct npm packages, there isn't any need to support multiple versions of Hermes in a single framework bundle; so this should be fine.

Pull Request resolved: facebook#297

Test Plan: TODO: I’ll need to backport all changes to Hermes v0.4.1 in order to pull it into RN macOS v0.62. In the meantime I want to see if CI is correctly cutting this package.

Reviewed By: mhorowitz

Differential Revision: D22700399

Pulled By: willholen

fbshipit-source-id: f72aefa3fd98a85c8da3e9a38dfa6be9723a0270
Huxpro pushed a commit that referenced this pull request Jul 30, 2020
* Build macOS framework and add CocoaPods podspec (#285)

Summary:
Supersedes #239

Currently used in our macOS fork of React Native microsoft/react-native-macos#473. (Although we’re using a build of Hermes v0.4.1, as we’re at RN 0.62.0.)

* On Apple platforms build a [dynamic] framework bundle when `HERMES_BUILD_APPLE_FRAMEWORK` is set. When set to `FALSE` it will produce a `dylib`, like previously. Defaults to `TRUE`.
* On Apple platforms create a debugging symbols bundle.
* Add `HERMES_ENABLE_FUZZING`, which is enabled by default.
* Add `HERMES_ENABLE_TEST_SUITE`, which is enabled by default.
* Add a CocoaPods podspec that can build from source or use a binary.

A standalone macOS app that pulls in Hermes as a CocoaPods pod can be found here https://github.com/alloy/TestHermesMaster.

```
$ ./src/utils/build/configure.py --distribute --cmake-flags='-DCMAKE_INSTALL_PREFIX:PATH=../destroot_release' build
$ cd build && ninja install && cd ..
$ tree destroot_release/
destroot_release/
├── Library
│   └── Frameworks
│       ├── hermes.framework
│       │   ├── Headers -> Versions/Current/Headers
│       │   ├── Resources -> Versions/Current/Resources
│       │   ├── Versions
│       │   │   ├── 0
│       │   │   │   ├── Headers
│       │   │   │   │   ├── CompileJS.h
│       │   │   │   │   ├── DebuggerAPI.h
│       │   │   │   │   ├── Public
│       │   │   │   │   │   ├── Buffer.h
│       │   │   │   │   │   ├── CrashManager.h
│       │   │   │   │   │   ├── CtorConfig.h
│       │   │   │   │   │   ├── DebuggerTypes.h
│       │   │   │   │   │   ├── GCConfig.h
│       │   │   │   │   │   ├── GCTripwireContext.h
│       │   │   │   │   │   └── RuntimeConfig.h
│       │   │   │   │   ├── SynthTrace.h
│       │   │   │   │   ├── SynthTraceParser.h
│       │   │   │   │   ├── TraceInterpreter.h
│       │   │   │   │   ├── TracingRuntime.h
│       │   │   │   │   ├── hermes.h
│       │   │   │   │   └── hermes_tracing.h
│       │   │   │   ├── Resources
│       │   │   │   │   └── Info.plist
│       │   │   │   └── hermes
│       │   │   └── Current -> 0
│       │   └── hermes -> Versions/Current/hermes
│       └── hermes.framework.dSYM
│           └── Contents
│               ├── Info.plist
│               └── Resources
│                   └── DWARF
│                       └── hermes
├── bin
│   ├── hbcdump
│   ├── hdb
│   ├── hermes
│   ├── hermesc
│   └── hvm
└── include
    ├── hermes
    │   ├── CompileJS.h
    │   ├── DebuggerAPI.h
    │   ├── Public
    │   │   ├── Buffer.h
    │   │   ├── CrashManager.h
    │   │   ├── CtorConfig.h
    │   │   ├── DebuggerTypes.h
    │   │   ├── GCConfig.h
    │   │   ├── GCTripwireContext.h
    │   │   └── RuntimeConfig.h
    │   ├── SynthTrace.h
    │   ├── SynthTraceParser.h
    │   ├── TraceInterpreter.h
    │   ├── TracingRuntime.h
    │   ├── hermes.h
    │   └── hermes_tracing.h
    └── jsi
        ├── JSIDynamic.h
        ├── decorator.h
        ├── instrumentation.h
        ├── jsi-inl.h
        ├── jsi.h
        ├── jsilib.h
        └── threadsafe.h
```

```
$ ./src/utils/build/configure.py --distribute --cmake-flags='-DHERMES_BUILD_APPLE_FRAMEWORK:BOOLEAN=false -DCMAKE_INSTALL_PREFIX:PATH=../destroot_release' build
$ cd build && ninja install && cd ..
$ tree destroot_release/
destroot_release/
├── bin
│   ├── hbcdump
│   ├── hdb
│   ├── hermes
│   ├── hermesc
│   └── hvm
├── include
│   ├── hermes
│   │   ├── CompileJS.h
│   │   ├── DebuggerAPI.h
│   │   ├── Public
│   │   │   ├── Buffer.h
│   │   │   ├── CrashManager.h
│   │   │   ├── CtorConfig.h
│   │   │   ├── DebuggerTypes.h
│   │   │   ├── GCConfig.h
│   │   │   ├── GCTripwireContext.h
│   │   │   └── RuntimeConfig.h
│   │   ├── SynthTrace.h
│   │   ├── SynthTraceParser.h
│   │   ├── TraceInterpreter.h
│   │   ├── TracingRuntime.h
│   │   ├── hermes.h
│   │   └── hermes_tracing.h
│   └── jsi
│       ├── JSIDynamic.h
│       ├── decorator.h
│       ├── instrumentation.h
│       ├── jsi-inl.h
│       ├── jsi.h
│       ├── jsilib.h
│       └── threadsafe.h
└── lib
    ├── libhermes.dylib
    └── libhermes.dylib.dSYM
        └── Contents
            ├── Info.plist
            └── Resources
                └── DWARF
                    └── libhermes.dylib
```

Pull Request resolved: #285

Reviewed By: willholen

Differential Revision: D22398354

Pulled By: mhorowitz

fbshipit-source-id: 732524275cf273866171fc6e2ac2acb062185fbd

* Add job to build macOS CocoaPods binaries (#290)

Summary:
Adds a CI job to build binaries for macOS to be used via CocoaPods.

Pull Request resolved: #290

Test Plan:
```
$ mkdir test-hermes-build
$ cd test-hermes-build/
$ curl -L -O https://6909-154201259-gh.circle-artifacts.com/0/tmp/hermes/output/hermes-runtime-darwin-v0.5.0.tar.gz
$ tar -zxvf hermes-runtime-darwin-v0.5.0.tar.gz
$ tree .
.
├── LICENSE
├── README.md
├── destroot
│   ├── Library
│   │   └── Frameworks
│   │       ├── hermes.framework
│   │       │   ├── Headers
│   │       │   │   ├── CompileJS.h
│   │       │   │   ├── DebuggerAPI.h
│   │       │   │   ├── Public
│   │       │   │   │   ├── Buffer.h
│   │       │   │   │   ├── CrashManager.h
│   │       │   │   │   ├── CtorConfig.h
│   │       │   │   │   ├── DebuggerTypes.h
│   │       │   │   │   ├── GCConfig.h
│   │       │   │   │   ├── GCTripwireContext.h
│   │       │   │   │   └── RuntimeConfig.h
│   │       │   │   ├── SynthTrace.h
│   │       │   │   ├── SynthTraceParser.h
│   │       │   │   ├── TraceInterpreter.h
│   │       │   │   ├── TracingRuntime.h
│   │       │   │   ├── hermes.h
│   │       │   │   └── hermes_tracing.h
│   │       │   ├── Resources
│   │       │   │   └── Info.plist
│   │       │   ├── Versions
│   │       │   │   ├── 0
│   │       │   │   │   ├── Headers
│   │       │   │   │   │   ├── CompileJS.h
│   │       │   │   │   │   ├── DebuggerAPI.h
│   │       │   │   │   │   ├── Public
│   │       │   │   │   │   │   ├── Buffer.h
│   │       │   │   │   │   │   ├── CrashManager.h
│   │       │   │   │   │   │   ├── CtorConfig.h
│   │       │   │   │   │   │   ├── DebuggerTypes.h
│   │       │   │   │   │   │   ├── GCConfig.h
│   │       │   │   │   │   │   ├── GCTripwireContext.h
│   │       │   │   │   │   │   └── RuntimeConfig.h
│   │       │   │   │   │   ├── SynthTrace.h
│   │       │   │   │   │   ├── SynthTraceParser.h
│   │       │   │   │   │   ├── TraceInterpreter.h
│   │       │   │   │   │   ├── TracingRuntime.h
│   │       │   │   │   │   ├── hermes.h
│   │       │   │   │   │   └── hermes_tracing.h
│   │       │   │   │   ├── Resources
│   │       │   │   │   │   └── Info.plist
│   │       │   │   │   └── hermes
│   │       │   │   └── Current
│   │       │   │       ├── Headers
│   │       │   │       │   ├── CompileJS.h
│   │       │   │       │   ├── DebuggerAPI.h
│   │       │   │       │   ├── Public
│   │       │   │       │   │   ├── Buffer.h
│   │       │   │       │   │   ├── CrashManager.h
│   │       │   │       │   │   ├── CtorConfig.h
│   │       │   │       │   │   ├── DebuggerTypes.h
│   │       │   │       │   │   ├── GCConfig.h
│   │       │   │       │   │   ├── GCTripwireContext.h
│   │       │   │       │   │   └── RuntimeConfig.h
│   │       │   │       │   ├── SynthTrace.h
│   │       │   │       │   ├── SynthTraceParser.h
│   │       │   │       │   ├── TraceInterpreter.h
│   │       │   │       │   ├── TracingRuntime.h
│   │       │   │       │   ├── hermes.h
│   │       │   │       │   └── hermes_tracing.h
│   │       │   │       ├── Resources
│   │       │   │       │   └── Info.plist
│   │       │   │       └── hermes
│   │       │   └── hermes
│   │       └── hermes.framework.dSYM
│   │           └── Contents
│   │               ├── Info.plist
│   │               └── Resources
│   │                   └── DWARF
│   │                       └── hermes
│   ├── bin
│   │   ├── hbcdump
│   │   ├── hdb
│   │   ├── hermes
│   │   ├── hermesc
│   │   └── hvm
│   └── include
│       ├── hermes
│       │   ├── CompileJS.h
│       │   ├── DebuggerAPI.h
│       │   ├── Public
│       │   │   ├── Buffer.h
│       │   │   ├── CrashManager.h
│       │   │   ├── CtorConfig.h
│       │   │   ├── DebuggerTypes.h
│       │   │   ├── GCConfig.h
│       │   │   ├── GCTripwireContext.h
│       │   │   └── RuntimeConfig.h
│       │   ├── SynthTrace.h
│       │   ├── SynthTraceParser.h
│       │   ├── TraceInterpreter.h
│       │   ├── TracingRuntime.h
│       │   ├── hermes.h
│       │   └── hermes_tracing.h
│       └── jsi
│           ├── JSIDynamic.h
│           ├── decorator.h
│           ├── instrumentation.h
│           ├── jsi-inl.h
│           ├── jsi.h
│           ├── jsilib.h
│           └── threadsafe.h
├── hermes-runtime-darwin-v0.5.0.tar.gz
└── hermes.podspec

25 directories, 84 files
```

Reviewed By: mhorowitz

Differential Revision: D22510579

Pulled By: willholen

fbshipit-source-id: 31a234b908090cdcbf7d1eafe78269ed19583883

* Add explicit option to build Apple dSYM (#296)

Summary:
Add `HERMES_BUILD_APPLE_DSYM` option to build a dSYM bundle for the libhermes target on Apple platforms.

This will work with any of the build types and is off by default.

Installing the tools with the install/strip target will ensure all tools and the runtime lib are stripped of debug symbols, but leaving the dSYM bundle in tact.

Pull Request resolved: #296

Test Plan:

```bash
./src/utils/build/configure.py --distribute --cmake-flags='-DHERMES_BUILD_APPLE_DSYM:BOOLEAN=true -DCMAKE_INSTALL_PREFIX:PATH=../destroot_release' build_release
cmake --build ./build_release
```

```bash
cmake --build ./build_release --target install
nm -a destroot_release/bin/hermesc | wc -l
   27943
```

```bash
cmake --build ./build_release --target install/strip
nm -a destroot_release/bin/hermesc | wc -l
     250
```

…and dSYM DWARF metadata is maintained:

```bash
dwarfdump --statistics destroot_release/Library/Frameworks/hermes.framework.dSYM
{"version":3,"file":"destroot_release/Library/Frameworks/hermes.framework.dSYM/Contents/Resources/DWARF/hermes","format":"Mach-O 64-bit x86-64","source functions":30305,"source functions with location":30302,"inlined functions":172725,"inlined funcs with abstract origins":172725,"unique source variables":79276,"source variables":353690,"variables with location":232195,"call site entries":186409,"scope bytes total":19161949,"scope bytes covered":10500176,"total function size":1763513,"total inlined function size":998375,"total formal params":300264,"formal params with source location":166067,"formal params with type":300264,"formal params with binary location":200407,"total vars":38809,"vars with source location":38385,"vars with type":38809,"vars with binary location":22161}
```

Reviewed By: tmikov

Differential Revision: D22576263

Pulled By: willholen

fbshipit-source-id: 2bda49e638d145ba5d029e77069d6adcc0b1dd8c

* Create hermes-engine-darwin npm package (#297)

Summary:
{emoji:26a0} _This includes the changes of #296, so I’ll have to rebase this PR once that lands. The changes that pertain to this PR are in 9da61f7a9da01b5bd49e95dca0b98a5204210790_

Adds hermes-engine-darwin to the npm CI job.

Notably the symbolic links need to be stripped from the framework bundle, as npm by design does not support symbolic links to exist in packages. However, seeing as we already package distinct versions of the framework in distinct npm packages, there isn't any need to support multiple versions of Hermes in a single framework bundle; so this should be fine.

Pull Request resolved: #297

Test Plan: TODO: I’ll need to backport all changes to Hermes v0.4.1 in order to pull it into RN macOS v0.62. In the meantime I want to see if CI is correctly cutting this package.

Reviewed By: mhorowitz

Differential Revision: D22700399

Pulled By: willholen

fbshipit-source-id: f72aefa3fd98a85c8da3e9a38dfa6be9723a0270

* Kludge unit test resolution of Handle

* Remove special build directory suffixes in configure.py

Summary:
Right now, `configure.py` generates different directory suffixes
depending on the build mode. This can lead to some slightly
surprising behaviour when people build for ASAN/UBSAN and can also
make automated scripts that use `configure.py` clunkier. This change
removes those special suffixes when a build directory is specified.

Reviewed By: dulinriley

Differential Revision: D21268445

fbshipit-source-id: 90f5497f3930dee35dbea7e8f7ad64d6ac244fca

Co-authored-by: Eloy Durán <[email protected]>
Co-authored-by: Neil Dhar <[email protected]>
Saadnajmi pushed a commit to Saadnajmi/hermes that referenced this pull request Apr 7, 2026
…ook#296)

Bumps [brace-expansion](https://github.com/juliangruber/brace-expansion) from 1.1.12 to 1.1.13.
- [Release notes](https://github.com/juliangruber/brace-expansion/releases)
- [Commits](juliangruber/brace-expansion@v1.1.12...v1.1.13)

---
updated-dependencies:
- dependency-name: brace-expansion
  dependency-version: 1.1.13
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

CLA Signed Do not delete this pull request or issue due to inactivity. Merged

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants