yoga/setup.py

123 lines
3.5 KiB
Python

#!/usr/bin/env python
# encoding: UTF-8
import os
import subprocess
from setuptools import setup, find_packages
from setuptools.command.build_ext import build_ext
def _find_msbuild(plat_spec="x64"):
from setuptools import msvc
vc_env = msvc.msvc14_get_vc_env(plat_spec)
if "vsinstalldir" not in vc_env:
raise Exception("Unable to find any Visual Studio installation")
return os.path.join(
vc_env["vsinstalldir"], "MSBuild", "Current", "Bin", "MSBuild.exe"
)
class CustomBuildExt(build_ext):
def build_extensions(self):
if not os.path.isdir("./assimp/build"):
os.mkdir("./assimp/build")
os.chdir("./assimp/build")
if self.compiler.compiler_type == "unix":
os.environ["CXXFLAGS"] = "--std=c++11 %s" % os.environ.get(
"CXXFLAGS", ""
)
subprocess.call(
[
"cmake",
"..",
"-DBUILD_SHARED_LIBS=OFF",
"-DASSIMP_BUILD_ASSIMP_TOOLS=OFF",
"-DASSIMP_BUILD_TESTS=OFF",
"-DASSIMP_BUILD_ZLIB=ON",
]
)
subprocess.call(["make"])
elif self.compiler.compiler_type == "msvc":
msbuild = _find_msbuild()
subprocess.call(
[
"cmake",
"..",
"-DBUILD_SHARED_LIBS=OFF",
"-DASSIMP_BUILD_ASSIMP_TOOLS=OFF",
"-DASSIMP_BUILD_TESTS=OFF",
"-DASSIMP_BUILD_ZLIB=ON",
"-DLIBRARY_SUFFIX=",
]
)
subprocess.call(
[msbuild, "-p:Configuration=Release", "Assimp.sln"]
)
else:
raise Exception("Unsupported platform")
os.chdir("../..")
build_ext.build_extensions(self)
long_description = ""
if os.path.isfile("README.rst"):
long_description = open("README.rst", "r").read()
setup(
name="yoga",
version="1.3.1",
description="Yummy Optimizer for Gorgeous Assets",
url="https://github.com/wanadev/yoga",
project_urls={
"Source Code": "https://github.com/wanadev/yoga",
"Documentation": "https://wanadev.github.io/yoga/",
"Changelog": "https://github.com/wanadev/yoga#changelog",
"Issues": "https://github.com/wanadev/yoga/issues",
"Chat": "https://discord.gg/BmUkEdMuFp",
},
license="BSD-3-Clause",
long_description=long_description,
keywords="image webp jpeg png optimizer guetzli zopfli zopflipng libwebp 3d model mesh assimp gltf glb converter",
author="Wanadev",
author_email="contact@wanadev.fr",
maintainer="Fabien LOISON, Alexis BREUST",
packages=find_packages(),
setup_requires=["cffi>=1.0.0"],
install_requires=[
"cffi>=1.0.0",
"imagequant>=1.0.2",
"mozjpeg-lossless-optimization>=1.0.0",
"pillow>=6.2.2",
"pyguetzli>=1.0.0",
"unidecode>=1.0.0",
"zopflipy>=1.0",
],
extras_require={
"dev": [
"nox",
"flake8",
"black",
"pytest",
"sphinx",
"sphinx-rtd-theme",
"codespell",
]
},
entry_points={
"console_scripts": [
"yoga = yoga.__main__:main",
]
},
cffi_modules=["yoga/model/assimp_build.py:ffibuilder"],
cmdclass={
"build_ext": CustomBuildExt,
},
)