7bf9787921
Configured for a max line length of 120 characters.
psf/black is very opinionated and purposely doesn't leave much room for
configuration. The output is mostly OK so that should be fine for us,
but some things worth noting:
- Manually wrapped strings will be reflowed, so by using a line length
of 120 for the sake of preserving readability for our long command
calls, it also means that some manually wrapped strings are back on
the same line and should be manually merged again.
- Code generators using string concatenation extensively look awful,
since black puts each operand on a single line. We need to refactor
these generators to use more pythonic string formatting, for which
many options are available (`%`, `format` or f-strings).
- CI checks and a pre-commit hook will be added to ensure that future
buildsystem changes are well-formatted.
(cherry picked from commit cd4e46ee65
)
106 lines
3.6 KiB
Python
106 lines
3.6 KiB
Python
#!/usr/bin/env python
|
|
|
|
Import("env")
|
|
Import("env_modules")
|
|
|
|
from compat import isbasestring
|
|
|
|
env_freetype = env_modules.Clone()
|
|
|
|
# Thirdparty source files
|
|
if env["builtin_freetype"]:
|
|
thirdparty_dir = "#thirdparty/freetype/"
|
|
thirdparty_sources = [
|
|
"src/autofit/autofit.c",
|
|
"src/base/ftbase.c",
|
|
"src/base/ftbbox.c",
|
|
"src/base/ftbdf.c",
|
|
"src/base/ftbitmap.c",
|
|
"src/base/ftcid.c",
|
|
"src/base/ftdebug.c",
|
|
"src/base/ftfstype.c",
|
|
"src/base/ftgasp.c",
|
|
"src/base/ftglyph.c",
|
|
"src/base/ftgxval.c",
|
|
"src/base/ftinit.c",
|
|
"src/base/ftmm.c",
|
|
"src/base/ftotval.c",
|
|
"src/base/ftpatent.c",
|
|
"src/base/ftpfr.c",
|
|
"src/base/ftstroke.c",
|
|
"src/base/ftsynth.c",
|
|
"src/base/ftsystem.c",
|
|
"src/base/fttype1.c",
|
|
"src/base/ftwinfnt.c",
|
|
"src/bdf/bdf.c",
|
|
"src/bzip2/ftbzip2.c",
|
|
"src/cache/ftcache.c",
|
|
"src/cff/cff.c",
|
|
"src/cid/type1cid.c",
|
|
"src/gxvalid/gxvalid.c",
|
|
"src/gzip/ftgzip.c",
|
|
"src/lzw/ftlzw.c",
|
|
"src/otvalid/otvalid.c",
|
|
"src/pcf/pcf.c",
|
|
"src/pfr/pfr.c",
|
|
"src/psaux/psaux.c",
|
|
"src/pshinter/pshinter.c",
|
|
"src/psnames/psnames.c",
|
|
"src/raster/raster.c",
|
|
"src/smooth/smooth.c",
|
|
"src/truetype/truetype.c",
|
|
"src/type1/type1.c",
|
|
"src/type42/type42.c",
|
|
"src/winfonts/winfnt.c",
|
|
]
|
|
thirdparty_sources = [thirdparty_dir + file for file in thirdparty_sources]
|
|
|
|
if env["platform"] == "uwp":
|
|
# Include header for UWP to fix build issues
|
|
env_freetype.Append(CCFLAGS=["/FI", '"modules/freetype/uwpdef.h"'])
|
|
# Globally too, as freetype is used in scene (see bottom)
|
|
env.Append(CCFLAGS=["/FI", '"modules/freetype/uwpdef.h"'])
|
|
|
|
env_freetype.Prepend(CPPPATH=[thirdparty_dir + "/include"])
|
|
# Also needed in main env for scene/
|
|
env.Prepend(CPPPATH=[thirdparty_dir + "/include"])
|
|
|
|
env_freetype.Append(CPPDEFINES=["FT2_BUILD_LIBRARY", "FT_CONFIG_OPTION_USE_PNG"])
|
|
if env["target"] == "debug":
|
|
env_freetype.Append(CPPDEFINES=["ZLIB_DEBUG"])
|
|
|
|
# Also requires libpng headers
|
|
if env["builtin_libpng"]:
|
|
env_freetype.Prepend(CPPPATH=["#thirdparty/libpng"])
|
|
|
|
sfnt = thirdparty_dir + "src/sfnt/sfnt.c"
|
|
# Must be done after all CPPDEFINES are being set so we can copy them.
|
|
if env["platform"] == "javascript":
|
|
# Forcibly undefine this macro so SIMD is not used in this file,
|
|
# since currently unsupported in WASM
|
|
tmp_env = env_freetype.Clone()
|
|
tmp_env.Append(CPPFLAGS=["-U__OPTIMIZE__"])
|
|
sfnt = tmp_env.Object(sfnt)
|
|
thirdparty_sources += [sfnt]
|
|
|
|
env_thirdparty = env_freetype.Clone()
|
|
env_thirdparty.disable_warnings()
|
|
lib = env_thirdparty.add_library("freetype_builtin", thirdparty_sources)
|
|
|
|
# Needs to be appended to arrive after libscene in the linker call,
|
|
# but we don't want it to arrive *after* system libs, so manual hack
|
|
# LIBS contains first SCons Library objects ("SCons.Node.FS.File object")
|
|
# and then plain strings for system library. We insert between the two.
|
|
inserted = False
|
|
for idx, linklib in enumerate(env["LIBS"]):
|
|
if isbasestring(linklib): # first system lib such as "X11", otherwise SCons lib object
|
|
env["LIBS"].insert(idx, lib)
|
|
inserted = True
|
|
break
|
|
if not inserted:
|
|
env.Append(LIBS=[lib])
|
|
|
|
# Godot source files
|
|
env_freetype.add_source_files(env.modules_sources, "*.cpp")
|
|
# Used in scene/, needs to be in main env
|
|
env.Append(CPPDEFINES=["FREETYPE_ENABLED"])
|