123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100 |
- /*++
- Copyright (c) 2013 Minoca Corp. All Rights Reserved
- Module Name:
- Minoca OS Library
- Abstract:
- This module implements the native system call interface between user
- mode applications and the kernel. It runs in user mode, and is utilized
- by the C library (or by applications directly) as an interface to the
- kernel. Applications are permitted to link against this library and
- call functions exported by it, but are not allowed to make system calls
- themselves (most of this library is simply a function call veneer over
- the system calls anyway). Applications utilizing this native library
- can get added functionality or performance, but at the cost of
- portability.
- Author:
- Evan Green 25-Feb-2013
- Environment:
- User
- --*/
- function build() {
- sources = [
- "env.c",
- "heap.c",
- "osimag.c",
- "osbase.c",
- "rwlock.c",
- "socket.c",
- "spinlock.c",
- "time.c",
- "tls.c"
- ];
- if ((arch == "armv7") || (arch == "armv6")) {
- text_base = "0x10000000";
- arch_sources = [
- "armv7/features.c",
- "armv7/osbasea.S",
- "armv7/syscall.c"
- ];
- } else if (arch == "x86") {
- text_base = "0x200000";
- arch_sources = [
- "x86/features.c",
- "x86/osbasea.S",
- "x86/syscall.c"
- ];
- } else if (arch == "x64") {
- text_base = "0x200000";
- arch_sources = [
- "x64/osbasea.S",
- "x64/syscall.c"
- ];
- }
- link_ldflags = [
- "-Wl,-Bsymbolic",
- "-nostdlib",
- "-Wl,--whole-archive",
- "-Wl,-Ttext-segment=" + text_base,
- ];
- link_config = {
- "LDFLAGS": link_ldflags
- };
- libs = [
- "//lib/rtl/base:basertl",
- "//lib/rtl/base:basertlw",
- "//lib/im:im",
- "//apps/osbase/urtl:urtl",
- "//lib/crypto:crypto"
- ];
- so = {
- "label": "libminocaos",
- "inputs": sources + arch_sources + libs,
- "entry": "OsDynamicLoaderMain",
- "config": link_config,
- "major_version": "1"
- };
- entries = shared_library(so);
- return entries;
- }
- return build();
|