Mark COPTS* variables as settable by user. Also, specify that CFLAGS is
applied after CFLAGS0 and before COPTS.

Introduce MKC_REQUIRE_BUILTINS in addition to MKC_CHECK_BUILTINS
remove hello_ prefix from all examples
install target: introduce dependencies for target files

MKC_CHECK_CUSTOM -- checks for compilation, we also need to
check compilation + "linkable-ness".
============================================================
MKC_CHECK_FUNCLIBS -- functionality for adding arbitrary headers
============================================================
FAQ for users who see mk-configure for the first time and want to
build project with a help of mk-c.
============================================================

CPPFLAGS +=	-D__UNCONST\(a\)=${unconst_definition:Q}
   before mkc.configure.mk --> failure of all tests

============================================================

MKCHECKS: should be available after inclusion of mkc.init.mk

============================================================

cheusov@corpo |
0 tesseract>mkcmake clean all
rm -f pod2htmd.tmp pod2htmi.tmp   wf_tesseract.o wf_tesseract  
c++           -c     -o wf_tesseract.o wf_tesseract.cc
wf_tesseract.cc:5:23: fatal error: json/json.h: No such file or directory
 #include <json/json.h>
                       ^
compilation terminated.
*** Error code 1

Stop.
bmake: stopped in /home/cheusov/prjs/workfusion/tesseract

cheusov@corpo |
1 tesseract>

============================================================

PROG =			wf_tesseract
SRCS =			wf_tesseract.cc

MKC_REQUIRE_PKGCONFIG =	lept jsoncpp
MKC_REQUIRE_FUNCLIBS +=	main:tesseract

????? LDADD +=		-ltesseract ?????

WARNS =			4

.include <mkc.mk>
============================================================

fix verr from err.h failure on bone-deb

===============================================

MKC_CHECK_VARS fails on NetBSD on sys_signame

============================================================

[06/27 15:13]<yauheni> MKDEP.c   = ${MAKEDEPEND} -f- ${ddash} ${MKDEPFLAGS} \
[06/27 15:13]<yauheni>     ${CFLAGS:C/-([IDU])[  ]*/-\1/Wg:M-[IDU]*} ${_CPPFLAGS} >
[06/27 15:13]<yauheni> ,   ?
[06/27 17:51]<yauheni> mkc_imp.dep.mk:
[06/27 17:51]<yauheni> .if !defined(_MKC_IMP_DEP_MK) && !empty(_SRCS_ALL)
[06/27 17:51]<yauheni> ...
[06/27 17:51]<yauheni> .if defined(_SRCS_ALL)

INCS generated by INTEXTS

============================================================
Plan 0.28.0

- test for "inline" keyword
- test for CCLD option
- bzero, bcopy
- NetBSD style macroses

- check awk capabilities at build time
- Hide regression tests details
- "bmake -k regrtest/check" (mkc.minitest.mk?)

- strndup(SunOS-5.10, -fgetln,_compatlib)
- PRId64
- leveldb, strtoll, strtoull
- wmemcpy, strnlen
- wcsdup
- CFLAGS0

- Special marker for checks that cannot be possible in cross-compiling

- regression tests without garbage, make it look like paexec\

- MKC_FEATURES: inttypes

Some thoughts inspired by talks with Michael Crogan

- MKASNEEDED=yes => ld --as-needed

- _mkc_done_<prj>_<trg>

- project "roundup" for testing 

- "errorcheck/configure" tests should be run in parallel. Something
  like shlock(1) or flock(1) is needed for this.
- Alternative .depend generation, e.g. like it is described in GNU
  make info files
- Additional examples/ is needed for
  triggering rebuild of subproject if "something" was rebuild in
  another subproject (build script for example).
- 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.

Some "targets" from TARGETS should set MKCHECKS to "no"

ronn(1) : markdown to man pages

  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)
  - 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

  - Syllable, Haiku, OpenServer/UnixWare and HURD
  - lcc and tcc compilers
  - epm -> rpm, SVR4 pkg etc.
  - mkc_imp.filelist.mk
    - FL_NOPREFIX
    - FL_PERSUBPRJ
  - IRIX: "endianness" 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

  = support for gettext

  = mkclint?

  = Command line may be limited in size.
    Save defines to config.h and set HAVE_CONFIG_H to 1
    for compiling.

  = 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, bitmake, pkgconf, Gradle
    http://sourceforge.net/projects/mkbuild 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)
