Files
2025-02-14 05:25:38 +04:00

162 lines
4.7 KiB
Python
Executable File

#!/usr/bin/env python
# Copyright 2004-2025 Tom Rothamel <pytom@bishoujo.us>
#
# Permission is hereby granted, free of charge, to any person
# obtaining a copy of this software and associated documentation files
# (the "Software"), to deal in the Software without restriction,
# including without limitation the rights to use, copy, modify, merge,
# publish, distribute, sublicense, and/or sell copies of the Software,
# and to permit persons to whom the Software is furnished to do so,
# subject to the following conditions:
#
# The above copyright notice and this permission notice shall be
# included in all copies or substantial portions of the Software.
#
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
# LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
import sys
import os
# Change to the directory containing this file.
BASE = os.path.abspath(os.path.dirname(sys.argv[0]))
os.chdir(BASE)
SCRIPTS = os.path.join(BASE, 'scripts')
sys.path.insert(0, SCRIPTS)
import setuplib
from setuplib import windows, library, cython, find_unnecessary_gen, generate_all_cython, env
import generate_styles
def main():
setuplib.init()
setuplib.check_imports(SCRIPTS, "setuplib.py", "generate_styles.py")
generate_styles.generate()
# These control the level of optimization versus debugging.
setuplib.extra_compile_args = [ "-Wno-unused-function" ]
setuplib.extra_link_args = [ ]
pkgconfig_packages = """
libavformat
libavcodec
libavutil
libswresample
libswscale
harfbuzz
freetype2
fribidi
sdl2
"""
library("avformat")
library("avcodec")
library("avutil")
library("swresample")
library("swscale")
library("harfbuzz")
library("freetype")
library("fribidi")
library("SDL2")
library("png")
library("z")
if windows:
setuplib.extra_compile_args.append("-fno-strict-aliasing")
library("comdlg32")
library("ole32")
cubism = os.environ.get("CUBISM", None)
if cubism:
setuplib.include_dirs.append("{}/Core/include".format(cubism))
pkgconfig_packages = "assimp\n" + pkgconfig_packages
library("assimp")
# src/ directory.
cython("_renpy", [ "src/IMG_savepng.c", "src/core.c" ])
cython("_renpybidi", [ "src/renpybidicore.c" ])
cython("_renpytfd", [ "src/tinyfiledialogs/tinyfiledialogs.c" ])
# renpy
cython("renpy.astsupport")
cython("renpy.cslots")
cython("renpy.lexersupport")
cython("renpy.pydict")
cython("renpy.style")
cython("renpy.encryption")
# renpy.audio
cython("renpy.audio.renpysound", [ "src/renpysound_core.c", "src/ffmedia.c" ],
compile_args=[ "-Wno-deprecated-declarations" ] if ("RENPY_FFMPEG_NO_DEPRECATED_DECLARATIONS" in os.environ) else [ ])
cython("renpy.audio.filter")
# renpy.styledata
cython("renpy.styledata.styleclass")
cython("renpy.styledata.stylesets")
for p in generate_styles.prefixes:
cython("renpy.styledata.style_{}functions".format(p), pyx=setuplib.gen + "/style_{}functions.pyx".format(p))
# renpy.display
cython("renpy.display.matrix")
cython("renpy.display.render")
cython("renpy.display.accelerator")
cython("renpy.display.quaternion")
# renpy.uguu
cython("renpy.uguu.gl")
cython("renpy.uguu.uguu")
# renpy.gl2
cython("renpy.gl2.gl2mesh")
cython("renpy.gl2.gl2mesh2")
cython("renpy.gl2.gl2mesh3")
cython("renpy.gl2.gl2polygon")
cython("renpy.gl2.gl2model")
cython("renpy.gl2.gl2draw")
cython("renpy.gl2.gl2texture")
cython("renpy.gl2.gl2shader")
if cubism:
cython("renpy.gl2.live2dmodel")
cython("renpy.gl2.assimp", [ "src/assimpio.cc" ], language="c++")
# renpy.text
cython("renpy.text.textsupport")
cython("renpy.text.texwrap")
cython("renpy.text.ftfont", [ "src/ftsupport.c", "src/ttgsubtable.c" ])
cython("renpy.text.hbfont", [ "src/ftsupport.c" ])
generate_all_cython()
find_unnecessary_gen()
pkgconfig_packages = pkgconfig_packages.replace("\n", " ").strip()
env("CC")
env("LD")
env("CXX")
env("CFLAGS", f"pkg-config --cflags {pkgconfig_packages}")
env("LDFLAGS", f"pkg-config --libs {pkgconfig_packages}")
import renpy
version = renpy.version[7:].partition(".")[0] + ".99.99"
setuplib.setup("renpy", version)
if __name__ == "__main__":
main()