diff --git a/Makefile b/Makefile index 3433f0e..a36a483 100755 --- a/Makefile +++ b/Makefile @@ -18,8 +18,8 @@ dflags = -MT $@ -MMD -MP -MF $(@:%.o=%.d) # $TARGETS is provided by Makefile.cfg. # -TARGETS := $(filter-out fxconv,$(TARGETS)) TARGETS := $(TARGETS:fxsdk=fxsdk.sh) +TARGETS := $(TARGETS:fxconv=fxconv-main.py) bin = $(TARGETS:%=bin/%) # fxconv has no sources files because it's written in Python, and fxsdk has no @@ -30,9 +30,9 @@ obj-fxg1a := $(src-fxg1a:%=build/%.o) # Sed command to copy install path to fxsdk.sh. On Mac OS, BSD sed is used so # we need to do it a bit differently with a printf helper to insert a literal # newline into the command. -sed := '/^PREFIX=\\$$/ a \$(PREFIX)' +sed := -E -e '/^PREFIX=.?.?.?\\$$/ a \$(PREFIX)' ifeq "$(shell uname)" "Darwin" -sed := "$$(printf '/^PREFIX=/ a \\\n$(PREFIX)')" +sed := -e "$$(printf '/^PREFIX=.?.?.?/ a \\\n$(PREFIX)')" endif # Symbolic targets @@ -41,11 +41,14 @@ all: $(bin) all-fxsdk: bin/fxsdk.sh all-fxg1a: bin/fxg1a +all-fxconv: bin/fxconv-main.py # Explicit targets bin/fxsdk.sh: fxsdk/fxsdk.sh | bin/ - sed -e $(sed) $< > $@ + sed $(sed) $< > $@ +bin/fxconv-main.py: fxconv/fxconv-main.py | bin/ + sed $(sed) $< > $@ bin/fxg1a: $(obj-fxg1a) | bin/ gcc $^ -o $@ $(lflags) @@ -91,11 +94,11 @@ endif install: $(bin) install -d $(PREFIX)/bin install -d $(PREFIX)/share/fxsdk - install $(bin:bin/fxsdk.sh=) $(m755) $(PREFIX)/bin + install $(filter bin/fxg1a,$(bin)) $(m755) $(PREFIX)/bin install -d $(PREFIX)/share/fxsdk/assets install fxsdk/assets/* $(m644) $(PREFIX)/share/fxsdk/assets install bin/fxsdk.sh $(m755) $(PREFIX)/bin/fxsdk - install fxconv/fxconv-main.py $(m755) $(PREFIX)/bin/fxconv + install bin/fxconv-main.py $(m755) $(PREFIX)/bin/fxconv install fxconv/fxconv.py $(m644) $(PREFIX)/bin uninstall: diff --git a/fxconv/fxconv-main.py b/fxconv/fxconv-main.py index db7efef..9258bd4 100755 --- a/fxconv/fxconv-main.py +++ b/fxconv/fxconv-main.py @@ -4,8 +4,13 @@ import getopt import sys import os import fxconv +import subprocess -help_string = """ +# Note: this line is edited at compile time to insert the install folder +PREFIX="""\ +""".strip() + +help_string = f""" usage: fxconv [-s] [files...] fxconv -b -o [parameters...] fxconv -i -o (--fx|--cg) [parameters...] @@ -31,6 +36,8 @@ script. They accept parameters with a "category.key:value" syntax, for example: When converting images, use --fx (black-and-white calculators) or --cg (16-bit color calculators) to specify the target machine. + +Install PREFIX is set to '{PREFIX}'. """.strip() # Simple error-warnings system @@ -93,10 +100,20 @@ def main(): if mode == "s": if output is not None: warn("option --output is ignored in script mode") - args = None if args == [] else args - err("script mode not currently implemented (TODO) x_x") - sys.exit(1) + if PREFIX == "": + err("unknown or invalid install path x_x") + sys.exit(1) + + env = os.environ.copy() + if "PYTHONPATH" in env: + env["PYTHONPATH"] += f":{PREFIX}/bin" + else: + env["PYTHONPATH"] = f"{PREFIX}/bin" + + p = subprocess.run([ sys.executable, input ], env=env) + if p.returncode != 0: + sys.exit(1) # In shortcut conversion modes, read parameters from the command-line