Changeset 04c418d in mainline for uspace/Makefile.common


Ignore:
Timestamp:
2011-05-17T07:58:39Z (13 years ago)
Author:
Vojtech Horky <vojtechhorky@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
7d521e24
Parents:
e913cc9 (diff), 3375bd4 (diff)
Note: this is a merge changeset, the changes displayed below correspond to the merge itself.
Use the (diff) links above to see all the changes relative to each parent.
Message:

Merge development/ changes

File:
1 edited

Legend:

Unmodified
Added
Removed
  • uspace/Makefile.common

    re913cc9 r04c418d  
    4040#   BINARY         (/) binary output name (like appname)
    4141#   LIBRARY        (/) library output name (like libname)
     42#
    4243#   EXTRA_OUTPUT       additional output targets
    4344#   EXTRA_CLEAN        additional cleanup targets
     45#
     46# Optionally, for a binary:
     47#   STATIC_NEEDED      set to 'y' for init binaries, will build statically
     48#                      linked version
     49#   STATIC_ONLY        set to 'y' if binary cannot be linked dynamically
     50#                      (e.g. uses thread-local variables)
     51#
     52# Optionally, for a libary:
     53#   SLIBRARY           Name with full version, e.g. libfoo.so.0.0
     54#   LSONAME            Soname / name with short version, e.g. libfoo.so.0
    4455#
    4556# (x) required variables
     
    7182        JOB = $(LIBRARY).job
    7283        OUTPUT = $(LIBRARY).a
     84endif
     85
     86ifeq ($(CONFIG_BUILD_SHARED_LIBS), y)
     87        ifneq ($(SLIBRARY),)
     88                LARCHIVE = $(LIBRARY).la
     89                LOUTPUT = $(SLIBRARY)
     90                EXTRA_OUTPUT += $(LOUTPUT).disasm $(LIBRARY).so $(LSONAME)
     91                EXTRA_CLEAN += $(LOUTPUT).map $(LOUTPUT).ldisasm \
     92                    $(LIBC_PREFIX)/shared/arch/$(UARCH)/_lib.ld \
     93                    $(LIBRARY).so $(LSONAME)
     94        endif
    7395endif
    7496
     
    96118LIBNET_PREFIX = $(LIB_PREFIX)/net
    97119
     120ifeq ($(STATIC_NEEDED),y)
     121        STATIC_BUILD = y
     122else
     123        ifeq ($(STATIC_ONLY),y)
     124                STATIC_BUILD = y
     125        else
     126                ifeq ($(CONFIG_USE_SHARED_LIBS), y)
     127                        STATIC_BUILD = n
     128                else
     129                        STATIC_BUILD = y
     130                endif
     131        endif
     132endif
     133
     134ifeq ($(STATIC_BUILD), y)
    98135BASE_LIBS = $(LIBC_PREFIX)/libc.a $(LIBSOFTINT_PREFIX)/libsoftint.a
    99 
    100136LINKER_SCRIPT ?= $(LIBC_PREFIX)/arch/$(UARCH)/_link.ld
     137else
     138BASE_LIBS = $(LIBC_PREFIX)/libc.so0 $(LIBSOFTINT_PREFIX)/libsofti.so0
     139LFLAGS = -Bdynamic
     140LINKER_SCRIPT ?= $(LIBC_PREFIX)/arch/$(UARCH)/_link-dlexe.ld
     141endif
    101142
    102143ifeq ($(CONFIG_OPTIMIZE_FOR_SIZE),y)
     
    108149.PHONY: all clean
    109150
    110 all: $(VERSION_DEF) $(COMMON_MAKEFILE) $(CONFIG_MAKEFILE) $(CONFIG_HEADER) $(LIBS) $(OUTPUT) $(EXTRA_OUTPUT)
     151all: $(VERSION_DEF) $(COMMON_MAKEFILE) $(CONFIG_MAKEFILE) $(CONFIG_HEADER) $(LIBS) $(OUTPUT) $(LOUTPUT) $(EXTRA_OUTPUT)
    111152        -[ -f $(DEPEND) ] && cp -a $(DEPEND) $(DEPEND_PREV)
    112153
    113154clean:
    114         rm -f $(DEPEND) $(DEPEND_PREV) $(JOB) $(OUTPUT) $(EXTRA_OUTPUT) $(EXTRA_CLEAN)
     155        rm -f $(DEPEND) $(DEPEND_PREV) $(JOB) $(OUTPUT) $(LARCHIVE) $(LOUTPUT) $(EXTRA_OUTPUT) $(EXTRA_CLEAN)
    115156        find . -name '*.o' -follow -exec rm \{\} \;
     157        find . -name '*.lo' -follow -exec rm \{\} \;
    116158
    117159GCC_CFLAGS = -I$(LIBC_PREFIX)/include -O$(OPTIMIZATION) -imacros $(CONFIG_HEADER) \
     
    119161        -finput-charset=UTF-8 -ffreestanding -fno-builtin -nostdlib -nostdinc \
    120162        -Wall -Wextra -Wno-clobbered -Wno-unused-parameter -Wmissing-prototypes \
    121         -Werror-implicit-function-declaration -Wwrite-strings \
     163        -std=gnu99 -Werror-implicit-function-declaration -Wwrite-strings \
    122164        -pipe -g -D__$(ENDIANESS)__
    123165
     
    136178        -pipe -g -arch $(CLANG_ARCH) -D__$(ENDIANESS)__
    137179
     180LIB_CFLAGS = $(CFLAGS) -fPIC -D__IN_SHARED_LIBC__
     181LIB_LFLAGS = $(LFLAGS) -shared -soname $(LSONAME) --whole-archive
     182
    138183ifeq ($(CONFIG_DEBUG),y)
    139184        GCC_CFLAGS += -Werror
     
    181226
    182227OBJECTS := $(addsuffix .o,$(basename $(SOURCES)))
     228LOBJECTS := $(addsuffix .lo,$(basename $(SOURCES)))
    183229
    184230ifneq ($(BINARY),)
     
    191237
    192238$(BINARY): $(LINKER_SCRIPT) $(OBJECTS) $(LIBS) $(BASE_LIBS)
    193         $(LD) -N $(LFLAGS) -T $(LINKER_SCRIPT) -M -Map $(BINARY).map -o $(BINARY) $(OBJECTS) $(LIBS) $(BASE_LIBS)
     239        $(LD) -n $(LFLAGS) -T $(LINKER_SCRIPT) -M -Map $(BINARY).map -o $(BINARY) $(OBJECTS) $(LIBS) $(BASE_LIBS)
    194240ifeq ($(CONFIG_STRIP_BINARIES),y)
    195241        $(STRIP) $(BINARY)
    196242endif
     243endif
     244
     245ifneq ($(SLIBRARY),)
     246%.disasm: $(LOUTPUT)
     247ifeq ($(CONFIG_LINE_DEBUG),y)
     248        $(OBJDUMP) -d -S $< > $@
     249else
     250        $(OBJDUMP) -d $< > $@
     251endif
     252
     253$(LOUTPUT): $(LARCHIVE) $(LIBC_PREFIX)/arch/$(UARCH)/_link-shlib.ld
     254        $(LD) -T $(LIBC_PREFIX)/arch/$(UARCH)/_link-shlib.ld $(LIB_LFLAGS) $(LARCHIVE) -o $@ -Map $(LOUTPUT).map
     255
     256$(LIBRARY).so:
     257        ln -s $(SLIBRARY) $@
     258
     259$(LSONAME):
     260        ln -s $(SLIBRARY) $@
    197261endif
    198262
     
    202266endif
    203267
     268ifneq ($(SLIBRARY),)
     269%.la: $(LOBJECTS)
     270        $(AR) rc $@ $(LOBJECTS)
     271endif
     272
    204273%.o: %.S $(DEPEND)
    205274        $(CC) $(DEFS) $(CFLAGS) -D__ASM__ -c $< -o $@
     
    216285%.o: %.c $(DEPEND)
    217286        $(CC) $(DEFS) $(CFLAGS) -c $< -o $@
     287ifeq ($(PRECHECK),y)
     288        $(JOBFILE) $(JOB) $< $@ cc core $(DEFS) $(CFLAGS)
     289endif
     290
     291%.lo: %.S $(DEPEND)
     292        $(CC) $(DEFS) $(LIB_CFLAGS) -D__ASM__ -c $< -o $@
     293ifeq ($(PRECHECK),y)
     294        $(JOBFILE) $(JOB) $< $@ as asm/preproc $(DEFS) $(CFLAGS) -D__ASM__
     295endif
     296
     297%.lo: %.s $(DEPEND)
     298        $(AS) $(AFLAGS) -o $@ $<
     299ifeq ($(PRECHECK),y)
     300        $(JOBFILE) $(JOB) $< $@ as asm
     301endif
     302
     303%.lo: %.c $(DEPEND)
     304        $(CC) $(DEFS) $(LIB_CFLAGS) -c $< -o $@
    218305ifeq ($(PRECHECK),y)
    219306        $(JOBFILE) $(JOB) $< $@ cc core $(DEFS) $(CFLAGS)
     
    229316$(OUTPUT): $(OBJECTS)
    230317
     318$(LARCHIVE): $(LOBJECTS)
Note: See TracChangeset for help on using the changeset viewer.