====================================================================== Version 0.21.0, by Aleksey Cheusov, Sun, 24 Oct 2010 17:47:19 +0300 Support for clang compiler was implemented. Documentation and presentation were updated. There are new projects using mk-configure. mkc_install is always used for installing mk-configure. This simplifies an installation process on non-BSD platforms. WARNS variable: support for icc was added. New variable LEXLIB library responsible for -ll/-lfl was introduced. See examples/hello_calc2. mkc_check_compiler: in order to differentiate icc from gcc, the check for Intel C/C++ compiler is run first. New target "filelist" that outputs a list of files for the whole project was introduced. Makefile: mk-configure's mk files are unconditionally installed to its own directory in order to avoid potential conflicts with system-wide sys.mk on BSD platforms. mkc.configure.mk: HAVE_FUNCLIB.main is always set to 1. mkc_check_funclibs is not run for checking presense of function "main" in libc. New variable MKCHECKS was introduced. Useless rule ".sh:" was removed. ====================================================================== Version 0.20.0, by Aleksey Cheusov, Sun, 19 Sep 2010 21:46:25 +0300 New variable PROJECTNAME, see the manual page. New variable EXPORT_DYNAMIC for making all symbols in executable visible to linked or dlopen'ed libraries. It is supported on *BSD, Linux, SunOS, QNX, Interix, OSF1, HP-UX. New variable CFLAGS.pic. See the manual page. EXPORT_SYMBOLS: On systems using GNU ld, i.e. *BSD, Linux, QNX etc. 'ld --version-script' is used in order to specify a list of exported symbols instead of --retain-symbols-file Lua support: - Lua support didn't work properly if only one of LUA_LMODULES or LUA_CMODULE were specified. Now it is fixed. - New regression test examples/hello_lua2. - Force building Lua modules with .so extension. Darwin: - support for EXPORT_SYMBOLS was added - DLLs (MKDLL=yes) are built as bundles and have .bundle extension /usr/bin/install is used as INSTALL only on *BSD platforms. On all others mkc_install is used. Interix: - 775:664 permissions are used only for +Administrator user. - "installdirs" target creates directories with 775 permission if needed. OSF1: - better handling the so_location files. mkc_imp.arch.mk: - PROJECTNAME variable is used for creating archives and .deb package. ====================================================================== Version 0.19.0, by Aleksey Cheusov, Fri, 3 Sep 2010 23:19:44 +0300 FIX: LPREFIX, YPREFIX and YHEADER now works as documented. Regression test for them is added. As of this release target "install" creates target directories by default, i.e. it envokes target "installdirs" before installing files. For disabling this behaviour, you may set MKINSTALLDIRS variable to "no". mkc.lib.mk: - New variable EXPORT_SYMBOLS for exporting (in shared object library) only specified symbols. At the moment the following platforms support this: Solaris and those using GNU ld, that is *BSD and Linux. - "ld -h" is enabled on Solaris. mkc.subdir.mk and mkc.subprj.mk: - Two new variables: EXPORT_VARNAMES and NOEXPORT_VARNAMES for exporting variables before building subprojects. By default MKC_CACHEDIR is exported. As a result _mkc_* cache files will be placed in one directory for all subprojects. - New variable NOSUBDIR for excluding specified subprojects from build. Useful side effect: by using this variable you may disable some regression tests while running "bmake test". - Makefile.rec file if present is included by ALL subprojects recursively. See tests/rec_makefiles. mkc.subprj.mk: - New target subdir--, synonym for nodeps--. mkc.configure.mk: - MKC_CHECK_PROGS: mkc_check_progs is not called if path to program is absolute. mk-configure.7 shows in <> typical place where variables shall be used. On Solaris LD=/usr/ccs/bin/ld by default. On OSF1 LD=/usr/bin/ld by default. On QNX mkc_install is used as install program by default. mkc_check_custom: - FIXED: ambiguous arguments of command "test" (seen on QNX) regression tests: - New test examples/hello_plugins replacing examples/hello_dlopen and examples/hello_dll - New test examples/hello_calc ====================================================================== Version 0.18.0, by Aleksey Cheusov, Tue, 27 Jul 2010 21:06:56 +0300 Several new variables are introduced: - LUA_LMODDIR and LUA_CMODDIR - installation directories for Lua modules written in Lua and C. - MKC_VERSION is now documented. - MLINKS now works just like in NetBSD. - CFLAGS.warns.. and CXXFLAGS.warns.. are now documented. Feel free to set them in sys.mk before installation. - WARNERR for forcing warnings to be reported as errors. New targets are introduced: bin_tar, bin_targz, bin_tarbz2, bin_zip and bin_deb for creating archive files or .deb package containing an installation image (Ex: examples/hello_files). This also introduces new variables: TAR, GZIP, BZIP2 and ZIP. Documentation: - Just a few notes about cross-compilation in mk-configure.7 - New slides, fixes and improvements in doc/presentation.pdf - README: feel free to edit sys.mk before installation - README: a few notes about tools used for development. Support for POD (Plain Old Documentation) is added (.pod.1, ..., .pod.9 and .pod.html suffix rules). New variables for this: POD2MAN, POD2MAN_FLAGS, POD2HTML and POD2HTML_FLAGS. Ex: examples/hello_xxzip ../Makefile.inc is included automatically if exists just like in NetBSD. Ex: hello_superfs. .ORDER: installdirs install. This should fix -j problem. Thanks to FreeBSD buys, swell.k at gmail.com and Mikolaj Golub WARNS: add support for HP-UX C/C++ all:${FILES} ${MAN} etc. for the case when FILES are generated. Thanks to Jan Smydke. New examples (regression tests): hello_superfs, hello_xxzip. ====================================================================== Version 0.17.0, by Aleksey Cheusov, Tue, 22 Jun 2010 23:44:08 +0300 mkc_imp.pkg-config.mk: - FIXED: double applying -L, -l and -I options got from pkg-config. Solution: .unset PKG_CONFIG_DEPS - Additional checks for INSTALL_{C,L}MOD pkg-config variables, they must be defined. CC_TYPE, CXX_TYPE and LD_TYPE variables are a part of mk-c's API, now they are documented. mkcmake: - MKC_BMAKE environment variable is introduced. See mkcmake.1 Documentation for /etc/mk.conf, @sysconfdir@/mk.conf and MAKECONF. doc/presentation.pdf: New slides and updates FAQ: updates mkc_imp.lua.mk: - Check for lua.h header if other checks succeeded. mkc_imp.lib.mk: - MKDLL is also case-insensitive. Makefile: - make shipped with NetBSD-5 does not have option -C, so I remove it. ====================================================================== Version 0.16.0, by Aleksey Cheusov, Sat, 12 Jun 2010 15:06:10 +0300 Support for Lua programming language. See documentation for mkc_imp.lua.mk in mk-configure(7). mkc.pkg-config.mk: - Significant improvements! For details see mk-configure(7) manual page and examples/hello_glib2 example. New supported variables: PKG_CONFIG.exists., PKG_CONFIG_VARS. and PKG_CONFIG.var... - becomes internal include file and therefore renamed to mkc_imp.pkg-config.mk. Symlink mkc.pkg-config.mk is provided for backward compatibility. mkc_imp.pkg-config.mk is included by mkc.prog.mk and mkc.lib.mk. mkc.intexts.mk: - becomes internal include file and therefore renamed to mkc_imp.intexts.mk. Symlink mkc.intexts.mk is provided for backward compatibility. It is included from mkc.prog.mk, mkc.lib.mk and mkc.files.mk. - New variable INTEXTS_REPLS. See mk-configure(7). mkc.lib.mk: - includes mkc_imp.intexts.mk - supports SCRIPTS* variables (includes newly created mkc_imp.scripts.mk) - New variable MKDLL for creating dinamically loaded libraries (.so). mkc_imp.subprj.mk: - New variable SUBPRJ_DFLT. See mk-configure(7). mkc.*.mk try to open ${MAKECONF}, @sysconfdir@/mk.conf and /etc/mk.conf. This is now documented. mk-configure.7 is reorganized. Several internal include files document their own variables. Further improvements of man page are needed. All boolean variables becomes case-insensitive. That is "no", "No", "NO" and "nO" are equal. The same for "yes", "Yes"... mkc_check_custom(1): - New options: -p, -n, -m and -s. Minor fixes and clean-ups in .mk files, tools and regression tests. New regression tests and examples. ====================================================================== Version 0.15.1, by Aleksey Cheusov, Fri, 28 May 2010 22:39:36 +0300 FIX: in version 0.15.0 mkc.subprjs.mk was added, but it was not installed because I forgot to add it to Makefile. Now it is installed just like all other *.mk files. FIX: 'all : errorcheck' is not for bsd.subdir.mk and bsd.subprj.mk mkc.subprjs.mk has been renamed to mkc.subprj.mk. mkc.subprjs.mk is installed as a symlink. ====================================================================== Version 0.15.0, by Aleksey Cheusov, Tue, 25 May 2010 22:52:28 +0300 New presentation for mk-configure is in doc/ subdirectory. New top-level include file "mkc.subprjs.mk", more powerful replacement for mkc.subdir.mk. It handles subprojects organized as a dependency graph. New variables are added: MKPICLIB, MKSHLIB, MKSTATICLIB and MKPROFILELIB for building PIC, shared, static and profile libraries. See mk-configure.7 for details. MKPIC, MKPROFILE and MKPICINSTALL variables are removed. Use MKPICLIB, MKSHLIB, MKPROFILELIB and MKINSTALL variables instead. Implementation for variable "WARNS" (currently only for gcc). New variable "SHRTOUT". If it is not "no", shortened formatted messages are output about compiling, linking etc. Manual page for mkcmake(1). Target "depend" is added for generating .depend file. Minor fixes in mkc_check_funclib. Support for Cygwin is added (no support for shared libraries yet). Clean-ups in target "clean". More regression tests and examples. Minor fix in mkc_imp.subdir.mk: do not run "installdirs" if MKINSTALL=no. Internal target "error-check" is renamed to "errorcheck". ====================================================================== Version 0.14.0, by Aleksey Cheusov, Sun, 31 Jan 2010 16:37:21 +0200 Support for OSF1. Tested on Tru64-5.1/alpha with gcc and DEC C compiler. Support for HP-UX. Tested on HP-UX-11.0/hppa with gcc. Support for DragonFlyBSD. Tested on DragonFlyBSD-2.4.1/x86 with gcc. Support for MirOS BSD. Tested on MirBSD-10/x86 with gcc. SHLIBMODE variable is introduced which sets a shared library mode. FIX: mkc.subdir.mk now takes into account MKINSTALL variable. Thanks to Mikolaj Golub for pointing out. FIX: targets "installdirs" and "uninstall" now takes into account MKINSTALL variable. fix in mkc.minitest.mk: HP-UX's diff doesn't have -u flag, so I remove it. fix in mkc_imp.platform.sys.mk: CC/CXX type should be detected AFTER setting CC/CXX variables. mkc_check_compiler: - support for DEC C compiler (OSF1/Tru64) - minor fixes. More regression tests. ====================================================================== Version 0.13.0, by Aleksey Cheusov, Sun, 27 Dec 2009 17:06:06 +0200 CC, CXX and LD types are automatically detected and options passed to them (e.g. options for generating a position independent code or options for building a shared library) depend on this type. At the moment the following systems and compilers are supported: - NetBSD. Tested under NetBSD-5.0/x86 and NetBSD-2.0/alpha with gcc and pcc (Portable C compiler). - FreeBSD. Tested under FreeBSD-6.2/x86, 7.1/spark64 and 7.1/x86 with gcc. - OpenBSD. Tested under OpenBSD-3.8/x86 and 4.5/x86 with gcc. - Solaris. Tested under Solaris-10/x86 and Solaris-10/spark64 with sunpro-11, sunpro-12 and gcc. - Darwin (MacOS-X). Tested under Darwin-8.11.0/ppc (MacOS-X Tiger) with native gcc. - Interix. Tested under Interix-3.5/x86 with gcc. - QNX. Tested under QNX-6.3/x86 with gcc. - Partial support for AIX, HP-UX and Tru64 and their native compilers and linkers. Support is not complete because I have no access to "big iron". Any help? ;-) If you don't see your favourite system/compiler here and want to help me to improve mk-configure, feel free to contact me. mk-configure needs your help! ;-) The default directory for mk-files is ${PREFIX}/share/mkc-mk, where an empty sys.mk is installed unless NOSYSMK is defined while installation. See an explanation about this in README. So called built-in checks are implemented. See MKC_CHECK_BUILTINS variable. Built-in checks are checks provided by mk-configure. At the moment the following checks are implemented: endianess, prog_flex, prog_bison, prog_gawk, prog_gm4. See mk-configure.7 for the documentation. mkc.configure.mk: - At the end of this file MKC_{REQUIRE,CHECK}_XXX variables as well as MKC_{CFLAGS,LDADD,SRCS} are .undef-ed. This allows one to .include mkc.configure.mk several times. - This include file is activated automatically from mkc.prog.mk and mkc.lib.mk. You need to .include mkc.configure.mk explicitely only if postcheck actions are needed. SCRIPTS variable can contain subdir/