Can I use EBuild.exe from Fire?

On a Mac, I tried replacing the /usr/local/bin/ebuild created by the zip installer:

mono "/usr/local/lib/elements/EBuild.exe" "$@"

with

mono "/Applications/Fire.app/Contents/Resources/EBuild.exe" "$@"

But when I try to build a .Net Core application using EBuild.exe from Fire fails:

"/usr/local/bin/ebuild" "test_simpleio_gpio.elements" --configuration:Release
RemObjects EBuild. An open source build engine for Elements and beyond.
Copyright RemObjects Software 2016-2019. All Rights Reserved. Created by marc hoffman.
Version 10.0.0.2455 (develop) built on bajor, 20191115-133828. Commit d32e9b8.

E: Reference 'Echoes' could not be resolved for target 'Echoes' (Echoes .NETCore anycpu).
E: Reference 'Elements' could not be resolved for target 'Echoes' (Echoes .NETCore anycpu).

It would be nice to build from the command line on MacOS without having to install the compiler zip file.

The same idea works on Windows; I can use the EBuild.exe from Water to build from the command line.

That’ll work in theory, but without Elememtys installed externally, EBuild doesn’t know where to find its references, so you’ll need to pass it that, say using --setting:AdditionalReferencePaths=/Applications/Fire.app/Contents/Resources/References, and possibly m ore settings for Cocoa and Island.

Check the build log in Fire; the fiery line shows the exact command line Fire runs, and should have all the details you need. (you’ll wanna drop --logger:Fire, as the Fire logger output is not nice to look at).

eg, here’s a typical command line example:

/Users/mh/Code/Fire/Bin/Build/macOS/Fire.app/Contents/Resources/Mono/bin/mono
/Users/mh/Code/Fire/Bin/Build/macOS/Fire.app/Contents/Resources/EBuild.exe
--setting:Elements:ToffeeSDKFolder=/Users/mh/Code/Fire/Bin/Build/macOS/Fire.app/Contents/Resources/Toffee SDKs
--setting:Elements:IslandSDKFolder=/Users/mh/Code/Fire/Bin/Build/macOS/Fire.app/Contents/Resources/Island SDKs
--setting:Elements:GothamXmlFolder=/Users/mh/Code/Fire/Bin/Build/macOS/Fire.app/Contents/Resources/Gotham XMLs
--setting:Elements:ReferencePathsXMLFolder=/Users/mh/Code/Fire/Bin/Build/macOS/Fire.app/Contents/Resources/Reference Paths
--setting:Elements:IslandLddExePath=/Users/mh/Code/Fire/Bin/Build/macOS/Fire.app/Contents/Resources/lld
--setting:Elements:ToffeeHelperExePath=/Users/mh/Code/Fire/Bin/Build/macOS/Fire.app/Contents/Resources/ToffeeHelper
/Users/mh/Code/Fire/Fire.sln
--logger:fire
--configuration:Debug
--skip-projects:{4D283143-C13F-478F-A328-485E98D22CF1};{283160F8-DB02-4664-AC06-33775751FB3D};{2C838801-74E3-4310-80BF-87197D585392};{F8A2E4F6-C122-4A06-A27B-D77591E674CD};{A08656AE-2FC8-461A-8652-139EBB864027};{DCBB9121-3083-4AED-8382-6A0508345697};{0E43EC2B-3FB5-41E8-9216-94E9D36F45E1};{8E285C6B-72BC-42E2-B1D4-62B2CE3F1803};{F691E77E-4268-492D-A4A9-3F051E2A8C2D};{A3E573CB-5DCD-47F4-A68E-B6506DE6B5CC};{D61B13EC-72B6-43FF-8E3F-5A1F55D084D3};{BED84B71-C8A2-4CFC-AC14-20BBCC92B117}
--skip-targets:{74B6756D-E88F-4BCB-914C-F9D3FF7CF9AC}|Island.Darwin.macOS;{74B6756D-E88F-4BCB-914C-F9D3FF7CF9AC}|Island.Windows;{74B6756D-E88F-4BCB-914C-F9D3FF7CF9AC}|Echoes;{74B6756D-E88F-4BCB-914C-F9D3FF7CF9AC}|Echoes.Core
--setting:422FE111-913B-4228-A5E6-75E3A5998510,Device=True
--setting:D1625505-606F-4C8E-BD36-21C58A3C291A,Device=True
--debug
--statistics
--verbosity:diagnostic
--xml:/var/folders/wl/n_01zc255cv_1b994z_kdf9c0000gn/T/Fire.fire.xml
--build
--setting:TreatFixableErrorsAsWarnings=True

At the very least you’ll wanna have --setting:Elements:ReferencePathsXMLFolder, for .NET and .NET Core.

That worked. I needed to add

--setting:AdditionalReferencePaths=/Applications/Fire.app/Contents/Resources/References

for .Net Core apps and

--setting:Elements:IslandSDKFolder=/Applications/Fire.app/Contents/Resources/Island\ SDKs

for Linux Island apps. And I also needed to symlink libRemObjects.Elements.LLVM.dylib for Island.

Thanks for your quick answer.

1 Like
--setting:AdditionalReferencePaths=/Applications/Fire.app/Contents/Resources/References

or

--setting:Elements:ReferencePathsXMLFolder=/Applications/Fire.app/Contents/Resources/Reference Paths

should accomplish the same thing, yeah.