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

📄 makefile.rules

📁 一个linux下rs485驱动程序的源代码
💻 RULES
📖 第 1 页 / 共 3 页
字号:
#  Makefile.rules - OCERA make framework common project rules -*- makefile -*-#   #  (C) Copyright 2003 by Pavel Pisa - OCERA team member##  The uLan driver is distributed under the Gnu General Public License. #  See file COPYING for details.### input variables# V                .. if set to 1, full command text is shown else short form is used# SUBDIRS          .. list of subdirectories intended for make from actual directory# lib_LIBRARIES    .. list of the user-space libraries# shared_LIBRARIES .. list of the user-space shared libraries# kernel_LIBRARIES .. list of the kernel-space libraries# rtlinux_LIBRARIES.. list of the RT-Linux kernel-space libraries# include_HEADERS  .. list of the user-space public header files# nobase_include_HEADERS .. public headers copied even with directory part# renamed_include_HEADERS .. public headers copied to the different target name# kernel_HEADERS   .. list of the kernel-space public header files# rtlinux_HEADERS  .. list of the RT-Linux kernel-space public header files# bin_PROGRAMS     .. list of the require binary programs# utils_PROGRAMS   .. list of the development utility programs# kernel_MODULES   .. list of the kernel side modules/applications# rtlinux_MODULES  .. list of RT-Linux the kernel side modules/applications# xxx_SOURCES      .. list of specific target sources# INCLUDES         .. additional include directories and defines for user-space# kernel_INCLUDES  .. additional include directories and defines for kernel-space# rtlinux_INCLUDES .. additional include directories and defines for RT-Linux# default_CONFIG   .. list of default config assignments CONFIG_XXX=y/n ...## LINUX_DIR        .. location of Linux kernel sources# RTL_DIR          .. location of RT-Linux sources# Hack to check RT-Linux rules#LINUX_DIR := /home/cvs/ocera/ocera-build/kernel/linux#RTL_DIR := /home/cvs/ocera/ocera-build/kernel/rtlinux#CONFIG_RTLINUX = y#OCERA_DIR := $(shell ( cd -L $(MAKERULES_DIR)/../../.. ; pwd -L ) )BUILD_DIR_NAME = _buildCOMPILED_DIR_NAME = _compiledifndef GROUP_DIR_NAMEGROUP_DIR_NAME = nogroupendif# We need to ensure definition of sources directory firstifndef SOURCES_DIRSOURCES_DIR := $(shell ( pwd -L ) )endifall: defaultifdef OCERA_DIRifeq ($(wildcard $(OCERA_DIR)/ocera.mk),)$(warning "ocera.mk" file does not exist. Adapt Makefile.rules for standalone compilation)$(warning (comment out definition of OCERA_DIR line and optionally select RTL_DIR) )$(error or go to the ocera/ directory and do 'make' to generate the "ocera.mk" file first, please)endifinclude $(OCERA_DIR)/ocera.mkKERN_INCLUDE_DIR := $(OCERA_KERNEL_INCLUDES_DIR)KERN_LIB_DIR     := $(OCERA_KERNEL_LIBRARIES_DIR)KERN_MODULES_DIR := $(OCERA_MODULES_DIR)KERN_BUILD_DIR   := $(BUILD_DIR)/kern/$(GROUP_DIR_NAME)KERN_MODPOST_DIR := $(BUILD_DIR)/kern-modpostUSER_INCLUDE_DIR := $(OCERA_USER_INCLUDES_DIR)USER_LIB_DIR     := $(OCERA_USER_LIBRARIES_DIR)USER_UTILS_DIR   := $(TARGET_DIR)/usr/binUSER_BIN_DIR     := $(TARGET_DIR)/usr/binUSER_BUILD_DIR   := $(BUILD_DIR)/user/$(GROUP_DIR_NAME)#LINUX_DIR        := $(OCERA_DIR)/kernel/linux#RTL_DIR          := $(OCERA_DIR)/kernel/rtlinux#CONFIG_FILE      := $(OCERA_DIR)/emdebsys/.config ifneq ($(wildcard $(CONFIG_FILE)),)#include $(CONFIG_FILE)CONFIG_FILE_OK = yendifelse # OCERA_DIRKERN_INCLUDE_DIR := $(MAKERULES_DIR)/$(COMPILED_DIR_NAME)/include-kernKERN_LIB_DIR     := $(MAKERULES_DIR)/$(COMPILED_DIR_NAME)/lib-kernKERN_MODULES_DIR := $(MAKERULES_DIR)/$(COMPILED_DIR_NAME)/modulesKERN_BUILD_DIR   := $(MAKERULES_DIR)/$(BUILD_DIR_NAME)/kernKERN_MODPOST_DIR := $(MAKERULES_DIR)/$(BUILD_DIR_NAME)/kern-modpostUSER_INCLUDE_DIR := $(MAKERULES_DIR)/$(COMPILED_DIR_NAME)/includeUSER_LIB_DIR     := $(MAKERULES_DIR)/$(COMPILED_DIR_NAME)/libUSER_UTILS_DIR   := $(MAKERULES_DIR)/$(COMPILED_DIR_NAME)/bin-utilsUSER_BIN_DIR     := $(MAKERULES_DIR)/$(COMPILED_DIR_NAME)/binUSER_BUILD_DIR   := $(MAKERULES_DIR)/$(BUILD_DIR_NAME)/userifndef CONFIG_FILECONFIG_FILE      := $(MAKERULES_DIR)/config.omkendififneq ($(wildcard $(CONFIG_FILE)-default),)-include $(CONFIG_FILE)-defaultelse$(warning Please, run "make default-config" first)endififneq ($(wildcard $(CONFIG_FILE)),)include $(CONFIG_FILE)CONFIG_FILE_OK = yendififndef LINUX_VERSIONLINUX_VERSION=$(shell uname -r)endififndef LINUX_DIRLINUX_DIR=/lib/modules/$(LINUX_VERSION)/buildendifendif # OCERA_DIR# Check and include real OCERA style Makefile.omk nowifndef OMK_INCLUDEDinclude $(SOURCES_DIR)/Makefile.omkOMK_INCLUDED := 1endififeq ($(TARGET_OS),)  # Check for target  ifeq ($(OS),Windows_NT)    TARGET_OS = win32  else    TARGET_OS = $(shell uname | tr '[A-Z]' '[a-z]' )    #$(warning TARGET_OS=$(TARGET_OS))  endifendifexport SOURCES_DIR MAKERULES_DIR RELATIVE_DIR LINUX_DIR LINUX_VERSION RTL_DIRexport CONFIG_FILE OMK_SERIALIZE_INCLUDED OMK_VERBOSE OMK_SILENTexport TARGET_OS NMifeq ($(NM),)  NM = nmendif#CFLAGS += -ggdbCFLAGS += -O2 CFLAGS += -Wall#CXXFLAGS += -ggdbCXXFLAGS += -O2CXXFLAGS += -WallCPPFLAGS  += -I $(USER_INCLUDE_DIR)LOADLIBES += -L$(USER_LIB_DIR) LOADLIBES += $(lib_LOADLIBES:%=-l%)LIB_CPPFLAGS += $(CPPFLAGS)LIB_CFLAGS   += $(CFLAGS)ifeq ($(TARGET_OS),win32)  SOLIB_EXT = dllelse  SOLIB_EXT = so  SOLIB_PICFLAGS += -fpicendififndef RELATIVE_DIRRELATIVE_DIR := $(SOURCES_DIR:$(MAKERULES_DIR)%=%)endifoverride RELATIVE_DIR := $(RELATIVE_DIR:/%=%)override RELATIVE_DIR := $(RELATIVE_DIR:\\%=%)#$(warning  RELATIVE_DIR $(RELATIVE_DIR))override BACK2TOP_DIR := $(shell echo $(RELATIVE_DIR)/ | sed -e 's_//_/_g' -e 's_/\./_/_g' -e 's_^\./__g'  -e 's_\([^/][^/]*\)_.._g' -e 's_/$$__')#$(warning  BACK2TOP_DIR $(BACK2TOP_DIR))#$(warning SOURCES_DIR = $(SOURCES_DIR))#$(warning MAKERULES_DIR = $(MAKERULES_DIR))#$(warning RELATIVE_DIR = $(RELATIVE_DIR))override RELATIVE_PREFIX := $(RELATIVE_DIR)/override RELATIVE_PREFIX := $(RELATIVE_PREFIX:/%=%)#vpath %.c $(SOURCES_DIR)#vpath %.cc $(SOURCES_DIR)#vpath %.cxx $(SOURCES_DIR)VPATH = $(SOURCES_DIR)srcdir = $(SOURCES_DIR)USER_OBJS_DIR = $(USER_BUILD_DIR)/$(RELATIVE_DIR)KERN_OBJS_DIR = $(KERN_BUILD_DIR)/$(RELATIVE_DIR).PHONY: default dep subdirs clean clean-custom cleandepend default-config.PHONY: check-make-ver check-dir include-pass library-pass binary-pass utils-pass.PHONY: kernel-lib-pass kernel-pass kernel-mod-pass kernel-modpost-pass default-config-pass.PHONY: check-dir-local include-pass-local library-pass-local binary-pass-local .PHONY: utils-pass-local kernel-lib-pass-local kernel-mod-pass-local kernel-modpost-pass-local.PHONY: default-config-pass-local# Some support to serialize some targets for parallel makeifneq ($(OMK_SERIALIZE_INCLUDED),y)include-pass: check-dirlibrary-pass: include-passbinary-pass utils-pass: library-passkernel-lib-pass: include-passkernel-mod-pass: kernel-lib-passkernel-modpost-pass: kernel-mod-passkernel-pass: kernel-mod-pass kernel-modpost-passOMK_SERIALIZE_INCLUDED = yendif# Defines for quiet compilationifdef V  ifeq ("$(origin V)", "command line")    OMK_VERBOSE = $(V)  endifendififndef OMK_VERBOSE  OMK_VERBOSE = 0endififeq ($(OMK_VERBOSE),1)  Q =else  Q = @endififneq ($(findstring s,$(MAKEFLAGS)),)  QUIET_CMD_ECHO = true  OMK_SILENT = 1else  QUIET_CMD_ECHO = echo  CPHEADER_FLAGS += -vendifdefault: check-make-ver check-dir include-pass library-pass binary-pass utils-pass kernel-lib-pass kernel-pass#=====================================================================# Common utility rulesdefine mkdir_def	[ -d $(1) ] || mkdir -p $(1) || exit 1endef# Syntax: $(call BUILD_CONFIG_H_template,<header_file_path>,<list_of_options_to_export>,<header_barrier>)define BUILD_CONFIG_H_template$(1) : $(wildcard $(CONFIG_FILE)) $(wildcard $(CONFIG_FILE)-default)	@$(QUIET_CMD_ECHO) "  CONFGEN $$@ in `pwd`"	@if [ ! -d `dirname $(1).tmp` ] ; then \		mkdir `dirname $(1).tmp` ; fi	@echo "/* Automatically generated from */" > "$(1).tmp"	@echo "/* config file: $$< */" >> "$(1).tmp"	@echo "#ifndef $(3)" >> "$(1).tmp"	@echo "#define $(3)" >> "$(1).tmp"	@( $(foreach x, $(shell echo '$($(2))' | sed -e 's/\<\([^ =]*\)\(=[^ ]\+\|\)\>/\1/g' ), \		echo '$(x).$($(x))' ; ) echo ; ) | \		sed -e '/^[^.]*\.n$$$$/d' -e '/^[^.]*\.$$$$/d' -e 's/^\([^.]*\)\.[ym]$$$$/\1.1/' | \		sed -n -e 's/^\([^.]*\)\.\(.*\)$$$$/#define \1 \2/p' \		  >> "$(1).tmp"	@echo "#endif /*$(3)*/" >> "$(1).tmp"	@if cmp --quiet "$(1).tmp" "$(1)" ; then \	echo rm "$(1).tmp" ; \	else mv "$(1).tmp" "$(1)" ; \	echo Updated configuration "$(1)" ; fiendefifdef LOCAL_CONFIG_H$(eval $(call BUILD_CONFIG_H_template,$(LOCAL_CONFIG_H),default_CONFIG,_LOCAL_CONFIG_H) )endifcheck-make-ver:	@GOOD_MAKE_VERSION=`echo $(MAKE_VERSION) | sed -n -e 's/^[4-9]\..*\|^3\.9[0-9].*\|^3\.8[1-9].*/y/p'` ; \	if [ x$$GOOD_MAKE_VERSION != xy ] ; then \		echo "Your make program version is too old and does not support OMK system." ; \		echo "Please update to make program 3.81beta1 or newer." ; exit 1 ; \	fi#=====================================================================# User-space rules and templates to compile programs, libraries etc.ifdef USER_RULE_TEMPLATESUSER_SOURCES2OBJS = .o/.c .o/.cc .o/.cxx .o/.oUSER_SOURCES2OBJSLO = .lo/.c .lo/.cc .lo/.cxx .lo/.lo#%.lo: %.c#	$(CC) -o $@ $(LCFLAGS) -c $<c_o_COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \	$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -DOMK_FOR_USERcc_o_COMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \	$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -DOMK_FOR_USERidl_COMPILE = $(IDL_COMPILER)# Check GCC version for user buildifndef CC_MAJOR_VERSIONCC_MAJOR_VERSION := $(shell $(CC) -dumpversion | sed -e 's/\([^.]\)\..*/\1/')endif# Prepare suitable define for dependency buildingifeq ($(CC_MAJOR_VERSION),2)CC_DEPFLAGS = -Wp,-MD,"$@.d.tmp"elseCC_DEPFLAGS = -MT $@ -MD -MP -MF "$@.d.tmp"endif# Syntax: $(call COMPILE_c_o_template,<source>,<target>,<additional c-flags>)define COMPILE_c_o_template$(2): $(1) $(LOCAL_CONFIG_H) $$(GEN_HEADERS)	@$(QUIET_CMD_ECHO) "  CC      $$@"	$(Q) if $$(c_o_COMPILE) $$(CC_DEPFLAGS) $(3) -o $$@ -c $$< ; \

⌨️ 快捷键说明

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