summaryrefslogtreecommitdiff
path: root/com32/include/syslinux
Commit message (Collapse)AuthorAgeFilesLines
* pxe_api.h: finish revert of 9acbffdHEADmasterGene Cumm2016-11-271-3/+3
| | | | | | | | 9acbffd33b9200ffe37833463b4d4478e824295a caused more issues than it solves. There appears to be a bigger underlying issue that the __weak argument masks. Until the underlying issue is solved, we need __weak. Signed-off-by: Gene Cumm <gene.cumm@gmail.com>
* partial revert 9acbffdGene Cumm2016-11-271-2/+2
| | | | | | | | | Weaken 2 declarations. Seems to be the minimal amount for now. First exhibited issues with EFI but later also with BIOS beyond *pxelinux.0 when compiled with gcc-5.3.1 and gcc-6. Signed-off-by: Gene Cumm <gene.cumm@gmail.com>
* pxe_dns: remove obsolete pxe_dns.c wrapperH. Peter Anvin2016-04-061-1/+1
| | | | | | | | | We used to need a wrapper around the core function dns_resolv() to implement pxe_dns(), because the former function required its argument to live in low memory. This is no longer the case and hasn't been for a while, so remove this unnecessary level of indirection. Signed-off-by: H. Peter Anvin <hpa@linux.intel.com>
* pxe_api.h: remove __weak from prototypesH. Peter Anvin2016-04-061-5/+5
| | | | | | | The prototypes themselves are not weak, and declaring them as such forces the core definitions, which should not be weak, as weak. Signed-off-by: H. Peter Anvin <hpa@linux.intel.com>
* kbd: Make getting the keyboard shift state a firmware methodH. Peter Anvin2014-04-201-0/+1
| | | | | | | Getting the keyboard shift state is a firmware method. It is unfortunately unclear if it is even possible on EFI. Signed-off-by: H. Peter Anvin <hpa@zytor.com>
* Add filesystem UUID to SYSAPPEND for FATSerj Kalichev2014-03-131-0/+1
| | | | | | | | | | Filesystem UUID shows the partition we boot kernel from. The kernel parameter has format like FSUUID=DA1A-0B2E. The SYSAPPEND bit is 0x40000. Now the FAT only supports FSUUID. The patch is based on 67aaaeeb228. Signed-off-by: Serj Kalichev <serj.kalichev@gmail.com> Signed-off-by: H. Peter Anvin <hpa@zytor.com>
* bios: Remove shuffle and boot comapi callH. Peter Anvin2014-02-131-0/+3
| | | | | | | | Remove the shuffle and boot comapi call. This is the last of the comapi calls left; we should now be able to completely remove the comapi support. Signed-off-by: H. Peter Anvin <hpa@linux.intel.com>
* pxe: Export the initial stack and PXE(NV) structure, fix pxechnH. Peter Anvin2014-02-131-2/+2
| | | | | | | | | | Export the initial stack and PXE(NV) structure pointers properly, even for users which need seg:offs. Use this in pxechn.c rather than the already-removed INT 22h AX=000Ah call. Signed-off-by: H. Peter Anvin <hpa@linux.intel.com> Cc: Gene Cumm <gene.cumm@gmail.com>
* Add const qualifiersGene Cumm2014-01-251-1/+1
| | | | | | Some functions are ignoring the const qualifier. Signed-off-by: Gene Cumm <gene.cumm@gmail.com>
* ldlinux: Fix recent pxe symbol regressionMatt Fleming2013-12-111-1/+1
| | | | | | | | | | | | commit 60dabb5b1d6d ("pxe: Make the SENDCOOKIES feature for HTTP worked again") introduced a regression for ldlinux because it references the 'SendCookies' symbol, which is only provided by PXELINUX. The regression was caused because the '__weak' tag was dropped from the declaration of SendCookies. Tested-by: "Santillanes, Russel" <Russel.Santillanes@gs.com> Signed-off-by: Matt Fleming <matt.fleming@intel.com>
* pxe: Make the SENDCOOKIES feature for HTTP worked againRussel Santillanes2013-12-061-1/+1
| | | | | | | | Code refactoring had caused the http_bake_cookies() function to become inaccessible and the SendCookies variable to be duplicated, causing the sendcookies feature to not work. Signed-off-by: H. Peter Anvin <hpa@linux.intel.com>
* com32/disk: Code cleanup at disk_write_sectors and disk_read_sectors.Raphael S.Carvalho2013-09-301-0/+7
| | | | | | | | Pulled common code out of these functions into new ones. The functions chs_setup and ebios_setup were created for this purpose. Signed-off-by: Raphael S.Carvalho <raphael.scarv@gmail.com> Signed-off-by: Matt Fleming <matt.fleming@intel.com>
* load_linux: dynamically calculate the cmdline regionsyslinux-6.02-pre12Matt Fleming2013-07-251-0/+4
| | | | | | | | | | | | Users are hitting issues where the offset calculated by, (0x9ff0 - cmdline_size) & ~15; is not useable memory, e.g. it is SMT_RESERVED. Instead we should be trying to find the highest lowmem address. Cc: H. Peter Anvin <hpa@zytor.com> Signed-off-by: Matt Fleming <matt.fleming@intel.com>
* movebits: add an inline to test for SMT_FREE || SMT_TERMINALH. Peter Anvin2013-07-171-0/+5
| | | | | | Introduce a predicate inline to test for a valid terminal address. Signed-off-by: H. Peter Anvin <hpa@zytor.com>
* memscan: build a linked list of memory scannersMatt Fleming2013-07-172-4/+11
| | | | | | | | | | | By registering memory scanners at runtime we can support multiple memory scanner functions, which helps us to isolate them and keep things modular, only registering them for specific platform/derivative combinations. This is preparation for adding a memory scanner that is specific to PXELINUX on bios and understands when the memory region occupied by the PXE stack can be reused. Signed-off-by: Matt Fleming <matt.fleming@intel.com>
* movebits: Add SMT_TERMINAL - a last resort region typeMatt Fleming2013-07-171-0/+1
| | | | | | | | | Some memory regions are usable, but only as a last resort just before we hand over control to a kernel image. Add the necessary movebits infrastructure to use these regions when all other options have been exhausted. Signed-off-by: Matt Fleming <matt.fleming@intel.com>
* memscan: pass enum syslinux_memmap_types aroundMatt Fleming2013-07-171-1/+2
| | | | | | | | The memscan interface should be using SMT_* to describe the types of memory regions as SMT_* are platform agnostic values. This will allow us to be much more descriptive about the type of memory regions in future. Signed-off-by: Matt Fleming <matt.fleming@intel.com>
* movebits: Add syslinux_memmap_find()Matt Fleming2013-07-171-0/+6
| | | | | | | | Refactor the code for finding a suitable location for kernel protected-mode and real-mode data. It's complicated enough that it deserves to be separated into its own function. Signed-off-by: Matt Fleming <matt.fleming@intel.com>
* zonelist: rename syslinux_memmap_find()...Matt Fleming2013-07-171-3/+3
| | | | | | | to syslinux_memmap_find_type(), which more accurately reflects its function and frees up the old name for another use. Signed-off-by: Matt Fleming <matt.fleming@intel.com>
* Merge branch 'kernel-loader' into for-hpa/elflink/firmwareMatt Fleming2013-07-081-1/+8
|\ | | | | | | | | Conflicts: efi/efi.h
| * efi: implement Linux kernel handover protocol supportMatt Fleming2013-07-081-1/+8
| | | | | | | | | | | | | | | | | | | | | | | | The handover protocol is the preferred method of booting kernels on EFI because it allows workarounds for various firmware bugs to be contained in one place and applied irrespective of the chosen bootloader. Use it if available, but ensure that we fallback to the legacy boot method. Also, update the linux_header structure with recent changes made in the kernel source. Signed-off-by: Matt Fleming <matt.fleming@intel.com>
* | Merge tag 'syslinux-5.11-pre8' into firmwaresyslinux-6.02-pre1Matt Fleming2013-07-081-0/+15
|\ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | syslinux-5.11-pre8 Conflicts: NEWS com32/lib/Makefile core/conio.c mk/devel.mk mk/elf.mk
| * | debug.c32: Dynamically enable/disable debug code at runtimeMatt Fleming2013-07-051-0/+15
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | It's useful to be able to enable (and disable) debug code at runtime, particularly for allowing users that are unable to build their own Syslinux releases the chance to provide useful debugging output. For example, say a user reports trouble with their PXE stack but doesn't have a development environment setup to turn on the debug code themselves. With this change you can simply request that they do, debug.c32 -e pxe_call unload_pxe open_file to enable the debug in those functions. By only turning on code in specific functions we reduce the chance of disrupting the buggy behaviour and improve the signal to noise ratio for print statements. To disable debug code use the -d flag, debug.c32 -d pxe_call To use this new feature simply do, if (syslinux_debug_enabled) { debug1(); debug2(); .... } from within the function you wish to add debug code. Note that this feature is not limited to print statements - you can put any code within the conditional, such as verifying a checksum or checking for memory leaks. The plan is to leave the dynamic debug code built in for all prereleases and to turn it off for final releases. People may still want to build with all dprintf() statements enabled, and so a new symbol, DYNAMIC_DEBUG, was introduced rather than repurposing the old DEBUG, DEBUG_STDIO and DEBUG_PORT symbols. Signed-off-by: Matt Fleming <matt.fleming@intel.com>
* | | firmware: s/set_mode/text_mode/Matt Fleming2013-07-041-1/+1
| |/ |/| | | | | | | | | | | We only ever use ->set_mode() to transition into text mode, so rename it to something more suitable and drop the unused 'mode' argument. Signed-off-by: Matt Fleming <matt.fleming@intel.com>
* | ipappend: delete .ipappend_strings()Matt Fleming2013-06-191-1/+0
| | | | | | | | | | | | | | It's no longer referenced anywhere as everything has now moved to *sysappend*. Signed-off-by: Matt Fleming <matt.fleming@intel.com>
* | firmware: correct the get_cursor() argument typesMatt Fleming2013-06-191-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | We only ever pass uint8_t * to get_cursor(), so update the prototypes and fix the following compiler warnings, In function ‘__ansicon_open’: com32/lib/sys/ansicon_write.c:93:6: warning: passing argument 1 of ‘firmware->o_ops->get_cursor’ from incompatible pointer type [enabled by default] com32/lib/sys/ansicon_write.c:93:6: note: expected ‘int *’ but argument is of type ‘uint8_t *’ com32/lib/sys/ansicon_write.c:93:6: warning: passing argument 2 of ‘firmware->o_ops->get_cursor’ from incompatible pointer type [enabled by default] com32/lib/sys/ansicon_write.c:93:6: note: expected ‘int *’ but argument is of type ‘uint8_t *’ Signed-off-by: Matt Fleming <matt.fleming@intel.com>
* | com32: add prototype for get_derivative_info()Matt Fleming2013-06-191-0/+2
| | | | | | | | | | | | | | | | | | and fix the following compiler warning, In function ‘__syslinux_get_derivative_info’: com32/lib/syslinux/dsinfo.c:37:5: warning: implicit declaration of function ‘get_derivative_info’ [-Wimplicit-function-declaration] Signed-off-by: Matt Fleming <matt.fleming@intel.com>
* | Merge tag 'syslinux-5.10-pre2' into for-hpa/elflink/firmwareMatt Fleming2013-03-224-3/+85
|\ \ | |/ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | syslinux-5.10-pre2 Conflicts: NEWS com32/include/netinet/in.h com32/include/sys/cpu.h com32/lib/Makefile core/Makefile core/fs/diskio.c core/fs/pxe/pxe.h core/init.c core/mem/free.c core/mem/malloc.c mk/devel.mk version
| * Merge branch 'lwip' into elflinkMatt Fleming2013-02-264-3/+85
| |\ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Welcome to Syslinux 5.10. Conflicts: NEWS com32/lib/Makefile com32/lib/sys/open.c com32/lib/syslinux/ipappend.c com32/modules/Makefile com32/modules/prdhcp.c core/Makefile core/cmdline.inc core/com32.inc core/comboot.inc core/configinit.inc core/fs/chdir.c core/fs/fs.c core/fs/pxe/dnsresolv.c core/fs/pxe/pxe.c core/fs/pxe/pxe.h core/idle.c core/include/ctype.h core/init.inc core/mem/init.c core/parseconfig.inc core/runkernel.inc core/syslinux.ld core/ui.inc doc/comboot.txt version
| | * Merge remote-tracking branch 'origin/master' into lwipsyslinux-4.10-pre18H. Peter Anvin2012-03-301-0/+180
| | |\ | | | | | | | | | | | | | | | | | | | | | | | | | | | | Resolved Conflicts: NEWS version Signed-off-by: H. Peter Anvin <hpa@zytor.com>
| | * \ Merge remote-tracking branch 'origin/master' into lwipsyslinux-4.10-pre15H. Peter Anvin2011-06-271-2/+7
| | |\ \
| | * | | core: pass the file flags down through the stackH. Peter Anvin2011-05-011-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Pass the file flags down through the stack. This allows us to distinguish between open for read, open for write, or opendir in the low-level filesystem functions; this will matter for the PXE methods. Signed-off-by: H. Peter Anvin <hpa@zytor.com>
| | * | | Create a sysappend string with some very minimal CPU informationsyslinux-4.10-pre11H. Peter Anvin2011-04-271-0/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Doing a full system manifest is obviously not possible, but we can include some very very basic CPU information. Signed-off-by: H. Peter Anvin <hpa@zytor.com>
| | * | | dmi: Add a few more DMI stringssyslinux-4.10-pre10H. Peter Anvin2011-04-271-0/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Add the BIOSVENDOR, BIOSVERSION, and SYSFF strings. Signed-off-by: H. Peter Anvin <hpa@zytor.com>
| | * | | dmi: separate the SYS* and MB* defines as their own stringsH. Peter Anvin2011-04-261-7/+11
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Collect both the SYS* and MB* strings; it is too common the SYS* ones contain bogus but non-empty information, and the total amount of data isn't all that huge. Signed-off-by: H. Peter Anvin <hpa@zytor.com>
| | * | | dmi: add additional stringsH. Peter Anvin2011-04-261-4/+7
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Add additional strings, and create fallbacks when the strings are empty. Unfortunately we can't easily fall back for crap like "Insert name of OEM here". Signed-off-by: H. Peter Anvin <hpa@linux.intel.com>
| | * | | Additional sysappend strings from DMI; pre-bake the http cookiesH. Peter Anvin2011-04-261-1/+5
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | - Add additional sysappend strings from DMI; we may want to add even more but let's think about it first. - Pre-generate http cookies. - Add a "sendcookies" command to mask out some of the information. Signed-off-by: H. Peter Anvin <hpa@linux.intel.com>
| | * | | Generalize ipappend handling as "sysappend", and move to PM codeH. Peter Anvin2011-04-253-1/+48
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Generalize the ipappend handling to cover all the derivatives, and rename it "sysappend" ("ipappend" is a valid alias for all derivatives.) Move all the string handling to protected mode. Currently only pxelinux exports strings, but the plan is to change that in the future. Signed-off-by: H. Peter Anvin <hpa@zytor.com>
| | * | | lwip: handle UNDI stacks which need to be polledH. Peter Anvin2011-04-221-1/+18
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | If the UNDI stack reports either IRQ 0 or does NOT report the NDIS IRQ supported flag, then poll the interrupt routine from the idle thread instead. This is somewhat limited; we really should have a chain of idle poll routines to support things like serial console. Signed-off-by: H. Peter Anvin <hpa@linux.intel.com>
* | | | | Merge tag 'syslinux-5.01' into firmwaresyslinux-6.00-pre4Matt Fleming2013-01-291-0/+2
|\ \ \ \ \ | |/ / / / | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Conflicts: Makefile NEWS com32/cmenu/Makefile com32/elflink/ldlinux/Makefile com32/gfxboot/Makefile com32/gpllib/Makefile com32/include/sys/module.h com32/lib/Makefile com32/lib/sys/module/elf_module.c com32/menu/Makefile com32/rosh/Makefile com32/samples/Makefile core/init.c mk/elf.mk Signed-off-by: Matt Fleming <matt.fleming@intel.com>
| * | | | ldlinux: Fix serial output and delete eprintf()Matt Fleming2013-01-241-0/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Tagging __syslinux_get_serial_info() with __constructor is pretty useless when the global variables it uses, such as SerialPort, etc, are assigned *after* the constructor has run. This constructor made sense when config parsing was done by the core, but parsing is now performed by ldlinux. We need to explicitly invoke the function to initialise __syslinux_serial_console_info once we've parsed any config files. eprintf.c was introduced in commit 086d698c642f ("ldlinux: Add eprintf() to print to VGA and serial") because printf() output wasn't appearing on the serial console. It turns out that the above __constructor confusion was the real bug. Signed-off-by: Matt Fleming <matt.fleming@intel.com>
* | | | | Revert "vesa: Correct screencpy() prototype"Matt Fleming2013-01-111-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This reverts commit 15a67011987c341814533ac4d8e23c9a72dc7605, because as Peter points out, The objects are uint32_t and so the prototype is correct. It should not "leak" outside the screencpy function that we play ugly tricks with these pointers; that is better handled by an internal cast. So do the necessary casting inside bios_vesacon_screencpy(). Cc: H. Peter Anvin <hpa@zytor.com> Signed-off-by: Matt Fleming <matt.fleming@intel.com>
* | | | | vesa: Correct screencpy() prototypeMatt Fleming2013-01-071-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The 'src' argument should actually be const char * because the BIOS code performs pointer arithmetic on it. Signed-off-by: Matt Fleming <matt.fleming@intel.com>
* | | | | Merge tag 'syslinux-5.00' into firmwaresyslinux-6.00-pre3Matt Fleming2012-12-072-49/+0
|\ \ \ \ \ | |/ / / / | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Conflicts: Makefile com32/elflink/ldlinux/Makefile com32/lib/sys/module/elf_module.c core/cleanup.c core/comboot.inc core/conio.c core/fs/fs.c core/init.c core/mem/free.c core/mem/malloc.c core/timer.inc diag/geodsp/Makefile extlinux/main.c mk/embedded.mk modules/Makefile Signed-off-by: Matt Fleming <matt.fleming@intel.com>
| * | | | Delete 16-bit COMBOOT supportsyslinux-5.00Matt Fleming2012-12-061-1/+0
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 16-bit COMBOOT files are no longer supported by Syslinux in 5.00 so delete all references and change any 32-bit COMBOOT image references to mention ELF instead. Some of the COMBOOT stuff is still used internally so we can't nuke core/comboot.inc yet, but that will disappear in a future release. Signed-off-by: Matt Fleming <matt.fleming@intel.com>
| * | | | Reduce the number of global variablesMatt Fleming2012-12-051-48/+0
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | In preparation for strictly limiting the list of variables that are exported (global) in the core, delete any unused variables, rewrite variable declarations in C that are not referenced by asm and delete files that are no longer included in other asm files. Cc: H. Peter Anvin <hpa@zytor.com> Signed-off-by: Matt Fleming <matt.fleming@intel.com>
* | | | | firmware: Make disk->private an opaque typeMatt Fleming2012-11-151-1/+0
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | We've currently got both the BIOS and EFI versions of struct disk_private in core/include/disk.h, which isn't ideal because this file shouldn't need to know about the inner-workings of the firmware's private disk info. Move the implementation of 'struct disk_private' into more suitable locations and use a void * for the 'private' member of struct disk. This change allows us to once and for all delete the gnu-efi header files from core/include/core.h and the gnu-efi include paths from mk/lib.mk. Signed-off-by: Matt Fleming <matt.fleming@intel.com>
* | | | | firmware: Move memory operations into firmwareMatt Fleming2012-11-151-1/+9
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Instead of littering core/mem with #ifdef SYSLINUX_EFI move memory operations into the 'firmware' structure so that they can be implemented differently for BIOS and EFI. Signed-off-by: Matt Fleming <matt.fleming@intel.com>
* | | | | sys/vesa: Modularise common vesa codeMatt Fleming2012-11-151-0/+11
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | There's lots of the vesa infrastructure that can be shared for both BIOS and EFI, so share the things that are common and split out the things that are not into firmware-specific functions and use the 'firmware' structure to access them. This commit is part of a series of changes that removes all EFI-specific code from everywhere except efi/, which means we can delete inclusion of any gnu-efi header files and remove gnu-efi paths from CFLAGS. Signed-off-by: Matt Fleming <matt.fleming@intel.com>
* | | | | Merge remote-tracking branch 'mfleming/elflink' into for-hpa/elflink/firmwareMatt Fleming2012-07-308-16/+249
|\ \ \ \ \ | |/ / / / | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Conflicts: Makefile com32/elflink/ldlinux/adv.c com32/elflink/ldlinux/kernel.c com32/elflink/ldlinux/ldlinux.c com32/include/bitsize/stddef.h com32/include/bitsize/stdint.h com32/include/stdint.h com32/include/sys/module.h com32/include/sys/x86_64/bitops.h com32/include/syslinux/linux.h com32/lib/Makefile com32/lib/sys/ansicon_write.c com32/lib/sys/module/elfutils.h com32/lib/sys/vesa/efi/fill.h com32/lib/syslinux/load_linux.c com32/lib/syslinux/serial.c com32/lib/syslinux/shuffle.c core/conio.c core/elflink/config.c core/elflink/load_env32.c core/graphics.c core/include/graphics.h core/init.c core/pxelinux.asm mk/elf.mk mk/lib.mk