source: mainline/uspace/lib/posix/Makefile@ 6283cefb

lfn serial ticket/834-toolchain-update topic/msim-upgrade topic/simplify-dev-export
Last change on this file since 6283cefb was 3a37751, checked in by jzr <zarevucky.jiri@…>, 8 years ago

Build a special all-inclusive version of POSIXified libc.

  • Property mode set to 100644
File size: 3.8 KB
Line 
1#
2# Copyright (c) 2011 Petr Koupy
3# Copyright (c) 2011 Jiri Zarevucky
4# All rights reserved.
5#
6# Redistribution and use in source and binary forms, with or without
7# modification, are permitted provided that the following conditions
8# are met:
9#
10# - Redistributions of source code must retain the above copyright
11# notice, this list of conditions and the following disclaimer.
12# - Redistributions in binary form must reproduce the above copyright
13# notice, this list of conditions and the following disclaimer in the
14# documentation and/or other materials provided with the distribution.
15# - The name of the author may not be used to endorse or promote products
16# derived from this software without specific prior written permission.
17#
18# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
19# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
20# OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
21# IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
22# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
23# NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
24# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
25# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
26# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
27# THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
28#
29
30USPACE_PREFIX = ../..
31LIBRARY = libposix
32
33EXTRA_CFLAGS = -Iinclude/
34
35INCLUDE_LIBC = ./include/libc
36
37LIBC_FILE = $(LIBC_PREFIX)/libc.a
38
39FIXED_POSIX_LIBRARY = libposixaslibc.a
40FIXED_C_LIBRARY = libc4posix.a
41MERGED_C_LIBRARY = libc.a
42MERGE_LIBRARIES = \
43 $(FIXED_C_LIBRARY) \
44 $(FIXED_POSIX_LIBRARY) \
45 $(LIBSOFTFLOAT_PREFIX)/libsoftfloat.a \
46 $(LIBSOFTINT_PREFIX)/libsoftint.a
47
48REDEFS_HIDE_LIBC = redefs-hide-libc-symbols.list
49REDEFS_SHOW_LIBPOSIX = redefs-show-posix-symbols.list
50COLLISIONS_LIST = collisions.list
51
52PRE_DEPEND = $(INCLUDE_LIBC)
53EXTRA_CLEAN = \
54 $(INCLUDE_LIBC) \
55 $(REDEFS_HIDE_LIBC) \
56 $(REDEFS_SHOW_LIBPOSIX) \
57 $(COLLISIONS_LIST) \
58 libc.o
59
60EXTRA_OUTPUT = $(FIXED_C_LIBRARY) $(FIXED_POSIX_LIBRARY) $(MERGED_C_LIBRARY)
61
62SOURCES = \
63 source/ctype.c \
64 source/dlfcn.c \
65 source/errno.c \
66 source/fcntl.c \
67 source/fnmatch.c \
68 source/getopt.c \
69 source/locale.c \
70 source/pthread/condvar.c \
71 source/pthread/keys.c \
72 source/pthread/mutex.c \
73 source/pthread/threads.c \
74 source/pwd.c \
75 source/signal.c \
76 source/stdio.c \
77 source/stdio/scanf.c \
78 source/stdlib.c \
79 source/stdlib/strtol.c \
80 source/stdlib/strtold.c \
81 source/string.c \
82 source/strings.c \
83 source/sys/mman.c \
84 source/sys/stat.c \
85 source/sys/wait.c \
86 source/time.c \
87 source/unistd.c
88
89TEST_SOURCES = \
90 test/main.c \
91 test/scanf.c
92
93include $(USPACE_PREFIX)/Makefile.common
94
95$(INCLUDE_LIBC): ../c/include
96 ln -s -f -n ../$^ $@
97
98$(FIXED_C_LIBRARY): $(LIBC_FILE) $(REDEFS_HIDE_LIBC) $(REDEFS_SHOW_LIBPOSIX)
99 $(OBJCOPY) --redefine-syms=$(REDEFS_HIDE_LIBC) $(LIBC_FILE) $@
100 $(OBJCOPY) --redefine-syms=$(REDEFS_SHOW_LIBPOSIX) $@ $@
101
102$(FIXED_POSIX_LIBRARY): $(LIBRARY).a $(REDEFS_HIDE_LIBC) $(REDEFS_SHOW_LIBPOSIX)
103 $(OBJCOPY) --redefine-syms=$(REDEFS_HIDE_LIBC) $(LIBRARY).a $@
104 $(OBJCOPY) --redefine-syms=$(REDEFS_SHOW_LIBPOSIX) $@ $@
105
106$(MERGED_C_LIBRARY): $(MERGE_LIBRARIES)
107 $(LD) --fatal-warnings -r -o libc.o --whole-archive $(MERGE_LIBRARIES) --no-whole-archive
108 $(AR) rc $@ libc.o
109
110$(REDEFS_HIDE_LIBC): $(COLLISIONS_LIST)
111 sed 's/.*/& __helenos_libc_&/' <$(COLLISIONS_LIST) >$@
112
113$(REDEFS_SHOW_LIBPOSIX): $(COLLISIONS_LIST)
114 sed 's/.*/posix_& &/' <$(COLLISIONS_LIST) >$@
115
116$(COLLISIONS_LIST): include/posix/*.h include/posix/*/*.h
117 find ./include/posix -name '*.h' -exec \
118 sed -n -e '/^#/d' -e 's/__POSIX_DEF__/\n&/gp' {} \; | \
119 sed -n -e 's/__POSIX_DEF__(\([^)]*\)).*/\1/p' | \
120 sort -u >$@
Note: See TracBrowser for help on using the repository browser.