diff --git a/.github/workflows/ruby.yml b/.github/workflows/ruby.yml index cc7bc37..42bf3cd 100644 --- a/.github/workflows/ruby.yml +++ b/.github/workflows/ruby.yml @@ -39,6 +39,8 @@ jobs: cond: runs-on: ubuntu-latest + env: + SKIP_COVERAGE: x steps: - uses: actions/checkout@v2 - uses: ruby/setup-ruby@v1 diff --git a/.gitignore b/.gitignore index 007c2f6..203cd29 100644 --- a/.gitignore +++ b/.gitignore @@ -81,6 +81,8 @@ /Makefile /include/Makefile +/include/kernaux.h +/include/kernaux/console.h /examples/*.log /examples/*.trs diff --git a/Makefile.am b/Makefile.am index eeaf2f6..8e75131 100644 --- a/Makefile.am +++ b/Makefile.am @@ -6,6 +6,7 @@ AM_CFLAGS = \ -Wall \ -Wextra \ -Wno-cast-function-type \ + -I$(top_builddir)/include \ -I$(top_srcdir)/include lib_LIBRARIES = libkernaux.a diff --git a/configure.ac b/configure.ac index 4ac9833..7ed72b5 100644 --- a/configure.ac +++ b/configure.ac @@ -151,11 +151,41 @@ AS_IF([test "$with_libc_strnlen" = yes], [AC_DEFINE([WITH_LIBC_STRNLEN], [1] +dnl Architecture +AS_IF([test "$host_cpu" != i386], [AC_SUBST([comment_line_asm_i386], [//])]) +AS_IF([test "$host_cpu" != riscv64], [AC_SUBST([comment_line_asm_riscv64], [//])]) +AS_IF([test "$host_cpu" != x86_64], [AC_SUBST([comment_line_asm_x86_64], [//])]) + +dnl Packages (enabled by default) +AS_IF([test "$with_cmdline" = no], [AC_SUBST([comment_line_cmdline], [//])]) +AS_IF([test "$with_console" = no], [AC_SUBST([comment_line_console], [//])]) +AS_IF([test "$with_elf" = no], [AC_SUBST([comment_line_elf], [//])]) +AS_IF([test "$with_framebuffer" = no], [AC_SUBST([comment_line_framebuffer], [//])]) +AS_IF([test "$with_mbr" = no], [AC_SUBST([comment_line_mbr], [//])]) +AS_IF([test "$with_multiboot2" = no], [AC_SUBST([comment_line_multiboot2], [//])]) +AS_IF([test "$with_ntoa" = no], [AC_SUBST([comment_line_ntoa], [//])]) +AS_IF([test "$with_pfa" = no], [AC_SUBST([comment_line_pfa], [//])]) +AS_IF([test "$with_printf" = no], [AC_SUBST([comment_line_printf], [//])]) +AS_IF([test "$with_units" = no], [AC_SUBST([comment_line_units], [//])]) + +dnl Packages (disabled by default) +AS_IF([test "$with_libc_atoi" != yes], [AC_SUBST([comment_line_libc_atoi], [//])]) +AS_IF([test "$with_libc_isdigit" != yes], [AC_SUBST([comment_line_libc_isdigit], [//])]) +AS_IF([test "$with_libc_isspace" != yes], [AC_SUBST([comment_line_libc_isspace], [//])]) +AS_IF([test "$with_libc_memset" != yes], [AC_SUBST([comment_line_libc_memset], [//])]) +AS_IF([test "$with_libc_strcpy" != yes], [AC_SUBST([comment_line_libc_strcpy], [//])]) +AS_IF([test "$with_libc_strlen" != yes], [AC_SUBST([comment_line_libc_strlen], [//])]) +AS_IF([test "$with_libc_strnlen" != yes], [AC_SUBST([comment_line_libc_strnlen], [//])]) + + + AM_INIT_AUTOMAKE([1.9 subdir-objects]) AC_CONFIG_FILES([ Makefile include/Makefile + include/kernaux.h + include/kernaux/console.h ]) AC_LANG([C]) diff --git a/include/Makefile.am b/include/Makefile.am index 5700e1f..591e383 100644 --- a/include/Makefile.am +++ b/include/Makefile.am @@ -1,6 +1,3 @@ -## TODO: is partially conditional because other files are -## TODO: and are partially conditional - nobase_include_HEADERS = \ kernaux.h \ kernaux/arch/i386.h \ diff --git a/include/kernaux.h b/include/kernaux.h deleted file mode 100644 index cab5c5a..0000000 --- a/include/kernaux.h +++ /dev/null @@ -1,23 +0,0 @@ -/* - We don't include because they - contain architecture-specific assembly functions. - - We don't include because it may - conflict with actual freestanding or hosted libc. -*/ - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include -#include -#include diff --git a/include/kernaux.h.in b/include/kernaux.h.in new file mode 100644 index 0000000..8c187d3 --- /dev/null +++ b/include/kernaux.h.in @@ -0,0 +1,23 @@ +/* + We don't include because they + contain architecture-specific assembly functions. + + We don't include because it may + conflict with actual freestanding or hosted libc. +*/ + +#include +@comment_line_cmdline@#include +@comment_line_console@#include +@comment_line_elf@#include +@comment_line_framebuffer@#include +@comment_line_mbr@#include +@comment_line_multiboot2@#include +@comment_line_ntoa@#include +@comment_line_pfa@#include +@comment_line_printf@#include +@comment_line_units@#include + +#include +#include +#include diff --git a/include/kernaux/console.h b/include/kernaux/console.h.in similarity index 83% rename from include/kernaux/console.h rename to include/kernaux/console.h.in index b4bb176..afd80c8 100644 --- a/include/kernaux/console.h +++ b/include/kernaux/console.h.in @@ -10,7 +10,7 @@ extern "C" { void kernaux_console_putc(char c); void kernaux_console_print(const char *s); -void kernaux_console_printf(const char *format, ...) +@comment_line_printf@void kernaux_console_printf(const char *format, ...) __attribute__((format(printf, 1, 2))); void kernaux_console_puts(const char *s); void kernaux_console_write(const char *data, size_t size); diff --git a/src/libc.c b/src/libc.c index 0f28b82..9c0991e 100644 --- a/src/libc.c +++ b/src/libc.c @@ -12,7 +12,7 @@ int atoi(const char *str) while (isspace(*str)) ++str; bool is_negative = false; switch (*str) { - case '-': is_negative = true; + case '-': is_negative = true; // fall through case '+': ++str; } int result = 0;