Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • uspace/Makefile.common

    r58563585 r4fb794c  
    4444#   EXTRA_CLEAN        additional cleanup targets
    4545#
    46 #   MATH               set to 'y' to use the math library
    4746#   POSIX_COMPAT       set to 'y' to use POSIX compatibility layer
    4847#
     
    7877        JOB = $(BINARY).job
    7978        OUTPUT = $(BINARY)
    80         TEST_BINARY = test-$(BINARY)
    8179        EXTRA_OUTPUT += $(BINARY).disasm
    8280        EXTRA_CLEAN += $(BINARY).map
     
    8684        JOB = $(LIBRARY).job
    8785        OUTPUT = $(LIBRARY).a
    88         TEST_BINARY = test-$(LIBRARY)
    89 endif
    90 
    91 ifeq ($(CONFIG_BUILD_SHARED_LIBS),y)
     86endif
     87
     88ifeq ($(CONFIG_BUILD_SHARED_LIBS), y)
    9289        ifneq ($(SLIBRARY),)
    9390                LARCHIVE = $(LIBRARY).la
     
    113110LIBSOFTINT_PREFIX = $(LIB_PREFIX)/softint
    114111
    115 LIBMATH_PREFIX = $(LIB_PREFIX)/math
    116 LIBMATH_INCLUDES_FLAGS = \
    117         -I$(LIBMATH_PREFIX)/include \
    118         -I$(LIBMATH_PREFIX)/arch/$(UARCH)/include
    119 
    120112LIBPOSIX_PREFIX = $(LIB_PREFIX)/posix
    121113
    122 LIBCRYPTO_PREFIX = $(LIB_PREFIX)/crypto
    123114LIBBLOCK_PREFIX = $(LIB_PREFIX)/block
    124 LIBFDISK_PREFIX = $(LIB_PREFIX)/fdisk
    125 LIBLABEL_PREFIX = $(LIB_PREFIX)/label
    126115LIBFS_PREFIX = $(LIB_PREFIX)/fs
    127116LIBCLUI_PREFIX = $(LIB_PREFIX)/clui
     
    142131
    143132LIBDRV_PREFIX = $(LIB_PREFIX)/drv
    144 LIBHOUND_PREFIX = $(LIB_PREFIX)/hound
    145 LIBPCM_PREFIX = $(LIB_PREFIX)/pcm
     133LIBNET_PREFIX = $(LIB_PREFIX)/net
    146134LIBNIC_PREFIX = $(LIB_PREFIX)/nic
    147 LIBIEEE80211_PREFIX = $(LIB_PREFIX)/ieee80211
    148135LIBMINIX_PREFIX = $(LIB_PREFIX)/minix
    149 LIBCOMPRESS_PREFIX = $(LIB_PREFIX)/compress
    150 LIBDLTEST_PREFIX = $(LIB_PREFIX)/dltest
    151136
    152137LIBSCSI_PREFIX = $(LIB_PREFIX)/scsi
    153 LIBTRACKMOD_PREFIX = $(LIB_PREFIX)/trackmod
    154138
    155139LIBBITHENGE_PREFIX = $(LIB_PREFIX)/bithenge
    156 
    157 LIBHTTP_PREFIX = $(LIB_PREFIX)/http
    158 LIBURI_PREFIX = $(LIB_PREFIX)/uri
    159 
    160 LIBNETTL_PREFIX = $(LIB_PREFIX)/nettl
    161 
    162 AFLAGS = --fatal-warnings
    163 LFLAGS = --fatal-warnings
    164140
    165141ifeq ($(STATIC_NEEDED),y)
     
    169145                STATIC_BUILD = y
    170146        else
    171                 ifeq ($(CONFIG_USE_SHARED_LIBS),y)
     147                ifeq ($(CONFIG_USE_SHARED_LIBS), y)
    172148                        STATIC_BUILD = n
    173149                else
     
    177153endif
    178154
     155# Build static whenever we use libusb because that library uses
     156# thread local variables
     157ifneq ($(findstring usb, $(LIBS)),)
     158        STATIC_BUILD = y
     159endif
     160
    179161ifeq ($(STATIC_BUILD),y)
    180162        BASE_LIBS = $(LIBC_PREFIX)/libc.a $(LIBSOFTINT_PREFIX)/libsoftint.a
    181         ifeq ($(MATH),y)
    182                 BASE_LIBS += $(LIBMATH_PREFIX)/libmath.a
    183         endif
    184 else
    185         BASE_LIBS = $(LIBC_PREFIX)/libc.so.0 $(LIBSOFTINT_PREFIX)/libsoftint.so.0
    186         LINK_DYNAMIC = y
    187         ifeq ($(MATH),y)
    188                 BASE_LIBS += $(LIBMATH_PREFIX)/libmath.so.0
    189         endif
    190 endif
    191 
    192 ifeq ($(LINK_DYNAMIC),y)
    193         LFLAGS += -Bdynamic
     163        LINKER_SCRIPT ?= $(LIBC_PREFIX)/arch/$(UARCH)/_link.ld
     164else
     165        BASE_LIBS = $(LIBC_PREFIX)/libc.so0 $(LIBSOFTINT_PREFIX)/libsofti.so0
     166        LFLAGS = -Bdynamic
    194167        LINKER_SCRIPT ?= $(LIBC_PREFIX)/arch/$(UARCH)/_link-dlexe.ld
    195 else
    196         LINKER_SCRIPT ?= $(LIBC_PREFIX)/arch/$(UARCH)/_link.ld
    197 endif
    198 
    199 ifeq ($(MATH),y)
    200         INCLUDES_FLAGS = $(LIBC_INCLUDES_FLAGS) $(LIBMATH_INCLUDES_FLAGS)
    201 else
    202         INCLUDES_FLAGS = $(LIBC_INCLUDES_FLAGS)
    203168endif
    204169
     
    209174endif
    210175
    211 # PCUT-based unit tests
    212 ifneq ($(TEST_SOURCES),)
    213         TEST_OUTPUT = $(TEST_BINARY)
    214         TEST_CFLAGS = -I$(LIB_PREFIX)/pcut/include -D__helenos__
    215         TEST_OUTPUT_LIBS = $(LIB_PREFIX)/pcut/libpcut.a
    216         EXTRA_CLEAN += $(TEST_OUTPUT) $(TEST_OUTPUT).map
    217 ifneq ($(LIBRARY),)
    218         TEST_OUTPUT_LIBS += $(OUTPUT)
    219 endif
    220         TEST_OUTPUT_LIBS += $(TEST_LIBS)
    221 endif
    222 
    223176.PHONY: all clean
    224177
    225178all: $(VERSION_DEF) $(COMMON_MAKEFILE) $(CONFIG_MAKEFILE) $(CONFIG_HEADER) $(LIBS) $(OUTPUT) $(LOUTPUT) $(EXTRA_OUTPUT)
    226179        -[ -f $(DEPEND) ] && cp -a $(DEPEND) $(DEPEND_PREV)
    227 
    228 all-test: $(TEST_OUTPUT)
    229180
    230181clean:
     
    233184        find . -name '*.lo' -follow -exec rm \{\} \;
    234185
    235 GCC_CFLAGS = $(INCLUDES_FLAGS) -O$(OPTIMIZATION) -imacros $(CONFIG_HEADER) \
     186GCC_CFLAGS = $(LIBC_INCLUDES_FLAGS) -O$(OPTIMIZATION) -imacros $(CONFIG_HEADER) \
    236187        -fexec-charset=UTF-8 -fwide-exec-charset=UTF-32$(ENDIANESS) \
    237188        -finput-charset=UTF-8 -ffreestanding -fno-builtin -nostdlib -nostdinc \
     
    240191        -pipe -ggdb -D__$(ENDIANESS)__
    241192
    242 ICC_CFLAGS = $(INCLUDES_FLAGS) -O$(OPTIMIZATION) -imacros $(CONFIG_HEADER) \
     193ICC_CFLAGS = $(LIBC_INCLUDES_FLAGS) -O$(OPTIMIZATION) -imacros $(CONFIG_HEADER) \
    243194        -fexec-charset=UTF-8 -fwide-exec-charset=UTF-32$(ENDIANESS) \
    244195        -finput-charset=UTF-8 -ffreestanding -fno-builtin -nostdlib -nostdinc \
     
    250201# something won't break because of that:
    251202# -fexec-charset=UTF-8 -fwide-exec-charset=UTF-32$(ENDIANESS) -finput-charset=UTF-8
    252 CLANG_CFLAGS = $(INCLUDES_FLAGS) -O$(OPTIMIZATION) -imacros $(CONFIG_HEADER) \
     203CLANG_CFLAGS = $(LIBC_INCLUDES_FLAGS) -O$(OPTIMIZATION) -imacros $(CONFIG_HEADER) \
    253204        -ffreestanding -fno-builtin -nostdlib -nostdinc \
    254205        -Wall -Wextra -Wno-unused-parameter -Wmissing-prototypes \
    255         -std=gnu99 -Werror-implicit-function-declaration -Wwrite-strings \
    256         -integrated-as -pipe -g -target $(CLANG_TARGET) -D__$(ENDIANESS)__
    257 
    258 LIB_CFLAGS = $(CFLAGS) -fPIC
     206        -Werror-implicit-function-declaration -Wwrite-strings \
     207        -integrated-as \
     208        -pipe -g -target $(CLANG_TARGET) -D__$(ENDIANESS)__
     209
     210LIB_CFLAGS = $(CFLAGS) -fPIC -D__IN_SHARED_LIBC__
    259211LIB_LFLAGS = $(LFLAGS) -shared -soname $(LSONAME) --whole-archive
    260212
     
    265217
    266218ifeq ($(CONFIG_LINE_DEBUG),y)
    267         GCC_CFLAGS += -ggdb
     219        GCC_CFLAGS += -g
    268220        ICC_CFLAGS += -g
    269221        CLANG_CFLAGS += -g
    270222endif
    271223
    272 # Prepare for POSIX before including platform specific stuff
     224## Setup platform configuration
     225#
     226
     227-include $(LIBC_PREFIX)/arch/$(UARCH)/Makefile.common
     228
     229## Compilation options
     230#
     231
     232JOBFILE = $(LIBC_PREFIX)/../../../tools/jobfile.py
     233
    273234ifeq ($(POSIX_COMPAT),y)
    274         CFLAGS = -I$(LIBPOSIX_PREFIX)/include/posix -I$(LIBPOSIX_PREFIX)/include/
    275         BASE_LIBS = $(LIBPOSIX_PREFIX)/libposixaslibc.a $(LIBPOSIX_PREFIX)/libc4posix.a $(LIBSOFTINT_PREFIX)/libsoftint.a
    276 endif
    277 
    278 ## Setup platform configuration
    279 #
    280 
    281 -include $(LIBC_PREFIX)/arch/$(UARCH)/Makefile.common
    282 
    283 ## Compilation options
    284 #
    285 
    286 JOBFILE = $(LIBC_PREFIX)/../../../tools/jobfile.py
     235        CFLAGS = -I$(LIBPOSIX_PREFIX)/include/posix  -I$(LIBPOSIX_PREFIX)/include/
     236        LIBS += $(LIBPOSIX_PREFIX)/libposix.a
     237endif
    287238
    288239ifeq ($(COMPILER),gcc_cross)
    289         CFLAGS += $(GCC_CFLAGS)
     240        CFLAGS += $(GCC_CFLAGS) $(EXTRA_CFLAGS)
    290241        DEPEND_DEFS = $(DEFS) $(CONFIG_DEFS)
    291242endif
    292243
    293 ifeq ($(COMPILER),gcc_helenos)
    294         CFLAGS += $(GCC_CFLAGS)
     244ifeq ($(COMPILER),gcc_native)
     245        CFLAGS += $(GCC_CFLAGS) $(EXTRA_CFLAGS)
    295246        DEPEND_DEFS = $(DEFS) $(CONFIG_DEFS)
    296247endif
    297248
    298 ifeq ($(COMPILER),gcc_native)
    299         CFLAGS += $(GCC_CFLAGS)
     249ifeq ($(COMPILER),icc)
     250        CFLAGS += $(ICC_CFLAGS) $(EXTRA_CFLAGS)
    300251        DEPEND_DEFS = $(DEFS) $(CONFIG_DEFS)
    301252endif
    302253
    303 ifeq ($(COMPILER),icc)
    304         CFLAGS += $(ICC_CFLAGS)
     254ifeq ($(COMPILER),clang)
     255        CFLAGS += $(CLANG_CFLAGS) $(EXTRA_CFLAGS)
     256        GCC_CFLAGS += $(EXTRA_CFLAGS)
    305257        DEPEND_DEFS = $(DEFS) $(CONFIG_DEFS)
    306258endif
    307259
    308 ifeq ($(COMPILER),clang)
    309         CFLAGS += $(CLANG_CFLAGS)
    310         DEPEND_DEFS = $(DEFS) $(CONFIG_DEFS)
    311 endif
    312 
    313 ifneq ($(MAKECMDGOALS),clean)
    314260-include $(DEPEND)
    315 endif
    316261
    317262OBJECTS := $(addsuffix .o,$(basename $(SOURCES)))
    318263LOBJECTS := $(addsuffix .lo,$(basename $(SOURCES)))
    319 TEST_OBJECTS := $(addsuffix .test.o,$(basename $(TEST_SOURCES)))
    320264
    321265ifneq ($(BINARY),)
     
    353297
    354298ifneq ($(LIBRARY),)
    355 $(LIBRARY).a: $(OBJECTS)
     299%.a: $(OBJECTS)
    356300        $(AR) rc $@ $(OBJECTS)
    357301endif
    358302
    359 ifneq ($(LARCHIVE),)
    360 $(LARCHIVE): $(LOBJECTS)
     303ifneq ($(SLIBRARY),)
     304%.la: $(LOBJECTS)
    361305        $(AR) rc $@ $(LOBJECTS)
    362306endif
    363307
    364 ifneq ($(TEST_OUTPUT),)
    365 $(TEST_OUTPUT): $(LINKER_SCRIPT) $(TEST_OBJECTS) $(TEST_OUTPUT_LIBS)
    366         $(LD) -n $(LFLAGS) -T $(LINKER_SCRIPT) -M -Map $(TEST_OUTPUT).map -o $@ $(TEST_OBJECTS) $(TEST_OUTPUT_LIBS) $(LIBS) $(BASE_LIBS)
    367 ifeq ($(CONFIG_STRIP_BINARIES),y)
    368         $(STRIP) $(TEST_OUTPUT)
    369 endif
    370 endif
    371 
    372308%.o: %.S $(DEPEND)
    373         $(GCC) $(DEFS) $(GCC_CFLAGS) $(EXTRA_CFLAGS) -D__ASM__ -c $< -o $@
    374 ifeq ($(PRECHECK),y)
    375         $(JOBFILE) $(JOB) $< $@ as asm/preproc $(DEFS) $(CFLAGS) $(EXTRA_CFLAGS) -D__ASM__
     309        $(GCC) $(DEFS) $(GCC_CFLAGS) -D__ASM__ -c $< -o $@
     310ifeq ($(PRECHECK),y)
     311        $(JOBFILE) $(JOB) $< $@ as asm/preproc $(DEFS) $(CFLAGS) -D__ASM__
    376312endif
    377313
     
    383319
    384320%.o: %.c $(DEPEND)
    385         $(CC) $(DEFS) $(CFLAGS) $(EXTRA_CFLAGS) -c $< -o $@
    386 ifeq ($(PRECHECK),y)
    387         $(JOBFILE) $(JOB) $< $@ cc core $(DEFS) $(CFLAGS) $(EXTRA_CFLAGS)
    388 endif
    389 
    390 %.test.o: %.c $(DEPEND)
    391         $(CC) $(DEFS) $(CFLAGS) $(EXTRA_CFLAGS) $(TEST_CFLAGS) -c $< -o $@
    392 ifeq ($(PRECHECK),y)
    393         $(JOBFILE) $(JOB) $< $@ cc core $(DEFS) $(CFLAGS) $(EXTRA_CFLAGS) $(TEST_CFLAGS)
     321        $(CC) $(DEFS) $(CFLAGS) -c $< -o $@
     322ifeq ($(PRECHECK),y)
     323        $(JOBFILE) $(JOB) $< $@ cc core $(DEFS) $(CFLAGS)
    394324endif
    395325
    396326%.lo: %.S $(DEPEND)
    397         $(CC) $(DEFS) $(LIB_CFLAGS) $(EXTRA_CFLAGS) -D__ASM__ -c $< -o $@
    398 ifeq ($(PRECHECK),y)
    399         $(JOBFILE) $(JOB) $< $@ as asm/preproc $(DEFS) $(LIB_CFLAGS) $(EXTRA_CFLAGS) -D__ASM__
     327        $(CC) $(DEFS) $(LIB_CFLAGS) -D__ASM__ -c $< -o $@
     328ifeq ($(PRECHECK),y)
     329        $(JOBFILE) $(JOB) $< $@ as asm/preproc $(DEFS) $(CFLAGS) -D__ASM__
    400330endif
    401331
     
    407337
    408338%.lo: %.c $(DEPEND)
    409         $(CC) $(DEFS) $(LIB_CFLAGS) $(EXTRA_CFLAGS) -c $< -o $@
    410 ifeq ($(PRECHECK),y)
    411         $(JOBFILE) $(JOB) $< $@ cc core $(DEFS) $(LIB_CFLAGS) $(EXTRA_CFLAGS)
     339        $(CC) $(DEFS) $(LIB_CFLAGS) -c $< -o $@
     340ifeq ($(PRECHECK),y)
     341        $(JOBFILE) $(JOB) $< $@ cc core $(DEFS) $(CFLAGS)
    412342endif
    413343
    414344$(DEPEND): $(PRE_DEPEND)
    415         makedepend -f - -- $(DEPEND_DEFS) $(CFLAGS) $(EXTRA_CFLAGS) -- $(SOURCES) $(TEST_SOURCES) > $@ 2> /dev/null
     345        makedepend -f - -- $(DEPEND_DEFS) $(CFLAGS) -- $(SOURCES) > $@ 2> /dev/null
    416346        -[ -f $(DEPEND_PREV) ] && diff -q $(DEPEND_PREV) $@ && mv -f $(DEPEND_PREV) $@
    417347
Note: See TracChangeset for help on using the changeset viewer.