Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • uspace/Makefile.common

    r874ed210 r6480827  
    4646#   STATIC_NEEDED      set to 'y' for init binaries, will build statically
    4747#                      linked version
     48#   STATIC_ONLY        set to 'y' if binary cannot be linked dynamically
     49#                      (e.g. uses thread-local variables)
    4850#
    4951# Optionally, for a library:
     
    109111START_FILES = $(LIBC_PREFIX)/crt0.o $(LIBC_PREFIX)/crt1.o
    110112
     113AFLAGS = --fatal-warnings
    111114LDFLAGS = -Wl,--fatal-warnings,--warn-common
    112 
    113 STATIC_BUILD = n
    114115
    115116ifeq ($(STATIC_NEEDED),y)
    116117        STATIC_BUILD = y
    117 endif
    118 
    119 ifneq ($(CONFIG_BUILD_SHARED_LIBS),y)
    120         STATIC_BUILD = y
    121 endif
    122 
    123 ifneq ($(CONFIG_USE_SHARED_LIBS),y)
    124         ifeq ($(LIBRARY),)
     118else
     119        ifeq ($(STATIC_ONLY),y)
    125120                STATIC_BUILD = y
     121        else
     122                ifeq ($(CONFIG_BUILD_SHARED_LIBS),y)
     123                        ifeq ($(CONFIG_USE_SHARED_LIBS),y)
     124                                STATIC_BUILD = n
     125                        else
     126                                ifeq ($(LIBRARY),)
     127                                        STATIC_BUILD = y
     128                                else
     129                                        STATIC_BUILD = n
     130                                endif
     131                        endif
     132                else
     133                        STATIC_BUILD = y
     134                endif
    126135        endif
    127136endif
    128137
    129 # LINK_DYNAMIC is only here to allow app/dltest to link dynamically in otherwise static build.
    130 ifeq ($(LINK_DYNAMIC),y)
    131         STATIC_BUILD = n
    132 endif
    133 
    134 ifeq ($(STATIC_BUILD),y)
    135         LDFLAGS += -static
     138ifneq ($(STATIC_BUILD),y)
     139        LINK_DYNAMIC = y
    136140endif
    137141
     
    148152BASE_LIBS += -lgcc
    149153
     154ifneq ($(LINK_DYNAMIC),y)
     155        LDFLAGS += -static
     156endif
     157
    150158INCLUDES_FLAGS = $(LIBC_INCLUDES_FLAGS)
    151159
     
    156164INCLUDES_FLAGS += $(foreach lib,$(LIBS), -I$(LIB_PREFIX)/$(lib) -I$(LIB_PREFIX)/$(lib)/include)
    157165
    158 DEPLIBS := $(LIBS)
    159 
    160 ifneq ($(filter %.cpp %.cc %.cxx, $(SOURCES)),)
    161         ifneq ($(LIBRARY),libcpp)
    162                 DEPLIBS += cpp
    163         endif
    164 endif
    165 
    166 ifneq ($(LIBRARY),libc)
    167         DEPLIBS += c
     166# TODO: get rid of this special case
     167ifneq ($(filter math, $(LIBS)),)
     168        INCLUDES_FLAGS += $(LIBMATH_INCLUDES_FLAGS)
    168169endif
    169170
     
    193194        -Werror-implicit-function-declaration \
    194195        -Wsystem-headers \
    195         -Wunknown-pragmas \
    196         -Wa,--fatal-warnings
     196        -Wunknown-pragmas
    197197
    198198# XXX: -fno-builtin-strftime is for a seemingly spurious format warning.
     
    296296
    297297LIB_CFLAGS = $(CFLAGS) -fPIC
    298 LIB_CXXFLAGS = $(CXXFLAGS) -fPIC
    299298LIB_LDFLAGS = $(LDFLAGS) -shared -Wl,-soname,$(LSONAME) -Wl,--no-undefined,--no-allow-shlib-undefined
     299
     300AS_CFLAGS := $(addprefix -Xassembler ,$(AFLAGS))
    300301
    301302OBJECTS := $(addsuffix .o,$(basename $(SOURCES)))
     
    304305DEPENDS := $(addsuffix .d,$(basename $(SOURCES))) $(addsuffix .test.d,$(basename $(TEST_SOURCES)))
    305306
    306 LIBTAGS := $(foreach lib,$(DEPLIBS), $(USPACE_PREFIX)/lib/$(lib)/tag)
     307LIBTAGS := $(foreach lib,$(LIBS), $(USPACE_PREFIX)/lib/$(lib)/tag)
    307308LIBARGS := $(addprefix -L$(USPACE_PREFIX)/lib/, $(LIBS)) $(addprefix -l, $(LIBS))
     309
     310ifneq ($(LIBRARY),libc)
     311        LIBTAGS := $(LIBC_PREFIX)/tag $(LIBTAGS)
     312endif
    308313
    309314.PHONY: all all-test clean fasterclean depend
     
    334339deps.mk: Makefile
    335340        echo > $@.new
    336         for lib in $(DEPLIBS); do \
     341        for lib in $(LIBS); do \
    337342                echo "$(SELF_TARGET): lib/$$lib.build" >> $@.new; \
    338343        done
     
    384389
    385390%.o: %.S | depend
    386         $(CC_JOB) -c -MD -MP $(DEFS) $(CFLAGS) $(EXTRA_CFLAGS)
     391        $(CC_JOB) -c -MD -MP $(DEFS) $(CFLAGS) $(EXTRA_CFLAGS) $(AS_CFLAGS)
    387392
    388393%.o: %.s | depend
    389         $(CC_JOB) -c -MD -MP $(DEFS) $(CFLAGS) $(EXTRA_CFLAGS)
     394        $(CC_JOB) -c -MD -MP $(DEFS) $(CFLAGS) $(EXTRA_CFLAGS) $(AS_CFLAGS)
    390395
    391396%.o: %.c | depend
     
    405410
    406411%.lo: %.S | depend
    407         $(CC_JOB) -c -MD -MP $(DEFS) $(LIB_CFLAGS) $(EXTRA_CFLAGS)
     412        $(CC_JOB) -c -MD -MP $(DEFS) $(LIB_CFLAGS) $(EXTRA_CFLAGS) $(AS_CFLAGS)
    408413
    409414%.lo: %.s | depend
    410         $(CC_JOB) -c -MD -MP $(DEFS) $(LIB_CFLAGS) $(EXTRA_CFLAGS)
     415        $(CC_JOB) -c -MD -MP $(DEFS) $(LIB_CFLAGS) $(EXTRA_CFLAGS) $(AS_CFLAGS)
    411416
    412417%.lo: %.c | depend
     
    414419
    415420%.lo: %.cpp | depend
    416         $(CXX_JOB) -c -MD -MP $(DEFS) $(LIB_CXXFLAGS) $(EXTRA_CXXFLAGS)
     421        $(CXX_JOB) -c -MD -MP $(DEFS) $(CXXFLAGS) $(EXTRA_CXXFLAGS)
    417422
    418423%.lo: %.cxx | depend
    419         $(CXX_JOB) -c -MD -MP $(DEFS) $(LIB_CXXFLAGS) $(EXTRA_CXXFLAGS)
     424        $(CXX_JOB) -c -MD -MP $(DEFS) $(CXXFLAGS) $(EXTRA_CXXFLAGS)
    420425
    421426%.lo: %.cc | depend
    422         $(CXX_JOB) -c -MD -MP $(DEFS) $(LIB_CXXFLAGS) $(EXTRA_CXXFLAGS)
     427        $(CXX_JOB) -c -MD -MP $(DEFS) $(CXXFLAGS) $(EXTRA_CXXFLAGS)
    423428
    424429-include $(DEPENDS)
Note: See TracChangeset for help on using the changeset viewer.