# 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 "release") 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/") # Define files set(SRCS "src/channel.cpp" "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++14 -Wall -Wextra -Wpedantic -Wfatal-errors -Werror -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") #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) install(FILES "include/neocomm.hpp" DESTINATION "include/")