# Copyright (C) 2018 Ortega Froysa, Nicolás # Author: Ortega Froysa, Nicolás # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the # License, or (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Affero General Public License for more details. # # You should have received a copy of the GNU Affero General Public License # along with this program. If not, see . cmake_minimum_required(VERSION 2.8) project(NeoComm CXX) # Binary filename set(TARGET_NAME "neocomm") set(TARGET_VERSION "1.0-beta") # Use DEBUG by default if(NOT CMAKE_BUILD_TYPE) set(CMAKE_BUILD_TYPE "debug") endif() string(TOLOWER ${CMAKE_BUILD_TYPE} CMAKE_BUILD_TYPE) message(STATUS "Build Type: ${CMAKE_BUILD_TYPE}") option(BUILD_SHARED_LIB "Build a dynamic library." OFF) find_package(GnuTLS REQUIRED) find_package(PkgConfig REQUIRED) pkg_check_modules(OPENDHT REQUIRED opendht>=1.4.0) include_directories( "include/" SYSTEM ${OPENDHT_INCLUDE_DIRS}) # Define files set(SRCS src/node.cpp) set(HDRS include/neocomm/channel.hpp include/neocomm/message.hpp include/neocomm/node.hpp) # Define C++ compiler flags set(CMAKE_CXX_FLAGS "-std=c++11 -Wall -Wextra -Wpedantic -Werror -Wfatal-errors -pedantic-errors -fno-elide-constructors") set(CMAKE_CXX_FLAGS_DEBUG "-g -O0") set(CMAKE_CXX_FLAGS_RELEASE "-O3") set(CMAKE_CXX_FLAGS_RELWITHDEBINFO "-g -O3") set(CMAKE_CXX_FLAGS_MINSIZEREL "-Os") add_definitions(-DVERSION="${TARGET_VERSION}") if(CMAKE_BUILD_TYPE STREQUAL "debug" OR CMAKE_BUILD_TYPE STREQUAL "relwithdebinfo") add_definitions(-DDEBUG) else() add_definitions(-DNDEBUG) endif() if(WIN32) add_definitions(-DWOE32) elseif(UNIX) add_definitions(-DUNIX) endif() # Create the executable if(${BUILD_SHARED_LIB}) add_library(${TARGET_NAME} SHARED ${SRCS}) target_link_libraries(${TARGET_NAME} ${GNUTLS_LIBRARIES} ${OPENDHT_LIBRARIES}) else() add_library(${TARGET_NAME} STATIC ${SRCS}) endif() set_target_properties(${TARGET_NAME} PROPERTIES PUBLIC_HEADER ${HDRS}) install(TARGETS ${TARGET_NAME} ARCHIVE DESTINATION lib/ LIBRARY DESTINATION lib/ PUBLIC_HEADER DESTINATION include/neocomm/ CONFIGURATIONS release minsizerel)