.EXPORT_ALL_VARIABLES: ############################################################################ # # A Generic ARMk config.arch that can be included by other platforms # to reduce the number of places that need to be edited when something # common changes. If you include this file you may provide: # # CPUFLAGS - cpu specific flags to pass to the compiler # VENDOR_CFLAGS - vendor specific flags to pass to the compiler # DISABLE_XIP - set this to 1 to disable XIP code # DISABLE_SHARED_LIBS - set this to 1 to disable shared libraries # DISABLE_MOVE_RODATA - set this to 1 to disable moving rodata to text # LOPT - library optimisation flags # UOPT - user optimisation flags # LD_OPTION - linker flags (not for the linux kernel) # # David McCullough # ############################################################################ # # Generic settings # ifndef CONSOLE_BAUD_RATE CONSOLE_BAUD_RATE = 9600 endif ifeq ($(ROOTDIR)/modules,$(wildcard $(ROOTDIR)/modules)) EXTRA_MODULE_DIRS = $(ROOTDIR)/modules endif ifndef VERSIONPKG #define VERSIONPKG 1.0.0 endif ifndef VERSIONSTR VERSIONSTR = $(CONFIG_VENDOR)/$(CONFIG_PRODUCT) Version $(VERSIONPKG) endif ifndef RELFILES RELFILES = boot/boot.bin,.sgb boot/boot.elf images/imagez.bin,.sgu images/image.elf endif ifndef NFIMAGE NFIMAGE=imagez.bin endif ############################################################################ # # The makefiles need to know how to do things in different contexts # To save some pain we put it all here # # First settings we always want for all builds # # ARCH = kernel, TARGET_ARCH = uClibc MACHINE = arm ifdef CONFIG_DEFAULTS_KERNEL_2_6 ARCH = arm else ARCH = armnommu endif ENDIAN ?= little CROSS_COMPILE = arm-linux-elf- CROSS = $(CROSS_COMPILE) CC = ucfront-gcc $(CROSS_COMPILE)gcc $(CPUFLAGS) AS = $(CROSS_COMPILE)as $(CPUFLAGS) CXX = ucfront-g++ $(CROSS_COMPILE)g++ $(CPUFLAGS) AR = $(CROSS_COMPILE)ar LD = $(CROSS_COMPILE)ld OBJCOPY = $(CROSS_COMPILE)objcopy RANLIB = $(CROSS_COMPILE)ranlib ELF2FLT = elf2flt STRIPTOOL = $(CROSS_COMPILE)strip STRIP = $(STRIPTOOL) UCLINUX_BUILD_SET = 0 # have we set a special config below # Pull in common definitions include $(ROOTDIR)/vendors/config/common/config.arch ifndef DISABLE_SHARED_LIBS ifeq ($(CONFIG_BINFMT_SHARED_FLAT),y) BUILD_SHARED = 1 endif endif ############################################################################ # # General purpose lib building rules, uClibc.config uses these when # possible # ifdef UCLINUX_BUILD_LIB ifdef CONFIG_LIB_DEBUG CFLAGS := $(if $(LOPT),$(LOPT),-O1) -g else CFLAGS := $(if $(LOPT),$(LOPT),-O2) -g -fomit-frame-pointer endif CFLAGS += -fno-common -fno-builtin -Wall #-Werror CFLAGS += $(VENDOR_CFLAGS) -DEMBED ifdef BUILD_SHARED CFLAGS += -mid-shared-library else ifndef DISABLE_XIP CFLAGS += -D__PIC__ -fpic -msingle-pic-base endif endif # don't want all the CFLAGS for uClibc/Config ARCH_CFLAGS := $(CPUFLAGS) $(CFLAGS) CFLAGS += -Dlinux -D__linux__ -Dunix CFLAGS += -D__uClinux__ LDFLAGS += -Wl,-elf2flt ifndef DISABLE_MOVE_RODATA LDFLAGS += -Wl,-move-rodata endif ifdef BUILD_SHARED LDFLAGS += -mid-shared-library -mshared-library-id=0 -Wl,-shared-lib-id=0 else ifndef DISABLE_XIP LDFLAGS += -D__PIC__ -fpic -msingle-pic-base endif endif LDFLAGS += $(LD_OPTION) UCLINUX_BUILD_SET=1 endif ############################################################################ # # Settings for building user apps # ifdef UCLINUX_BUILD_USER ifdef BUILD_SHARED # We use a special shared libc LIBC = -Wl,-R,$(ROOTDIR)/lib/libc.gdb $(SLIBC) endif ifdef CONFIG_USER_DEBUG CFLAGS := $(if $(UOPT),$(UOPT),-O1) -g else CFLAGS := $(if $(UOPT),$(UOPT),-O2) -g -fomit-frame-pointer endif CFLAGS += -fno-common -fno-builtin -Wall #-Werror CFLAGS += $(VENDOR_CFLAGS) -DEMBED ifdef BUILD_SHARED CFLAGS += -mid-shared-library -mshared-library-id=0 else ifndef DISABLE_XIP CFLAGS += -D__PIC__ -fpic -msingle-pic-base endif endif # don't want all the CFLAGS for uClibc/Config ARCH_CFLAGS := $(CFLAGS) CFLAGS += -Dlinux -D__linux__ -Dunix CFLAGS += -D__uClinux__ LDFLAGS += -Wl,-elf2flt ifndef DISABLE_MOVE_RODATA LDFLAGS += -Wl,-move-rodata endif ifdef BUILD_SHARED LDFLAGS += -mid-shared-library -mshared-library-id=0 -Wl,-shared-lib-id=0 else ifndef DISABLE_XIP LDFLAGS += -D__PIC__ -fpic -msingle-pic-base endif endif ifndef FLTFLAGS FLTFLAGS := endif export FLTFLAGS # for anyone still using it CONVERT = /bin/true LDFLAGS += $(LD_OPTION) UCLINUX_BUILD_SET=1 endif ############################################################################ # # fall through, do other config options perhaps # ifeq ($(UCLINUX_BUILD_SET),1) EXTRA_CFLAGS := $(CPUFLAGS) CXXFLAGS = $(CFLAGS) #-fno-exceptions # C++ headers, linked into the DSLINUX source tree # use -I because the c++ dirs have to come before the other system dirs. ifdef CONFIG_LIB_UCLIBCPP CXXFLAGS += -I $(UCLIBCPP_INCDIR) CXXFLAGS += -fno-builtin CXXFLAGS += -nostdinc++ CXXFLAGS += -DGCC_HASCLASSVISIBILITY #CXXFLAGS += -fno-rtti LIBGCC :=$(shell $(CXX) $(CXXFLAGS) -print-libgcc-file-name) LIBGCC_DIR:=$(dir $(LIBGCC)) CXXLIBS = $(CXXSUP) CXXLIBS += -luClibc++ CXXLIBS += -L$(LIBGCC_DIR) CXXLIBS += -lsupc++ # Definitions for the inclusion of static constructors CRTBEGIN := $(shell $(CXX) $(CXXFLAGS) -print-file-name=crtbegin.o) CRTEND := $(shell $(CXX) $(CXXFLAGS) -print-file-name=crtend.o) endif # be compatible for old style c++ includes CXXFLAGS += -Wno-deprecated LDLIBS = $(LIBBIND) endif ############################################################################