123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193 |
- ############################################################################
- # libs/libc/Makefile
- #
- # Licensed to the Apache Software Foundation (ASF) under one or more
- # contributor license agreements. See the NOTICE file distributed with
- # this work for additional information regarding copyright ownership. The
- # ASF licenses this file to you under the Apache License, Version 2.0 (the
- # "License"); you may not use this file except in compliance with the
- # License. You may obtain a copy of the License at
- #
- # http://www.apache.org/licenses/LICENSE-2.0
- #
- # Unless required by applicable law or agreed to in writing, software
- # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
- # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
- # License for the specific language governing permissions and limitations
- # under the License.
- #
- ###########################################################################
- include $(TOPDIR)/Make.defs
- include aio/Make.defs
- include assert/Make.defs
- include audio/Make.defs
- include builtin/Make.defs
- include ctype/Make.defs
- include dirent/Make.defs
- include dlfcn/Make.defs
- include endian/Make.defs
- include errno/Make.defs
- include eventfd/Make.defs
- include fixedmath/Make.defs
- include grp/Make.defs
- include hex2bin/Make.defs
- include inttypes/Make.defs
- include libgen/Make.defs
- include locale/Make.defs
- include lzf/Make.defs
- include machine/Make.defs
- include math/Make.defs
- include misc/Make.defs
- include modlib/Make.defs
- include net/Make.defs
- include netdb/Make.defs
- include pthread/Make.defs
- include pwd/Make.defs
- include queue/Make.defs
- include sched/Make.defs
- include semaphore/Make.defs
- include signal/Make.defs
- include spawn/Make.defs
- include stdio/Make.defs
- include stdlib/Make.defs
- include string/Make.defs
- include symtab/Make.defs
- include syslog/Make.defs
- include termios/Make.defs
- include time/Make.defs
- include tls/Make.defs
- include uio/Make.defs
- include unistd/Make.defs
- include userfs/Make.defs
- include uuid/Make.defs
- include wchar/Make.defs
- include wctype/Make.defs
- include wqueue/Make.defs
- CFLAGS += ${shell $(INCDIR) "$(CC)" $(TOPDIR)$(DELIM)libs$(DELIM)libc}
- # Rule for the symbol table generation
- MKSYMTAB = $(TOPDIR)$(DELIM)tools$(DELIM)mksymtab$(HOSTEXEEXT)
- $(MKSYMTAB):
- $(Q) $(MAKE) -C $(TOPDIR)$(DELIM)tools -f Makefile.host mksymtab
- # C library and math library symbols should be available in the FLAT
- # and PROTECTED builds. KERNEL builds are separately linked and so should
- # not need symbol tables.
- CSVFILES = $(TOPDIR)$(DELIM)libs$(DELIM)libc$(DELIM)libc.csv
- CSVFILES += $(TOPDIR)$(DELIM)libs$(DELIM)libc$(DELIM)math.csv
- # In the PROTECTED and KERNEL builds, the applications could link with
- # libproxy which will provide symbol-compatible access to OS functions
- # via a call gate, but the applications which link with these functions
- # directly could remove the repeat proxy code to save the space.
- CSVFILES += $(TOPDIR)$(DELIM)syscall$(DELIM)syscall.csv
- ifeq ($(CONFIG_EXECFUNCS_SYSTEM_SYMTAB),y)
- exec_symtab.c : $(CSVFILES) $(MKSYMTAB)
- $(Q) cat $(CSVFILES) | LC_ALL=C sort >$@.csv
- $(Q) $(MKSYMTAB) $@.csv $@ $(CONFIG_EXECFUNCS_SYMTAB_ARRAY) $(CONFIG_EXECFUNCS_NSYMBOLS_VAR)
- $(Q) rm -f $@.csv
- CSRCS += exec_symtab.c
- endif
- ifeq ($(CONFIG_MODLIB_SYSTEM_SYMTAB),y)
- modlib_sys_symtab.c : $(CSVFILES) $(MKSYMTAB)
- $(Q) cat $(CSVFILES) | LC_ALL=C sort >$@.csv
- $(Q) $(MKSYMTAB) $@.csv $@ $(CONFIG_MODLIB_SYMTAB_ARRAY) $(CONFIG_MODLIB_NSYMBOLS_VAR)
- $(Q) rm -f $@.csv
- CSRCS += modlib_sys_symtab.c
- endif
- BINDIR ?= bin
- AOBJS = $(patsubst %.S, $(BINDIR)$(DELIM)%$(OBJEXT), $(ASRCS))
- COBJS = $(patsubst %.c, $(BINDIR)$(DELIM)%$(OBJEXT), $(CSRCS))
- SRCS = $(ASRCS) $(CSRCS)
- OBJS = $(AOBJS) $(COBJS)
- KBIN = libkc$(LIBEXT)
- BIN ?= libc$(LIBEXT)
- all: $(BIN)
- .PHONY: clean distclean
- $(AOBJS): $(BINDIR)$(DELIM)%$(OBJEXT): %.S
- $(call ASSEMBLE, $<, $@)
- $(COBJS): $(BINDIR)$(DELIM)%$(OBJEXT): %.c
- $(call COMPILE, $<, $@)
- # C library for the flat build and
- # the user phase of the two-pass kernel build
- $(BIN): $(OBJS)
- $(call ARCHIVE, $@, $(OBJS))
- ifeq ($(CONFIG_LIB_ZONEINFO_ROMFS),y)
- $(Q) $(MAKE) -C zoneinfo all TOPDIR=$(TOPDIR) BIN=$(BIN)
- endif
- # C library for the kernel phase of the two-pass kernel build
- ifneq ($(BIN),$(KBIN))
- $(KBIN):
- $(Q) $(MAKE) $(KBIN) BIN=$(KBIN) BINDIR=kbin TOPDIR=$(TOPDIR) EXTRAFLAGS="$(EXTRAFLAGS)"
- endif
- # Context
- context:
- ifeq ($(CONFIG_LIB_ZONEINFO_ROMFS),y)
- $(Q) $(MAKE) -C zoneinfo context TOPDIR=$(TOPDIR) BIN=$(BIN)
- endif
- # Dependencies
- .depend: Makefile $(SRCS) $(TOPDIR)$(DELIM).config
- $(Q) $(MKDEP) --obj-path bin --obj-suffix $(OBJEXT) $(DEPPATH) "$(CC)" -- $(CFLAGS) -- $(SRCS) >bin/Make.dep
- ifneq ($(CONFIG_BUILD_FLAT),y)
- $(Q) $(MKDEP) --obj-path kbin --obj-suffix $(OBJEXT) $(DEPPATH) "$(CC)" -- $(CFLAGS) $(KDEFINE) -- $(SRCS) >kbin/Make.dep
- endif
- ifeq ($(CONFIG_LIB_ZONEINFO_ROMFS),y)
- $(Q) $(MAKE) -C zoneinfo depend TOPDIR=$(TOPDIR) BIN=$(BIN)
- endif
- $(Q) touch $@
- depend: .depend
- # Clean most derived files, retaining the configuration
- clean:
- $(Q) $(MAKE) -C bin clean TOPDIR=$(TOPDIR)
- $(Q) $(MAKE) -C kbin clean TOPDIR=$(TOPDIR)
- $(Q) $(MAKE) -C zoneinfo clean TOPDIR=$(TOPDIR) BIN=$(BIN)
- $(call DELFILE, $(BIN))
- $(call DELFILE, $(KBIN))
- $(call CLEAN)
- # Deep clean -- removes all traces of the configuration
- distclean: clean
- $(Q) $(MAKE) -C bin distclean TOPDIR=$(TOPDIR)
- $(Q) $(MAKE) -C kbin distclean TOPDIR=$(TOPDIR)
- $(Q) $(MAKE) -C zoneinfo distclean TOPDIR=$(TOPDIR) BIN=$(BIN)
- $(call DELFILE, exec_symtab.c)
- $(call DELFILE, bin/Make.dep)
- $(call DELFILE, kbin/Make.dep)
- $(call DELFILE, .depend)
- -include bin/Make.dep
- -include kbin/Make.dep
|