Permalink
Please sign in to comment.
Browse files
A basic OPy build works.
- Separate Makefile into build/{hello,oil,opy}.mk.
- Adjust the main() of bin/opy_.py.
Also:
- Updates to the line count script.- Loading branch information...
Showing
with
204 additions
and 158 deletions.
- +9 −6 Makefile
- +24 −1 bin/opy_.py
- +50 −0 build/hello.mk
- +64 −0 build/oil.mk
- +1 −0 build/opy-manifest.txt
- +38 −0 build/opy.mk
- +2 −2 opy/count.sh
- +6 −20 opy/opy_main.py
- +9 −128 portable-rules.mk
- +1 −1 scripts/count.sh
| @@ -0,0 +1,50 @@ | ||
| # hello.mk: For the demo hello app. | ||
| # C module dependencies | ||
| -include _build/hello/ovm.d | ||
| # What Python module to run. | ||
| _build/hello/main_name.c: | ||
| $(ACTIONS_SH) main-name hello hello.ovm > $@ | ||
| # Dependencies calculated by importing main. The guard is because ovm.d | ||
| # depends on it. Is that correct? We'll skip it before 'make dirs'. | ||
| _build/hello/app-deps-%.txt: $(HELLO_SRCS) \ | ||
| _build/detected-config.sh build/app_deps.py | ||
| test -d _build/hello && \ | ||
| $(ACTIONS_SH) app-deps hello build/testdata hello | ||
| _build/hello/py-to-compile.txt: \ | ||
| _build/detected-config.sh build/app_deps.py | ||
| test -d _build/hello && \ | ||
| $(ACTIONS_SH) py-to-compile build/testdata hello > $@ | ||
| # NOTE: We could use src/dest paths pattern instead of _build/app? | ||
| # | ||
| # TODO: | ||
| # - Deps need to be better. Depend on .pyc and .py. I guess | ||
| # app-deps hello will compile the .pyc files. Don't need a separate action. | ||
| # %.pyc : %py | ||
| HELLO_BYTECODE_DEPS := \ | ||
| build/testdata/hello-version.txt \ | ||
| _build/release-date.txt \ | ||
| build/testdata/hello-manifest.txt | ||
| _build/hello/bytecode-cpython.zip: $(HELLO_SRCS) $(HELLO_BYTECODE_DEPS) \ | ||
| _build/hello/app-deps-cpython.txt \ | ||
| _build/runpy-deps-cpython.txt | ||
| { echo 'build/testdata/hello-version.txt hello-version.txt'; \ | ||
| echo '_build/release-date.txt release-date.txt'; \ | ||
| cat build/testdata/hello-manifest.txt \ | ||
| _build/hello/app-deps-cpython.txt \ | ||
| _build/runpy-deps-cpython.txt; \ | ||
| } | build/make_zip.py $@ | ||
| _build/hello/bytecode-opy.zip: $(HELLO_SRCS) $(HELLO_BYTECODE_DEPS) \ | ||
| _build/hello/opy-app-deps.txt | ||
| { echo 'build/testdata/hello-version.txt hello-version.txt'; \ | ||
| echo '_build/release-date.txt release-date.txt'; \ | ||
| cat build/testdata/hello-manifest.txt \ | ||
| _build/hello/opy-app-deps.txt; \ | ||
| } | build/make_zip.py $@ |
| @@ -0,0 +1,64 @@ | ||
| # oil.mk: Build rules for oil.ovm. | ||
| # C module dependencies | ||
| -include _build/oil/ovm.d | ||
| _build/oil/main_name.c: | ||
| $(ACTIONS_SH) main-name bin.oil oil.ovm > $@ | ||
| # Dependencies calculated by importing main. | ||
| # NOTE: The list of files is used both to compile and to make a tarball. | ||
| # - For compiling, we should respect _HAVE_READLINE in detected_config | ||
| # - For the tarball, we should ALWAYS include readline. | ||
| # | ||
| # BUG: Running 'make' the first time files because it can't find the '_build' | ||
| # package. build/doc.sh currently makes _build/__init__.py. | ||
| _build/oil/app-deps-%.txt: _build/detected-config.sh build/app_deps.py | ||
| test -d _build/oil && \ | ||
| $(ACTIONS_SH) app-deps oil $(REPO_ROOT) bin.oil | ||
| _build/oil/py-to-compile.txt: _build/detected-config.sh build/app_deps.py | ||
| test -d _build/oil && \ | ||
| $(ACTIONS_SH) py-to-compile $(REPO_ROOT) bin.oil > $@ | ||
| _devbuild/gen/osh_help.py: doc/osh-quick-ref-pages.txt | ||
| build/doc.sh osh-quick-ref | ||
| # NOTE: I should really depend on every file in build/oil-manifest.txt! | ||
| OIL_BYTECODE_DEPS := \ | ||
| _build/release-date.txt \ | ||
| build/oil-manifest.txt \ | ||
| _devbuild/gen/osh_help.py | ||
| # NOTES: | ||
| # - _devbuild/gen/osh_help.py is a minor hack to depend on the entire | ||
| # _devbuild/osh-quick-ref dir, since they both get generated by the same | ||
| # build action. (Hidden targets are known to cause problems with GNU Make.) | ||
| # - release-date.txt is in different location on purpose, so we don't show it | ||
| # in dev mode. | ||
| # - Do we need $(OIL_SRCS) as dependencies? | ||
| _build/oil/bytecode-cpython-manifest.txt: $(OIL_BYTECODE_DEPS) \ | ||
| _build/oil/app-deps-cpython.txt \ | ||
| _build/runpy-deps-cpython.txt | ||
| { echo '_build/release-date.txt release-date.txt'; \ | ||
| cat build/oil-manifest.txt \ | ||
| _build/oil/app-deps-cpython.txt \ | ||
| _build/runpy-deps-cpython.txt; \ | ||
| $(ACTIONS_SH) quick-ref-manifest _devbuild/osh-quick-ref; \ | ||
| $(ACTIONS_SH) pyc-version-manifest $@; \ | ||
| } > $@ | ||
| # NOTE: runpy deps are included in opy-app-deps.txt. | ||
| _build/oil/bytecode-opy-manifest.txt: $(OIL_BYTECODE_DEPS) \ | ||
| _build/oil/opy-app-deps.txt | ||
| { echo '_build/release-date.txt release-date.txt'; \ | ||
| cat build/oil-manifest.txt \ | ||
| _build/oil/opy-app-deps.txt; \ | ||
| $(ACTIONS_SH) quick-ref-manifest _devbuild/osh-quick-ref; \ | ||
| $(ACTIONS_SH) pyc-version-manifest $@; \ | ||
| } > $@ | ||
| _build/oil/bytecode-%.zip: _build/oil/bytecode-%-manifest.txt | ||
| build/make_zip.py $@ < $^ | ||
| @@ -0,0 +1 @@ | ||
| oil-version.txt oil-version.txt |
| @@ -0,0 +1,38 @@ | ||
| # opy.mk: Portable build rulesf or OPy. | ||
| # TODO: | ||
| # - Grammar | ||
| # - We don't need a configure script? | ||
| # - build/oil.mk and build/hello.mk? | ||
| # | ||
| # Use release-date I guess? | ||
| -include _build/opy/ovm.d | ||
| _build/opy/main_name.c: | ||
| $(ACTIONS_SH) main-name bin.opy_ opy.ovm > $@ | ||
| _build/opy/app-deps-%.txt: _build/detected-config.sh build/app_deps.py | ||
| test -d _build/opy && \ | ||
| $(ACTIONS_SH) app-deps opy $(REPO_ROOT) bin.opy_ | ||
| _build/opy/py-to-compile.txt: _build/detected-config.sh build/app_deps.py | ||
| test -d _build/opy && \ | ||
| $(ACTIONS_SH) py-to-compile $(REPO_ROOT) bin.opy_ > $@ | ||
| OPY_BYTECODE_DEPS := \ | ||
| _build/release-date.txt \ | ||
| build/opy-manifest.txt | ||
| # NOTE: runpy deps are included in opy-app-deps.txt. | ||
| _build/opy/bytecode-opy-manifest.txt: $(OPY_BYTECODE_DEPS) \ | ||
| _build/opy/opy-app-deps.txt | ||
| { echo '_build/release-date.txt release-date.txt'; \ | ||
| cat build/opy-manifest.txt \ | ||
| _build/opy/opy-app-deps.txt; \ | ||
| $(ACTIONS_SH) pyc-version-manifest $@; \ | ||
| } > $@ | ||
| _build/opy/bytecode-%.zip: _build/opy/bytecode-%-manifest.txt | ||
| build/make_zip.py $@ < $^ |
Oops, something went wrong.
0 comments on commit
5007894