mirror of
https://git.planet-casio.com/Vhex-Kernel-Core/fxlibc.git
synced 2024-12-28 04:23:38 +01:00
new build system and source file hierarchy
This commit is contained in:
parent
f76757ecd2
commit
ad9f92873b
48 changed files with 165 additions and 11 deletions
3
.gitignore
vendored
3
.gitignore
vendored
|
@ -1,3 +1,4 @@
|
|||
build
|
||||
/build*/
|
||||
*.txt
|
||||
!CMakeLists.txt
|
||||
script
|
||||
|
|
130
CMakeLists.txt
Normal file
130
CMakeLists.txt
Normal file
|
@ -0,0 +1,130 @@
|
|||
cmake_minimum_required(VERSION 3.16)
|
||||
project(FxLibC VERSION 1.0.0 LANGUAGES C ASM)
|
||||
|
||||
# Options
|
||||
|
||||
# * -DFXLIBC_TARGET=<vhex-sh, vhex-x86, casiowin-fx, casiowin-cg, gint>
|
||||
# * -DSHARED
|
||||
|
||||
option(SHARED "Build a shared library")
|
||||
option(STANDARD_NAMESPACE "Use libc.a and put headers in global include folder")
|
||||
|
||||
set(TARGET_FOLDERS ${FXLIBC_TARGET})
|
||||
|
||||
if(FXLIBC_TARGET STREQUAL vhex-sh)
|
||||
list(APPEND TARGET_FOLDERS vhex-generic sh-generic)
|
||||
set(FXLIBC_ARCH sh)
|
||||
add_definitions(-D__SUPPORT_VHEX_KERNEL)
|
||||
endif()
|
||||
|
||||
if(FXLIB_TARGET STREQUAL vhex-x86)
|
||||
list(APPEND TARGET_FOLDERS vhex-generic x86-generic)
|
||||
set(FXLIBC_ARCH x86)
|
||||
add_definitions(-D__SUPPORT_VHEX_KERNEL)
|
||||
endif()
|
||||
|
||||
if(FXLIBC_TARGET STREQUAL casiowin-fx)
|
||||
list(APPEND TARGET_FOLDERS sh-generic)
|
||||
set(FXLIBC_ARCH sh)
|
||||
add_definitions(-D__SUPPORT_CASIOWIN_FX9860G)
|
||||
endif()
|
||||
|
||||
if(FXLIBC_TARGET STREQUAL casiowin-cg)
|
||||
list(APPEND TARGET_FOLDERS sh-generic)
|
||||
set(FXLIBC_ARCH sh)
|
||||
add_definitions(-D__SUPPORT_CASIOWIN_FXCG50)
|
||||
endif()
|
||||
|
||||
if(FXLIBC_TARGET STREQUAL gint)
|
||||
list(APPEND TARGET_FOLDERS sh-generic)
|
||||
set(FXLIBC_ARCH sh)
|
||||
add_definitions(-D__SUPPORT_GINT)
|
||||
endif()
|
||||
|
||||
# TODO: Preprocessor definitions for configuration
|
||||
# configure_file()
|
||||
|
||||
# libc.{a,so} libfxlibc.{a,so}
|
||||
|
||||
add_compile_options(-Wall -Wextra -std=c11 -ffreestanding -Os)
|
||||
if(FXLIBC_ARCH STREQUAL sh)
|
||||
add_compile_options(
|
||||
"$<$<COMPILE_LANGUAGE:C>:-m3;-mb>"
|
||||
"$<$<COMPILE_LANGUAGE:ASM>:-m4-nofpu;-mb;-Wa,--dsp>")
|
||||
endif()
|
||||
|
||||
# Building
|
||||
|
||||
set(SOURCES
|
||||
src/libc/stdio/vsnprintf.c
|
||||
src/libc/stdio/sprintf.c
|
||||
src/libc/stdio/dprintf.c
|
||||
src/libc/stdio/snprintf.c
|
||||
src/libc/stdio/puts.c
|
||||
src/libc/stdio/vsprintf.c
|
||||
src/libc/stdio/putc.c
|
||||
src/libc/stdio/internal/printf_actions.c
|
||||
src/libc/stdio/internal/printf_options.c
|
||||
src/libc/stdio/internal/printf_common.c
|
||||
src/libc/stdio/internal/printf.h
|
||||
src/libc/stdio/vdprintf.c
|
||||
src/libc/stdio/printf.c
|
||||
src/libc/stdlib/calloc.c
|
||||
src/libc/stdlib/reallocarray.c
|
||||
src/libc/string/strchr.c
|
||||
src/libc/string/strcpy.c
|
||||
src/libc/string/memcpy.c
|
||||
src/libc/string/strcat.c
|
||||
src/libc/string/memset.c
|
||||
src/libc/string/strcmp.c
|
||||
src/libc/string/strdup.c
|
||||
src/libc/string/strlen.c)
|
||||
|
||||
if(vhex-generic IN_LIST TARGET_FOLDERS)
|
||||
# TODO
|
||||
endif()
|
||||
|
||||
if(vhex-sh IN_LIST TARGET_FOLDERS)
|
||||
list(APPEND SOURCES
|
||||
src/libc/signal/target/vhex-sh/kill.S
|
||||
src/libc/signal/target/vhex-sh/signal.S
|
||||
src/libc/stdlib/target/vhex-sh/free.S
|
||||
src/libc/stdlib/target/vhex-sh/malloc.S
|
||||
src/libc/stdlib/target/vhex-sh/realloc.S
|
||||
src/posix/fcntl/target/vhex-sh/open.S
|
||||
src/posix/sys/wait/target/vhex-sh/wait.S
|
||||
src/posix/sys/wait/target/vhex-sh/waitpid.S
|
||||
src/posix/unistd/target/vhex-sh/read.S
|
||||
src/posix/unistd/target/vhex-sh/getppid.S
|
||||
src/posix/unistd/target/vhex-sh/close.S
|
||||
src/posix/unistd/target/vhex-sh/fork_execve.S
|
||||
src/posix/unistd/target/vhex-sh/lseek.S
|
||||
src/posix/unistd/target/vhex-sh/getpid.S
|
||||
src/posix/unistd/target/vhex-sh/getpgid.S
|
||||
src/posix/unistd/target/vhex-sh/setpgid.S
|
||||
src/posix/unistd/target/vhex-sh/write.S)
|
||||
endif()
|
||||
|
||||
if(sh-generic IN_LIST TARGET_FOLDERS)
|
||||
list(APPEND SOURCES
|
||||
src/libc/setjmp/target/sh-generic/setjmp.S
|
||||
src/libc/setjmp/target/sh-generic/longjmp.S)
|
||||
endif()
|
||||
|
||||
if(casiowin-fx IN_LIST TARGET_FOLDERS)
|
||||
list(APPEND SOURCES
|
||||
src/posix/unistd/target/casiowin-fx/close.S)
|
||||
endif()
|
||||
|
||||
|
||||
|
||||
# TODO: All targets
|
||||
|
||||
add_library(fxlibc ${SOURCES})
|
||||
target_include_directories(fxlibc PRIVATE include/)
|
||||
|
||||
# Install
|
||||
|
||||
# TODO: Install in compiler vs. in another folder
|
||||
|
||||
install(TARGETS fxlibc DESTINATION lib/)
|
28
cmake/toolchain-sh.cmake
Normal file
28
cmake/toolchain-sh.cmake
Normal file
|
@ -0,0 +1,28 @@
|
|||
# fxSDK toolchain file for Casio graphing calculators
|
||||
# Target triplet: sh-elf (custom sh3eb-elf supporting sh3 and sh4-nofpu)
|
||||
|
||||
set(CMAKE_SYSTEM_NAME Generic)
|
||||
set(CMAKE_SYSTEM_VERSION 1)
|
||||
set(CMAKE_SYSTEM_PROCESSOR sh)
|
||||
|
||||
set(CMAKE_C_COMPILER sh-elf-gcc)
|
||||
set(CMAKE_CXX_COMPILER sh-elf-g++)
|
||||
|
||||
set(CMAKE_C_FLAGS_INIT "")
|
||||
set(CMAKE_CXX_FLAGS_INIT "")
|
||||
|
||||
add_compile_options(-nostdlib)
|
||||
add_link_options(-nostdlib)
|
||||
link_libraries(-lgcc)
|
||||
|
||||
set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
|
||||
set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
|
||||
set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)
|
||||
set(CMAKE_FIND_ROOT_PATH_MODE_PACKAGE ONLY)
|
||||
|
||||
# Determine compiler install path
|
||||
execute_process(
|
||||
COMMAND ${CMAKE_C_COMPILER} --print-file-name=.
|
||||
OUTPUT_VARIABLE FXSDK_COMPILER_INSTALL
|
||||
OUTPUT_STRIP_TRAILING_WHITESPACE
|
||||
)
|
|
@ -1,8 +1,7 @@
|
|||
#include <fxlibc/stdio.h>
|
||||
|
||||
// internal depency
|
||||
// TODO: update path detection
|
||||
#include "../src/stdio/internal/printf.h"
|
||||
#include "printf.h"
|
||||
|
||||
// Define all actions
|
||||
static void action_str(struct printf_opt *op, char n);
|
|
@ -1,8 +1,7 @@
|
|||
#include <fxlibc/stdio.h>
|
||||
|
||||
// internal depency
|
||||
// TODO: update path detection
|
||||
#include "../src/stdio/internal/printf.h"
|
||||
#include "printf.h"
|
||||
|
||||
//TODO: precision handling
|
||||
int printf_common(struct printf_opt *opt, const char *restrict format)
|
|
@ -1,8 +1,7 @@
|
|||
#include <fxlibc/stdio.h>
|
||||
|
||||
// internal depency
|
||||
// TODO: update path detection
|
||||
#include "../src/stdio/internal/printf.h"
|
||||
#include "printf.h"
|
||||
|
||||
static int get_flags(struct printf_opt *opt, const char *restrict format)
|
||||
{
|
|
@ -2,8 +2,7 @@
|
|||
#include <fxlibc/unistd.h>
|
||||
|
||||
// internal depency
|
||||
// TODO: update path detection
|
||||
#include "../src/stdio/internal/printf.h"
|
||||
#include "internal/printf.h"
|
||||
|
||||
// FIXME:
|
||||
// if the writte syscall do not return the same
|
|
@ -1,8 +1,7 @@
|
|||
#include <fxlibc/stdio.h>
|
||||
|
||||
// internal depency
|
||||
// TODO: update path detection
|
||||
#include "../src/stdio/internal/printf.h"
|
||||
#include "internal/printf.h"
|
||||
|
||||
static void disp_char(struct printf_opt *opt, char n)
|
||||
{
|
Loading…
Reference in a new issue