All notable changes to BSDBuild will be documented in this file. This project adheres to Semantic Versioning.
- Add support for cmake. Add
--output-cmakeoption to mkconfigure to output macros usable from cmake. - Make the
dependtarget useCXXandCXXFLAGSwhen compiling C++. - Provide a built-in
configuretarget for regeneratingconfigurefromconfigure.in. New make variable${MKCONFIGURE_FLAGS}for passing arguments tomkconfigure. - mkconfigure: New C++ specific directives:
cxx_define(),cxx_incdir(),cxx_option(),check_cxx_header(),check_cxx_header_opts()andcheck_cxx_func_opts(). - mkconfigure: New directives:
ada_option(),ada_bflag()andhdefine_if(). - mkconfigure: New
pkgconfig_module()directive for integrated pkg-config module generation. Add$PKGCONFIG_LIBDIRsetting to simplify the installation of .pc modules. - mkconfigure: Introduce
--keep-conftestconfigure option (preserve output test files). - build.prog.mk & build.lib.mk: Add support for the Ada language.
- build.prog.mk & build.lib.mk: Add support for compiling to wasm (WebAssembly) with Emscripten (https://emscripten.org).
- build.prog.mk & build.lib.mk: Autodetect
${LINKER_TYPE}default based on${SRCS}file extensions. - build.prog.mk & build.lib.mk: Introduce
${PROG_BUNDLE},${LIB_BUNDLE}andgen-bundle.plfor generating platform-specific application bundles. - build.www.mk: Introduce the
mlproc(1)multilanguage preprocessor. Define${MLPROC},${MLPROCFLAGS},${MINIFIER},${MINIFIERFLAGS}and${MINIFIERFLAGSCSS}. - ada: New test for Ada toolchain.
- agar-ada: New test module for Ada bindings to Agar-GUI.
- agar-ada-core: New test module for Ada bindings to Agar-Core.
- agar.defs, agar-core.difs: New test modules to generate tables of definitions and struct sizes for an installed Agar build. Intended to simplify the implementation of thin and variable-thickness bindings to different languages.
- cc: Add support for cc65. Add
$CC_COMPILE. Don't assume the compiler understands "-c" or "-O2". - db5: New test for DB5.
- dirfd: New test for the
dirfd()function. - fdclose: New test for the
fdclose()function. - devkitpro: New test for devkitPro.
- gle: New test for GLE.
- imagemagick: New test for ImageMagick 6 and 7.
- libircclient: New test for libircclient.
- lldb: New test for LLDB and its utility library.
- lua: New test for the Lua library.
- mprotect: New test for the
mprotect()call. - pcre: New test for the PCRE library.
- sdl2: New test for SDL 2.0.
- sdl_cpuinfo: New test for the SDL cpuinfo functions.
- sys_stat: New test for
<sys/stat.h>. - tcl: New test for TCL. Thanks Chuck!
- xbox: New test for Xbox XDK.
- zlib: New test for zlib.
- zstd: New test for libzstd.
- Removed build.proj.mk module. Premake is no longer maintained and project file generation can be done with cmake.
- build.man.mk: Removed support for catman (
.cat*) file auto-generation. - mkconfigure: Removed unused Core function
Which(). - Removed h2mandoc.pl, cmpfiles.pl and cleanfiles.pl.
- Removed modules md5, rmd160, sha1.
- Removed module freesg (replaced by agar-sg).
- Removed module freesg-rg (replaced by agar-map).
- Updates to the manual pages.
- Update config.guess to 2015-03-04. Add FabBSD.
- In "install" target, create
${DESTDIR}if needed. - In mkconcurrent, extract and cache make target fragments directly from an installed build.*.mk so we no longer need to maintain a copy of them in the script.
- build.lib.mk: Disable use of Libtool by default. Generate .la files even when
USE_LIBTOOL=No. Handle .dylib and .dll files directly. - build.prog.mk & build.lib.mk: Use
{LIB,PROG}_PROFILEinstead of separate .po targets. Merge the "depend" from build.dep.mk. Include support for cc65 compiler. - mkconfigure: Make the generated
config.loga runnable shell script containing all test code and compilation commands. This allows individual tests to be "replayed" easily by copy/pasting fromconfig.logto a shell. - mkconfigure: Show influential environment variables in generated "--help" output. Introduce
Register_env_var()directive. Use$IFSinstead of sed for path traversals. Add test for$PATH_SEPARATOR. Use expr to validate--with-*and--enable-*arguments. Honor${EXECSUFFIX}in$PATHsearches. Don't invoke config.guess unnecessarily if --build is provided. - mkconfigure: Now exports
LDFLAGStoMakefile.config. - Don't output Lua definitions unless
--output-luais passed to mkconfigure. - cc: Define
HAVE_CC_GCCandHAVE_CC_CLANG. - libidn: Check for
idn2instead of the oldidnainterface. - png: Use
libpng-config --static --libsto include any libpng dependencies in${PNG_LIBS}. - pthreads: Add subtests
HAVE_PTHREAD_{MUTEX,COND,}_T_POINTERto determine whetherpthread_mutex_t,pthread_cond_tandpthread_tare pointer types or not. Needed for_Pure_Attribute_If_Unthreadedin agar. - x11: Honor
--x-includes=*and--x-libraries=*configure arguments. If XKB is not found then fallback to libXf86misc.
- build.lib.mk: Define
SONAMEcorrectly on Haiku (and other platforms). Thanks Begasus! - mkconfigure: Handle string literals containing "," and ";" in directives. Thanks Chuck!
- mkconfigure: When testing for the presence of executables, make sure they are not directories. Thanks Kristof!
- mkconfigure: Fix the
ld_option()directive. Fix quoting of arguments inconfig.status. - mkconfigure: In
MkExecOutput()andMkExecOutputPfx(), always initializeMK_EXEC_FOUNDtoNo. - mkconfigure: New Core functions
MkLog(),MkPrintSN(),MkComment(),MkCache(),MkCleanup(),MkLogCode(),MkRun(). - mkconfigure: New Core functions
MkDisableFailed()andMkDisableNotFound(). - mkconfigure: New Core functions
MkCompileAda(),TryCompileFlagsAda()andMkCodeCMAKE(). - db: Correctly detect db18 on FreeBSD.
- freetype: Check with pkgconfig also. Thanks enthus1ast!
- Don't include non-file args in "nothing to do" evaluation in bundled mkdep script.
- build.man.mk: Add support for the new OpenBSD mandoc. Add support for PDF and HTML format output. Introduce new target "lint".
- csidl: New test for Windows CSIDL interface.
- kqueue: New test for kqueue(2) kernel event notification mechanism.
- nanosleep: New test for nanosleep(2) interface.
- rand48: New test for rand48() PRNG routines.
- timerfd: New test for timerfd on Linux.
- uim: New test for uim input method framework.
- x11: Add /usr/local/include, /usr/include to fallback test.
- x11: Added test for XKB extension (
HAVE_XKB). - xbox: New test for xbox XDK.
- mkconfigure: No longer include the
--cachesupport code by default in order to make generated scripts smaller since caching is mostly advantageous on slower systems. UseCONFIG_CACHE(yes)to re-enable. Generate config.status files. - cxx, objc: Remove unnecessary tests for Cygwin, long long and long double.
- sse: Remove unnecessary test code.
- build.prog.mk: Allow
${PROG_TYPE}-dependent LDFLAGS to be defined. - build.lib.mk: Updated bundled libtool to 2.4.2. Use the
LIB_{CURRENT,REVISION,AGE}versioning scheme. - build.www.mk: Multi-lingual document targets are now specified as
${HTML}elements with the .html.var extension (as opposed to .html). Write charset variants into${CHARSETS}directory. - cc, cxx, objc: When cross-compiling, autodetect
${host}-ccet al. - opengl: On MacOS X, prefer "-framework OpenGL" to -lGL where available.
- sdl: On MacOS X, fallback to trying
-framework SDLif sdl-config fails. - sdl: On Windows, prefer linking to SDL.dll wherever possible.
- Honor
${DESTDIR}. Thanks bonsaikitten! - Handle some new compiler warnings correctly.
- pthreads: Dragonfly doesn't require extra
PTHREAD_XOPEN_CFLAGS. Thanks varialus! - getpwuid: Don't reference non-portable fields in test.
- portaudio: Fixed test for portaudio2.
- math_c99: Disable under
*-pc-mingw32, to work around a bug in libmingwex causing linker errors if single-precision variants of the math routines (e.g., fabsf()) are used. - jpeg: Remove
_WIN32exception (there are workarounds the<windows.h>issue). - perl: Fix compiler warnings in test (due to myPerl -> my_perl).
- mkconfigure: New directives
MAPPEND(),CHECK_PERL_MODULE(),DEFAULT_DIR(). Introduced new configure options--moduledir,--statedirand--libexecdir(and others for autoconf compatibility). - cc_attributes: New test for C compiler attributes (formerly in cc).
- cocoa: New test for Cocoa framework in OSX.
- crypt: New test for
crypt()function. - getpwnam_r: New test for
getpwnam_r()function. - gethostname: New test for
gethostname()function. - gcc: New test for GCC.
- fontconfig: New test for the fontconfig library.
- mysql: New test for MySQL client library.
- objc: New test for Objective C compiler.
- portaudio: New test for Portaudio library.
- siocgifconf: New test for
SIOCGIFCONFioctl. - sockopts: New test for platform-specific socket options.
- winsock: New test for Winsock under Windows.
- It is now possible to control conditional compilation from configure (i.e., a Makefile's
${SRCS}definition may safely reference configure-defined variables). In separate builds, the mkconcurrent script is now invoked at the very end of configure, and it now performs more extensive parsing of Makefiles as well. - Prevent redundant Makefile.config definitions from being produced.
- mkconfigure: Allow use of terminating backslash to escape long line breaks in input scripts.
- Simplifed handling of
Emul()in test modules. Remove redundant code. - Renamed
${SHAREDIR}->${DATADIR}and${SHARE}->${DATAFILES}.
- Avoid using system libtool if it's not GNU libtool.
- The mkdep script now passes any "-m" cflags to the compiler.
- build.prog.mk & build.lib.mk: Honor
${OBJC}. - Fix
${DESTDIR}handling in modules.
- mkconfigure: Introduce
TEST_DIR()directive for specifying location to third-party test module directory. - build.www.mk: Introduce
${LIB_MODULE}setting (set "Yes" to build a dlopen()able module). - agar_au: New test for Agar-AU.
- clock_win32: New test for Windows clock API.
- xinerama: New test for Xinerama.
- sdl_ttf: New test for SDL_ttf (thanks markand!)
- Default to using the system libtool where available.
- In various tests, try pkg-config first before scanning for paths.
- Fix default "make -j" behavior. Honor
${DESTDIR}. Thanks reinoud! - Tweaked test code to work around GCC 4.6 "-Wall" warnings.
- Various fixes for tests under NetBSD. Thanks reinoud!
- mkconfigure: Added directives
CONFIG_SCRIPT(),PACKAGE(),VERSION(),RELEASE()andREGISTER_SECTION(). Improvedconfigure --helpoutput. Items are now sorted. Added--verboseand--without-catmanoption. - mkconfigure: Added directives
CHECK_HEADER(),CHECK_HEADER_OPTS(),CHECK_FUNC()andCHECK_FUNC_OPTS()andHDEFINE_UNQUOTED()variant. Thanks rhaamo!
- mkconfigure: Added optional version argument to
REQUIRE()directive, to indicate a minimum required version. - Improved Cygnus/GNU compatibility for generated configure scripts.
- build.lib.mk: Fix dependency of
${SHOBJS}against${LIBTOOL_COOKIE}. Thanks Bill Randle! - cxx: Run C++ compiler tests against libstdc++.
- Added wikitext output to manreader.cgi script. Introduced man2wiki utility.
- Added uman uninstalled manual page viewer utility.
- mkconfigure: Added
C_INCDIR_CONFIG(). Internal code cleanup. - alsa: New test for ALSA audio interface.
- wgl: New test for the WGL interface in Windows.
- glx: New test for the GLX interface with X11.
- png: New test for libpng
- freesg_m: Library no longer exists.
- Removed less commonly used profiles from default
${PROJFILES}"bsd:cb-gcc", "windows:vs6", "windows:vs2002" and "windows:vs2003".
- agar: Updated test for Agar 1.4.
- Fixed incorrect version checking in
REQUIRE().
- Implement handling of
${DESTDIR}. It is prepended to installation targets at "make install". - Implemented scanning of Makefiles for those requiring .depend files (from ./configure). This eliminates the need for keeping annoying empty .depend files on source code repositories.
- build.lib.mk: Introduce
${CONF}and${CONFDIR}. - cc: New tests for compiler attributes:
aligned,const,deprecated,noreturn,pureandwarn_unused_result. - cracklib: Update test for latest version of library.
- glob: New test for
glob()function. - syslog: New test for
syslog()interface. - db: New test for Berkeley DB.
- gettimeofday: New test for
gettimeofday()call. - Added FabBSD to target platforms.
- build.proj.mk: Removed
${PROJINCLUDES}.
- build.proj.mk: Simplified project file generation. Rewrite of mkprojfiles to implement proper parsing of Makefile variables.
- percgi: Update test for version of PerCGI.
- mkconfigure: Added
C_INCPREP()directive to preprocess C header files and insert visibility keywords in__BEGIN_DECLSsections). AddedLD_OPTION()directive. - mkconfigure: Introduced configure options
--includes,--cache,--with-ctags. - build.www.mk: Added `${HTML_INSTSOURCE}. Added manual page.
- curl: New test for curl library.
- edacious: New test for Edacious.
- dlopen: New test for
dlopen()call. - dyld: New test for dyld interface.
- shl_load: New test for
shl_load()interface. - float_h: New test for
float.h. - percgi: New test for PerCGI library.
- agar-math: New tests for ag_math extension library.
- Added h2mandoc utility (create mandoc templates from C header files).
- build.proj.mk: Improvements in project file generation. Avoid redundant files in project file packages. Determine the default Premake "package language" from the contents of
$SRCS. Better handling of dependencies when generating project files for Code::Blocks (use the recommended global variables). - When scanning for executables (such as foo-config scripts), warn user if the program appears multiple times in $PATH.
- cc: Fix unwanted behavior when multiple cc and c++ appear in $PATH.
- iconv: Test for const-correct version of API (sets
HAVE_ICONV_CONST). - Rewrite of the mkify utility.
- build.prog.mk & build.lib.mk: Fix dependencies with non-current build under GNU make. Thanks Antoine Levitt!
- pthreads: Search for pthreadsGC* from pthreads-win32. Thanks Ryan Lindeman!
- Fixed portability problems against some versions of sh.