144 lines
4.2 KiB
Makefile
144 lines
4.2 KiB
Makefile
# -*- Makefile -*-
|
|
#
|
|
# $Id: GNUmakefile.lib 580483 2007-09-28 20:55:52Z sebor $
|
|
#
|
|
# makefile to build the C++ Standard library
|
|
#
|
|
########################################################################
|
|
#
|
|
# Licensed to the Apache Software Foundation (ASF) under one or more
|
|
# contributor license agreements. See the NOTICE file distributed
|
|
# with this work for additional information regarding copyright
|
|
# ownership. The ASF licenses this file to you under the Apache
|
|
# License, Version 2.0 (the "License"); you may not use this file
|
|
# except in compliance with the License. You may obtain a copy of
|
|
# the License at
|
|
#
|
|
# http://www.apache.org/licenses/LICENSE-2.0
|
|
#
|
|
# Unless required by applicable law or agreed to in writing, software
|
|
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
|
|
# implied. See the License for the specific language governing
|
|
# permissions and limitations under the License.
|
|
#
|
|
# Copyright 1999-2007 Rogue Wave Software, Inc.
|
|
#
|
|
########################################################################
|
|
|
|
include ../makefile.in
|
|
|
|
|
|
# catalog to build and source files to build it from
|
|
CATFILE := rwstderr.cat
|
|
MSGFILES := rwstderr.msg
|
|
|
|
# the name of the library to build (and in shared builds,
|
|
# the name of the symbolic link pointing to it, for library
|
|
# versioning)
|
|
LIBLINK := $(LIBNAME)
|
|
|
|
ifeq ($(findstring shared,$(BUILDMODE)),shared)
|
|
ifneq ($(LIBSUFFIX),.dll)
|
|
LIB := $(LIBLINK).$(LIBVER)
|
|
else
|
|
# on Cygwin use name libstd${BUILDTYPE}-X.Y.Z.dll
|
|
LIB := $(basename $(LIBLINK))-$(LIBVER)$(LIBSUFFIX)
|
|
endif
|
|
TARGET := $(LIB) $(LIBLINK)
|
|
else
|
|
LIB := $(LIBLINK)
|
|
TARGET := $(LIB)
|
|
endif
|
|
|
|
TARGET += $(CATFILE)
|
|
|
|
|
|
SRCDIRS = $(TOPDIR)/src
|
|
|
|
# do not compile these sources...
|
|
OMIT_SRCS += rwstderr.cpp
|
|
|
|
# include common variables setting for all makefiles
|
|
ONE_REPOSITORY = 1
|
|
include ../makefile.common
|
|
|
|
CXXFLAGS += $(PICFLAGS)
|
|
LDFLAGS += $(LDSOFLAGS) $(MAPFLAGS) $(MAPFILE)
|
|
|
|
# For AIX 5.1 xlC 5.0.2.0
|
|
ifneq ($(DEFAULT_SHROBJ),)
|
|
SOBJS=$(DEFAULT_SHROBJ)
|
|
else
|
|
SOBJS=$(OBJS)
|
|
endif
|
|
|
|
# CXXPRELINK - command for compilers that use template
|
|
# instantiation models that require a prelink stage
|
|
ifneq ($(PRELINKFLAGS),)
|
|
CXXPRELINK = $(CXX) $(CPPFLAGS) $(LDFLAGS) $(PRELINKFLAGS) $(OBJS)
|
|
endif # ($(PRELINKFLAGS),)
|
|
|
|
########################################################################
|
|
# TARGETS
|
|
########################################################################
|
|
|
|
# Cancel implicit rules
|
|
.SUFFIXES:
|
|
|
|
all: $(TARGET)
|
|
|
|
# do any directory specific cleanup using the realclean target
|
|
realclean: dependclean clean
|
|
|
|
# build an archive or shared library (repository included for DEC cxx 6.2)
|
|
ifeq ($(findstring shared,$(BUILDMODE)),shared)
|
|
|
|
ifeq ($(findstring archive,$(BUILDMODE)),archive)
|
|
# shared archives are unique to IBM AIX
|
|
# IBM VisualAge/XLC++ on AIX first "preprocesses" object files
|
|
# with -qmkshrobj and then uses `ar' to create a shared archive
|
|
$(LIB): $(OBJS)
|
|
@echo "$(CXXPRELINK) -o $(LIBBASE).o" >> $(LOGFILE)
|
|
$(CXXPRELINK) -o $(LIBBASE).o $(TEEOPTS)
|
|
@echo "$(AR) $(ARFLAGS) $@ $(LIBBASE).o" >> $(LOGFILE)
|
|
$(AR) $(ARFLAGS) $@ $(LIBBASE).o $(TEEOPTS)
|
|
else
|
|
$(LIB): $(OBJS) $(MAPFILE)
|
|
@echo "$(LD) $(LDFLAGS) $< $(LDLIBS) -o $@" >> $(LOGFILE)
|
|
$(LD) $(LDFLAGS) $(OBJS) $(LDLIBS) -o $@ $(TEEOPTS)
|
|
endif # shared archive
|
|
|
|
$(LIBLINK): $(LIB)
|
|
@echo "ln -sf $< $@" >> $(LOGFILE)
|
|
ln -sf $< $@
|
|
|
|
else
|
|
|
|
# Compaq C++ needs all files from the repository
|
|
SOBJS += $(shell [ -d repository.ti ] && echo repository.ti/*.o)
|
|
|
|
$(LIB): $(OBJS)
|
|
@echo "$(CXXPRELINK)" >> $(LOGFILE)
|
|
$(CXXPRELINK) $(TEEOPTS)
|
|
@echo "$(AR) $(ARFLAGS) $(LIBNAME) $(SOBJS)" >> $(LOGFILE)
|
|
$(AR) $(ARFLAGS) $(LIBNAME) $(SOBJS) $(TEEOPTS)
|
|
|
|
endif # ($(findstring shared,$(BUILDMODE)),shared)
|
|
|
|
|
|
# Common rules used by all Makefiles
|
|
include ../makefile.rules
|
|
|
|
# create the $(PREFIX)/etc/ and $(PREFIX)/lib/ directories
|
|
# and install the library binary and the message catalog(s)
|
|
install: $(TARGET)
|
|
mkdir -p $(PREFIX)/lib
|
|
cp $(LIB) $(PREFIX)/lib
|
|
if [ $(LIBLINK) != $(LIB) ]; then \
|
|
rm $(PREFIX)/lib/$(LIBLINK); \
|
|
ln -s $(LIB) $(PREFIX)/lib/$(LIBLINK); \
|
|
fi
|
|
mkdir -p $(PREFIX)/etc
|
|
cp $(CATFILE) $(PREFIX)/etc
|