libkernaux/Makefile.am

554 lines
12 KiB
Makefile
Raw Normal View History

2022-06-03 18:57:17 +00:00
##########
# Common #
##########
2022-06-08 03:20:08 +00:00
SUBDIRS = include libc/include
2020-11-27 10:29:53 +00:00
2022-06-03 18:57:17 +00:00
CLEANFILES =
TESTS =
2020-12-06 06:51:11 +00:00
AM_CFLAGS = \
-std=c99 \
2021-12-13 21:10:38 +00:00
-pedantic \
2020-12-06 06:51:11 +00:00
-Wall \
-Wextra \
-I$(top_builddir)/include \
-I$(top_srcdir)/include \
-D_POSIX_C_SOURCE=200809L
if WITH_LIBC
AM_CFLAGS += \
2022-06-08 03:20:08 +00:00
-I$(top_builddir)/libc/include \
-I$(top_srcdir)/libc/include
endif
2020-11-27 09:28:13 +00:00
2022-06-03 18:57:17 +00:00
if ENABLE_WERROR
AM_CFLAGS += -Werror
endif
2022-06-03 17:39:59 +00:00
# TODO: DRY (configure.ac)
if ENABLE_FREESTANDING
AM_CFLAGS += -nostdlib -ffreestanding -fno-pic -fno-stack-protector
else
AM_CFLAGS += -fpic
endif
2022-06-03 19:19:18 +00:00
#######
# all #
#######
lib_LIBRARIES = libkernaux.a
noinst_PROGRAMS = $(TESTS)
2022-06-03 18:57:17 +00:00
################
# libkernaux.a #
################
2020-11-27 16:04:15 +00:00
libkernaux_a_SOURCES = src/libc.h src/assert.c
if ASM_I386
libkernaux_a_SOURCES += src/asm/i386.S
2020-11-30 03:29:58 +00:00
endif
2022-01-15 10:09:45 +00:00
if ASM_RISCV64
libkernaux_a_SOURCES += src/asm/riscv64.S
endif
if ASM_X86_64
libkernaux_a_SOURCES += src/asm/x86_64.S
2020-12-07 04:37:16 +00:00
endif
if WITH_CMDLINE
2020-12-06 00:23:07 +00:00
libkernaux_a_SOURCES += src/cmdline.c
endif
if WITH_CONSOLE
2022-01-10 04:45:02 +00:00
libkernaux_a_SOURCES += src/console.c
2020-12-06 00:23:07 +00:00
endif
if WITH_ELF
2021-12-13 22:07:00 +00:00
libkernaux_a_SOURCES += src/elf.c
2022-01-17 12:33:28 +00:00
endif
if WITH_FILE
libkernaux_a_SOURCES += src/file.c
endif
2022-01-11 08:58:47 +00:00
if WITH_FRAMEBUFFER
libkernaux_a_SOURCES += src/framebuffer.c
endif
if WITH_LIBC
libkernaux_a_SOURCES += \
libc/src/ctype.c \
libc/src/stdlib.c \
libc/src/string.c
endif
if WITH_MBR
libkernaux_a_SOURCES += src/mbr.c
2022-01-17 12:33:28 +00:00
endif
if WITH_MULTIBOOT2
2020-12-06 00:23:07 +00:00
libkernaux_a_SOURCES += \
src/multiboot2/enums_to_str.c \
src/multiboot2/header_helpers.c \
2022-01-13 13:50:51 +00:00
src/multiboot2/header_is_valid.c \
src/multiboot2/header_print.c \
2022-01-13 03:25:09 +00:00
src/multiboot2/info_helpers.c \
src/multiboot2/info_is_valid.c \
2022-01-13 03:12:28 +00:00
src/multiboot2/info_print.c
2020-12-06 00:23:07 +00:00
endif
if WITH_NTOA
libkernaux_a_SOURCES += src/ntoa.c
endif
if WITH_PFA
2020-12-06 00:23:07 +00:00
libkernaux_a_SOURCES += src/pfa.c
2022-01-17 12:33:28 +00:00
endif
2022-01-17 15:00:29 +00:00
if WITH_PRINTF
libkernaux_a_SOURCES += src/printf.c
endif
2022-05-26 22:17:09 +00:00
if WITH_PRINTF_FMT
libkernaux_a_SOURCES += src/printf_fmt.c
2022-05-26 23:17:29 +00:00
endif
if WITH_UNITS
libkernaux_a_SOURCES += src/units.c
2022-01-17 12:33:28 +00:00
endif
2022-06-03 18:57:17 +00:00
##########################
# examples/assert_guards #
##########################
if ENABLE_TESTS
TESTS += examples/assert_guards
examples_assert_guards_LDADD = libkernaux.a
examples_assert_guards_SOURCES = examples/assert_guards.c
2022-06-03 18:57:17 +00:00
endif
##########################
# examples/assert_simple #
##########################
2021-12-18 00:51:12 +00:00
2022-06-03 18:57:17 +00:00
if ENABLE_TESTS
TESTS += examples/assert_simple
examples_assert_simple_LDADD = libkernaux.a
examples_assert_simple_SOURCES = examples/assert_simple.c
2022-06-03 18:57:17 +00:00
endif
####################
# examples/cmdline #
####################
2021-12-14 20:37:11 +00:00
2022-06-03 18:57:17 +00:00
if ENABLE_TESTS
if WITH_CMDLINE
TESTS += examples/cmdline
examples_cmdline_LDADD = libkernaux.a
examples_cmdline_SOURCES = examples/cmdline.c
2022-06-03 18:57:17 +00:00
endif
endif
####################
# examples/fprintf #
####################
if ENABLE_TESTS
if WITH_PRINTF
if WITH_FILE
TESTS += examples/fprintf
examples_fprintf_LDADD = libkernaux.a
examples_fprintf_SOURCES = examples/fprintf.c
endif
endif
endif
#######################
# examples/fprintf_va #
#######################
if ENABLE_TESTS
if WITH_PRINTF
if WITH_FILE
TESTS += examples/fprintf_va
examples_fprintf_va_LDADD = libkernaux.a
examples_fprintf_va_SOURCES = examples/fprintf_va.c
endif
endif
endif
2022-06-03 18:57:17 +00:00
#################
# examples/ntoa #
#################
if ENABLE_TESTS
if WITH_NTOA
TESTS += examples/ntoa
examples_ntoa_LDADD = libkernaux.a
examples_ntoa_SOURCES = examples/ntoa.c
2022-06-03 18:57:17 +00:00
endif
endif
2022-05-30 20:43:58 +00:00
2022-06-03 18:57:17 +00:00
#########################
# examples/panic_guards #
#########################
if ENABLE_TESTS
TESTS += examples/panic_guards
examples_panic_guards_LDADD = libkernaux.a
examples_panic_guards_SOURCES = examples/panic_guards.c
2022-06-03 18:57:17 +00:00
endif
#########################
# examples/panic_simple #
#########################
2022-01-20 17:18:18 +00:00
2022-06-03 18:57:17 +00:00
if ENABLE_TESTS
TESTS += examples/panic_simple
examples_panic_simple_LDADD = libkernaux.a
examples_panic_simple_SOURCES = examples/panic_simple.c
2022-06-03 18:57:17 +00:00
endif
2022-01-20 16:51:54 +00:00
2022-06-03 18:57:17 +00:00
################
# examples/pfa #
################
if ENABLE_TESTS
if WITH_PFA
TESTS += examples/pfa
examples_pfa_LDADD = libkernaux.a
examples_pfa_SOURCES = examples/pfa.c
2022-06-03 18:57:17 +00:00
endif
endif
#######################
# examples/printf_fmt #
#######################
2020-12-06 22:24:43 +00:00
2022-06-03 18:57:17 +00:00
if ENABLE_TESTS
if WITH_PRINTF_FMT
TESTS += examples/printf_fmt
examples_printf_fmt_LDADD = libkernaux.a
examples_printf_fmt_SOURCES = examples/printf_fmt.c
2022-06-03 18:57:17 +00:00
endif
endif
2022-05-26 23:17:29 +00:00
2022-06-03 18:57:17 +00:00
#####################
# examples/snprintf #
#####################
if ENABLE_TESTS
if WITH_PRINTF
TESTS += examples/snprintf
examples_snprintf_LDADD = libkernaux.a
examples_snprintf_SOURCES = examples/snprintf.c
2022-06-03 18:57:17 +00:00
endif
endif
########################
# examples/snprintf_va #
########################
2022-01-20 10:28:24 +00:00
2022-06-03 18:57:17 +00:00
if ENABLE_TESTS
if WITH_PRINTF
TESTS += examples/snprintf_va
examples_snprintf_va_LDADD = libkernaux.a
examples_snprintf_va_SOURCES = examples/snprintf_va.c
2022-06-03 18:57:17 +00:00
endif
endif
2022-01-20 10:28:24 +00:00
2022-06-03 18:57:17 +00:00
########################
# examples/units_human #
########################
if ENABLE_TESTS
if WITH_UNITS
TESTS += examples/units_human
examples_units_human_LDADD = libkernaux.a
examples_units_human_SOURCES = examples/units_human.c
2022-06-03 18:57:17 +00:00
endif
endif
2022-06-03 18:57:17 +00:00
##################################
# tests/multiboot2_header_print1 #
##################################
2022-06-04 01:05:57 +00:00
if ENABLE_TESTS
2022-06-03 18:57:17 +00:00
if WITH_MULTIBOOT2
noinst_PROGRAMS += tests/multiboot2_header_print1
tests_multiboot2_header_print1_LDADD = libkernaux.a
2022-01-13 13:37:37 +00:00
tests_multiboot2_header_print1_SOURCES = \
tests/multiboot2_header_print1.c \
tests/multiboot2_header_example1.h
2022-06-03 18:57:17 +00:00
endif
2022-06-04 01:05:57 +00:00
endif
2022-06-03 18:57:17 +00:00
##################################
# tests/multiboot2_header_print2 #
##################################
2022-01-13 13:37:37 +00:00
2022-06-04 01:05:57 +00:00
if ENABLE_TESTS
2022-06-03 18:57:17 +00:00
if WITH_MULTIBOOT2
noinst_PROGRAMS += tests/multiboot2_header_print2
tests_multiboot2_header_print2_LDADD = libkernaux.a
2022-01-13 13:37:37 +00:00
tests_multiboot2_header_print2_SOURCES = \
tests/multiboot2_header_print2.c \
tests/multiboot2_header_example2.h
2022-06-03 18:57:17 +00:00
endif
2022-06-04 01:05:57 +00:00
endif
2022-06-03 18:57:17 +00:00
################################
# tests/multiboot2_info_print1 #
################################
2022-01-13 13:37:37 +00:00
2022-06-04 01:05:57 +00:00
if ENABLE_TESTS
2022-06-03 18:57:17 +00:00
if WITH_MULTIBOOT2
noinst_PROGRAMS += tests/multiboot2_info_print1
tests_multiboot2_info_print1_LDADD = libkernaux.a
2022-01-13 03:12:28 +00:00
tests_multiboot2_info_print1_SOURCES = \
tests/multiboot2_info_print1.c \
2022-01-13 04:05:34 +00:00
tests/multiboot2_info_example1.h
2022-06-03 18:57:17 +00:00
endif
2022-06-04 01:05:57 +00:00
endif
2020-11-29 12:57:34 +00:00
2022-06-03 18:57:17 +00:00
################################
# tests/multiboot2_info_print2 #
################################
2022-06-04 01:05:57 +00:00
if ENABLE_TESTS
2022-06-03 18:57:17 +00:00
if WITH_MULTIBOOT2
noinst_PROGRAMS += tests/multiboot2_info_print2
tests_multiboot2_info_print2_LDADD = libkernaux.a
2022-01-13 03:12:28 +00:00
tests_multiboot2_info_print2_SOURCES = \
tests/multiboot2_info_print2.c \
2022-01-13 04:05:34 +00:00
tests/multiboot2_info_example2.h
2022-06-03 18:57:17 +00:00
endif
2022-06-04 01:05:57 +00:00
endif
2022-06-03 18:57:17 +00:00
######################
# tests/test_cmdline #
######################
2020-11-28 21:24:50 +00:00
2022-06-03 18:57:17 +00:00
if ENABLE_TESTS
if WITH_CMDLINE
TESTS += tests/test_cmdline
tests_test_cmdline_LDADD = libkernaux.a
tests_test_cmdline_SOURCES = tests/test_cmdline.c
2022-06-03 18:57:17 +00:00
endif
endif
2022-06-07 23:00:46 +00:00
##########################
# tests/test_cmdline_gen #
##########################
if ENABLE_TESTS_PYTHON
if WITH_CMDLINE
TESTS += tests/test_cmdline_gen
tests_test_cmdline_gen_LDADD = libkernaux.a
tests_test_cmdline_gen_SOURCES = \
tests/test_cmdline_gen.c \
tests/cmdline_gen.py \
tests/cmdline_gen.jinja \
common/cmdline.yml
endif
endif
CLEANFILES += tests/test_cmdline_gen.c
tests/test_cmdline_gen.c: tests/cmdline_gen.py tests/cmdline_gen.jinja common/cmdline.yml
python3 tests/cmdline_gen.py
2022-06-03 18:57:17 +00:00
##################
# tests/test_elf #
##################
2020-12-01 19:55:16 +00:00
2022-06-03 18:57:17 +00:00
if ENABLE_TESTS
if WITH_ELF
TESTS += tests/test_elf
tests_test_elf_LDADD = libkernaux.a
tests_test_elf_SOURCES = tests/test_elf.c
2022-06-03 18:57:17 +00:00
endif
endif
##################
# tests/test_mbr #
##################
2021-12-12 20:30:27 +00:00
2022-06-03 18:57:17 +00:00
if ENABLE_TESTS
if WITH_MBR
TESTS += tests/test_mbr
tests_test_mbr_LDADD = libkernaux.a
tests_test_mbr_SOURCES = tests/test_mbr.c
2022-06-03 18:57:17 +00:00
endif
endif
2022-01-17 06:34:42 +00:00
2022-06-03 18:57:17 +00:00
########################################
# tests/test_multiboot2_header_helpers #
########################################
if ENABLE_TESTS
if WITH_MULTIBOOT2
TESTS += tests/test_multiboot2_header_helpers
tests_test_multiboot2_header_helpers_LDADD = libkernaux.a
2022-01-13 13:31:06 +00:00
tests_test_multiboot2_header_helpers_SOURCES = \
tests/test_multiboot2_header_helpers.c \
tests/multiboot2_header_example1.h \
tests/multiboot2_header_example2.h
2022-06-03 18:57:17 +00:00
endif
endif
######################################
# tests/test_multiboot2_header_print #
######################################
2022-01-13 13:31:06 +00:00
2022-06-03 18:57:17 +00:00
if ENABLE_TESTS
if WITH_MULTIBOOT2
TESTS += tests/test_multiboot2_header_print
tests_test_multiboot2_header_print_DEPENDENCIES = \
tests/multiboot2_header_print1 \
tests/multiboot2_header_print2
tests_test_multiboot2_header_print_LDADD = libkernaux.a
2022-01-13 13:50:51 +00:00
tests_test_multiboot2_header_print_SOURCES = \
tests/test_multiboot2_header_print.c
2022-06-03 18:57:17 +00:00
endif
endif
###########################################
# tests/test_multiboot2_header_validation #
###########################################
2022-01-13 13:50:51 +00:00
2022-06-03 18:57:17 +00:00
if ENABLE_TESTS
if WITH_MULTIBOOT2
TESTS += tests/test_multiboot2_header_validation
tests_test_multiboot2_header_validation_LDADD = libkernaux.a
2022-01-13 13:50:51 +00:00
tests_test_multiboot2_header_validation_SOURCES = \
tests/test_multiboot2_header_validation.c \
tests/multiboot2_header_example1.h \
tests/multiboot2_header_example2.h
2022-06-03 18:57:17 +00:00
endif
endif
######################################
# tests/test_multiboot2_info_helpers #
######################################
2022-01-13 13:50:51 +00:00
2022-06-03 18:57:17 +00:00
if ENABLE_TESTS
if WITH_MULTIBOOT2
TESTS += tests/test_multiboot2_info_helpers
tests_test_multiboot2_info_helpers_LDADD = libkernaux.a
2022-01-13 03:25:09 +00:00
tests_test_multiboot2_info_helpers_SOURCES = \
tests/test_multiboot2_info_helpers.c \
2022-01-13 04:05:34 +00:00
tests/multiboot2_info_example1.h \
tests/multiboot2_info_example2.h
2022-06-03 18:57:17 +00:00
endif
endif
2022-06-03 18:57:17 +00:00
####################################
# tests/test_multiboot2_info_print #
####################################
if ENABLE_TESTS
if WITH_MULTIBOOT2
TESTS += tests/test_multiboot2_info_print
tests_test_multiboot2_info_print_DEPENDENCIES = \
tests/multiboot2_info_print1 \
tests/multiboot2_info_print2
tests_test_multiboot2_info_print_LDADD = libkernaux.a
2022-01-13 03:12:28 +00:00
tests_test_multiboot2_info_print_SOURCES = \
tests/test_multiboot2_info_print.c
2022-06-03 18:57:17 +00:00
endif
endif
#########################################
# tests/test_multiboot2_info_validation #
#########################################
2020-11-28 21:24:50 +00:00
2022-06-03 18:57:17 +00:00
if ENABLE_TESTS
if WITH_MULTIBOOT2
TESTS += tests/test_multiboot2_info_validation
tests_test_multiboot2_info_validation_LDADD = libkernaux.a
tests_test_multiboot2_info_validation_SOURCES = \
tests/test_multiboot2_info_validation.c \
2022-01-13 04:05:34 +00:00
tests/multiboot2_info_example1.h \
tests/multiboot2_info_example2.h
2022-06-03 18:57:17 +00:00
endif
endif
###################
# tests/test_ntoa #
###################
2020-11-30 00:25:30 +00:00
2022-06-03 18:57:17 +00:00
if ENABLE_TESTS
if WITH_NTOA
TESTS += tests/test_ntoa
tests_test_ntoa_LDADD = libkernaux.a
tests_test_ntoa_SOURCES = tests/test_ntoa.c
2022-06-03 18:57:17 +00:00
endif
endif
##################
# tests/test_pfa #
##################
2022-01-19 10:38:29 +00:00
2022-06-03 18:57:17 +00:00
if ENABLE_TESTS
if WITH_PFA
TESTS += tests/test_pfa
tests_test_pfa_LDADD = libkernaux.a
tests_test_pfa_SOURCES = tests/test_pfa.c
2022-06-03 18:57:17 +00:00
endif
endif
2020-11-30 18:32:27 +00:00
2022-06-03 18:57:17 +00:00
#########################
# tests/test_pfa_assert #
#########################
if ENABLE_TESTS
if WITH_PFA
TESTS += tests/test_pfa_assert
tests_test_pfa_assert_LDADD = libkernaux.a
tests_test_pfa_assert_SOURCES = tests/test_pfa_assert.c
2022-06-03 18:57:17 +00:00
endif
endif
2021-12-14 22:10:28 +00:00
2022-06-03 18:57:17 +00:00
#############################
# tests/test_printf_fmt_gen #
#############################
if ENABLE_TESTS_PYTHON
2022-06-03 19:13:51 +00:00
if WITH_PRINTF_FMT
2022-06-03 18:57:17 +00:00
TESTS += tests/test_printf_fmt_gen
tests_test_printf_fmt_gen_LDADD = libkernaux.a
tests_test_printf_fmt_gen_SOURCES = \
tests/test_printf_fmt_gen.c \
tests/printf_fmt_gen.py \
tests/printf_fmt_gen.jinja \
2022-05-27 02:25:10 +00:00
common/printf_fmt.yml
endif
2022-06-03 19:13:51 +00:00
endif
CLEANFILES += tests/test_printf_fmt_gen.c
2022-06-03 18:57:17 +00:00
tests/test_printf_fmt_gen.c: tests/printf_fmt_gen.py tests/printf_fmt_gen.jinja common/printf_fmt.yml
python3 tests/printf_fmt_gen.py
#########################
# tests/test_printf_gen #
#########################
if ENABLE_TESTS_PYTHON
2022-06-03 19:13:51 +00:00
if WITH_PRINTF
2022-06-03 18:57:17 +00:00
TESTS += tests/test_printf_gen
tests_test_printf_gen_LDADD = libkernaux.a
tests_test_printf_gen_SOURCES = \
2022-05-24 13:30:00 +00:00
tests/test_printf_gen.c \
tests/printf_gen.py \
tests/printf_gen.jinja \
common/printf.yml \
common/printf_orig.yml
endif
2022-06-03 19:13:51 +00:00
endif
CLEANFILES += tests/test_printf_gen.c
tests/test_printf_gen.c: tests/printf_gen.py tests/printf_gen.jinja common/printf.yml common/printf_orig.yml
python3 tests/printf_gen.py
2022-06-03 18:57:17 +00:00
##########################
# tests/test_units_human #
##########################
if ENABLE_TESTS
2022-06-03 19:13:51 +00:00
if WITH_UNITS
2022-06-03 18:57:17 +00:00
TESTS += tests/test_units_human
tests_test_units_human_LDADD = libkernaux.a
tests_test_units_human_SOURCES = tests/test_units_human.c
endif
endif