Fix PEP 517 build
diff --git a/.github/workflows/build_linux_wheels.yml b/.github/workflows/build_wheels.yml
similarity index 94%
rename from .github/workflows/build_linux_wheels.yml
rename to .github/workflows/build_wheels.yml
index 3c31896..2197070 100644
--- a/.github/workflows/build_linux_wheels.yml
+++ b/.github/workflows/build_wheels.yml
@@ -1,4 +1,4 @@
-name: Build Manylinux Wheels
+name: Build Wheels
 
 on:
   workflow_dispatch:
@@ -57,7 +57,8 @@
       - name: Build wheels
         run: python -m cibuildwheel --output-dir wheelhouse
         env:
-          CIBW_SKIP: "${{ github.event.inputs.skip }}"  # skip Python 2.7 wheels
+          CIBW_BUILD_FRONTEND: build
+          CIBW_SKIP: "${{ github.event.inputs.skip }}"
           CIBW_MANYLINUX_X86_64_IMAGE: ${{ github.event.inputs.manylinux }}
           CIBW_MANYLINUX_I686_IMAGE: ${{ github.event.inputs.manylinux }}
           CIBW_ARCHS: ${{ github.event.inputs.archs }}
diff --git a/.github/workflows/compile_test.yml b/.github/workflows/ci.yml
similarity index 97%
rename from .github/workflows/compile_test.yml
rename to .github/workflows/ci.yml
index 9f70b04..8aa91fd 100644
--- a/.github/workflows/compile_test.yml
+++ b/.github/workflows/ci.yml
@@ -1,4 +1,4 @@
-name: So, does it work?
+name: CI
 
 on: [push]
 
diff --git a/CHANGELOG.md b/CHANGELOG.md
index f2f75d2..7ec58a0 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,11 +1,15 @@
 # Changelog
 
