]> rtime.felk.cvut.cz Git - l4.git/blobdiff - l4/mk/binary.inc
update
[l4.git] / l4 / mk / binary.inc
index 9b6077b625d1dc34a1d3bc52b9ac7163f37fdf0f..0472e8feac1e981c3321d3d868317a7449279c08 100644 (file)
@@ -40,7 +40,7 @@ ifeq ($(SYSTEM),) # if we have no system yet, build the subdirs
 #################################################################
 
 # our default systems
-SYSTEMS        ?= x86-l4f amd64-l4f arm-l4f ppc32-l4f
+SYSTEMS        ?= $(SYSTEMS_ABI)
 
 BID_MISSING_PKGS := \
    $(strip $(if $(DEPENDS_PKGS), \
@@ -171,9 +171,6 @@ all::               $(TARGET)
 disasm: $(TARGET)
        $(call DISASM_CMD,$(if $(DABIN),$(DABIN),$<))
 
-expand_libdir_noexc     = $(foreach i,$(1),$(i)/noexc $(i))
-expand_libdir_reentrant = $(foreach i,$(1),$(i)/r $(i))
-
 ifneq ($(CONFIG_USE_DROPS_STDDIR),)
 L4INCDIR ?=    $(addprefix $(OBJ_BASE)/include/$(ARCH)/,$(L4API)) \
                 $(addprefix $(OBJ_BASE)/include/,$(L4API)) \
@@ -205,10 +202,6 @@ L4LIBDIR ?=     $(addprefix $(OBJ_BASE)/lib/$(ARCH)_$(CPU)/,$(L4API)) \
                 $(OBJ_BASE)/lib
 endif
 
-L4LIBDIR_R-y  = $(call expand_libdir_reentrant, $(L4LIBDIR))
-L4LIBDIR_R-n  = $(L4LIBDIR)
-L4LIBDIR_NOEXC= $(call expand_libdir_noexc,$(L4LIBDIR_R-$(L4_MULTITHREADED)))
-
 #
 # Variables Section
 #
@@ -268,7 +261,6 @@ REQUIRES_LIBS += $(REQUIRES_LIBS_$(ARCH)) $(call BID_mode_var,REQUIRES_LIBS)
 #CRT0  =  $(word 1, $(CRT0_$@_$(OSYSTEM)) $(CRT0_$@) $(CRT0_$(OSYSTEM)))
 #CRTN  =  $(word 1, $(CRTN_$@_$(OSYSTEM)) $(CRTN_$@) $(CRTN_$(OSYSTEM)))
 LIBS   += $(strip $(LIBS_$(OSYSTEM)) $(LIBS_$@) $(LIBS_$@_$(OSYSTEM)))
-LIBS    += $(REQUIRES_LIBS_LIST)
 
 LDFLAGS        += $(strip $(LDFLAGS_$(OSYSTEM)) $(LDFLAGS_$@) $(LDFLAGS_$@_$(OSYSTEM)))
 
@@ -286,8 +278,16 @@ BID_PKG_CONFIG = $(if $(strip $(3)),                                     \
                    $(shell PKG_CONFIG_LIBDIR=$(1)/pc                     \
                            PKG_CONFIG_PATH= $(L4_BID_PKG_CONFIG)         \
                            --define-variable=incdir=$(1)/include/contrib \
+                           $(if $(VERBOSE),--silence-errors)             \
                           $(2) $(3) || echo __PKGCONFIG_FAILED__))
 
+BID_PKG_CONFIG_MISSING =                                        \
+     $(if $(strip $(3)),                                        \
+          $(shell PKG_CONFIG_LIBDIR=$(1)/pc                     \
+                  PKG_CONFIG_PATH= LANG=C $(L4_BID_PKG_CONFIG)  \
+                  --errors-to-stdout --print-errors $(2) $(3)   \
+                  | LANG=C grep ", not found"))
+
 BID_PKG_CONFIG_FAILED = $(findstring __PKGCONFIG_FAILED__,$(1))
 
 ifeq ($(BID_MISSING_PKGS),)
@@ -297,8 +297,10 @@ ifeq ($(BID_MISSING_PKGS),)
    # error handling
    ifneq ($(call BID_PKG_CONFIG_FAILED,$(REQUIRES_LIBS_LIST)),)
     BID_MISSING_PKGS := $(strip $(foreach i,$(REQUIRES_LIBS), \
-                          $(if $(filter __PKGCONFIG_FAILED__,$(call BID_PKG_CONFIG,$(OBJ_BASE),--print-errors,$(i))),$(i))))
+                          $(if $(filter __PKGCONFIG_FAILED__,$(call BID_PKG_CONFIG,$(OBJ_BASE),--libs --print-errors,$(i))),$(i))))
     text := $(shell echo -e "\033[31mLibrary dependencies missing: \033[1m$(BID_MISSING_PKGS)\033[22m in directory '$(SRC_DIR)'; aborting.\033[0m")
