mirror of
https://github.com/XRPLF/rippled.git
synced 2025-11-20 02:55:50 +00:00
250 lines
8.5 KiB
Makefile
250 lines
8.5 KiB
Makefile
################################################################################
|
|
#
|
|
# Copyright (c) 2011, Peter Thorson. All rights reserved.
|
|
#
|
|
# Redistribution and use in source and binary forms, with or without
|
|
# modification, are permitted provided that the following conditions are met:
|
|
# * Redistributions of source code must retain the above copyright
|
|
# notice, this list of conditions and the following disclaimer.
|
|
# * Redistributions in binary form must reproduce the above copyright
|
|
# notice, this list of conditions and the following disclaimer in the
|
|
# documentation and/or other materials provided with the distribution.
|
|
# * Neither the name of the WebSocket++ Project nor the
|
|
# names of its contributors may be used to endorse or promote products
|
|
# derived from this software without specific prior written permission.
|
|
#
|
|
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
|
# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
|
# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
|
# ARE DISCLAIMED. IN NO EVENT SHALL PETER THORSON BE LIABLE FOR ANY
|
|
# DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
|
# (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
|
# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
|
# ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
|
# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
|
# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
#
|
|
# This Makefile was derived from a similar one included in the libjson project
|
|
# It's authors were Jonathan Wallace and Bernhard Fluehmann.
|
|
|
|
|
|
objects = network_utilities.o sha1.o base64.o md5.o uri.o hybi_header.o hybi_util.o data.o
|
|
|
|
BOOST_PREFIX ?= /usr/local
|
|
BOOST_LIB_PATH ?= $(BOOST_PREFIX)/lib
|
|
BOOST_INCLUDE_PATH ?= $(BOOST_PREFIX)/include
|
|
|
|
libs = -L$(BOOST_LIB_PATH) -lboost_system -lboost_date_time -lboost_regex -lboost_random -lboost_program_options -lboost_thread
|
|
|
|
//libs_static = $(BOOST_PATH)/boost_system.a $(BOOST_PATH)/boost_regex.a
|
|
|
|
OS=$(shell uname)
|
|
|
|
# CPP11 build
|
|
ifeq ($(CPP11), 1)
|
|
CPP11_ = -std=c++0x -stdlib=libc++
|
|
else
|
|
CPP11_ ?=
|
|
endif
|
|
|
|
# Defaults
|
|
ifeq ($(OS), Darwin)
|
|
cxxflags_default = -c $(CPP11_) -Wall -O2 -DNDEBUG -I$(BOOST_INCLUDE_PATH)
|
|
else
|
|
cxxflags_default = -c -Wall -O2 -DNDEBUG -I$(BOOST_INCLUDE_PATH)
|
|
endif
|
|
cxxflags_small = -c
|
|
cxxflags_debug = -c -g -O0
|
|
cxxflags_shared = -f$(PIC)
|
|
libname = libwebsocketpp
|
|
libname_hdr = websocketpp
|
|
libname_debug = $(libname)
|
|
suffix_shared = so
|
|
suffix_shared_darwin = dylib
|
|
suffix_static = a
|
|
major_version = 0
|
|
minor_version = 2.0
|
|
objdir = objs
|
|
|
|
# Variables
|
|
prefix ?= /usr/local
|
|
exec_prefix ?= $(prefix)
|
|
libdir ?= lib
|
|
includedir ?= include
|
|
srcdir ?= src
|
|
CXX ?= c++
|
|
AR ?= ar
|
|
PIC ?= PIC
|
|
BUILD_TYPE ?= default
|
|
SHARED ?= 0
|
|
|
|
|
|
# Internal Variables
|
|
inst_path = $(exec_prefix)/$(libdir)
|
|
include_path = $(prefix)/$(includedir)
|
|
|
|
# BUILD_TYPE specific settings
|
|
ifeq ($(BUILD_TYPE), debug)
|
|
CXXFLAGS = $(cxxflags_debug)
|
|
libname := $(libname_debug)
|
|
else
|
|
CXXFLAGS ?= $(cxxflags_default)
|
|
endif
|
|
|
|
|
|
|
|
# SHARED specific settings
|
|
ifeq ($(SHARED), 1)
|
|
ifeq ($(OS), Darwin)
|
|
libname_shared = $(libname).$(suffix_shared_darwin)
|
|
else
|
|
libname_shared = $(libname).$(suffix_shared)
|
|
endif
|
|
libname_shared_major_version = $(libname_shared).$(major_version)
|
|
lib_target = $(libname_shared_major_version).$(minor_version)
|
|
objdir := $(objdir)_shared
|
|
CXXFLAGS := $(CXXFLAGS) $(cxxflags_shared)
|
|
else
|
|
lib_target = $(libname).$(suffix_static)
|
|
objdir := $(objdir)_static
|
|
endif
|
|
|
|
# Phony targets
|
|
.PHONY: all banner installdirs install install_headers clean uninstall \
|
|
uninstall_headers
|
|
|
|
# Targets
|
|
all: $(lib_target)
|
|
@echo "============================================================"
|
|
@echo "Done"
|
|
@echo "============================================================"
|
|
|
|
banner:
|
|
@echo "============================================================"
|
|
@echo "libwebsocketpp version: "$(major_version).$(minor_version) "target: "$(target) "OS: "$(OS)
|
|
@echo "============================================================"
|
|
|
|
installdirs: banner
|
|
mkdir -p $(objdir)
|
|
|
|
# Libraries
|
|
ifeq ($(SHARED),1)
|
|
$(lib_target): banner installdirs $(addprefix $(objdir)/, $(objects))
|
|
@echo "Link "
|
|
cd $(objdir) ; \
|
|
if test "$(OS)" = "Darwin" ; then \
|
|
$(CXX) -dynamiclib $(libs) -Wl,-dylib_install_name -Wl,$(libname_shared_major_version) -o $@ $(objects) ; \
|
|
else \
|
|
$(CXX) -shared $(libs) -Wl,-soname,$(libname_shared_major_version) -o $@ $(objects) ; \
|
|
fi ; \
|
|
mv -f $@ ../
|
|
@echo "Link: Done"
|
|
else
|
|
$(lib_target): banner installdirs $(addprefix $(objdir)/, $(objects))
|
|
@echo "Archive"
|
|
cd $(objdir) ; \
|
|
$(AR) -cvq $@ $(objects) ; \
|
|
mv -f $@ ../
|
|
@echo "Archive: Done"
|
|
endif
|
|
|
|
# Compile object files
|
|
$(objdir)/sha1.o: $(srcdir)/sha1/sha1.cpp
|
|
$(CXX) $< -c -o $@ $(CXXFLAGS)
|
|
|
|
$(objdir)/base64.o: $(srcdir)/base64/base64.cpp
|
|
$(CXX) $< -c -o $@ $(CXXFLAGS)
|
|
|
|
$(objdir)/hybi_header.o: $(srcdir)/processors/hybi_header.cpp
|
|
$(CXX) $< -c -o $@ $(CXXFLAGS)
|
|
|
|
$(objdir)/hybi_util.o: $(srcdir)/processors/hybi_util.cpp
|
|
$(CXX) $< -c -o $@ $(CXXFLAGS)
|
|
|
|
$(objdir)/data.o: $(srcdir)/messages/data.cpp
|
|
$(CXX) $< -c -o $@ $(CXXFLAGS)
|
|
|
|
$(objdir)/md5.o: $(srcdir)/md5/md5.c
|
|
$(CXX) $< -c -o $@ $(CXXFLAGS)
|
|
|
|
$(objdir)/%.o: $(srcdir)/%.cpp
|
|
$(CXX) $< -c -o $@ $(CXXFLAGS)
|
|
|
|
ifeq ($(SHARED),1)
|
|
install: banner install_headers $(lib_target)
|
|
@echo "Install shared library"
|
|
mkdir -p $(inst_path)
|
|
cp -f ./$(lib_target) $(inst_path)
|
|
cd $(inst_path) ; \
|
|
ln -sf $(lib_target) $(libname_shared_major_version) ; \
|
|
ln -sf $(libname_shared_major_version) $(libname_shared)
|
|
if test "$(OS)" != "Darwin" ; then \
|
|
ldconfig ; \
|
|
fi
|
|
@echo "Install shared library: Done."
|
|
else
|
|
install: banner install_headers $(lib_target)
|
|
@echo "Install static library"
|
|
mkdir -p $(inst_path)
|
|
cp -f ./$(lib_target) $(inst_path)
|
|
@echo "Install static library: Done."
|
|
endif
|
|
|
|
install_headers: banner
|
|
@echo "Install header files"
|
|
mkdir -p $(include_path)/$(libname_hdr)
|
|
# cp -f ./*.hpp $(include_path)/$(libname_hdr)
|
|
cp -f ./$(srcdir)/*.hpp $(include_path)/$(libname_hdr)
|
|
mkdir -p $(include_path)/$(libname_hdr)/base64
|
|
cp -f ./$(srcdir)/base64/base64.h $(include_path)/$(libname_hdr)/base64
|
|
mkdir -p $(include_path)/$(libname_hdr)/sha1
|
|
cp -f ./$(srcdir)/sha1/sha1.h $(include_path)/$(libname_hdr)/sha1
|
|
mkdir -p $(include_path)/$(libname_hdr)/http
|
|
cp -f ./$(srcdir)/http/*.hpp $(include_path)/$(libname_hdr)/http
|
|
mkdir -p $(include_path)/$(libname_hdr)/logger
|
|
cp -f ./$(srcdir)/logger/*.hpp $(include_path)/$(libname_hdr)/logger
|
|
mkdir -p $(include_path)/$(libname_hdr)/md5
|
|
cp -f ./$(srcdir)/md5/md5.h $(include_path)/$(libname_hdr)/md5
|
|
cp -f ./$(srcdir)/md5/md5.hpp $(include_path)/$(libname_hdr)/md5
|
|
mkdir -p $(include_path)/$(libname_hdr)/messages
|
|
cp -f ./$(srcdir)/messages/*.hpp $(include_path)/$(libname_hdr)/messages
|
|
mkdir -p $(include_path)/$(libname_hdr)/processors
|
|
cp -f ./$(srcdir)/processors/*.hpp $(include_path)/$(libname_hdr)/processors
|
|
mkdir -p $(include_path)/$(libname_hdr)/rng
|
|
cp -f ./$(srcdir)/rng/*.hpp $(include_path)/$(libname_hdr)/rng
|
|
mkdir -p $(include_path)/$(libname_hdr)/roles
|
|
cp -f ./$(srcdir)/roles/*.hpp $(include_path)/$(libname_hdr)/roles
|
|
mkdir -p $(include_path)/$(libname_hdr)/sockets
|
|
cp -f ./$(srcdir)/sockets/*.hpp $(include_path)/$(libname_hdr)/sockets
|
|
mkdir -p $(include_path)/$(libname_hdr)/utf8_validator
|
|
cp -f ./$(srcdir)/utf8_validator/*.hpp $(include_path)/$(libname_hdr)/utf8_validator
|
|
chmod -R a+r $(include_path)/$(libname_hdr)
|
|
find $(include_path)/$(libname_hdr) -type d -exec chmod a+x {} \;
|
|
@echo "Install header files: Done."
|
|
|
|
clean: banner
|
|
@echo "Clean library and object folder"
|
|
rm -rf $(objdir)
|
|
rm -f $(lib_target)
|
|
@echo "Clean library and object folder: Done"
|
|
|
|
ifeq ($(SHARED),1)
|
|
uninstall: banner uninstall_headers
|
|
@echo "Uninstall shared library"
|
|
rm -f $(inst_path)/$(libname_shared)
|
|
rm -f $(inst_path)/$(libname_shared_major_version)
|
|
rm -f $(inst_path)/$(lib_target)
|
|
ldconfig
|
|
@echo "Uninstall shared library: Done"
|
|
else
|
|
uninstall: banner uninstall_headers
|
|
@echo "Uninstall static library"
|
|
rm -f $(inst_path)/$(lib_target)
|
|
@echo "Uninstall static library: Done"
|
|
endif
|
|
|
|
uninstall_headers: banner
|
|
@echo "Uninstall header files"
|
|
rm -rf $(include_path)/$(libname)
|
|
@echo "Uninstall header files: Done"
|