X-Git-Url: https://git.pterodactylus.net/?p=fms.git;a=blobdiff_plain;f=CMakeLists.txt;h=88af084ffb3dfdc0ea0b88344699e1574378fc3b;hp=a5aef9edf5f1b258db03d6cf0d84b6b3f5479196;hb=HEAD;hpb=221236a4d3aac4144529d418ce368db5c98facb0 diff --git a/CMakeLists.txt b/CMakeLists.txt index a5aef9e..88af084 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -5,13 +5,15 @@ ENDIF(COMMAND CMAKE_POLICY) PROJECT(fms) -OPTION(USE_BUNDLED_SQLITE "Use the bundled SQLite3 library." OFF) +OPTION(USE_BUNDLED_SQLITE "Use the bundled SQLite3 library." ON) IF(APPLE) SET(USE_BUNDLED_SQLITE ON) ENDIF(APPLE) OPTION(DO_CHARSET_CONVERSION "Do charset conversion on sent messages to UTF-8. This requires libiconv." ON) OPTION(I_HAVE_READ_THE_README "I have fully read and understood the readme.txt." OFF) OPTION(ALTERNATE_CAPTCHA "Use alternate captcha. This requires the FreeImage library." OFF) +OPTION(QUERY_LOG "Log all database queries made by FMS." OFF) +OPTION(FROST_SUPPORT "Compile with support for downloading Frost messages." ON) SET(FMS_SRC src/base64.cpp @@ -53,6 +55,7 @@ src/freenet/identityintroductionrequester.cpp src/freenet/identityintroductionxml.cpp src/freenet/identityrequester.cpp src/freenet/identityxml.cpp +src/freenet/inactivemessagelistrequester.cpp src/freenet/introductionpuzzleinserter.cpp src/freenet/introductionpuzzlerequester.cpp src/freenet/introductionpuzzlexml.cpp @@ -67,6 +70,7 @@ src/freenet/trustlistinserter.cpp src/freenet/trustlistrequester.cpp src/freenet/trustlistxml.cpp src/freenet/unkeyedidcreator.cpp +src/freenet/unknownidentityrequester.cpp src/freenet/captcha/simplecaptcha.cpp src/freenet/captcha/easybmp/EasyBMP.cpp src/freenet/captcha/easybmp/EasyBMP_Font.cpp @@ -79,8 +83,6 @@ src/http/multipartparser.cpp src/http/pages/addpeerpage.cpp src/http/pages/announceidentitypage.cpp src/http/pages/boardspage.cpp -src/http/pages/browseboardspage.cpp -src/http/pages/browsemessagespage.cpp src/http/pages/confirmpage.cpp src/http/pages/controlboardpage.cpp src/http/pages/createidentitypage.cpp @@ -99,6 +101,7 @@ src/http/pages/peertrustpage.cpp src/http/pages/recentlyaddedpage.cpp src/http/pages/showcaptchapage.cpp src/http/pages/showimagepage.cpp +src/http/pages/showpendingmessagepage.cpp src/http/pages/versioninfopage.cpp src/nntp/extensiontrust.cpp src/nntp/nntpconnection.cpp @@ -109,6 +112,9 @@ src/nntp/mime/MimeChar.cpp src/nntp/mime/MimeCode.cpp src/nntp/mime/MimeType.cpp src/threadwrapper/threadedexector.cpp +src/unicode/ConvertUTF.c +src/unicode/unicodeformatter.cpp +src/unicode/utfconversion.cpp ) SET(FMS_PLATFORM_SRC ) @@ -128,11 +134,35 @@ ELSE(ALTERNATE_CAPTCHA) MESSAGE(STATUS "You are using the old captcha generator. Add a -D ALTERNATE_CAPTCHA=ON to the command line to use the alternate captcha generator.") ENDIF(ALTERNATE_CAPTCHA) +IF(FROST_SUPPORT) +# TODO - add source files for frost support + SET(FMS_SRC ${FMS_SRC} + src/freenet/frostidentity.cpp + src/freenet/frostmessagerequester.cpp + src/freenet/frostmessagexml.cpp) +ENDIF(FROST_SUPPORT) + +# Get a relative list of include files. +FILE(GLOB_RECURSE FMS_INC RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} include/*.h) + +# Create source groups for all sources and includes, in their original directory structure. +FOREACH(SRC ${FMS_SRC} ${FMS_INC}) + STRING(REGEX REPLACE ${CMAKE_CURRENT_SOURCE_DIR} "Files" REL_DIR "${SRC}") + STRING(REGEX REPLACE "[\\\\/][^\\\\/]*$" "" REL_DIR "${REL_DIR}") + STRING(REGEX REPLACE "^[\\\\/]" "" REL_DIR "${REL_DIR}") + IF(REL_DIR) + STRING(REPLACE "/" "\\" REL_DIR "${REL_DIR}") + SOURCE_GROUP(${REL_DIR} FILES ${SRC}) + ELSE(REL_DIR) + SOURCE_GROUP(Files FILES ${SRC}) + ENDIF(REL_DIR) +ENDFOREACH(SRC) + IF(NOT I_HAVE_READ_THE_README) MESSAGE(FATAL_ERROR "You must fully read the readme.txt before continuing.") ENDIF(NOT I_HAVE_READ_THE_README) -ADD_EXECUTABLE(fms ${FMS_SRC} ${FMS_PLATFORM_SRC}) +ADD_EXECUTABLE(fms ${FMS_SRC} ${FMS_PLATFORM_SRC} ${FMS_INC}) # link dl - For SQLite3 and shttpd - not for FreeBSD IF(CMAKE_COMPILER_IS_GNUCC) @@ -164,6 +194,7 @@ ENDIF(CMAKE_SYSTEM_NAME STREQUAL "SunOS") IF(NOT USE_BUNDLED_SQLITE) FIND_LIBRARY(SQLITE3_LIBRARY NAMES sqlite3 sqlite3_s) ENDIF(NOT USE_BUNDLED_SQLITE) + FIND_LIBRARY(POCO_FOUNDATION_LIBRARY NAMES PocoFoundation PocoFoundationmt) FIND_LIBRARY(POCO_NET_LIBRARY NAMES PocoNet PocoNetmt) FIND_LIBRARY(POCO_UTIL_LIBRARY NAMES PocoUtil PocoUtilmt) @@ -178,23 +209,32 @@ IF(ALTERNATE_CAPTCHA) ENDIF(ALTERNATE_CAPTCHA) IF(POCO_FOUNDATION_LIBRARY) - TARGET_LINK_LIBRARIES(fms ${POCO_FOUNDATION_LIBRARY}) + # We don't need to explicitly link under MSVC, POCO uses #pragmas to specify linked libraries. + IF(NOT MSVC) + TARGET_LINK_LIBRARIES(fms ${POCO_FOUNDATION_LIBRARY}) + ENDIF(NOT MSVC) ADD_DEFINITIONS(-DPOCO_HAVE_IPv6) IF(WIN32) ADD_DEFINITIONS(-DPOCO_STATIC) ENDIF(WIN32) IF(POCO_UTIL_LIBRARY) - TARGET_LINK_LIBRARIES(fms ${POCO_UTIL_LIBRARY}) + IF(NOT MSVC) + TARGET_LINK_LIBRARIES(fms ${POCO_UTIL_LIBRARY}) + ENDIF(NOT MSVC) ELSE(POCO_UTIL_LIBRARY) MESSAGE(FATAL_ERROR "Could not find system Poco Util library. You must set the location manually.") ENDIF(POCO_UTIL_LIBRARY) IF(POCO_NET_LIBRARY) - TARGET_LINK_LIBRARIES(fms ${POCO_NET_LIBRARY}) + IF(NOT MSVC) + TARGET_LINK_LIBRARIES(fms ${POCO_NET_LIBRARY}) + ENDIF(NOT MSVC) ELSE(POCO_NET_LIBRARY) MESSAGE(FATAL_ERROR "Could not find system Poco Net library. You must set the location manually.") ENDIF(POCO_NET_LIBRARY) IF(POCO_XML_LIBRARY) - TARGET_LINK_LIBRARIES(fms ${POCO_XML_LIBRARY}) + IF(NOT MSVC) + TARGET_LINK_LIBRARIES(fms ${POCO_XML_LIBRARY}) + ENDIF(NOT MSVC) ELSE(POCO_XML_LIBRARY) MESSAGE(FATAL_ERROR "Could not find system Poco XML library. You must set the location manually.") ENDIF(POCO_XML_LIBRARY) @@ -242,7 +282,38 @@ IF(ALTERNATE_CAPTCHA) ENDIF(FREEIMAGE_LIBRARY) ENDIF(ALTERNATE_CAPTCHA) +IF(FROST_SUPPORT) + FIND_LIBRARY(TOMCRYPT_LIBRARY NAMES tomcrypt libtomcrypt) + FIND_LIBRARY(TOMMATH_LIBRARY NAMES tommath libtommath) + + IF(TOMMATH_LIBRARY) + TARGET_LINK_LIBRARIES(fms ${TOMMATH_LIBRARY}) + ELSE(TOMMATH_LIBRARY) + #ADD_LIBRARY(tommath ${LIBTOMMATH_SRC}) + ADD_SUBDIRECTORY(libs/libtommath) + TARGET_LINK_LIBRARIES(fms tommath) + INCLUDE_DIRECTORIES(libs/libtommath) + ENDIF(TOMMATH_LIBRARY) + + IF(TOMCRYPT_LIBRARY) + TARGET_LINK_LIBRARIES(fms ${TOMCRYPT_LIBRARY}) + ELSE(TOMCRYPT_LIBRARY) + #ADD_DEFINITIONS(-DLTC_NO_ASM) + #ADD_LIBRARY(tomcrypt ${LIBTOMCRYPT_SRC}) + ADD_SUBDIRECTORY(libs/libtomcrypt) + TARGET_LINK_LIBRARIES(fms tomcrypt) + INCLUDE_DIRECTORIES(libs/libtomcrypt/headers) + ENDIF(TOMCRYPT_LIBRARY) + + ADD_DEFINITIONS(-DFROST_SUPPORT) + +ENDIF(FROST_SUPPORT) + # FreeBSD won't find Poco include files without this IF(CMAKE_SYSTEM_NAME STREQUAL "FreeBSD") INCLUDE_DIRECTORIES(AFTER /usr/local/include) ENDIF(CMAKE_SYSTEM_NAME STREQUAL "FreeBSD") + +IF(QUERY_LOG) + ADD_DEFINITIONS(-DQUERY_LOG) +ENDIF(QUERY_LOG)