📄 make.rules
字号:
## Copyright (c) 2000, 2001, 2007 Dmitry Butskoy# <buc@citadel.stu.neva.ru># License: GPL v2 or any later## See COPYING for the status of this software.### Common rule and variable definitions.# This file should be included by main and by per-target Makefiles.#ifndef srcdir$(error srcdir variable not defined)endifMAKE = make --no-print-directory -r# Use env=yes on cmdline to inherit environment valuesifeq ($(env),yes)define set$(eval ifneq ($$(origin $(1)),environment)$(1) = $(2)elseoverride MAKE := $(1)="$($(strip $(1)))" $(MAKE)endif)endefelseset = $(eval $(1) = $(2))endif$(call set, CROSS, )$(call set, CC, $$(CROSS)gcc)$(call set, AS, $$(CROSS)as)$(call set, LD, $$(CROSS)ld)$(call set, DEPEND, $$(CROSS)gcc -MM -MG)$(call set, AR, $$(CROSS)ar)$(call set, RANLIB, $$(CROSS)ranlib)$(call set, INSTALL, cp)$(call set, INDENT, true)gcc = $(findstring gcc,$(CC))$(call set, CFLAGS, $(if $(gcc), -O2 -Wall, -O))$(call set, CPPFLAGS, )$(call set, LDFLAGS, -s)$(call set, LIBS, )# install stuffprefix = /usr/localexec_prefix = $(prefix)bindir = $(exec_prefix)/binsbindir = $(exec_prefix)/sbinlibdir = $(exec_prefix)/liblibexecdir = $(exec_prefix)/libexec/$(NAME)sysconfdir = $(prefix)/etcincludedir = $(prefix)/includedatadir = $(prefix)/sharemandir = $(datadir)/maninfodir = $(datadir)/infolocalstatedir = $(prefix)/varsharedstatedir = $(prefix)/comDESTDIR =# layout stuffSKIPDIRS = tmp%INCLUDEDIRS = include%LIBDIRS = lib%MODDIRS = mod%SKIPINSTALL = test%include $(srcdir)/Make.definesifndef NAMENAME = $(notdir $(srcdir))endififndef subdirsifeq ($(TARGET),.MAIN)# for better performance...subdirs := $(patsubst %/,%,$(wildcard */))elsesubdirs := $(patsubst $(srcdir)/%/,%,$(filter %/,$(wildcard $(srcdir)/*/)))endifsubdirs := $(filter-out $(SKIPDIRS), $(subdirs))endifinstall install-%: subdirs := $(filter-out $(SKIPINSTALL), $(subdirs))override MAKE += srcdir=$(srcdir) subdirs="$(subdirs)" shared=$(shared)INCLUDEDIRS := $(filter $(INCLUDEDIRS), $(subdirs))LIBDIRS := $(filter $(LIBDIRS), $(subdirs))MODDIRS := $(filter $(MODDIRS), $(subdirs))EXEDIRS := $(filter-out $(INCLUDEDIRS) $(LIBDIRS) $(MODDIRS), $(subdirs))MODUSERS := $(filter $(MODUSERS), $(subdirs))SBINUSERS := $(filter $(SBINUSERS), $(subdirs))LIBDIRS := $(filter-out $(LIBLAST),$(LIBDIRS)) $(filter $(LIBDIRS),$(LIBLAST))includes = $(foreach dir, $(INCLUDEDIRS) $(LIBDIRS), $(srcdir)/$(dir))libraries = $(foreach dir, $(filter lib%,$(LIBDIRS)), $(srcdir)/$(dir))vpath lib%.so $(libraries)vpath lib%.a $(libraries)_libs = $(strip $(foreach lib,$(LIBDIRS),\ $(if $(filter lib%,$(lib)),\ $(patsubst lib%,-l%,$(lib)),\ $(wildcard $(srcdir)/$(lib)/$(lib).so \ $(srcdir)/$(lib)/$(lib).a))))override LIBS := $(_libs) -lm $(LIBS)ifneq ($(gcc),)CPATH = $(subst $(empty) ,:,$(includes))LIBRARY_PATH = $(subst $(empty) ,:,$(libraries))export CPATH LIBRARY_PATHelseoverride CPPFLAGS += $(patsubst %,-I%,$(includes))override LIBS += $(patsubst %,-L%,$(libraries))endifLIBDEPS = $(filter-out -L%,$(LIBS))## SUBDIRS STUFF#ifneq ($(TARGET),.MAIN)obj := oifeq ($(shared),yes)ifneq ($(PIC),no)ifeq ($(filter $(TARGET),$(LIBDIRS) $(MODDIRS) .MODULE),$(TARGET))obj := loendifendifendifsources = $(wildcard *.c)OBJS = $(sources:.c=.$(obj)).PHONY: dummy all depend install clean forcedummy: allclean: rm -f *.o *.a *.lo *.so $(TARGET) core a.outifneq ($(sources),)depend: $(sources) $(DEPEND) $(CFLAGS) $(CPPFLAGS) $^ >.dependelsedepend: @trueendif%.o: %.c $(CC) $(CFLAGS) $(CPPFLAGS) -c $*.c%.lo: %.c $(CC) -fPIC $(CFLAGS) $(CPPFLAGS) -o $*.lo -c $*.c%.o: %.s $(AS) -o $*.o $*.s%.o: %.S $(CC) -traditional $(CPPFLAGS) -c $*.S# include if it is present only...ifeq (.depend, $(wildcard .depend))include .dependendifendif## ...end of SUBDIRS STUFF#
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -