gcc.mak

来自「stl的源码」· MAK 代码 · 共 272 行

MAK
272
字号
# Time-stamp: <08/02/28 10:25:46 ptr>## Copyright (c) 1997-1999, 2002, 2003, 2005-2008# Petr Ovtchenkov## Portion Copyright (c) 1999-2001# Parallel Graphics Ltd.## Licensed under the Academic Free License version 3.0#ifndef _FORCE_CXXCXX := c++elseCXX := ${_FORCE_CXX}endififndef _FORCE_CCCC := gccelseCC := ${_FORCE_CC}endififeq ($(OSNAME), cygming)RC := windresendififdef TARGET_OSCXX := ${TARGET_OS}-${CXX}CC := ${TARGET_OS}-${CC}AS := ${TARGET_OS}-${AS}endifCXX_VERSION := $(shell ${CXX} -dumpversion)CXX_VERSION_MAJOR := $(shell echo ${CXX_VERSION} | awk 'BEGIN { FS = "."; } { print $$1; }')CXX_VERSION_MINOR := $(shell echo ${CXX_VERSION} | awk 'BEGIN { FS = "."; } { print $$2; }')CXX_VERSION_PATCH := $(shell echo ${CXX_VERSION} | awk 'BEGIN { FS = "."; } { print $$3; }')# Check that we need option -fuse-cxa-atexit for compiler_CXA_ATEXIT := $(shell ${CXX} -v 2>&1 | grep -q -e "--enable-__cxa_atexit" || echo "-fuse-cxa-atexit")ifeq ($(OSNAME), darwin)# This is to differentiate Apple-builded compiler from original# GNU compiler (it has different behaviour)ifneq ("$(shell ${CXX} -v 2>&1 | grep Apple)", "")GCC_APPLE_CC := 1endifendifDEFS ?=OPT ?=ifdef WITHOUT_STLPORTINCLUDES =elseINCLUDES = -I${STLPORT_INCLUDE_DIR}endififdef BOOST_INCLUDE_DIRINCLUDES += -I${BOOST_INCLUDE_DIR}endififeq ($(OSNAME), cygming)ifeq ($(OSREALNAME), mingw)# MinGW has problem with /usr/local reference in gcc or linker command line so# we use a local install for this platform.BASE_INSTALL_DIR ?= ${STLPORT_DIR}endifendifOUTPUT_OPTION = -o $@LINK_OUTPUT_OPTION = ${OUTPUT_OPTION}CPPFLAGS = $(DEFS) $(INCLUDES)ifdef WITHOUT_RTTI# -fno-rtti shouldn't be pass to the C compiler, we cannot use OPT so we add it# directly to the compiler command name.CXX += -fno-rttiifdef STLP_BUILD# gcc do not define any macro to signal that there is no rtti support:DEFS += -D_STLP_NO_RTTIendifendififeq ($(OSNAME), cygming)WINVER ?= 0x0501RCFLAGS = --include-dir=${STLPORT_INCLUDE_DIR} --output-format coff -DCOMP=gccrelease-shared : RCFLAGS += -DBUILD_INFOS=-O2dbg-shared : RCFLAGS += -DBUILD=g -DBUILD_INFOS=-gstldbg-shared : RCFLAGS += -DBUILD=stlg -DBUILD_INFOS="-g -D_STLP_DEBUG"RC_OUTPUT_OPTION = -o $@CXXFLAGS = -Wall -Wsign-promo -Wcast-qual -fexceptionsifndef WITHOUT_THREADifeq ($(OSREALNAME), mingw)CCFLAGS += -mthreadsCFLAGS += -mthreadsCXXFLAGS += -mthreadsifeq ($(CXX_VERSION_MAJOR),2)CCFLAGS += -fvtable-thunksCFLAGS += -fvtable-thunksCXXFLAGS += -fvtable-thunksendifelseifneq (,$(findstring no-cygwin,$(EXTRA_CXXFLAGS)))CCFLAGS += -mthreadsCFLAGS += -mthreadsCXXFLAGS += -mthreadselseDEFS += -D_REENTRANTendifendifendifCCFLAGS += $(OPT)CFLAGS += $(OPT)CXXFLAGS += $(OPT)COMPILE.rc = $(RC) $(RCFLAGS)release-static : DEFS += -D_STLP_USE_STATIC_LIBdbg-static : DEFS += -D_STLP_USE_STATIC_LIBstldbg-static : DEFS += -D_STLP_USE_STATIC_LIBifeq ($(OSREALNAME), mingw)dbg-shared : DEFS += -D_DEBUGstldbg-shared : DEFS += -D_DEBUGdbg-static : DEFS += -D_DEBUGstldbg-static : DEFS += -D_DEBUGDEFS += -DWINVER=${WINVER}else# When using the -mno-cygwin option we need to take into account WINVER.# As there is no DEFS for C compiler and an other for C++ we use CFLAGS# and CXXFLAGSifdef EXTRA_CXXFLAGSifneq (,$(findstring no-cygwin,$(EXTRA_CXXFLAGS)))CXXFLAGS += -DWINVER=${WINVER}endifendififdef EXTRA_CFLAGSifneq (,$(findstring no-cygwin,$(EXTRA_CFLAGS)))CFLAGS += -DWINVER=${WINVER}endifendifendifendififndef WITHOUT_THREADPTHREAD := -pthreadelsePTHREAD :=endififeq ($(OSNAME),sunos)ifndef WITHOUT_THREADPTHREADS := -pthreadselsePTHREADS :=endifCCFLAGS = $(PTHREADS) $(OPT)CFLAGS = $(PTHREADS) $(OPT)# CXXFLAGS = $(PTHREADS) -nostdinc++ -fexceptions $(OPT)CXXFLAGS = $(PTHREADS) -fexceptions $(OPT)endififeq ($(OSNAME),linux)CCFLAGS = $(PTHREAD) $(OPT)CFLAGS = $(PTHREAD) $(OPT)# CXXFLAGS = $(PTHREAD) -nostdinc++ -fexceptions $(OPT)CXXFLAGS = $(PTHREAD) -fexceptions $(OPT)endififeq ($(OSNAME),openbsd)CCFLAGS = $(PTHREAD) $(OPT)CFLAGS = $(PTHREAD) $(OPT)# CXXFLAGS = $(PTHREAD) -nostdinc++ -fexceptions $(OPT)CXXFLAGS = $(PTHREAD) -fexceptions $(OPT)endififeq ($(OSNAME),freebsd)CCFLAGS = $(PTHREAD) $(OPT)CFLAGS = $(PTHREAD) $(OPT)ifndef WITHOUT_THREADDEFS += -D_REENTRANTendif# CXXFLAGS = $(PTHREAD) -nostdinc++ -fexceptions $(OPT)CXXFLAGS = $(PTHREAD) -fexceptions $(OPT)endififeq ($(OSNAME),darwin)CCFLAGS = $(OPT)CFLAGS = $(OPT)ifndef WITHOUT_THREADDEFS += -D_REENTRANTendifCXXFLAGS = -fexceptions $(OPT)release-shared : CXXFLAGS += -dynamicdbg-shared : CXXFLAGS += -dynamicstldbg-shared : CXXFLAGS += -dynamicendififeq ($(OSNAME),hp-ux)ifneq ($(M_ARCH),ia64)release-static : OPT += -fno-reorder-blocksrelease-shared : OPT += -fno-reorder-blocksendifCCFLAGS = $(PTHREAD) $(OPT)CFLAGS = $(PTHREAD) $(OPT)# CXXFLAGS = $(PTHREAD) -nostdinc++ -fexceptions $(OPT)CXXFLAGS = $(PTHREAD) -fexceptions $(OPT)endififeq ($(CXX_VERSION_MAJOR),2)CXXFLAGS += -ftemplate-depth-32endif# Required for correct order of static objects dtors calls:ifeq ("$(findstring $(OSNAME),darwin cygming)","")ifneq ($(CXX_VERSION_MAJOR),2)CXXFLAGS += $(_CXA_ATEXIT)endifendif# Code should be ready for this optionifneq ($(OSNAME),cygming)ifneq ($(CXX_VERSION_MAJOR),2)ifneq ($(CXX_VERSION_MAJOR),3)CXXFLAGS += -fvisibility=hiddenCFLAGS += -fvisibility=hiddenendifendifendififdef EXTRA_CXXFLAGSCXXFLAGS += ${EXTRA_CXXFLAGS}endififdef EXTRA_CFLAGSCFLAGS += ${EXTRA_CFLAGS}endifCDEPFLAGS = -E -MCCDEPFLAGS = -E -M# STLport DEBUG mode specific definesstldbg-static :	    DEFS += -D_STLP_DEBUGstldbg-shared :     DEFS += -D_STLP_DEBUGstldbg-static-dep : DEFS += -D_STLP_DEBUGstldbg-shared-dep : DEFS += -D_STLP_DEBUG# optimization and debug compiler flagsrelease-static : OPT += -O2release-shared : OPT += -O2dbg-static : OPT += -gdbg-shared : OPT += -g#dbg-static-dep : OPT += -g#dbg-shared-dep : OPT += -gstldbg-static : OPT += -gstldbg-shared : OPT += -g#stldbg-static-dep : OPT += -g#stldbg-shared-dep : OPT += -g# dependency output parser (dependencies collector)DP_OUTPUT_DIR = | sed 's|\($*\)\.o[ :]*|$(OUTPUT_DIR)/\1.o $@ : |g' > $@; \                           [ -s $@ ] || rm -f $@DP_OUTPUT_DIR_DBG = | sed 's|\($*\)\.o[ :]*|$(OUTPUT_DIR_DBG)/\1.o $@ : |g' > $@; \                           [ -s $@ ] || rm -f $@DP_OUTPUT_DIR_STLDBG = | sed 's|\($*\)\.o[ :]*|$(OUTPUT_DIR_STLDBG)/\1.o $@ : |g' > $@; \                           [ -s $@ ] || rm -f $@

⌨️ 快捷键说明

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