+    text2 := $(strip $(foreach i,$(REQUIRES_LIBS), $(call BID_PKG_CONFIG_MISSING,$(OBJ_BASE),--libs,$(i))))
+    $(if $(text2),$(info $(shell echo -e "\033[31m$(text2)\033[0m")))
     $(if $(BID_MISSING_PKGS),$(info $(text)),$(error $(text)))
    endif
 
@@ -313,8 +315,10 @@ ifeq ($(BID_MISSING_PKGS),)
   # error handling
   ifneq ($(call BID_PKG_CONFIG_FAILED,$(BID_PKG_CONFIG_CFLAGS)),)
    BID_MISSING_PKGS := $(strip $(foreach i,$(REQUIRES_CFLAGS) $(REQUIRES_LIBS), \
-                          $(if $(filter __PKGCONFIG_FAILED__,$(call BID_PKG_CONFIG,$(OBJ_BASE),--print-errors,$(i))),$(i))))
+                          $(if $(filter __PKGCONFIG_FAILED__,$(call BID_PKG_CONFIG,$(OBJ_BASE),--cflags --print-errors,$(i))),$(i))))
    text := $(shell echo -e "\033[31mCflags dependencies missing: \033[1m$(BID_MISSING_PKGS)\033[22m in directory '$(SRC_DIR)'; aborting.\033[0m")
+   text2 := $(strip $(foreach i,$(REQUIRES_LIBS), $(call BID_PKG_CONFIG_MISSING,$(OBJ_BASE),--cflags,$(i))))
+   $(if $(text2),$(info $(shell echo -e "\033[31m$(text2)\033[0m")))
    $(error $(text))
   endif
  endif # SYSTEM
@@ -339,10 +343,12 @@ ifeq ($(MODE),host)
 SYSTEM_TARGET = 
 CC            = $(HOST_CC)
 CXX           = $(HOST_CXX)
+LIBS         += $(REQUIRES_LIBS_LIST)
 else
 # no architecture specific flags in host mode
-LDFLAGS += $(LDFLAGS_$(ARCH))
-OPTS   += $(CARCHFLAGS_$(ARCH)) $(CARCHFLAGS_$(ARCH)_$(CPU))
+LDFLAGS      += $(LDFLAGS_$(ARCH))
+OPTS        += $(CARCHFLAGS_$(ARCH)) $(CARCHFLAGS_$(ARCH)_$(CPU))
+L4_LIBS      += $(REQUIRES_LIBS_LIST)
 endif
 
 # no link address if build a lib or we're compiling a host program and using
@@ -376,7 +382,6 @@ CFLAGS  += $(CFLAGS_C99)
 ifneq ($(MODE),host)
 CFLAGS  += $(GCCNOSTACKPROTOPT)
 endif
-DEFINES-$(L4_MULTITHREADED) += -DL4_THREAD_SAFE
 DEFINES += $(DEFINES_$(OSYSTEM)) $(DEFINES_$(<F)) $(DEFINES_$(<D)) $(DEFINES_$(<F)_$(OSYSTEM))
 DEFINES += -DSYSTEM_$(subst -,_,$(SYSTEM)) -DARCH_$(ARCH) -DCPUTYPE_$(CPU) -DL4API_$(L4API)
 DEFINES += $(DEFINES-y)
@@ -404,12 +409,8 @@ ifneq ($(MODE),host)
 CPPFLAGS+= $(addprefix -I, $(L4INCDIR))
 endif
 CPPFLAGS+= $(if $(DEBUG_MODE),$(CPPFLAGS-DEBUG_MODE))
-CPPFLAGS+= $(if $(filter $(L4_MULTITHREADED),y),-DL4_THREAD_SAFE)
 CPPFLAGS+= $(LIBCINCDIR)
 
