# GNU make tools #
##################
/autom4te.cache
config/config.sub
config/config.guess
config/sp-config-h.in
config/compile
config/depcomp
config/install-sh
config/ltmain.sh
config/missing
config/test-driver
configure
makeflags
*.m4

# Bazel generated files #
#########################
/bazel-*
scripts/compile/env_exec.sh
config/heron-config.h
tools/cpp/osx_gcc_wrapper.sh
tools/cpp/CROSSTOOL
tools/cpp/osx
tools/cpp/gcc
tools/cpp/g++
tools/jdk/ijar
.DS_Store

# Vim
.*.swp
.*.swo

# Compiled source #
###################
/release/*.pom
*.com
*.class
*.dll
*.exe
*.o
*.so
*.jar
*.fyc
*.rbc
*.pyc
*.in
*.in~
*.swp

# Packages #
############
# it's better to unpack these files and commit the raw source
# git has its own built in compression methods
*.7z
*.dmg
*.iso
*.zip

# Logs and databases #
######################
*.log
*.sql
*.sqlite

# OS generated files #
######################
.DS_Store
.DS_Store?
._*
.Trashes

# Editor generated files #
##########################
.emacs-project
.ropeproject
*.swp

## Intellij ###
# Covers JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm

## Directory-based project format
.idea/
# if you remove the above rule, at least ignore user-specific stuff:
.idea/workspace.xml
.idea/tasks.xml
#  and these sensitive or high-churn files:
.idea/dataSources.ids
.idea/dataSources.xml
.idea/sqlDataSources.xml
.idea/dynamic.xml

## Maven generated files
.classpath.txt

## Generated by CI jobs run locally
heron_build.txt

## File-based project format
*.ipr
*.iws
*.iml
*.project
*.cproject
*.pydevproject

## Additional for IntelliJ
out/

# Eclipse
.autotools
.settings/
.metadata/
.project
.classpath
.autotools
target

# generated by mpeltonen/sbt-idea plugin
.idea_modules/

# generated by JIRA plugin
atlassian-ide-plugin.xml

# generated by Crashlytics plugin (for Android Studio and Intellij)
com_crashlytics_export_strings.xml

# generated for the website
website/node_modules/
website/public/
/bin/
website2/website/public
website2/website/static/api

# Visual Studio Code
.vscode

# integration_test
results/

# Vagrant
vagrant/.vagrant/
