source: mainline/uspace/lib/c/Makefile@ a0a273e

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

Unify compiler handling a bit.

Most compiler flags have been changed from GCC-specific to "common",
since code might build but not work properly without them.
Clang still rejects some of the flags, but at least we can see
the incompatibilities now.

Explicit —target flag was removed from clang, in favor of using clang
through a target-specific symlink. This allows clang to automatically
find correct assembler and linker, if it needs to.

Additionally, assembly language files are now compiled using $(CC)
whether or not they need the preprocessor. This allows clang to build
.s files using its integrated assembler.

  • Property mode set to 100644
File size: 6.0 KB
Line 
1#
2# Copyright (c) 2005 Martin Decky
3# Copyright (c) 2007 Jakub Jermar
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 = ../..
31ROOT_PATH = $(USPACE_PREFIX)/..
32
33CONFIG_MAKEFILE = $(ROOT_PATH)/Makefile.config
34COMMON_HEADER_ARCH = arch/$(UARCH)/include/libarch/common.h
35
36LINKER_SCRIPTS = \
37 $(LIBC_PREFIX)/arch/$(UARCH)/_link.ld \
38 $(LIBC_PREFIX)/arch/$(UARCH)/_link-loader.ld \
39 $(LIBC_PREFIX)/arch/$(UARCH)/_link-shlib.ld \
40 $(LIBC_PREFIX)/arch/$(UARCH)/_link-dlexe.ld
41
42PRE_DEPEND = $(COMMON_HEADER_ARCH)
43EXTRA_OUTPUT = $(LINKER_SCRIPTS)
44EXTRA_CLEAN = $(COMMON_HEADER_ARCH) $(LINKER_SCRIPTS)
45LIBRARY = libc
46SLIBRARY = libc.so.0.0
47LSONAME = libc.so.0
48
49-include $(CONFIG_MAKEFILE)
50-include arch/$(UARCH)/Makefile.inc
51
52ARCH_AUTOGENS_H := $(addsuffix .h,$(basename $(ARCH_AUTOGENS_AG)))
53ARCH_AUTOGENS_PROBE_C := $(addsuffix .ag.probe.c,$(basename $(ARCH_AUTOGENS_AG)))
54ARCH_AUTOGENS_PROBE_S := $(addsuffix .ag.probe.s,$(basename $(ARCH_AUTOGENS_AG)))
55
56PRE_DEPEND += $(ARCH_AUTOGENS_H)
57EXTRA_CLEAN += $(ARCH_AUTOGENS_H) $(ARCH_AUTOGENS_PROBE_C) $(ARCH_AUTOGENS_PROBE_S)
58
59GENERIC_SOURCES = \
60 generic/libc.c \
61 generic/ddi.c \
62 generic/as.c \
63 generic/bd.c \
64 generic/bd_srv.c \
65 generic/perm.c \
66 generic/cap.c \
67 generic/clipboard.c \
68 generic/config.c \
69 generic/corecfg.c \
70 generic/devman.c \
71 generic/device/hw_res.c \
72 generic/device/hw_res_parsed.c \
73 generic/device/pio_window.c \
74 generic/device/clock_dev.c \
75 generic/device/led_dev.c \
76 generic/dirent.c \
77 generic/dhcp.c \
78 generic/dnsr.c \
79 generic/dlfcn.c \
80 generic/elf/elf_load.c \
81 generic/elf/elf_mod.c \
82 generic/event.c \
83 generic/errno.c \
84 generic/gsort.c \
85 generic/loc.c \
86 generic/mem.c \
87 generic/str.c \
88 generic/str_error.c \
89 generic/l18n/langs.c \
90 generic/fibril.c \
91 generic/fibril_synch.c \
92 generic/pcb.c \
93 generic/smc.c \
94 generic/smp_memory_barrier.c \
95 generic/thread.c \
96 generic/tls.c \
97 generic/task.c \
98 generic/futex.c \
99 generic/imath.c \
100 generic/inet/addr.c \
101 generic/inet/endpoint.c \
102 generic/inet/host.c \
103 generic/inet/hostname.c \
104 generic/inet/hostport.c \
105 generic/inet/tcp.c \
106 generic/inet/udp.c \
107 generic/inet.c \
108 generic/inetcfg.c \
109 generic/inetping.c \
110 generic/io/asprintf.c \
111 generic/io/input.c \
112 generic/io/io.c \
113 generic/io/chardev.c \
114 generic/io/chardev_srv.c \
115 generic/io/chargrid.c \
116 generic/io/output.c \
117 generic/io/printf.c \
118 generic/io/log.c \
119 generic/io/logctl.c \
120 generic/io/kio.c \
121 generic/io/klog.c \
122 generic/io/snprintf.c \
123 generic/io/vprintf.c \
124 generic/io/vsnprintf.c \
125 generic/io/printf_core.c \
126 generic/io/con_srv.c \
127 generic/io/console.c \
128 generic/io/table.c \
129 generic/io/visualizer.c \
130 generic/io/window.c \
131 generic/iplink.c \
132 generic/iplink_srv.c \
133 generic/irc.c \
134 generic/irq.c \
135 generic/ieee_double.c \
136 generic/power_of_ten.c \
137 generic/double_to_str.c \
138 generic/malloc.c \
139 generic/sysinfo.c \
140 generic/ipc.c \
141 generic/ns.c \
142 generic/async.c \
143 generic/loader.c \
144 generic/getopt.c \
145 generic/adt/checksum.c \
146 generic/adt/list.c \
147 generic/adt/hash_table.c \
148 generic/adt/odict.c \
149 generic/adt/prodcons.c \
150 generic/time.c \
151 generic/stdio.c \
152 generic/stdlib.c \
153 generic/udebug.c \
154 generic/vfs/canonify.c \
155 generic/vfs/inbox.c \
156 generic/vfs/mtab.c \
157 generic/vfs/vfs.c \
158 generic/rcu.c \
159 generic/setjmp.c \
160 generic/stack.c \
161 generic/stacktrace.c \
162 generic/arg_parse.c \
163 generic/stats.c \
164 generic/assert.c \
165 generic/pio_trace.c \
166 generic/qsort.c \
167 generic/uuid.c \
168 generic/vbd.c \
169 generic/vol.c
170
171ifeq ($(CONFIG_RTLD),y)
172 GENERIC_SOURCES += \
173 generic/rtld/rtld.c \
174 generic/rtld/dynamic.c \
175 generic/rtld/module.c \
176 generic/rtld/symbol.c
177endif
178
179SOURCES = \
180 $(GENERIC_SOURCES) \
181 $(ARCH_SOURCES)
182
183TEST_SOURCES = \
184 test/fibril/timer.c \
185 test/main.c \
186 test/io/table.c \
187 test/odict.c \
188 test/qsort.c \
189 test/sprintf.c \
190 test/str.c
191
192include $(USPACE_PREFIX)/Makefile.common
193
194%.h: %.ag
195 $(AUTOGEN) probe $< >$<.probe.c
196 $(CC_AUTOGEN) $(DEFS) $(CFLAGS) -S -o $<.probe.s $<.probe.c
197 $(AUTOGEN) generate $< <$<.probe.s >$@
198
199$(LIBC_PREFIX)/arch/$(UARCH)/_link.ld: $(LIBC_PREFIX)/arch/$(UARCH)/_link.ld.in
200 $(CC) $(DEFS) $(CFLAGS) -DLIBC_PATH=$(CURDIR) -E -x c $< | grep -v "^\#" > $@
201
202$(LIBC_PREFIX)/arch/$(UARCH)/_link-loader.ld: $(LIBC_PREFIX)/arch/$(UARCH)/_link.ld.in
203 $(CC) $(DEFS) $(CFLAGS) -DLIBC_PATH=$(CURDIR) -DLOADER -E -x c $< | grep -v "^\#" > $@
204
205$(LIBC_PREFIX)/arch/$(UARCH)/_link-shlib.ld: $(LIBC_PREFIX)/arch/$(UARCH)/_link.ld.in
206 $(CC) $(DEFS) $(CFLAGS) -DLIBC_PATH=$(CURDIR) -DSHLIB -E -x c $< | grep -v "^\#" > $@
207
208$(LIBC_PREFIX)/arch/$(UARCH)/_link-dlexe.ld: $(LIBC_PREFIX)/arch/$(UARCH)/_link.ld.in
209 $(CC) $(DEFS) $(CFLAGS) -DLIBC_PATH=$(CURDIR) -DDLEXE -E -x c $< | grep -v "^\#" > $@
210
211$(COMMON_HEADER_ARCH): $(COMMON_HEADER)
212 ln -sfn ../../../../$< $@
Note: See TracBrowser for help on using the repository browser.