+**1.6.1**
+
+* Fix [PEP 517](https://www.python.org/dev/peps/pep-0517/)-like installation using [build](https://github.com/pypa/build) (by [Tomasz Kłoczko](https://github.com/kloczek))
+
 **1.6.0**
 
-* Fallback to encode `vars(obj)` if `obj` is not stringifyable, e.g. to serialize [dataclasses](https://docs.python.org/3/library/dataclasses.html).
-* Update documentation to use newer [sphinx](https://www.sphinx-doc.org/) version.
-* Use [dependabot](https://github.com/dependabot) to keep dependencies current.
-* Update [fast_double_parser](https://github.com/lemire/fast_double_parser).
+* Fallback to encode `vars(obj)` if `obj` is not stringifyable, e.g. to serialize [dataclasses](https://docs.python.org/3/library/dataclasses.html)
+* Update documentation to use newer [sphinx](https://www.sphinx-doc.org/) version
+* Use [dependabot](https://github.com/dependabot) to keep dependencies current
+* Update [fast_double_parser](https://github.com/lemire/fast_double_parser)
 
 **1.5.3**
 
diff --git a/MANIFEST.in b/MANIFEST.in
index 7d750fb..3364e20 100644
--- a/MANIFEST.in
+++ b/MANIFEST.in
@@ -4,7 +4,9 @@
 include Makefile
 include pyjson5.cpp
 include pyjson5.pyx
+include pyproject.toml
 include requires.txt
+include setup.cfg
 include third-party/fast_double_parser/include/fast_double_parser.h
 recursive-include docs **
 recursive-include src **
diff --git a/pyproject.toml b/pyproject.toml
new file mode 100644
index 0000000..638634f
--- /dev/null
+++ b/pyproject.toml
@@ -0,0 +1,7 @@
+[build-system]
+requires = [
+    "Cython",
+    "setuptools",
+    "wheel",
+]
+build-backend = "setuptools.build_meta"
diff --git a/requirements.txt b/requirements.txt
index 12f20c4..8658864 100644
--- a/requirements.txt
+++ b/requirements.txt
@@ -1,9 +1,11 @@
+build
 cibuildwheel == 2.*
 colorama == 0.4.*
 docutils == 0.17.*
 cython == 0.*
 more_itertools == 8.*
 myst-parser == 0.16.*
+setuptools
 sphinx == 4.*
 sphinx_autodoc_typehints == 1.*
 sphinx_rtd_theme == 1.*
diff --git a/setup.cfg b/setup.cfg
new file mode 100644
index 0000000..29036ca
--- /dev/null
+++ b/setup.cfg
@@ -0,0 +1,53 @@
+[metadata]
+version = 1.6.1
+
+name = pyjson5
+description = JSON5 serializer and parser for Python 3 written in Cython.
+url = https://github.com/Kijewski/pyjson5
+
+author = René Kijewski
+maintainer = René Kijewski
+author_email = pypi.org@k6i.de
+maintainer_email = pypi.org@k6i.de
+
+long_description = file: README.rst
+long_description_content_type = text/x-rst
+
+license = Apache License 2.0
+license_files = LICENSE
+
+classifiers =
+    Development Status :: 5 - Production/Stable
+    Intended Audience :: Developers
+    Intended Audience :: System Administrators
+    License :: OSI Approved :: Apache Software License
+    Operating System :: OS Independent
+    Programming Language :: Cython
+    Programming Language :: JavaScript
+    Programming Language :: Python :: 3
+    Programming Language :: Python :: 3.5
+    Programming Language :: Python :: 3.6
+    Programming Language :: Python :: 3.7
+    Programming Language :: Python :: 3.8
+    Programming Language :: Python :: 3.9
+    Programming Language :: Python :: 3.10
+    Programming Language :: Python :: 3 :: Only
+    Programming Language :: Python :: Implementation :: CPython
+    Topic :: Text Processing :: General
+
+[options]
+zip_safe = False
+
+python_requires = ~= 3.5
+setup_requires =
+    Cython
+    setuptools
+    wheel
+
+include_package_data = True
+packages = pyjson5
+package_dir =
+    = src
+
+[options.package_data]
+pyjson5 = __init__.pyi, py.typed
diff --git a/setup.py b/setup.py
index fee4337..cc5276d 100755
--- a/setup.py
+++ b/setup.py
@@ -1,71 +1,19 @@
-#!/usr/bin/env python
+#!/usr/bin/env python3
 
 from setuptools import setup, Extension
-from os.path import dirname, join, abspath
-
-
-def get_text(name):
-    root = abspath(dirname(__file__))
-    with open(join(root, 'src', name), 'rt') as f:
-        return eval(f.read().strip())
-
 
 extra_compile_args = [
     '-std=c++11', '-O3', '-fPIC', '-ggdb1', '-pipe',
     '-fomit-frame-pointer', '-fstack-protector-strong',
 ]
 
-name = 'pyjson5'
-
 setup(
-    name=name,
-    version=get_text('VERSION.inc'),
-    long_description=get_text('DESCRIPTION.inc'),
-    description='JSON5 serializer and parser for Python 3 written in Cython.',
-    author='René Kijewski',
-    author_email='pypi.org@k6i.de',
-    maintainer='René Kijewski',
-    maintainer_email='pypi.org@k6i.de',
-    url='https://github.com/Kijewski/pyjson5',
-    python_requires='~= 3.5',
-    zip_safe=False,
     ext_modules=[Extension(
-        name + '.' + name,
-        sources=[name + '.pyx'],
+        'pyjson5.pyjson5',
+        sources=['pyjson5.pyx'],
         include_dirs=['src'],
         extra_compile_args=extra_compile_args,
         extra_link_args=extra_compile_args,
         language='c++',
     )],
-    platforms=['any'],
-    license='Apache 2.0',
-    classifiers=[
-        'Development Status :: 5 - Production/Stable',
-        'Intended Audience :: Developers',
-        'Intended Audience :: System Administrators',
-        'License :: OSI Approved :: Apache Software License',
-        'Operating System :: OS Independent',
-        'Programming Language :: Cython',
-        'Programming Language :: JavaScript',
-        'Programming Language :: Python :: 3',
-        'Programming Language :: Python :: 3.5',
-        'Programming Language :: Python :: 3.6',
-        'Programming Language :: Python :: 3.7',
-        'Programming Language :: Python :: 3.8',
-        'Programming Language :: Python :: 3.9',
-        'Programming Language :: Python :: 3.10',
-        'Programming Language :: Python :: 3 :: Only',
-        'Programming Language :: Python :: Implementation :: CPython',
-        'Topic :: Text Processing :: General',
-    ],
-    packages=[name],
-    package_dir={
-        '': 'src',
-    },
-    package_data = {
-        name: [
-            '__init__.pyi',
-            'py.typed',
-        ],
-    },
 )
diff --git a/src/VERSION.inc b/src/VERSION.inc
index 16c1dd0..5885723 100644
--- a/src/VERSION.inc
+++ b/src/VERSION.inc
@@ -1 +1 @@
-"1.6.0"
+"1.6.1"