Skip to main content

djinni_build.py 🦎

GitHub release (latest by date) GitHub PyPI - Downloads

Utility to package and distribute Djinni libraries easily.

Requirements

What it does

This utility automates the building & packaging for Djinni libraries.

It supports these platforms:

  • Android (AAR)
  • iOS (xcframework, Swiftpackage)
  • macOS (xcframework, Swiftpackage)
  • Windows (NuGet .NET package)
  • Linux (Conan)

DjinniBuild provides a CLI that allows the user to configure what the output should be.

The user is able to configure:

  • What target platform to build for (Android, iOS, macOS, Windows, Linux)
  • Which architectures to build for (x86, x86_64, armv7, armv8)
  • How to package the resulting binaries (AAR, NuGet, XCFramework, Swift Package, Conan)

For every target language, the following steps are executed:

  • Configure Project & Install Dependencies: Runs conan install for each target architecture & target platform to configure the CMake project and install all dependencies defined in the Conanfile.
  • Build: Runs conan build for each requested target architecture & platform
  • Package: Executes the platform specific packaging tasks.

How to use

Install djinni_build from PYPi:

pip install djinni_build

Then import DjinniBuild and configure the project structure and then execute the main() function:

#!/usr/bin/env python3

from djinni_build import DjinniBuild

djinniBuild = DjinniBuild(
  darwin_target='MyDjinniLibrary',
  windows_target='MyDjinniLibrary',
  android_target='MyDjinniLibrary',
  android_module_name='MyDjinniLibrary',
  nupkg_name='MyDjinniLibrary',
  conan_user='jothepro',
  conan_channel='release'
)
djinniBuild.main()

In its current state not everything in the script is configurable and some things will only work if the correct directory structures and files are present. It is recommended to strictly stick with the project structure of jothepro/djinni-library-template to avoid compatibility issues!

CLI Interface

This example output from the CLI shows what the configuration options for the user are:

usage: build.py [-h] [--configuration {release,debug}] [--android [{x86_64,x86,armv8,armv7} ...]] [--macos [{armv8,x86_64} ...]]
                [--iphonesimulator [{armv8,x86_64} ...]] [--iphoneos [{armv8,armv7} ...]] [--windows [{x86_64,x86,armv8,armv7} ...]]
                [--linux [{x86_64,x86,armv8,armv7} ...]] [--build-directory BUILD_DIRECTORY] [--build-profile CONAN_BUILD_PROFILE]
                [--package [{xcframework,swiftpackage,conan,aar,nuget} ...]]

Build & package library for different platforms

options:
  -h, --help            show this help message and exit
  --configuration {release,debug}
  --android [{x86_64,x86,armv8,armv7} ...]
                        list of architectures that the library should be built for android
  --macos [{armv8,x86_64} ...]
                        list of architectures to build for macOS
  --iphonesimulator [{armv8,x86_64} ...]
                        list of architectures to build for the iOS Simulator
  --iphoneos [{armv8,armv7} ...]
                        list of architectures to build for iOS
  --windows [{x86_64,x86,armv8,armv7} ...]
                        list of architectures to build for windows
  --linux [{x86_64,x86,armv8,armv7} ...]
                        list of architectures to build for linux
  --build-directory BUILD_DIRECTORY
  --build-profile CONAN_BUILD_PROFILE
  --package [{xcframework,swiftpackage,conan,aar,nuget} ...]
                        which packages to create. Packages that cannot be created for the selected target platforms will be ignored.

Metadata

Release files for djinni-build 2.0.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for djinni-build 2.0.0
File Size Uploaded
djinni_build-2.0.0.tar.gz 11.5 kB Details

Release files / djinni_build-2.0.0.tar.gz

Download URL djinni_build-2.0.0.tar.gz
Size 11.5 kB
Tags Source
SHA-256 checksum
How to use checksums
93ccf9c9b5bc27f7d78fb3310f2d126b7c87d7f23567c5a5056bc0be6966a326
BLAKE2b-256 checksum
How to use checksums
bf66a05b20de9bcfeb6fba852fee265c2633aa8c41d7c1819f3365f2a4ec4970
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.1 CPython/3.9.14

Release history Release notifications | RSS feed

This release

2.0.0 This release

1 release file

1.0.0

1 release file

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page