summaryrefslogtreecommitdiff
path: root/doc/TODO
diff options
context:
space:
mode:
Diffstat (limited to 'doc/TODO')
-rw-r--r--doc/TODO229
1 files changed, 229 insertions, 0 deletions
diff --git a/doc/TODO b/doc/TODO
new file mode 100644
index 0000000..bcfa7de
--- /dev/null
+++ b/doc/TODO
@@ -0,0 +1,229 @@
+============================================================
+Plan 0.25.0
+
+Some thoughts inspired by talks with Michael Crogan
+
+- During development of huge projects it may make sense to always keep
+ "installed" version of the software somewhere (FAKEPREFIX?)
+ and always keep it synced.
+ mk-configure needs a mechanism to always "install"
+ after "all" and "uninstall" before "clean". Options: develop this in
+ mk-c and make it optional feature; provide a mechanism for
+ auto-depend one target from TARGETS from another one. In the latter
+ case users will be able to implement this kind of things themself.
+ (myall -> "myall-* : all-* .WAIT install-*)
+ (myclean -> "myclean-* : uninstall-* .WAIT clean-*)
+
+- VARIANTS for libraries.
+
+- project "roundup" for testing
+
+- Better explain how "test" target works, maybe as a couple of slides
+ in the PDF presentation. With and without mkc.minitest.mk.
+- One more example/ for TARGETS, demonstrating such things as
+ "mkcmake release/debug/profile" or "mkcmake all_clang/all_gcc"
+ or "valgrind_test"/"gcov_test" etc.
+- Additional slides in PDF for virtual subprojects.
+ Notes about "virtual subproject" in examples/.
+- Notes in examples/hello_dictd and other examples based on
+ mkc.subprj.mk about what mkc.subprj.mk really does. Reference (man page)
+ is not enough for newcomers. Notes about clean-SUBPRJ, all-SUBPRJ etc.
+- Better explain ../Makefile.inc included automatically. For those who
+ are not familiar with *BSD it is not obvious how to use it.
+- "errorcheck/configure" tests should be run in parallel. Something
+ like shlock(1) or flock(1) is needed for this.
+- Example is needed for how to embed autoconf-based subproject into a
+ project based on mk-configure. The sad fact is autoconf/automake is
+ everywhere. So, it would be nice integrate mk-c into reality.
+ mkc_imp.autotools.mk is needed for this.
+- Alternative .depend generation, e.g. like it is described in GNU
+ make info files
+- Higher priority for fixing handling of dependencies between
+ libraries and programs. In addition examples/ is needed for
+ triggering rebuild of subproject if "something" was rebuild in
+ another subproject (build script for example).
+- For better extensibility it makes sense to implement user-implementable
+ pre_all, post_all, pre_install, post_install etc. targets.
+- Interdependencies between targetX-subprjA and targetY-subprjB (for
+ example all-prject1 and install-prject2). Maybe this is cool idea
+ for examples/ and slides. I need some good example for this.
+ <<<depend-project1:errorcheck-autotools_based_project2>>>!!!
+- Steal cool features from Simon Gerraty's mk files and analyse
+ "meta mode" he invented.
+- Better support for working without installation to /. -rpath, additional
+ directories for objects, binaries and libs.
+
+Some "targets" from TARGETS should set MKCHECKS to "no"
+
+ronn(1) : markdown to man pages
+
+-----------------------------------------
+gcc -L/usr/pkg/lib -R/usr/pkg/lib -o hello_lex hello_lex.o -ll
+yacc calc.y
+mv y.tab.c calc.c
+gcc -I/usr/pkg/include -c -o calc.o calc.c
+gcc -L/usr/pkg/lib -R/usr/pkg/lib -o hello_calc calc.o
+ERROR: cannot find program -y
+Cannot find bison, good bye!
+------------------------------------------
+
+ custom test failed -> exit status of mkcmake should not be zero
+ MKC_CUSTOM_ERR.qqqq -> error message before exiting just like
+
+ mkcmake configure doesn't work
+ New variable MKC_CUSTOM_ENV.xxx
+
+ Add script_check to MKC_CHECK_CUSTOM
+ Ex. MKC_CHECK_CUSTOM+= nested_funcs
+ MKC_CUSTOM_FN.nested_funcs= nested_funcs.c
+ MKC_CUSTOM_FN.script_check= checks/script_check
+
+ - BINSUBDIR, LIBSUBDIR, LIBEXECSUBDIR etc...
+ - Fix USE_SSP support for clang (-mllvm -stack-protector-buffer-size=1)
+ - @sysconfdir@/mkc.conf
+ - LDFLAGS vs. LDFLAGS in link.me (global paths before project's)
+ - Reimplement linkme.mk. It is not flexible enough.
+ - USE_RPATH
+ - OBJCOPTS_<proj>
+ - Regression tests:
+ * optional .f tests
+ * optional .p tests
+ * optional .m tests
+ * optional(!) glib2 tests
+
+============================================================
+Plan 1)
+
+ - Support for MKDEBUG like in NetBSD mk files
+ - .lua.luac:
+ - Implement mkc_imp.libtool.mk to build
+ the shared libraries using GNU libtool(1).
+ - MKSTRIP, STRIP, mkc_install: use STRIP, not STRIPPROG
+
+ Slides for:
+ - Slide "extensibility" about Lua module.
+ - code specific to GNU ld(1) (.def?)
+
+============================================================
+Plan 2)
+
+ - ./configure written in shell?
+ - EXPORT_DYNAMIC_SYMBOLS - add the specified symbols to
+ dynamic symbol table (GNU ld)
+ - EXPORT_SYMBOLS_REGEXP
+
+ - recheck documentation for Makefile.rec
+ - Syllable, Haiku, OpenServer/UnixWare and HURD
+ - lcc and tcc compilers
+ - epm -> rpm, SVR4 pkg etc.
+ - mkc_imp.filelist.mk
+ - FL_NOPREFIX
+ - FL_PERSUBPRJ
+ - IRIX: "endianess" and EXPORT_SYMBOLS
+
+============================================================
+Plan 3)
+
+ = sample for home-made .mk file (Ocaml? Pike?)
+ = marker for user's custom tests that
+ run generated executables, i.e. not ready
+ for cross-compilation
+
+ = symlinks to executables and libraries in ${OBJDIR}/{bin,lib}
+
+ = support for gettext
+
+ = xxxDIR variable for /var
+
+ = mkclint?
+
+ = Command line may be limited in size.
+ Save defines to config.h and set HAVE_CONFIG_H to 1
+ for compiling.
+
+ = MKC_NEED_FUNCLIBS - the same as MKC_SOURCE_FUNCLIBS but
+ implementation is taken from mk-c.
+ Ex: MKC_NEED_FUNCLIBS += strlcat strlcpy getline
+
+ = MKC_CUSTOM_premk, MKC_CUSTOM_postmk
+
+ = Online tutorial
+
+ = shared libraries support for AIX, UnixWare, Hurd, Haiku.
+ = shared libraries support for nwcc and other compilers.
+
+ = Comparison with quagmire, kBuild, CMake, scons, waf, framewerk, pmk,
+ MagicMakefiles, bjam, pymake etc.
+
+ = Often compilers need special options to compile pthread code.
+ Support for MKPTHREAD=yes|no is needed.
+
+ = implement MANBZ2?
+
+ = man page for mkc_check_compiler
+
+============================================================
+Plan 4)
+
+ = EXPORT_SYMBOLS for HP-UX, AIX, SCO etc.
+
+ = Single cache file as an automatically loaded (if exists)
+ bmake makefile.
+
+ = Targets bin_rpm, bin_epm
+ = Targets src_tar, src_targz, src_tarbz2
+
+ = mkc.subdir.mk:
+ - continue bulding even if some subprojects failed
+
+ = MKC_CHECK_CUSTOM:
+ - MKC_CUSTOM_FN=xxx.f
+ - MKC_CUSTOM_FN=xxx.objc
+
+ = Implement mkc.qt.mk
+
+ = Implement mkc.doxygen.mk?
+
+============================================================
+Plan 5)
+
+ = mkc.configure.mk functionality but for bourne shell, e.g.
+
+ Upstream creates ./configure shell script:
+ MKC_CONFIG_MK=mkc_config.mk
+ MKC_CONFIG_H=mkc_config.h
+
+ MKC_CHECK_HEADERS='
+ header1.h
+ header2.h
+ header3.h'
+ MKC_CHECK_FUNCLIBS='
+ func1:lib1
+ func2
+ func3:lib3'
+ #<...>
+ . mkc_configure
+ mkc_run # generating mkc_config.h and mkc_config.mk
+
+ User runs
+ ./configure ...
+ <any>make all
+
+ = MKC_CHECK_DECL_TYPE (define, function|variable)
+
+ = MKC_DEFINE_01 - -DHAVE_XXX=0 or -DHAVE_XXX=1
+
+============================================================
+Plan 6)
+ = MKC_BUILTINS (from autoconf):
+ broken_free_NULL,
+ exit_ret_int,
+ isinf, isnan, malloc_0, putenv_xxx, realloc, signal,
+ snprintf, sprintf, sscanf, strerror_r, strnlen,
+ sysconf, unlink, unsetenv, va_copy, va_list,
+ signed_shr, int_div, chown_minus_1,...
+ (autoconf.info/Particular Function Checks)
+
+ AC_FUNC_ALLOCA
+ = autoconf (Portability of headers)
+ = autoconf (Particular Header Checks)