mirror of
https://github.com/RYDE-WORK/ballistica.git
synced 2026-02-05 23:13:46 +08:00
adding basic environment checks during builds
This commit is contained in:
parent
55ca63324b
commit
4ebc7ca73e
1
.idea/dictionaries/ericf.xml
generated
1
.idea/dictionaries/ericf.xml
generated
@ -223,6 +223,7 @@
|
|||||||
<w>charstr</w>
|
<w>charstr</w>
|
||||||
<w>checkarg</w>
|
<w>checkarg</w>
|
||||||
<w>checkboxwidget</w>
|
<w>checkboxwidget</w>
|
||||||
|
<w>checkenv</w>
|
||||||
<w>checkfast</w>
|
<w>checkfast</w>
|
||||||
<w>checkfull</w>
|
<w>checkfull</w>
|
||||||
<w>checkins</w>
|
<w>checkins</w>
|
||||||
|
|||||||
45
Makefile
45
Makefile
@ -43,7 +43,7 @@ help: list
|
|||||||
# things like tool config files, etc.
|
# things like tool config files, etc.
|
||||||
PREREQS = .dir-locals.el .mypy.ini .pycheckers \
|
PREREQS = .dir-locals.el .mypy.ini .pycheckers \
|
||||||
.pylintrc .style.yapf .clang-format \
|
.pylintrc .style.yapf .clang-format \
|
||||||
.projectile .editorconfig
|
.projectile .editorconfig .cache/checkenv
|
||||||
|
|
||||||
prereqs: ${PREREQS}
|
prereqs: ${PREREQS}
|
||||||
|
|
||||||
@ -51,36 +51,36 @@ prereqs-clean:
|
|||||||
@rm -rf ${PREREQS} .irony
|
@rm -rf ${PREREQS} .irony
|
||||||
|
|
||||||
# Build all assets for all platforms.
|
# Build all assets for all platforms.
|
||||||
assets:
|
assets: prereqs
|
||||||
@cd assets && make -j${CPUS}
|
@cd assets && make -j${CPUS}
|
||||||
|
|
||||||
# Build only assets required for cmake builds (linux, mac)
|
# Build only assets required for cmake builds (linux, mac)
|
||||||
assets-cmake:
|
assets-cmake: prereqs
|
||||||
@cd assets && $(MAKE) -j${CPUS} cmake
|
@cd assets && $(MAKE) -j${CPUS} cmake
|
||||||
|
|
||||||
# Build only assets required for windows builds.
|
# Build only assets required for windows builds.
|
||||||
# (honoring the WINDOWS_PLATFORM value)
|
# (honoring the WINDOWS_PLATFORM value)
|
||||||
assets-windows:
|
assets-windows: prereqs
|
||||||
@cd assets && $(MAKE) -j${CPUS} win-${WINDOWS_PLATFORM}
|
@cd assets && $(MAKE) -j${CPUS} win-${WINDOWS_PLATFORM}
|
||||||
|
|
||||||
# Build only assets required for Win32 windows builds.
|
# Build only assets required for Win32 windows builds.
|
||||||
assets-windows-Win32:
|
assets-windows-Win32: prereqs
|
||||||
@cd assets && $(MAKE) -j${CPUS} win-Win32
|
@cd assets && $(MAKE) -j${CPUS} win-Win32
|
||||||
|
|
||||||
# Build only assets required for x64 windows builds.
|
# Build only assets required for x64 windows builds.
|
||||||
assets-windows-x64:
|
assets-windows-x64: prereqs
|
||||||
@cd assets && $(MAKE) -j${CPUS} win-x64
|
@cd assets && $(MAKE) -j${CPUS} win-x64
|
||||||
|
|
||||||
# Build only assets required for mac xcode builds
|
# Build only assets required for mac xcode builds
|
||||||
assets-mac:
|
assets-mac: prereqs
|
||||||
@cd assets && $(MAKE) -j${CPUS} mac
|
@cd assets && $(MAKE) -j${CPUS} mac
|
||||||
|
|
||||||
# Build only assets required for ios.
|
# Build only assets required for ios.
|
||||||
assets-ios:
|
assets-ios: prereqs
|
||||||
@cd assets && $(MAKE) -j${CPUS} ios
|
@cd assets && $(MAKE) -j${CPUS} ios
|
||||||
|
|
||||||
# Build only assets required for android.
|
# Build only assets required for android.
|
||||||
assets-android:
|
assets-android: prereqs
|
||||||
@cd assets && $(MAKE) -j${CPUS} android
|
@cd assets && $(MAKE) -j${CPUS} android
|
||||||
|
|
||||||
# Clean all assets.
|
# Clean all assets.
|
||||||
@ -88,7 +88,7 @@ assets-clean:
|
|||||||
@cd assets && $(MAKE) clean
|
@cd assets && $(MAKE) clean
|
||||||
|
|
||||||
# Build resources.
|
# Build resources.
|
||||||
resources: resources/Makefile
|
resources: prereqs resources/Makefile
|
||||||
@cd resources && $(MAKE) -j${CPUS} resources
|
@cd resources && $(MAKE) -j${CPUS} resources
|
||||||
|
|
||||||
# Clean resources.
|
# Clean resources.
|
||||||
@ -96,7 +96,7 @@ resources-clean:
|
|||||||
@cd resources && $(MAKE) clean
|
@cd resources && $(MAKE) clean
|
||||||
|
|
||||||
# Build our generated code.
|
# Build our generated code.
|
||||||
code:
|
code: prereqs
|
||||||
@cd src/generated_src && $(MAKE) -j${CPUS} generated_code
|
@cd src/generated_src && $(MAKE) -j${CPUS} generated_code
|
||||||
|
|
||||||
# Clean generated code.
|
# Clean generated code.
|
||||||
@ -151,7 +151,8 @@ prefab-release-build:
|
|||||||
prefab-mac-debug: prefab-mac-debug-build
|
prefab-mac-debug: prefab-mac-debug-build
|
||||||
@cd build/prefab/mac/debug && ./ballisticacore
|
@cd build/prefab/mac/debug && ./ballisticacore
|
||||||
|
|
||||||
prefab-mac-debug-build: assets-cmake build/prefab/mac/debug/ballisticacore
|
prefab-mac-debug-build: prereqs assets-cmake \
|
||||||
|
build/prefab/mac/debug/ballisticacore
|
||||||
@${STAGE_ASSETS} -cmake build/prefab/mac/debug
|
@${STAGE_ASSETS} -cmake build/prefab/mac/debug
|
||||||
|
|
||||||
build/prefab/mac/debug/ballisticacore: .efrocachemap
|
build/prefab/mac/debug/ballisticacore: .efrocachemap
|
||||||
@ -160,16 +161,18 @@ build/prefab/mac/debug/ballisticacore: .efrocachemap
|
|||||||
prefab-mac-release: prefab-mac-release-build
|
prefab-mac-release: prefab-mac-release-build
|
||||||
@cd build/prefab/mac/release && ./ballisticacore
|
@cd build/prefab/mac/release && ./ballisticacore
|
||||||
|
|
||||||
prefab-mac-release-build: assets-cmake build/prefab/mac/release/ballisticacore
|
prefab-mac-release-build: prereqs assets-cmake \
|
||||||
|
build/prefab/mac/release/ballisticacore
|
||||||
@${STAGE_ASSETS} -cmake build/prefab/mac/release
|
@${STAGE_ASSETS} -cmake build/prefab/mac/release
|
||||||
|
|
||||||
build/prefab/mac/release/ballisticacore: .efrocachemap
|
build/prefab/mac/release/ballisticacore: .efrocachemap
|
||||||
@tools/snippets efrocache_get $@
|
@tools/snippets efrocache_get $@
|
||||||
|
|
||||||
prefab-linux-debug: prefab-linux-build
|
prefab-linux-debug: prefab-linux-debug-build
|
||||||
@cd build/prefab/linux/debug && ./ballisticacore
|
@cd build/prefab/linux/debug && ./ballisticacore
|
||||||
|
|
||||||
prefab-linux-debug-build: assets-cmake build/prefab/linux/debug/ballisticacore
|
prefab-linux-debug-build: prereqs assets-cmake \
|
||||||
|
build/prefab/linux/debug/ballisticacore
|
||||||
@${STAGE_ASSETS} -cmake build/prefab/linux/debug
|
@${STAGE_ASSETS} -cmake build/prefab/linux/debug
|
||||||
|
|
||||||
build/prefab/linux/debug/ballisticacore: .efrocachemap
|
build/prefab/linux/debug/ballisticacore: .efrocachemap
|
||||||
@ -178,7 +181,7 @@ build/prefab/linux/debug/ballisticacore: .efrocachemap
|
|||||||
prefab-linux-release: prefab-linux-release-build
|
prefab-linux-release: prefab-linux-release-build
|
||||||
@cd build/prefab/linux/release && ./ballisticacore
|
@cd build/prefab/linux/release && ./ballisticacore
|
||||||
|
|
||||||
prefab-linux-release-build: assets-cmake \
|
prefab-linux-release-build: prereqs assets-cmake \
|
||||||
build/prefab/linux/release/ballisticacore
|
build/prefab/linux/release/ballisticacore
|
||||||
@${STAGE_ASSETS} -cmake build/prefab/linux/release
|
@${STAGE_ASSETS} -cmake build/prefab/linux/release
|
||||||
|
|
||||||
@ -190,7 +193,7 @@ PREFAB_WINDOWS_PLATFORM = x64
|
|||||||
prefab-windows-debug: prefab-windows-debug-build
|
prefab-windows-debug: prefab-windows-debug-build
|
||||||
build/prefab/windows/debug/BallisticaCore.exe
|
build/prefab/windows/debug/BallisticaCore.exe
|
||||||
|
|
||||||
prefab-windows-debug-build: assets-windows-${PREFAB_WINDOWS_PLATFORM} \
|
prefab-windows-debug-build: prereqs assets-windows-${PREFAB_WINDOWS_PLATFORM} \
|
||||||
build/prefab/windows/debug/BallisticaCore.exe
|
build/prefab/windows/debug/BallisticaCore.exe
|
||||||
@${STAGE_ASSETS} -win-$(PREFAB_WINDOWS_PLATFORM) build/prefab/windows/debug
|
@${STAGE_ASSETS} -win-$(PREFAB_WINDOWS_PLATFORM) build/prefab/windows/debug
|
||||||
|
|
||||||
@ -200,7 +203,8 @@ build/prefab/windows/debug/BallisticaCore.exe: .efrocachemap
|
|||||||
prefab-windows-release: prefab-windows-release-build
|
prefab-windows-release: prefab-windows-release-build
|
||||||
build/prefab/windows/release/BallisticaCore.exe
|
build/prefab/windows/release/BallisticaCore.exe
|
||||||
|
|
||||||
prefab-windows-release-build: assets-windows-${PREFAB_WINDOWS_PLATFORM} \
|
prefab-windows-release-build: prereqs \
|
||||||
|
assets-windows-${PREFAB_WINDOWS_PLATFORM} \
|
||||||
build/prefab/windows/release/BallisticaCore.exe
|
build/prefab/windows/release/BallisticaCore.exe
|
||||||
@${STAGE_ASSETS} -win-$(PREFAB_WINDOWS_PLATFORM) build/prefab/windows/release
|
@${STAGE_ASSETS} -win-$(PREFAB_WINDOWS_PLATFORM) build/prefab/windows/release
|
||||||
|
|
||||||
@ -444,5 +448,10 @@ TOOL_CFG_SRC = tools/efrotools/snippets.py config/config.json
|
|||||||
.pycheckers: config/toolconfigsrc/pycheckers ${TOOL_CFG_SRC}
|
.pycheckers: config/toolconfigsrc/pycheckers ${TOOL_CFG_SRC}
|
||||||
${TOOL_CFG_INST} $< $@
|
${TOOL_CFG_INST} $< $@
|
||||||
|
|
||||||
|
.cache/checkenv:
|
||||||
|
@tools/snippets checkenv
|
||||||
|
@mkdir -p .cache
|
||||||
|
@touch .cache/checkenv
|
||||||
|
|
||||||
# Tell make which of these targets don't represent files.
|
# Tell make which of these targets don't represent files.
|
||||||
.PHONY:
|
.PHONY:
|
||||||
|
|||||||
@ -36,10 +36,16 @@ from typing import TYPE_CHECKING
|
|||||||
if TYPE_CHECKING:
|
if TYPE_CHECKING:
|
||||||
from typing import Dict, Any, List
|
from typing import Dict, Any, List
|
||||||
|
|
||||||
|
|
||||||
|
class CleanError(Exception):
|
||||||
|
"""Exception resulting in a clean error string print and exit."""
|
||||||
|
|
||||||
|
|
||||||
# Absolute path of the project root.
|
# Absolute path of the project root.
|
||||||
PROJROOT = Path(__file__).resolve().parents[2]
|
PROJROOT = Path(__file__).resolve().parents[2]
|
||||||
|
|
||||||
CLRHDR = '\033[95m'
|
CLRHDR = '\033[95m'
|
||||||
|
CLRRED = '\033[91m'
|
||||||
CLRBLU = '\033[94m'
|
CLRBLU = '\033[94m'
|
||||||
CLREND = '\033[0m'
|
CLREND = '\033[0m'
|
||||||
|
|
||||||
@ -72,7 +78,11 @@ def snippets_main(globs: Dict[str, Any]) -> None:
|
|||||||
getattr(funcs[sys.argv[2]], '__doc__', '<no docs>'))
|
getattr(funcs[sys.argv[2]], '__doc__', '<no docs>'))
|
||||||
print('\nsnippets ' + sys.argv[2] + ':\n' + docs + '\n')
|
print('\nsnippets ' + sys.argv[2] + ':\n' + docs + '\n')
|
||||||
elif sys.argv[1] in funcs:
|
elif sys.argv[1] in funcs:
|
||||||
funcs[sys.argv[1]]()
|
try:
|
||||||
|
funcs[sys.argv[1]]()
|
||||||
|
except CleanError as exc:
|
||||||
|
print(CLRRED + str(exc) + CLREND)
|
||||||
|
sys.exit(-1)
|
||||||
else:
|
else:
|
||||||
print('Unknown snippets command: "' + sys.argv[1] + '"',
|
print('Unknown snippets command: "' + sys.argv[1] + '"',
|
||||||
file=sys.stderr)
|
file=sys.stderr)
|
||||||
|
|||||||
@ -42,10 +42,11 @@ import efrotools
|
|||||||
# Pull in some standard snippets we want to expose.
|
# Pull in some standard snippets we want to expose.
|
||||||
# noinspection PyUnresolvedReferences
|
# noinspection PyUnresolvedReferences
|
||||||
from efrotools.snippets import ( # pylint: disable=unused-import
|
from efrotools.snippets import ( # pylint: disable=unused-import
|
||||||
PROJROOT, snippets_main, formatcode, formatscripts, formatmakefile,
|
PROJROOT, CleanError, snippets_main, formatcode, formatscripts,
|
||||||
cpplintcode, pylintscripts, mypyscripts, tool_config_install, sync,
|
formatmakefile, cpplintcode, pylintscripts, mypyscripts,
|
||||||
sync_all, scriptfiles, pycharmscripts, clioncode, androidstudiocode,
|
tool_config_install, sync, sync_all, scriptfiles, pycharmscripts,
|
||||||
makefile_target_list, spelling, spelling_all, compile_python_files)
|
clioncode, androidstudiocode, makefile_target_list, spelling, spelling_all,
|
||||||
|
compile_python_files)
|
||||||
|
|
||||||
if TYPE_CHECKING:
|
if TYPE_CHECKING:
|
||||||
from typing import Optional, List
|
from typing import Optional, List
|
||||||
@ -639,6 +640,13 @@ def warm_start_asset_build() -> None:
|
|||||||
check=True)
|
check=True)
|
||||||
|
|
||||||
|
|
||||||
|
def checkenv() -> None:
|
||||||
|
"""Check for tools necessary to build and run the app."""
|
||||||
|
if subprocess.run(['which', 'python3.7'], check=False,
|
||||||
|
capture_output=True).returncode != 0:
|
||||||
|
raise CleanError('python3.7 is required for these builds.')
|
||||||
|
|
||||||
|
|
||||||
def make_prefab() -> None:
|
def make_prefab() -> None:
|
||||||
"""Run prefab builds for the current platform."""
|
"""Run prefab builds for the current platform."""
|
||||||
from efrotools import run
|
from efrotools import run
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user