# Copyright (C) 2016 The Android Open Source Project
#
# 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.

# Generated globbing source file
# This file will be automatically regenerated if deleted, do not edit by hand.
# If you add a new file to the directory, just delete this file, run any cmake
# build and the file will be recreated, check in the new version.

set(files
    chain.go
    context.go
    context_test.go
    detail.go
    errors.go
    filter.go
    filter_test.go
    handler.go
    handler_test.go
    log.go
    log.pb.go
    log.proto
    log_example_test.go
    log_test.go
    logger.go
    logger_test.go
    message.go
    raw.go
    record.go
    record_test.go
    severity.go
    stack_test.go
    stacktrace.go
    stacktrace_test.go
    style.go
    style_test.go
    tag.go
    trace.go
    trace_test.go
    values.go
)
set(dirs
    
)
