defmodule <%= app_module %>.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: :<%= app_name %>, version: "0.1.0", elixir: "<%= elixir_req %>", target: @target, archives: [nerves_bootstrap: "~> <%= bootstrap_vsn %>"],<%= if in_umbrella do %> deps_path: "../../deps/#{@target}", build_path: "../../_build/#{@target}", config_path: "../../config/config.exs", lockfile: "../../mix.lock.#{@target}",<% else %> deps_path: "deps/#{@target}", build_path: "_build/#{@target}", lockfile: "mix.lock.#{@target}",<% end %> 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 <%= app_module %>.start/2 when running on a target. def application("host") do [extra_applications: [:logger]] end def application(_target) do [mod: {<%= app_module %>.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_dep %>] ++ deps(@target) end # Specify target specific dependencies def deps("host"), do: [] def deps(target) do [ {:bootloader, "~> <%= bootloader_vsn %>"}, {:nerves_runtime, "~> <%= runtime_vsn %>"} ] ++ system(target) end <%= for target <- targets do %> def system("<%= target %>"), do: [{:<%= "nerves_system_#{target}" %>, ">= 0.0.0", runtime: false}] <% end %> 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"]] end end