Home | History | Annotate | Download | only in cc
      1 // Copyright 2016 Google Inc. All rights reserved.
      2 //
      3 // Licensed under the Apache License, Version 2.0 (the "License");
      4 // you may not use this file except in compliance with the License.
      5 // You may obtain a copy of the License at
      6 //
      7 //     http://www.apache.org/licenses/LICENSE-2.0
      8 //
      9 // Unless required by applicable law or agreed to in writing, software
     10 // distributed under the License is distributed on an "AS IS" BASIS,
     11 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
     12 // See the License for the specific language governing permissions and
     13 // limitations under the License.
     14 
     15 package cc
     16 
     17 import (
     18 	"android/soong/android"
     19 )
     20 
     21 type StripProperties struct {
     22 	Strip struct {
     23 		None         *bool
     24 		Keep_symbols *bool
     25 	}
     26 }
     27 
     28 type stripper struct {
     29 	StripProperties StripProperties
     30 }
     31 
     32 func (stripper *stripper) needsStrip(ctx ModuleContext) bool {
     33 	return !ctx.Config().EmbeddedInMake() && !Bool(stripper.StripProperties.Strip.None)
     34 }
     35 
     36 func (stripper *stripper) strip(ctx ModuleContext, in, out android.ModuleOutPath,
     37 	flags builderFlags) {
     38 	if ctx.Darwin() {
     39 		TransformDarwinStrip(ctx, in, out)
     40 	} else {
     41 		flags.stripKeepSymbols = Bool(stripper.StripProperties.Strip.Keep_symbols)
     42 		// TODO(ccross): don't add gnu debuglink for user builds
     43 		flags.stripAddGnuDebuglink = true
     44 		TransformStrip(ctx, in, out, flags)
     45 	}
     46 }
     47