# Compiled Object files
*.slo
*.lo
*.o
*.obj

# Precompiled Headers
*.gch
*.pch

# Compiled Dynamic libraries
*.so
*.dylib
*.dll

# Fortran module files
*.mod

# Compiled Static libraries
*.lai
*.la
*.a
*.lib

# Executables
*.exe
*.out
*.app
*~

# doc
doc/html
doc/latex
doc/doc
docs/web-data
.jekyll-cache
*.lock

#dmlc
config.mk
config.cmake

*.pyc
.Rhistory
*log
Debug
*suo
tracker

# vim
*.swp
*.swo
*.swn
.vimrc
.ycm_extra_conf.py
.ycm_extra_conf.pyc

# Emacs
.#*
.clang_complete
.dir-locals.el
__pycache__
*.pkl
*.params
*.states
*.json
*.d
cmake-build*
data
model
recommonmark

# R
*.Rcheck
*.rds
*.Rproj
.Rproj.user
R-package/inst/*
*.tar.gz
*.tgz
R-package/man/*.Rd
R-package/R/mxnet_generated.R

# data
*.rec
*.lst
*.zip
*ubyte
*.bin
*.txt
!CMakeLists.txt

# ipython notebook
*_pb2.py
*.ipynb_checkpoints*
input.txt*

# Jetbrain
.idea
.gradle
*.iml

# ctags
tags

# cscope
cscope.out
cscope.files

# Eclipse project config
.project
.cproject
.classpath
.settings
.pydevproject
CMakeFiles
cmake_install.cmake

# Visual Studio Code
.vscode

# Mac OS X
.DS_Store

# Windows
windows_package.7z
windows_package

#Notebook Automated Test
!tests/nightly/test_tutorial_config.txt
!tests/nightly/TestNotebook
tests/nightly/tmp_notebook

# pip building tools
tools/pip_package/build
tools/pip_package/dist
tools/pip_package/mxnet.egg-info
tools/pip_package/mxnet

# temporary path for building dependencies when building wheel
deps/
staticdeps/
tmp/
build/
lib/
bin/
model/

# VTune
./r0*hs

# generated function signature for IDE auto-complete
python/mxnet/symbol/gen_*
python/mxnet/ndarray/gen_*
python/.eggs

# tests if built insource
*CTestTestfile.cmake
*DartConfiguration.tcl
tests/Makefile
tests/mxnet_unit_tests

# Code coverage related
.coverage
*.gcov
*.gcno
coverage.xml

# Local CMake build config
cmake_options.yml

# header file generated at compile time
include/onednn/oneapi/dnnl/dnnl_version.h
include/onednn/oneapi/dnnl/dnnl_config.h
