# -*- Makefile -*- # # $Id$ # # 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