Safe commands (according to pmake man page): = += ?= != .PHONY .PRECIOUS .SUFFIXES :old=new $@ $< do ! (always re-create) :: (complex behavoir) rules work? do shell wildcards in rules work? are .depend files read? - looks like no. GNU Make tries to read some (version control?) files named RCS and SCCS - but GNU Make also lists the files in the current directory, so it is hard to tell what it looks for dependency resolution: 1) run a command from the make file (will probably need one command per target) lrl_depend != $(LRLC) --depends xxxx 2) run a command to generate the Makefile (like ./configure) - ./configure could contain #!/usr/bin/env lrlc --configure - and then available configuration options etc. could follow - and/or it could read from the module.cfg file (and perhaps "build.cfg") 3) define local includes in the Makefile, and have lrlc read the Makefile - for large projects, this will cause lots of changes to the Makefile, which will cause merge conflicts. - code review becomes harder (information is spread over multiple places) -- but also easier in one way (one can check module dependencies easiliy) probably, 2 is the best solution. and when more powerfull makefiles are needed, one could have an option like "lrlc --mkdep" to say that it should only generate dependencies. for large projects with nested modules: - there will be a project-global settings file - from this file we can generate makefiles for nested/bundled modules 1. Main configure script outputs a "user_options.cfg" file 2. Main Makefile contains lines like this: nested_module1/Makefile nested_module2/Makefile: build.cfg user_options.cfg dependencies.stamp $(LRLC) --configure --options=user_options.cfg --base=build.cfg --target=$@ invalidate-makefiles: touch dependencies.stamp -- NOTE: The code above will not automatically regenerate Makefile when the dependency tree changes due to source changes