-CXXFLAGS_NOEXC = -DL4_NO_RTTI -fno-rtti -fno-exceptions
-CXXFLAGS-$(BID_INT_NOEXC) = $(CXXFLAGS_NOEXC)
-
 CXXFLAGS+= $(if $(CONFIG_BID_GCC_OMIT_FP),-fomit-frame-pointer,)
 CXXFLAGS+= $(CXXFLAGS_$(OSYSTEM))
 CXXFLAGS+= $(CXXFLAGS_$(@:.o=.cc))  $(CXXFLAGS_$(@:.o=.cc)_$(OSYSTEM))
@@ -421,7 +422,7 @@ ifneq ($(MODE),host)
 CXXFLAGS+= $(GCCNOSTACKPROTOPT)
 endif
 
-PICFLAGS = -fPIC -U__PIC__ -D__PIC__=1
+PICFLAGS += -fPIC -U__PIC__ -D__PIC__=1
 
 ASFLAGS += $(OPTS) $(ASFLAGS_$(ARCH)) $(ASFLAGS_$(@:.o=.S)) $(ASFLAGS_$(@:.o=.S)_$(OSYSTEM))
 OBJS   += $(strip $(OBJS_$(OSYSTEM)) $(OBJS_$@) $(OBJS_$@_$(OSYSTEM)))
