From 5966113268d6648840ce938b230ffe86c6a38c9a Mon Sep 17 00:00:00 2001 From: hagen Date: Thu, 11 Dec 2014 07:46:28 +0000 Subject: [PATCH 1/2] * build library in the same tree as main binary --- Makefile | 17 +++++++++++------ Makefile.linux | 2 +- api/api.cpp => api.cpp | 0 api/api.h => api.h | 0 api/Makefile | 33 --------------------------------- api/filelist.mk | 19 ------------------- 6 files changed, 12 insertions(+), 59 deletions(-) rename api/api.cpp => api.cpp (100%) rename api/api.h => api.h (100%) delete mode 100644 api/Makefile delete mode 100644 api/filelist.mk diff --git a/Makefile b/Makefile index 5e8c992e..594491ef 100644 --- a/Makefile +++ b/Makefile @@ -1,4 +1,6 @@ UNAME := $(shell uname -s) +SHLIB := libi2pd.so +I2PD := i2p ifeq ($(UNAME),Darwin) include Makefile.osx @@ -8,22 +10,25 @@ else include Makefile.linux endif -all: obj i2p - -i2p: $(OBJECTS:obj/%=obj/%) - $(CXX) -o $@ $^ $(LDLIBS) $(LDFLAGS) $(LIBS) +all: obj $(SHLIB) $(I2PD) .SUFFIXES: .SUFFIXES: .c .cc .C .cpp .o obj/%.o : %.cpp - $(CXX) -o $@ $< -c $(CXXFLAGS) $(NEEDED_CXXFLAGS) $(INCFLAGS) $(CPU_FLAGS) + $(CXX) $(CXXFLAGS) $(NEEDED_CXXFLAGS) $(INCFLAGS) $(CPU_FLAGS) -c -o $@ $< obj: mkdir -p obj +$(I2PD): $(OBJECTS:obj/%=obj/%) + $(CXX) -o $@ $^ $(LDLIBS) $(LDFLAGS) $(LIBS) + +$(SHLIB): $(OBJECTS:obj/%=obj/%) api.cpp + $(CXX) $(CXXFLAGS) $(NEEDED_CXXFLAGS) $(INCFLAGS) $(CPU_FLAGS) -shared -o $@ $^ + clean: - rm -fr obj i2p + rm -fr obj $(I2PD) $(SHLIB) .PHONY: all .PHONY: clean diff --git a/Makefile.linux b/Makefile.linux index 37c52b0a..c9c72403 100644 --- a/Makefile.linux +++ b/Makefile.linux @@ -1,4 +1,4 @@ -CXXFLAGS = -g -Wall +CXXFLAGS = -g -Wall -fPIC CXXVER := $(shell $(CXX) -dumpversion) FGREP = fgrep diff --git a/api/api.cpp b/api.cpp similarity index 100% rename from api/api.cpp rename to api.cpp diff --git a/api/api.h b/api.h similarity index 100% rename from api/api.h rename to api.h diff --git a/api/Makefile b/api/Makefile deleted file mode 100644 index 0da6f5b1..00000000 --- a/api/Makefile +++ /dev/null @@ -1,33 +0,0 @@ -UNAME := $(shell uname -s) - -ifeq ($(UNAME),Darwin) - include ../Makefile.osx -else ifeq ($(UNAME), FreeBSD) - include ../Makefile.bsd -else - include ../Makefile.linux -endif - -SHARED_LIB = libi2pd.so -all: obj $(SHARED_LIB) - -$(SHARED_LIB): $(OBJECTS:obj/%=obj/%) - $(CXX) -shared -o $(SHARED_LIB) $^ - -.SUFFIXES: -.SUFFIXES: .c .cc .C .cpp .o - -obj/%.o : ../%.cpp - $(CXX) -o $@ $< -c $(CXXFLAGS) $(NEEDED_CXXFLAGS) $(INCFLAGS) -I.. -fPIC $(CPU_FLAGS) - -obj/api.o: api.cpp - $(CXX) -o obj/api.o api.cpp -c $(CXXFLAGS) $(NEEDED_CXXFLAGS) $(INCFLAGS) -I.. -fPIC $(CPU_FLAGS) - -obj: - mkdir -p obj - -clean: - rm -fr obj $(SHARED_LIB) - -.PHONY: all -.PHONY: clean diff --git a/api/filelist.mk b/api/filelist.mk deleted file mode 100644 index 4b098ae3..00000000 --- a/api/filelist.mk +++ /dev/null @@ -1,19 +0,0 @@ - - -CPP_FILES := ../CryptoConst.cpp ../base64.cpp ../NTCPSession.cpp ../RouterInfo.cpp \ - ../Transports.cpp ../RouterContext.cpp ../NetDb.cpp ../LeaseSet.cpp Tunnel.cpp \ - ../TunnelEndpoint.cpp ../TunnelGateway.cpp ../TransitTunnel.cpp ../I2NPProtocol.cpp \ - ../Log.cpp ../Garlic.cpp ../Streaming.cpp ../Destination.cpp ../Identity.cpp \ - ../SSU.cpp ../SSUSession.cpp ../SSUData.cpp ../util.cpp ../Reseed.cpp ../SSUData.cpp \ - ../aes.cpp ../TunnelPool.cpp ../AddressBook.cpp ../Datagram.cpp api.cpp - - -H_FILES := ../CryptoConst.h ../base64.h ../NTCPSession.h ../RouterInfo.h ../Transports.h \ - ../RouterContext.h ../NetDb.h ../LeaseSet.h ../Tunnel.h ../TunnelEndpoint.h \ - ../TunnelGateway.h ../TransitTunnel.h ../I2NPProtocol.h ../Log.h ../Garlic.h \ - ../Streaming.h ../Destination.h ../Identity.h ../SSU.h ../SSUSession.h ../SSUData.h \ - ../util.h ../Reseed.h ../SSUData.h ../aes.h ../TunnelPool.h ../AddressBook.h ../version.h \ - ../Signature.h ../TransportSession.h ../Datagram.h api.h - -OBJECTS = $(addprefix obj/, $(notdir $(CPP_FILES:.cpp=.o))) - From 342c87e15b5ae0281967d4ccc8fbf4385421805a Mon Sep 17 00:00:00 2001 From: hagen Date: Thu, 11 Dec 2014 07:57:46 +0000 Subject: [PATCH 2/2] * fix cmake build --- build/CMakeLists.txt | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/build/CMakeLists.txt b/build/CMakeLists.txt index 09834eb0..6e483014 100644 --- a/build/CMakeLists.txt +++ b/build/CMakeLists.txt @@ -4,6 +4,7 @@ project ( "i2pd" ) # configurale options option(WITH_AESNI "Use AES-NI instructions set" OFF) option(WITH_HARDENING "Use hardening compiler flags" OFF) +option(WITH_SHLIB "Build shared library" OFF) # paths set ( CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake_modules" ) @@ -117,7 +118,7 @@ if(NOT DEFINED CRYPTO++_INCLUDE_DIR) endif() # load includes -include_directories( ${Boost_INCLUDE_DIRS} ${CRYPTO++_INCLUDE_DIR}) +include_directories( ${Boost_INCLUDE_DIRS} ${CRYPTO++_INCLUDE_DIR} "${CMAKE_SOURCE_DIR}/..") # show summary message(STATUS "---------------------------------------") @@ -129,6 +130,7 @@ message(STATUS "Install prefix: : ${CMAKE_INSTALL_PREFIX}") message(STATUS "Options:") message(STATUS " AESNI : ${WITH_AESNI}") message(STATUS " HARDENING : ${WITH_HARDENING}") +message(STATUS " SHARED LIB : ${WITH_SHLIB}") message(STATUS "---------------------------------------") add_executable ( ${PROJECT_NAME} ${SOURCES} ) @@ -140,3 +142,9 @@ endif () target_link_libraries( ${PROJECT_NAME} ${Boost_LIBRARIES} ${CRYPTO++_LIBRARIES} ${CMAKE_THREAD_LIBS_INIT} ) install(TARGETS i2pd RUNTIME DESTINATION "bin") + +if (WITH_SHLIB) + list(APPEND SOURCES "${CMAKE_SOURCE_DIR}/api.cpp") + add_library("lib${PROJECT_NAME}" SHARED ${SOURCES}) + install(TARGETS "lib${PROJECT_NAME}" LIBRARY DESTINATION "lib") +endif ()