⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 makefile.rules

📁 一个linux下rs485驱动程序的源代码
💻 RULES
📖 第 1 页 / 共 3 页
字号:
	then mv -f "$$@.d.tmp" "$$@.d" ; \	else rm -f "$$@.d.tmp" ; exit 1; \	fiendef# Syntax: $(call COMPILE_cc_o_template,<source>,<target>,<additional c-flags>)define COMPILE_cc_o_template$(2): $(1) $(LOCAL_CONFIG_H) $$(GEN_HEADERS)	@$(QUIET_CMD_ECHO) "  CXX     $$@"	$(Q) if $$(cc_o_COMPILE) $$(CC_DEPFLAGS) $(3) -o $$@ -c $$< ; \	then mv -f "$$@.d.tmp" "$$@.d" ; \	else rm -f "$$@.d.tmp" ; exit 1; \	fiendef# Syntax: $(call COMPILE_S_o_template,<source>,<target>,<additional c-flags>)define COMPILE_S_o_template$(2): $(1) $(LOCAL_CONFIG_H) $$(GEN_HEADERS)        @$(QUIET_CMD_ECHO) "  AS      $$@"        $(Q) if $$(S_o_COMPILE) -D__ASSEMBLY__ $$(CC_DEPFLAGS) $(3) -o $$@ -c $$< ; \        then if [ -e "$$@.d.tmp" ] ; then mv -f "$$@.d.tmp" "$$@.d" ; fi ; \        else rm -f "$$@.d.tmp" ; exit 1; \        fiendef# Syntax: $(call CMETRIC_o_h_template,<object_file>,<target_header>)define CMETRIC_o_h_template$(2): $(1)	@$(QUIET_CMD_ECHO) "  CMETRIC $$@"	$(Q)if [ -n `dirname $$@` ] ; then \	      if [ ! -e `dirname $$@` ] ; then \	        mkdir -p `dirname $$@` ; fi ; fi	$(Q)echo >$$@ '/* Automatically generated from $$< */'	$(Q)echo >>$$@ '/* Conditionals to control compilation */'	$(Q)set -o pipefail ; $(NM) $$< \		| sed -n 's/^ *0*\(0[0-9A-Fa-f]*\) *A *_cmetric2cond_\([A-Za-z_0-9]*\) */#define \2 0x\1/p' \		| sort >>$$@	$(Q)echo >>$$@ '/* Defines from the values defined to symbols */'	$(Q)set -o pipefail ; $(NM) $$< \		| sed -n 's/^ *0*\(0[0-9A-Fa-f]*\) *A *_cmetric2def_\([A-Za-z_0-9]*\) */#define \2 0x\1/p' \		| sort >>$$@endefdefine COMPILE_idl_template$(2).c $(2)-stubs.c $(2)-skels.c $(2)-common.c $(2).h: $(1)	@$(QUIET_CMD_ECHO) "  IDL     $$@"	$(Q) $$(idl_COMPILE) $(1)endef# Syntax: $(call PROGRAM_template,<dir>,<executable-name>,<executable-suffix>,<linker-sript>)define PROGRAM_templateUSER_IDLS  += $$($(1)_SERVER_IDL) $$($(1)_CLIENT_IDL) $$($(1)_IDL)$(1)_GEN_SOURCES += $$(filter %.c,$$($(1)_SERVER_IDL:%.idl=%-skels.c))$(1)_GEN_SOURCES += $$(filter %.c,$$($(1)_SERVER_IDL:%.idl=%-common.c))$(1)_GEN_SOURCES += $$(filter %.c,$$($(1)_CLIENT_IDL:%.idl=%-stubs.c))$(1)_GEN_SOURCES += $$(filter %.c,$$($(1)_CLIENT_IDL:%.idl=%-common.c))$(1)_GEN_SOURCES += $$(filter %.c,$$($(1)_IDL:%.idl=%.c))USER_GEN_SOURCES += $$($(1)_GEN_SOURCES)$(foreach x, $(USER_SOURCES2OBJS),$(1)_OBJS += $$(patsubst %$(notdir $(x)),%$(dir $(x)),$$(filter %$(notdir $(x)),\		$$($(1)_SOURCES) $$($(1)_GEN_SOURCES))))$(1)_OBJS := $$(sort $$($(1)_OBJS:%/=%))USER_OBJS  += $$($(1)_OBJS)USER_SOURCES += $$($(1)_SOURCES)$(2)/$(1): $$($(1)_OBJS)	@$(QUIET_CMD_ECHO) "  LINK    $$@"	$(Q) $$(shell if [ -z "$$(filter %.cc,$$($(1)_SOURCES:%.cxx=%.cc))" ] ; then echo $$(CC) ; else echo $$(CXX) ; fi) \	  $$($(1)_OBJS) $$($(1)_LIBS:%=-l%) $$(LOADLIBES) $$(LDFLAGS) -Wl,-Map,$(USER_OBJS_DIR)/$(1).exe.map -o $(2)/$(1)	@echo "$(2)/$(1): \\" >$(USER_OBJS_DIR)/$(1).exe.d	@sed -n -e 's/^LOAD \(.*\)$$$$/  \1  \\/p' $(USER_OBJS_DIR)/$(1).exe.map  >>$(USER_OBJS_DIR)/$(1).exe.d	@echo >>$(USER_OBJS_DIR)/$(1).exe.dendef# Syntax: $(call LIBRARY_template,<library-name>)define LIBRARY_templateUSER_IDLS  += $$($(1)_SERVER_IDL) $$($(1)_CLIENT_IDL) $$($(1)_IDL)$(1)_GEN_SOURCES += $$(filter %.c,$$($(1)_SERVER_IDL:%.idl=%-skels.c))$(1)_GEN_SOURCES += $$(filter %.c,$$($(1)_SERVER_IDL:%.idl=%-common.c))$(1)_GEN_SOURCES += $$(filter %.c,$$($(1)_CLIENT_IDL:%.idl=%-stubs.c))$(1)_GEN_SOURCES += $$(filter %.c,$$($(1)_CLIENT_IDL:%.idl=%-common.c))$(1)_GEN_SOURCES += $$(filter %.c,$$($(1)_IDL:%.idl=%.c))USER_GEN_SOURCES += $$($(1)_GEN_SOURCES)$(foreach x, $(USER_SOURCES2OBJS),$(1)_OBJS += $$(patsubst %$(notdir $(x)),%$(dir $(x)),$$(filter %$(notdir $(x)),\		$$($(1)_SOURCES) $$($(1)_GEN_SOURCES))))$(1)_OBJS := $$(sort $$($(1)_OBJS:%/=%))USER_OBJS  += $$($(1)_OBJS)USER_SOURCES += $$($(1)_SOURCES)$(USER_LIB_DIR)/lib$(1).a: $$($(1)_OBJS)	@$(QUIET_CMD_ECHO) "  AR      $$@"	$(Q) $(AR) rcs $$@ $$^endef# Syntax: $(call SOLIB_template,<library-name>)define SOLIB_templateUSER_IDLS  += $$($(1)_SERVER_IDL) $$($(1)_CLIENT_IDL) $$($(1)_IDL)$(1)_GEN_SOURCES += $$(filter %.c,$$($(1)_SERVER_IDL:%.idl=%-skels.c))$(1)_GEN_SOURCES += $$(filter %.c,$$($(1)_SERVER_IDL:%.idl=%-common.c))$(1)_GEN_SOURCES += $$(filter %.c,$$($(1)_CLIENT_IDL:%.idl=%-stubs.c))$(1)_GEN_SOURCES += $$(filter %.c,$$($(1)_CLIENT_IDL:%.idl=%-common.c))$(1)_GEN_SOURCES += $$(filter %.c,$$($(1)_IDL:%.idl=%.c))SOLIB_GEN_SOURCES += $$($(1)_GEN_SOURCES)$(foreach x, $(USER_SOURCES2OBJSLO),$(1)_OBJSLO += $$(patsubst %$(notdir $(x)),%$(dir $(x)),$$(filter %$(notdir $(x)),\		$$($(1)_SOURCES) $$($(1)_GEN_SOURCES))))$(1)_OBJSLO := $$(sort $$($(1)_OBJSLO:%/=%))SOLIB_OBJS  += $$($(1)_OBJSLO)SOLIB_SOURCES += $$($(1)_SOURCES)$(USER_LIB_DIR)/lib$(1).$(SOLIB_EXT): $$($(1)_OBJSLO)	@$(QUIET_CMD_ECHO) "  LINK    $$@"	$(Q) $(LD) --shared --soname=lib$(1).$(SOLIB_EXT) -o $$@ $$^ $$(LOADLIBES) $$(LDFLAGS) endeflibrary-pass-local: $(addprefix $(USER_INCLUDE_DIR)/,$(cmetric_include_HEADERS)) \		    $(lib_LIBRARIES:%=$(USER_LIB_DIR)/lib%.a) $(shared_LIBRARIES:%=$(USER_LIB_DIR)/lib%.$(SOLIB_EXT))binary-pass-local: $(bin_PROGRAMS:%=$(USER_BIN_DIR)/%)utils-pass-local: $(utils_PROGRAMS:%=$(USER_UTILS_DIR)/%)# Special rules for CMETRIC generated headers$(foreach cmetrh,$(cmetric_include_HEADERS),$(eval $(call COMPILE_c_o_template,\		$(SOURCES_DIR)/$($(basename $(notdir $(cmetrh)))_CMETRIC_SOURCES),\		$($(basename $(notdir $(cmetrh)))_CMETRIC_SOURCES:%.c=%.o),)))$(foreach cmetrh,$(cmetric_include_HEADERS),$(eval $(call CMETRIC_o_h_template,\		$($(basename $(notdir $(cmetrh)))_CMETRIC_SOURCES:%.c=%.o),\		$(addprefix $(USER_INCLUDE_DIR)/,$(cmetrh)))))GEN_HEADERS+=$(cmetric_include_HEADERS:%=$(USER_INCLUDE_DIR)/%)GEN_HEADERS+=$(filter %.h,$(USER_IDLS:%.idl=%.h))# Generate rules for compilation of programs and libraries$(foreach prog,$(utils_PROGRAMS),$(eval $(call PROGRAM_template,$(prog),$(USER_UTILS_DIR))))$(foreach prog,$(bin_PROGRAMS),$(eval $(call PROGRAM_template,$(prog),$(USER_BIN_DIR))))$(foreach lib,$(lib_LIBRARIES),$(eval $(call LIBRARY_template,$(lib))))$(foreach lib,$(shared_LIBRARIES),$(eval $(call SOLIB_template,$(lib))))-include $(USER_OBJS_DIR)/*.dendif#=====================================================================# Kernel-space rules and templates to compile modules, libraries etc.ifdef KERN_RULE_TEMPLATES$(KERN_LIB_DIR)/kernel.mk: $(LINUX_DIR)/.config $(MAKERULES_DIR)/kernelcfg2mk	@$(QUIET_CMD_ECHO) "  KCFG2MK $$@"	$(Q) $(MAKERULES_DIR)/kernelcfg2mk $(LINUX_DIR) $(KERN_LIB_DIR)ifeq ($(CONFIG_RTLINUX),y)include $(RTL_DIR)/rtl.mkKERN_CC = $(CC)kern_GCCLIB_DIR=$(shell LANG=C LC_ALL=C LC_MESSAGES=C $(CC) -print-search-dirs | sed -n -e 's/^install: \(.*\)$$/\1/p' )INCLUDES := -I $(KERN_INCLUDE_DIR) $(INCLUDE) $(rtlinux_INCLUDES) $(kernel_INCLUDES)#-DEXPORT_NO_SYMBOLSc_o_kern_COMPILE = $(KERN_CC) -idirafter $(kern_GCCLIB_DIR)/include $(INCLUDES)  $(CFLAGS) -DOMK_FOR_KERNEL -DEXPORT_SYMTAB -nostdinccc_o_kern_COMPILE = $(CXX) $(INCLUDES) $(CXXFLAGS) -DOMK_FOR_KERNEL -DEXPORT_SYMTABKERN_EXE_SUFFIX := .oKERN_ARCH = $(ARCH)KERN_LD = $(LD)KERN_AR = $(AR)else # CONFIG_RTLINUXinclude $(KERN_LIB_DIR)/kernel.mkifeq ($(LINUX_SRC),)LINUX_SRC = $(LINUX_DIR)endifkernel_INCLUDES += -I $(LINUX_DIR) -idirafter $(LINUX_SRC)/include/linuxifdef LINUX_CCKERN_CC = $(LINUX_CC)kern_GCCLIB_DIR=$(shell LANG=C LC_ALL=C LC_MESSAGES=C $(LINUX_CC) -print-search-dirs | sed -n -e 's/^install: \(.*\)$$/\1/p' )elseKERN_CC = echo KERN_CC not defined - compilation skippedendifc_o_kern_COMPILE = $(KERN_CC) $(kernel_INCLUDES) -idirafter $(kern_GCCLIB_DIR)/include $(LINUX_CPPFLAGS) $(LINUX_CFLAGS) $(LINUX_CFLAGS_MODULE) -DOMK_FOR_KERNEL -DEXPORT_SYMTAB -nostdinccc_o_kern_COMPILE = $(KERN_CC) $(kernel_INCLUDES) -idirafter $(kern_GCCLIB_DIR)/include $(LINUX_CPPFLAGS) $(LINUX_CFLAGS) $(LINUX_CFLAGS_MODULE) -DOMK_FOR_KERNEL -DEXPORT_SYMTABKERN_EXE_SUFFIX := $(LINUX_MODULE_EXT)KERN_LDFLAGS = $(LINUX_LDFLAGS)ifdef LINUX_ARCHKERN_ARCH = $(LINUX_ARCH)elseKERN_ARCH = echo KERN_ARCH not defined - skippedendififdef LINUX_LDKERN_LD = $(LINUX_LD)elseKERN_LD = echo KERN_LD  not defined - skippedendififneq ($(LINUX_AR),)KERN_AR = $(LINUX_AR)elseKERN_AR = $(AR)endififeq ($(LINUX_QUOTE_MODNAME),y)KERN_MQ=\"endifendif # CONFIG_RTLINUXKERN_LOADLIBES += -L$(KERN_LIB_DIR) KERN_LOADLIBES += $(rtlinux_LOADLIBES:%=-l%)KERN_LOADLIBES += $(kernel_LOADLIBES:%=-l%)# Check GCC version for kernel part of buildifndef kern_CC_MAJOR_VERSIONkern_CC_MAJOR_VERSION := $(shell $(KERN_CC) -dumpversion | sed -e 's/\([^.]\)\..*/\1/')endif# Prepare suitable define for dependency buildingifeq ($(kern_CC_MAJOR_VERSION),2)kern_CC_DEPFLAGS = -Wp,-MD,"$@.d.tmp"elsekern_CC_DEPFLAGS = -MT $@ -MD -MP -MF "$@.d.tmp"endififeq ($(KERN_EXE_SUFFIX),.ko)ifeq ($(wildcard $(LINUX_DIR)/scripts/mod/modpost),)KERN_MODPOST = $(LINUX_DIR)/scripts/modpostelseKERN_MODPOST = $(LINUX_DIR)/scripts/mod/modpostendifKERN_MODULES_LINK_DIR = $(KERN_MODPOST_DIR)KERN_LINK_SUFFIX = .oelseKERN_MODULES_LINK_DIR = $(KERN_MODULES_DIR)KERN_LINK_SUFFIX = $(KERN_EXE_SUFFIX)endifdefine COMPILE_c_o_kern_template$(2): $(1) $(LOCAL_CONFIG_H)	@$(QUIET_CMD_ECHO) "  CC [K]  $$@"	$(Q) if $$(c_o_kern_COMPILE) $$(kern_CC_DEPFLAGS) $(3) -D"KBUILD_BASENAME=$(KERN_MQ)$(notdir $(basename $(1)))$(KERN_MQ)" \	-o $$@ -c $$< ; \	then mv -f "$$@.d.tmp" "$$@.d" ; \	else rm -f "$$@.d.tmp" ; exit 1; \	fiendefdefine COMPILE_cc_o_kern_template$(2): $(1) $(LOCAL_CONFIG_H)	@$(QUIET_CMD_ECHO) "  CXX [K] $$@"	$(Q) if $$(cc_o_kern_COMPILE) $$(kern_CC_DEPFLAGS) $(3) -D"KBUILD_BASENAME=$(KERN_MQ)$(notdir $(basename $(1)))$(KERN_MQ)" \	-o $$@ -c $$< ; \	then mv -f "$$@.d.tmp" "$$@.d" ; \	else rm -f "$$@.d.tmp" ; exit 1; \	fiendefdefine MODULE_kern_template$(1)_OBJS += $$(filter %.o,$$($(1)_SOURCES:%.c=%.o))$(1)_OBJS += $$(filter %.o,$$($(1)_SOURCES:%.cc=%.o))$(1)_OBJS += $$(filter %.o,$$($(1)_SOURCES:%.cxx=%.o))$(1)_OBJS := $$(sort $$($(1)_OBJS))KERN_OBJS  += $$($(1)_OBJS)KERN_SOURCES += $$($(1)_SOURCES)# this is hack to build "__this_module" structure for 2.6.x kernels# modpost is used for that purpose now#$(1).mod.c:#	echo  "\#	#include <linux/version.h>@\

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -