Spracherkennung für: .go vermutete Sprache: Abap {ABAP[80] CS[68] SML[68]} [Methode: maximale Elemente, drei Dimensionen]
// Copyright
2016 Google Inc. All rights reserved.
//
// Licensed
under the Apache License, Version
2.
0 (the
"License");
// you may not use this
file except
in compliance with the License.
// You may obtain a
copy of the License
at
//
//
http://www.apache.org/licenses/LICENSE-2.
0
//
// Unless required
by applicable law
or agreed
to in writing, software
// distributed
under the License
is distributed
on an
"AS IS" BASIS,
// WITHOUT WARRANTIES
OR CONDITIONS
OF ANY KIND, either express
or implied.
// See the License
for the specific
language governing permissions
and
// limitations
under the License.
package cc
import (
"strings"
"android/soong/android"
)
// StripProperties defines the
type of stripping applied
to the
module.
type StripProperties struct {
Strip struct {
// Device modules default
to stripping enabled leaving mini debuginfo.
// Host modules default
to stripping disabled, but can be enabled
by setting
any other
// strip boolean
property.
None
*bool `android:"arch_variant"`
// all forces stripping everything, including the mini debug info.
All
*bool `android:"arch_variant"`
// keep_symbols enables stripping but keeps all symbols.
Keep_symbols
*bool `android:"arch_variant"`
// keep_symbols_list specifies a list
of symbols
to keep
if keep_symbols
is enabled.
//
If it
is unset then all symbols are kept.
Keep_symbols_list []
string `android:
"arch_variant"`
// keep_symbols_and_debug_frame enables stripping but keeps all symbols
and debug frames.
Keep_symbols_and_debug_frame
*bool `android:"arch_variant"`
} `android:
"arch_variant"`
}
// Stripper defines the stripping actions
and properties
for a
module.
type Stripper struct {
StripProperties StripProperties
}
// NeedsStrip determines
if stripping
is required
for a
module.
func (stripper
*Stripper) NeedsStrip(actx android.ModuleContext) bool {
forceDisable := Bool(stripper.StripProperties.Strip.None)
// Strip
is enabled
by default
for device variants.
defaultEnable := actx.Device() || actx.Config().StripByDefault()
forceEnable := Bool(stripper.StripProperties.Strip.All) ||
Bool(stripper.StripProperties.Strip.Keep_symbols) ||
Bool(stripper.StripProperties.Strip.Keep_symbols_and_debug_frame)
return !forceDisable && (forceEnable || defaultEnable)
}
func (stripper
*Stripper) strip(actx android.ModuleContext, in android.Path, out android.WritablePath,
flags StripFlags, isStaticLib bool) {
if actx.Darwin() {
transformDarwinStrip(actx,
in, out)
}
else {
if Bool(stripper.StripProperties.Strip.Keep_symbols) {
flags.StripKeepSymbols = true
}
else if Bool(stripper.StripProperties.Strip.Keep_symbols_and_debug_frame) {
flags.StripKeepSymbolsAndDebugFrame = true
}
else if len(stripper.StripProperties.Strip.Keep_symbols_list) >
0 {
flags.StripKeepSymbolsList = strings.
Join(stripper.StripProperties.Strip.Keep_symb
ols_list, ",")
} else if !Bool(stripper.StripProperties.Strip.All) {
flags.StripKeepMiniDebugInfo = true
}
if actx.Config().Debuggable() && !flags.StripKeepMiniDebugInfo && !isStaticLib {
flags.StripAddGnuDebuglink = true
}
transformStrip(actx, in, out, flags)
}
}
// StripExecutableOrSharedLib strips a binary or shared library from its debug
// symbols and other debugging information. The helper function
// flagsToStripFlags may be used to generate the flags argument.
func (stripper *Stripper) StripExecutableOrSharedLib(actx android.ModuleContext, in android.Path,
out android.WritablePath, flags StripFlags) {
stripper.strip(actx, in, out, flags, false)
}
// StripStaticLib strips a static library from its debug symbols and other
// debugging information. The helper function flagsToStripFlags may be used to
// generate the flags argument.
func (stripper *Stripper) StripStaticLib(actx android.ModuleContext, in android.Path, out android.ModuleOutPath,
flags StripFlags) {
stripper.strip(actx, in, out, flags, true)
}