defmodule DuckTag.Mixfile do use Mix.Project @target System.get_env("MIX_TARGET") || "host" Mix.shell().info([ :green, """ Mix environment MIX_TARGET: #{@target} MIX_ENV: #{Mix.env()} """, :reset ]) def project do [ app: :duck_tag, version: "0.1.0", elixir: "~> 1.5", target: @target, archives: [nerves_bootstrap: "~> 0.6"], deps_path: "deps/#{@target}", build_path: "_build/#{@target}", lockfile: "mix.lock.#{@target}", build_embedded: Mix.env() == :prod, start_permanent: Mix.env() == :prod, aliases: aliases(@target), deps: deps() ] end # Configuration for the OTP application. # # Type `mix help compile.app` for more information. def application, do: application(@target) # Specify target specific application configurations # It is common that the application start function will start and supervise # applications which could cause the host to fail. Because of this, we only # invoke DuckTag.start/2 when running on a target. def application("host") do [extra_applications: [:logger]] end def application(_target) do [mod: {DuckTag.Application, []}, extra_applications: [:logger]] end # Dependencies can be Hex packages: # # {:my_dep, "~> 0.3.0"} # # Or git/path repositories: # # {:my_dep, git: "https://github.com/elixir-lang/my_dep.git", tag: "0.1.0"} # # Type "mix help deps" for more examples and options def deps do [ {:nerves, "~> 0.7", runtime: false}, {:ex2ms, "~> 1.5.0"}, {:amnesia, "~> 0.2.7"}, {:uuid, "~> 1.1"} ] ++ deps(@target) end # Specify target specific dependencies def deps("host"), do: [ {:nerves_firmware_ssh, "~> 0.3"} ] def deps(target) do [ {:bootloader, "~> 0.1"}, {:nerves_runtime, "~> 0.4"}, {:nerves_init_gadget, "~> 0.2"}, {:nerves_io_rc522, "~> 0.1.0"}, {:observer_cli, "~> 1.1.0"}, {:nerves_network, "~> 0.3"}, {:nerves_init_net_kernel, github: "mobileoverlord/nerves_init_net_kernel"} ] ++ system(target) end def system("rpi"), do: [{:nerves_system_rpi, ">= 0.0.0", runtime: false}] def system("rpi0"), do: [{:nerves_system_rpi0, ">= 0.0.0", runtime: false}] def system("rpi2"), do: [{:nerves_system_rpi2, ">= 0.0.0", runtime: false}] def system("rpi3"), do: [{:nerves_system_rpi3, ">= 0.0.0", runtime: false}] def system("bbb"), do: [{:nerves_system_bbb, ">= 0.0.0", runtime: false}] def system("linkit"), do: [{:nerves_system_linkit, ">= 0.0.0", runtime: false}] def system("ev3"), do: [{:nerves_system_ev3, ">= 0.0.0", runtime: false}] def system("qemu_arm"), do: [{:nerves_system_qemu_arm, ">= 0.0.0", runtime: false}] def system(target), do: Mix.raise("Unknown MIX_TARGET: #{target}") # We do not invoke the Nerves Env when running on the Host def aliases("host"), do: [] def aliases(_target) do [ "deps.precompile": ["nerves.precompile", "deps.precompile"], "deps.loadpaths": ["deps.loadpaths", "nerves.loadpaths"], loadconfig: [&bootstrap/1] ] end def bootstrap(args) do Application.start(:nerves_bootstrap) Mix.Task.run("loadconfig", args) end end