source: mainline/uspace/lib/posix/Makefile@ e0f47f5

lfn serial ticket/834-toolchain-update topic/msim-upgrade topic/simplify-dev-export
Last change on this file since e0f47f5 was df2e5514, checked in by Jiří Zárevúcky <zarevucky.jiri@…>, 8 years ago

Rename uspace/lib/posix/source to src, for consistency with other libraries.

  • Property mode set to 100644
File size: 3.7 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 src/ctype.c \
64 src/dlfcn.c \
65 src/fcntl.c \
66 src/fnmatch.c \
67 src/getopt.c \
68 src/locale.c \
69 src/pthread/condvar.c \
70 src/pthread/keys.c \
71 src/pthread/mutex.c \
72 src/pthread/threads.c \
73 src/pwd.c \
74 src/signal.c \
75 src/stdio.c \
76 src/stdio/scanf.c \
77 src/stdlib.c \
78 src/stdlib/strtold.c \
79 src/string.c \
80 src/strings.c \
81 src/sys/mman.c \
82 src/sys/stat.c \
83 src/sys/wait.c \
84 src/time.c \
85 src/unistd.c
86
87TEST_SOURCES = \
88 test/main.c \
89 test/scanf.c
90
91include $(USPACE_PREFIX)/Makefile.common
92
93$(INCLUDE_LIBC): ../c/include
94 ln -s -f -n ../$^ $@
95
96$(FIXED_C_LIBRARY): $(LIBC_FILE) $(REDEFS_HIDE_LIBC) $(REDEFS_SHOW_LIBPOSIX)
97 $(OBJCOPY) --redefine-syms=$(REDEFS_HIDE_LIBC) $(LIBC_FILE) $@
98 $(OBJCOPY) --redefine-syms=$(REDEFS_SHOW_LIBPOSIX) $@ $@
99
100$(FIXED_POSIX_LIBRARY): $(LIBRARY).a $(REDEFS_HIDE_LIBC) $(REDEFS_SHOW_LIBPOSIX)
101 $(OBJCOPY) --redefine-syms=$(REDEFS_HIDE_LIBC) $(LIBRARY).a $@
102 $(OBJCOPY) --redefine-syms=$(REDEFS_SHOW_LIBPOSIX) $@ $@
103
104$(MERGED_C_LIBRARY): $(MERGE_LIBRARIES)
105 $(LD) --fatal-warnings -r -o libc.o --whole-archive $(MERGE_LIBRARIES) --no-whole-archive
106 $(AR) rc $@ libc.o
107
108$(REDEFS_HIDE_LIBC): $(COLLISIONS_LIST)
109 sed 's/.*/& __helenos_libc_&/' <$(COLLISIONS_LIST) >$@
110
111$(REDEFS_SHOW_LIBPOSIX): $(COLLISIONS_LIST)
112 sed 's/.*/posix_& &/' <$(COLLISIONS_LIST) >$@
113
114$(COLLISIONS_LIST): include/posix/*.h include/posix/*/*.h
115 find ./include/posix -name '*.h' -exec \
116 sed -n -e '/^#/d' -e 's/__POSIX_DEF__/\n&/gp' {} \; | \
117 sed -n -e 's/__POSIX_DEF__(\([^)]*\)).*/\1/p' | \
118 sort -u >$@
Note: See TracBrowser for help on using the repository browser.