Add initial version of c-picker

Introduce the following features to c-picker:

* Picking of the elements from C source files:
  * Include directives
  * Functions
  * Variables
* Removing 'static' keyword from declarations
* Mapping coverage to the original source
* Documentation of the system

Signed-off-by: Imre Kis <imre.kis@arm.com>
Change-Id: Ia5cb90d3096b16b15aafb86363b8cabfe7d2ab72
diff --git a/setup.py b/setup.py
new file mode 100644
index 0000000..b19958e
--- /dev/null
+++ b/setup.py
@@ -0,0 +1,66 @@
+#!/usr/bin/env python3
+# Copyright (c) 2019-2021, Arm Limited. All rights reserved.
+#
+# SPDX-License-Identifier: BSD-3-Clause
+
+"""
+Setup file for c-picker.
+"""
+
+import importlib
+import setuptools
+import pkg_resources
+from c_picker import __version__ as CPICKER_VERSION
+from c_picker import __license__ as CPICKER_LICENSE
+
+def get_install_requires():
+    """
+    Collecting dependencies on install.
+    clang module can be part of the distro's package and it should not be
+    overwritten by the clang pip package.
+    """
+
+    deps = ["pyyaml>5"]
+
+    try:
+        pkg_resources.get_distribution("clang")
+        has_clang_pip = True
+    except pkg_resources.DistributionNotFound:
+        has_clang_pip = False
+
+    clang_spec = importlib.util.find_spec("clang")
+    has_clang_module = clang_spec is not None
+
+    # Install clang Python bindings from pip if it has not been install
+    # any other way. This condition prevents overwriting clang Python
+    # modules if they were installed without pip (i.e. using the system's
+    # package manager instead of pip).
+    if not has_clang_module or has_clang_pip:
+        deps.append("clang")
+
+    return deps
+
+setuptools.setup(
+    name="c-picker",
+    version=CPICKER_VERSION,
+    author="Arm Limited",
+    author_email="imre.kis@arm.com",
+    license=CPICKER_LICENSE,
+    description="C source code picker",
+    platforms=["any"],
+    packages=[
+        "c_picker"
+    ],
+    install_requires=get_install_requires(),
+    entry_points={
+        "console_scripts": [
+            'c-picker=c_picker.runner:main',
+            'c-picker-coverage-mapper=c_picker.coverage:main'
+        ],
+    },
+    classifiers=[
+        "Programming Language :: Python :: 3",
+        "License :: OSI Approved :: BSD License",
+        "Operating System :: OS Independent",
+    ],
+)