Skip to content
PowerShell-based build recipes for mingw/minw-w64 Windows systems
PowerShell
Find file
Failed to load latest commit information.
hashery Update OpenSSL SHA1 hashes
tools Add upx-ized 7za.exe cmd line archive tool
.gitignore Place built artifacts in pkg subdir. Closes #21
LICENSE Add LICENSE
README.md Update README with new buildlet list
bootstrap.ps1 Update available buildlets list
build_bzip2.ps1 Place built artifacts in pkg subdir. Closes #21
build_fossil.ps1 Do not strip the fossil executable
build_libarchive.ps1 Update libarchive build configuration
build_libffi.ps1 Update libffi buildlet to support 3.2.1
build_libiconv.ps1 Refactor configure's toolchain triplet generation
build_liblzma.ps1 Update liblzma to support only 5.2.0 & 5.2.1
build_libsodium.ps1 Update libsodium buildlet to support only 1.0.3
build_lua.ps1 Update lua buildlet to support 5.3.0 and 5.2.3
build_lzo2.ps1 Refactor configure's toolchain triplet generation
build_minised.ps1 Update minised buildlet to support version 1.15
build_openssl.ps1 Update OpenSSL to support 1.0.1r and 1.0.2f
build_ragel.ps1 Code refactor the ragel buildlet
build_sqlite.ps1 Update SQLite buildlet to support 3.10.2
build_tcltk.ps1 Update Tcl/Tk buildlet to support 8.6.3
build_unqlite.ps1 Place built artifacts in pkg subdir. Closes #21
build_zlib.ps1 Place built artifacts in pkg subdir. Closes #21
buildlet_utils.ps1 Ensure clean up occurs after any build error

README.md

Buildlets

An eclectic collection of single file, minimal dependency, PowerShell-based build recipes for creating libraries and executables on mingw/minw-w64 Windows systems.

In contrast with other well known port-style systems, buildlets enable one to quickly build binary artifacts with minimal ceremony and minimal persistent configuration. Typically one downloads a buildlet, runs it, and gets a binary archive. What you do next is up to you.

Buildlets are very mercenary in their focus and actions. No interdependency management. No complex configuration nor massive directory trees of persistent local data. As such, the buildlet system will always be a tradeoff between minimalism and modular reusability.

Dependencies

  • PowerShell 3.0+
  • .NET Framework v3.5+
  • Live internet connection
  • MinGW or mingw-w64 based toolchain with MSYS, Autotools, and Perl superpowers. Currently, buildlets requires that you create a toolchain.json file describing the relevant PATH to your 32-bit and 64-bit msys/mingw-based toolchains.

Basic Usage

Assuming you have a capable mingw or mingw-w64 toolchain already installed, typical usage can be as simple as the following:

  1. Open PowerShell
  2. Download the bootstrap.ps1 script

    curl
    ====
      curl --cacert C:\tools\cacert.pem -L -O https://raw.github.com/jonforums/buildlets/master/bootstrap.ps1
    
    powershell via cmd.exe
    ======================
      @powershell -NoProfile -ExecutionPolicy unrestricted -Command "(new-object net.webclient).DownloadFile('https://raw.github.com/jonforums/buildlets/master/bootstrap.ps1', 'bootstrap.ps1')"
    
  3. Create a toolchain.json file describing the PATH requirements of your build toolchains

    {
      "x32": {
        "path": [
          "C:/DevKit-x32-4.8.2/bin",
          "C:/DevKit-x32-4.8.2/mingw/bin"
        ],
        "build": "i686-w64-mingw32"
      },
    
      "x64": {
        "path": [
          "C:/Apps/DevTools/msys/bin",
          "C:/Apps/DevTools/mingw/bin"
        ],
        "build": "x86_64-w64-mingw32"
      }
    }
    
  4. Execute bootstrap.ps1 to list available buildlets, automatically fetch any required build tool, and optionally, download an initial buildlet

    PS foo> .\bootstrap.ps1 ls
    
    == Available Buildlets ==
       build_bzip2
       build_fossil
       build_libarchive
       build_libffi
       build_libiconv
       build_liblzma
       build_libsodium
       build_lua
       build_lzo2
       build_minised
       build_openssl
       build_ragel
       build_sqlite
       build_tcltk
       build_unqlite
       build_zlib
    
    PS foo> .\bootstrap.ps1 build_lua
    ---> creating C:\Users\Jon\Downloads\temp\foo\tools
    ---> downloading tool: 7za.exe
    ---> downloading build_lua.ps1
    
  5. Execute the buildlet

    PS foo> .\build_lua.ps1 5.2.1
    ---> fetching buildlet library
    ---> downloading http://www.lua.org/ftp/lua-5.2.1.tar.gz
    ---> validating lua-5.2.1.tar.gz
    ---> extracting lua-5.2.1.tar.gz
    ---> activating toolchain
    ---> configuring lua-5.2.1
    ---> building lua-5.2.1
    ---> creating binary archive for lua-5.2.1
    ---> cleaning up
    
    PS foo> .\build_lua.ps1 5.2.2 -x64
    ---> downloading http://www.lua.org/ftp/lua-5.2.2.tar.gz
    ---> validating lua-5.2.2.tar.gz
    ---> extracting lua-5.2.2.tar.gz
    ---> activating toolchain [64-bit]
    ---> configuring lua-5.2.2 [64-bit]
    ---> building lua-5.2.2 [64-bit]
    ---> creating binary archive for lua-5.2.2 [64-bit]
    ---> cleaning up
    
  6. Find built artifacts in the pkg sub-directory

License

3-clause BSD

Something went wrong with that request. Please try again.