All Projects → JaciBrunning → EmbeddedTools

JaciBrunning / EmbeddedTools

Licence: MIT License
Additions to the model-based DSL for deploying Java and Native projects to remote targets

Programming Languages

groovy
2714 projects

Projects that are alternatives of or similar to EmbeddedTools

Javapackager
📦 Gradle/Maven plugin to package Java applications as native Windows, Mac OS X, or GNU/Linux executables and create installers for them.
Stars: ✭ 285 (+1935.71%)
Mutual labels:  native, gradle
Reposilite
Lightweight repository management software dedicated for the Maven based artifacts (formerly NanoMaven) 📦
Stars: ✭ 222 (+1485.71%)
Mutual labels:  gradle, deploy
Android Camera2 Secret Picture Taker
Take pictures 📷 secretly (without preview or launching device's camera app) using Android CAMERA2 API
Stars: ✭ 275 (+1864.29%)
Mutual labels:  native, gradle
Cipher.so
A simple way to encrypt your secure data like passwords into a native .so library.
Stars: ✭ 1,308 (+9242.86%)
Mutual labels:  native, gradle
Remot3d
Remot3d: is a simple tool created for large pentesters as well as just for the pleasure of defacers to control server by backdoors
Stars: ✭ 263 (+1778.57%)
Mutual labels:  tools, remote
Imgui
Dear ImGui: Bloat-free Graphical User interface for C++ with minimal dependencies
Stars: ✭ 33,574 (+239714.29%)
Mutual labels:  tools, native
Dearpygui
Dear PyGui: A fast and powerful Graphical User Interface Toolkit for Python with minimal dependencies
Stars: ✭ 6,631 (+47264.29%)
Mutual labels:  tools, native
Gdbstub
A simple, dependency-free GDB stub that can be easily dropped in to your project.
Stars: ✭ 56 (+300%)
Mutual labels:  embedded, tools
target-stitch
A Singer.io Target for the Stitch Import API
Stars: ✭ 21 (+50%)
Mutual labels:  target
microframeworks-showcase
A simple grocery list webapplication implemented with the Microframeworks Spark Java, Jodd, Ninja, Javalite, Pippo and Ratpack
Stars: ✭ 29 (+107.14%)
Mutual labels:  gradle
vlsi-release-plugins
A set of plugins to simplify Gradle release tasks
Stars: ✭ 30 (+114.29%)
Mutual labels:  gradle
3d-core-raub
An extensible Node.js 3D core for desktop applications
Stars: ✭ 55 (+292.86%)
Mutual labels:  native
appbuilders18app
The App Builders 2018 iOS and Android app built as an experiment in React Native.
Stars: ✭ 29 (+107.14%)
Mutual labels:  native
basgo
basgo compiles BASIC-lang to Golang. Then 'go build' can translate code to native executable binary.
Stars: ✭ 31 (+121.43%)
Mutual labels:  native
lv lib rlottie
Lottie animation support for LVGL
Stars: ✭ 16 (+14.29%)
Mutual labels:  embedded
android-easy-gcm
Use this library to add GCM to your project, only in a few minutes !
Stars: ✭ 50 (+257.14%)
Mutual labels:  gradle
TiktokClone
TIKTOK Clone React Native Tutorial 2021 👨‍💻 I'll show you how you can do this in the simplest way and terms possible. By the end of this series you'll have learned how the big companies do it and will be able to do the same, you not only will be able to do this app, but you'll be able to put what you learn into your very own projects! In this se…
Stars: ✭ 69 (+392.86%)
Mutual labels:  native
biobakery
bioBakery tools for meta'omic profiling
Stars: ✭ 142 (+914.29%)
Mutual labels:  tools
sphinx-gradle-plugin
Sphinx site generation plugin for Gradle
Stars: ✭ 19 (+35.71%)
Mutual labels:  gradle
gradle-cleaner-intellij-plugin
Force clear delaying & no longer needed Gradle tasks.
Stars: ✭ 26 (+85.71%)
Mutual labels:  gradle

EmbeddedTools

Compile and Deploy for Embedded Targets in both Java and C++.

EmbeddedTools adds compiler and library rules to make writing native software easier. For all projects, you can define deployment targets and artifacts. The deploy process works over SSH/SFTP and is extremely quick.

Commands: gradlew deploy will deploy all artifacts gradlew deploy<artifact name><target name> will deploy only the specified artifact to the specified target

Properties: gradlew deploy -Pdeploy-dirty will skip the cache check and force redeployment of all files gradlew deploy -Pdeploy-dry will do a 'dry run' (will not connect or deploy to target, instead only printing to console)

Installing plugin

Include the following in your build.gradle

plugins {
    id "jaci.gradle.EmbeddedTools" version "<latest version>"
}

See https://plugins.gradle.org/plugin/jaci.gradle.EmbeddedTools for the latest version

Spec

import jaci.gradle.toolchains.*
import jaci.gradle.nativedeps.*

// DSL (all properties optional unless stated as required)
deploy {
    targets {
        target('myTarget') {
            directory = '/home/myuser'  // The root directory to start deploying to. Default: user home
            maxChannels = 1         // The number of channels to open on the target (how many files / commands to run at the same time). Default: 1
            timeout = 3             // Timeout to use when connecting to target. Default: 3 (seconds)
            failOnMissing = true    // Should the build fail if the target can't be found? Default: true

            locations {
                ssh {
                    address = "mytarget.local"  // Required. The address to try
                    user = 'myuser'             // Required. The user to login as
                    password = ''               // The password for the user. Default: blank (empty) string
                    ipv6 = false                // Are IPv6 addresses permitted? Default: false
                }
            }
        }
    }

    artifacts {
        // COMMON PROPERTIES FOR ALL ARTIFACTS //
        all {
            directory = 'mydir'                     // Subdirectory to use. Relative to target directory
            targets << 'myTarget'                   // Targets to deploy to

            onlyIf = { execute('echo Hi').result == 'Hi' }   // Check closure for artifact. Will not deploy if evaluates to false

            predeploy << { execute 'echo Pre' }      // After onlyIf, but before deploy logic
            postdeploy << { execute 'echo Post' }    // After this artifact's deploy logic

            disabled = true                         // Disable this artifact. Default: false.

            dependsOn('someTask')                   // Make this artifact depend on a task
        }
        // END COMMON //

        fileArtifact('myFileArtifact') {
            file = file('myFile')               // Set the file to deploy. Required.
            filename = 'myFile.dat'             // Set the filename to deploy to. Default: same name as file
        }

        // FileCollectionArtifact is a flat collection of files - directory structure is not preserved
        fileCollectionArtifact('myFileCollectionArtifact') {
            files = fileTree(dir: 'myDir')      // Required. Set the filecollection (e.g. filetree, files, etc) to deploy
        }

        // FileTreeArtifact is like a FileCollectionArtifact, but the directory structure is preserved
        fileTreeArtifact('myFileTreeArtifact') {
            files = fileTree(dir: 'mydir')      // Required. Set the fileTree (e.g. filetree, ziptree) to deploy
        }

        commandArtifact('myCommandArtifact') {
            command = 'echo Hello'              // The command to run. Required.
            // Output will be stored in 'result' after execution
        }

        // JavaArtifact inherits from FileArtifact
        javaArtifact('myJavaArtifact') {
            jar = 'jar'                         // The jar (or Jar task) to deploy. Default: 'jar'
            // Note: This artifact will automatically depend on the jar build task
        }

        // NativeArtifact inherits from FileArtifact
        nativeArtifact('myNativeArtifact') {
            component = 'my_program'            // Required. The name of the native component (model.components {}) to deploy.
            targetPlatform = 'desktop'          // The name of the native platform (model.platforms {}) to deploy.

            // Note: This artifact will automatically depend on the native component link task
        }

        // NativeLibraryArtifact inherits from FileCollectionArtifact
        nativeLibraryArtifact('myNativeLibraryArtifact') {
            library = 'mylib'                   // Required. Name of library (model.libraries {}) to deploy.
            targetPlatform = 'desktop'          // The name of the native platform (model.platforms {}) to deploy.
            flavor = 'myFlavor'                 // The name of the flavor (model.flavors {}) to deploy.
            buildType = 'myBuildType'           // The name of the buildType (model.buildTypes {}) to deploy.
        }
    }
}

model {
    libraries {
        // COMMON PROPERTIES FOR ALL LIBRARIES //
        all {
            libraryName = 'myactuallib'     // The name to give this library in useLibrary and when referencing from other places.
            targetPlatform = 'desktop'      // The name of the native platform (model.platforms {}) this lib is built for
            targetPlatforms = ['desktop1', 'desktop2']  // Same as targetPlatform, but for multiple platforms.
            flavor = 'myFlavor'             // The name of the flavor (model.flavors {}) this lib is for
            buildType = 'myBuildType'       // The name of the buildType (model.buildTypes {}) this lib is for
        }
        // END COMMON

        mylib(NativeLib) {
            headerDirs << 'include'                         // Directories for headers
            sourceDirs << 'sources'                         // Directories for sources
            staticMatchers << '**/*.a'                      // Static Libraries to be linked at compile time
            sharedMatchers << '**/*.so'                     // Shared Libraries to be linked at compile time
            dynamicMatchers << '**/*.so'                    // Libraries that aren't linked, but still needed at runtime.
            systemLibs << 'm'                               // System libs to load with -l (provided by toolchain)

            maven = "some.maven.package:mylib:1.0.0@zip"    // Load from maven. Must be a zip or zip-compatible (like a jar)
            file = project.file("mylib.zip")                // Load from filesystem instead. Can be given a zip or a directory.
        }

        // You can create a collection of libraries using CombinedNativeLib
        myComboLib(CombinedNativeLib) {
            libs << 'myactuallib' << 'someotherlib'
        }
    }

    components {
        my_program(NativeExecutableSpec) {
            embeddedTools.useLibrary(it, "myComboLib")
        }
    }
}
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].