@@ -515,7 +516,7 @@ OBJDIRS = $(strip $(sort $(filter-out ./,$(dir                              \
 # dependencies which are dynamically generated. Unfortunately, make does
 # not support variable declarations using the foreach function. Same
 # for rules.
-$(BID_OBJ_Makefile).inc: .general.d
+$(BID_OBJ_Makefile).inc: .general.d $(BID_RAM_BASE_DEP)
        @$(BUILD_MESSAGE)
        @$(ECHO) "# automatically generated, do not edit!" >$@_
         # write helper variables containing the IDL-C-Sources
@@ -572,8 +573,6 @@ $(BID_OBJ_Makefile).inc: .general.d
         # create the object-dirs
        @$(if $(OBJDIRS), $(VERBOSE)set -e; for d in $(OBJDIRS); do     \
                [ -d "$$d" ] || $(MKDIR) $$d; done )
-       @[ -d "noexc" ] || $(MKDIR) noexc
-       @[ -d "r" ] || $(MKDIR) r
 
         #
         # write the object-dependencies for the targets
@@ -606,7 +605,7 @@ ifneq ($(wildcard $(STATICFILE)),)
        @$(ECHO) -e '\n$@: $(firstword $(wildcard $(STATICFILE)))' >>$@_
         # we find out the relocation address here.
        @$(ECHO) -e '$(foreach target, $(TARGET),$(strip                \
-               \nLDFLAGS_$(target)+= -Ttext=$(firstword                \
+               \nLDFLAGS_$(target)+= -Ttext=__executable_start=$(firstword             \
                        $(shell $(AWKP) -v prog=$(target)               \
                                "/^[^\#]/{if(\$$2==prog){print $$1; exit}}" \
                                < $(firstword $(wildcard $(STATICFILE)))) \
@@ -620,7 +619,7 @@ else
                >>$@_
         # we find out the relocation address here.
        @$(ECHO) -e '$(foreach target, $(TARGET),$(strip                \
-               \nLDFLAGS_$(target)+= -Ttext=$(firstword                \
+               \nLDFLAGS_$(target)+=  --defsym=__executable_start=$(firstword          \
                        $(call default_reloc,$(target)))))'     \
                >>$@_
 endif # STATIC file
@@ -696,96 +695,28 @@ DEPEND_FLAG = -MD
 
 .PHONY: FORCE
 endif # CONFIG_HAVE_LDSO empty
+DEPFLAGS = -MD -MF $(@D)/.$(@F).d
 
-%.o:   %.cc
-       @$(COMP_MESSAGE)
-       $(VERBOSE)$(call MAKEDEP,$(INT_CXX_NAME)) $(CXX) -c $(DEPEND_FLAG) $(CPPFLAGS) $(CXXFLAGS) $(call absfilename,$<) -o $@
-       $(DEPEND_VERBOSE)$(call DEPEND_EXTEND_FUNC, $(*F).d, $(dir $@).$(notdir $@).d)
+include $(L4DIR)/mk/rules.inc
 
-%.ne.o:        %.cc
-       @$(COMP_MESSAGE)
-       $(VERBOSE)$(call MAKEDEP,$(INT_CXX_NAME)) $(CXX) -c $(DEPEND_FLAG) $(CPPFLAGS) $(CXXFLAGS_NOEXC) $(CXXFLAGS) $(call absfilename,$<) -o $@
-       $(DEPEND_VERBOSE)$(call DEPEND_EXTEND_FUNC, $(*F).d, $(dir $@).$(notdir $@).d)
+# generate rules to compile %.cc files to %.o, %.s.o etc
+$(eval $(call BID_GENERATE_CXX_MAKE_RULES,cc))
+# generate rules to compile %.cpp files to %.o, %.s.o etc
+$(eval $(call BID_GENERATE_CXX_MAKE_RULES,cpp))
+# generate rules to compile %.c files to %.o, %.s.o etc
+$(eval $(call BID_GENERATE_C_MAKE_RULES,c))
+# generate rules to compile %.S files to %.o, %.s.o etc
+$(eval $(call BID_GENERATE_DEFAULT_MAKE_RULES,%,%.S,AS))
 
-%.s.o: %.cc
-       @$(COMP_MESSAGE)
-       $(VERBOSE)$(call MAKEDEP,$(INT_CXX_NAME)) $(CXX) -c $(DEPEND_FLAG) $(CPPFLAGS) $(CXXFLAGS) $(PICFLAGS) $(call absfilename,$<) -o $@
-       $(DEPEND_VERBOSE)$(call DEPEND_EXTEND_FUNC, $(*F).d, $(dir $@).$(notdir $@).d)
+# Reset implicit rules, mind the TAB.
+%:     %.c
+       
 
-%.s.ne.o: %.cc
-       @$(COMP_MESSAGE)
-       $(VERBOSE)$(call MAKEDEP,$(INT_CXX_NAME)) $(CXX) -c $(DEPEND_FLAG) $(CPPFLAGS) $(CXXFLAGS_NOEXC) $(CXXFLAGS) $(PICFLAGS) $(call absfilename,$<) -o $@
-       $(DEPEND_VERBOSE)$(call DEPEND_EXTEND_FUNC, $(*F).d, $(dir $@).$(notdir $@).d)
+%:     %.cc
+       
 
-%.pr.o:        %.cc
-       @$(COMP_MESSAGE)
-       $(VERBOSE)$(call MAKEDEP,$(INT_CXX_NAME)) $(CXX) -c $(DEPEND_FLAG) $(CPPFLAGS) $(CXXFLAGS) -DPROFILE -pg $(call absfilename,$<) -o $@
-       $(DEPEND_VERBOSE)$(call DEPEND_EXTEND_FUNC, $(*F).d, $(dir $@).$(notdir $@).d)
-
-%.pr.s.o: %.cc
-       @$(COMP_MESSAGE)
-       $(VERBOSE)$(call MAKEDEP,$(INT_CXX_NAME)) $(CXX) -c $(DEPEND_FLAG) $(CPPFLAGS) $(CXXFLAGS) $(PICFLAGS) -DPROFILE -pg $(call absfilename,$<) -o $@
-       $(DEPEND_VERBOSE)$(call DEPEND_EXTEND_FUNC, $(*F).d, $(dir $@).$(notdir $@).d)
-
-%.o:   %.cpp
-       @$(COMP_MESSAGE)
-       $(VERBOSE)$(call MAKEDEP,$(INT_CXX_NAME)) $(CXX) -c $(DEPEND_FLAG) $(CPPFLAGS) $(CXXFLAGS) $(call absfilename,$<) -o $@
-       $(DEPEND_VERBOSE)$(call DEPEND_EXTEND_FUNC, $(*F).d, $(dir $@).$(notdir $@).d)
-
-%.s.o: %.cpp
-       @$(COMP_MESSAGE)
-       $(VERBOSE)$(call MAKEDEP,$(INT_CXX_NAME)) $(CXX) -c $(DEPEND_FLAG) $(CPPFLAGS) $(CXXFLAGS) $(PICFLAGS) $(call absfilename,$<) -o $@
-       $(DEPEND_VERBOSE)$(call DEPEND_EXTEND_FUNC, $(*F).d, $(dir $@).$(notdir $@).d)
-
-%.pr.o:        %.cpp
-       @$(COMP_MESSAGE)
-       $(VERBOSE)$(call MAKEDEP,$(INT_CXX_NAME)) $(CXX) -c $(DEPEND_FLAG) $(CPPFLAGS) $(CXXFLAGS) -DPROFILE -pg $(call absfilename,$<) -o $@
-       $(DEPEND_VERBOSE)$(call DEPEND_EXTEND_FUNC, $(*F).d, $(dir $@).$(notdir $@).d)
-
-%.pr.s.o: %.cpp
-       @$(COMP_MESSAGE)
-       $(VERBOSE)$(call MAKEDEP,$(INT_CXX_NAME)) $(CXX) -c $(DEPEND_FLAG) $(CPPFLAGS) $(CXXFLAGS) $(PICFLAGS) -DPROFILE -pg $(call absfilename,$<) -o $@
-       $(DEPEND_VERBOSE)$(call DEPEND_EXTEND_FUNC, $(*F).d, $(dir $@).$(notdir $@).d)
-
-%.o:   %.c
-       @$(COMP_MESSAGE)
-       $(VERBOSE)$(call MAKEDEP,$(INT_CPP_NAME)) $(CC) -c $(DEPEND_FLAG) $(CPPFLAGS) $(CFLAGS) $(call absfilename,$<) -o $@
-       $(DEPEND_VERBOSE)$(call DEPEND_EXTEND_FUNC, $(*F).d, $(dir $@).$(notdir $@).d)
-
-%.s.o: %.c
-       @$(COMP_MESSAGE)
-       $(VERBOSE)$(call MAKEDEP,$(INT_CPP_NAME)) $(CC) -c $(DEPEND_FLAG) $(CPPFLAGS) $(CFLAGS) $(PICFLAGS) $(call absfilename,$<) -o $@
-       $(DEPEND_VERBOSE)$(call DEPEND_EXTEND_FUNC, $(*F).d, $(dir $@).$(notdir $@).d)
-
-%.pr.o:        %.c
-       @$(COMP_PR_MESSAGE)
-       $(VERBOSE)$(call MAKEDEP,$(INT_CPP_NAME)) $(CC) -c $(DEPEND_FLAG) $(CPPFLAGS) $(CFLAGS) -DPROFILE -pg $(call absfilename,$<) -o $@
-       $(DEPEND_VERBOSE)$(call DEPEND_EXTEND_FUNC, $(*F).d, $(dir $@).$(notdir $@).d)
-
-%.pr.s.o: %.c
-       @$(COMP_PR_MESSAGE)
-       $(VERBOSE)$(call MAKEDEP,$(INT_CPP_NAME)) $(CC) -c $(DEPEND_FLAG) $(CPPFLAGS) $(CFLAGS) $(PICFLAGS) -DPROFILE -pg $(call absfilename,$<) -o $@
-       $(DEPEND_VERBOSE)$(call DEPEND_EXTEND_FUNC, $(*F).d, $(dir $@).$(notdir $@).d)
-
-%.o:   %.S
-       @$(COMP_MESSAGE)
-       $(VERBOSE)$(call MAKEDEP,$(INT_CPP_NAME)) $(CC) -c $(DEPEND_FLAG) $(CPPFLAGS) $(ASFLAGS) $(call absfilename,$<) -o $@
-       $(DEPEND_VERBOSE)$(call DEPEND_EXTEND_FUNC, $(*F).d, $(dir $@).$(notdir $@).d)
-
-%.s.o: %.S
-       @$(COMP_MESSAGE)
-       $(VERBOSE)$(call MAKEDEP,$(INT_CPP_NAME)) $(CC) -c $(DEPEND_FLAG) $(CPPFLAGS) $(ASFLAGS) $(PICFLAGS) $(call absfilename,$<) -o $@
-       $(DEPEND_VERBOSE)$(call DEPEND_EXTEND_FUNC, $(*F).d, $(dir $@).$(notdir $@).d)
-
-%.pr.o:        %.S
-       @$(COMP_MESSAGE)
-       $(VERBOSE)$(call MAKEDEP,$(INT_CPP_NAME)) $(CC) -c $(DEPEND_FLAG) $(CPPFLAGS) $(ASFLAGS) -DPROFILE -pg $(call absfilename,$<) -o $@
-       $(DEPEND_VERBOSE)$(call DEPEND_EXTEND_FUNC, $(*F).d, $(dir $@).$(notdir $@).d)
-
-%.pr.s.o: %.S
-       @$(COMP_MESSAGE)
-       $(VERBOSE)$(call MAKEDEP,$(INT_CPP_NAME)) $(CC) -c $(DEPEND_FLAG) $(CPPFLAGS) $(ASFLAGS) $(PICFLAGS) -DPROFILE -pg $(call absfilename,$<) -o $@
-       $(DEPEND_VERBOSE)$(call DEPEND_EXTEND_FUNC, $(*F).d, $(dir $@).$(notdir $@).d)
+%:     %.S
+       
 
 %.c:   %.y
        @$(GEN_MESSAGE)