// Copyright 2015 The Vanadium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.

// Package profile defines types for the implementation of Vanadium profiles.
package profile

import "v.io/v23/services/build"

// Library describes a shared library that applications may use.
type Library struct {
	// Name is the name of the library.
	Name         string
	// MajorVersion is the major version of the library.
	MajorVersion string
	// MinorVersion is the minor version of the library.
	MinorVersion string
}

// Specification is how we represent a profile internally. It should
// provide enough information to allow matching of binaries to devices.
type Specification struct {
	// Label is a human-friendly concise label for the profile,
	// e.g. "linux-media".
	Label       string
	// Description is a human-friendly description of the profile.
	Description string
	// Arch is the target hardware architecture of the profile.
	Arch        build.Architecture
	// Os is the target operating system of the profile.
	Os          build.OperatingSystem
	// Format is the file format supported by the profile.
	Format      build.Format
	// Libraries is a set of libraries the profile requires.
	Libraries   set[Library]
}
