\r
PROJECT(fms)\r
\r
-OPTION(USE_BUNDLED_SQLITE "Use the bundled SQLite3 library." OFF)\r
+OPTION(USE_BUNDLED_SQLITE "Use the bundled SQLite3 library." ON)\r
IF(APPLE)\r
SET(USE_BUNDLED_SQLITE ON)\r
ENDIF(APPLE)\r
OPTION(DO_CHARSET_CONVERSION "Do charset conversion on sent messages to UTF-8. This requires libiconv." ON)\r
OPTION(I_HAVE_READ_THE_README "I have fully read and understood the readme.txt." OFF)\r
OPTION(ALTERNATE_CAPTCHA "Use alternate captcha. This requires the FreeImage library." OFF)\r
+OPTION(QUERY_LOG "Log all database queries made by FMS." OFF)\r
+OPTION(FROST_SUPPORT "Compile with support for downloading Frost messages." ON)\r
\r
SET(FMS_SRC\r
src/base64.cpp\r
src/http/pages/recentlyaddedpage.cpp\r
src/http/pages/showcaptchapage.cpp\r
src/http/pages/showimagepage.cpp\r
+src/http/pages/showpendingmessagepage.cpp\r
src/http/pages/versioninfopage.cpp\r
src/nntp/extensiontrust.cpp\r
src/nntp/nntpconnection.cpp\r
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.")\r
ENDIF(ALTERNATE_CAPTCHA)\r
\r
+IF(FROST_SUPPORT)\r
+# TODO - add source files for frost support\r
+ SET(FMS_SRC ${FMS_SRC}\r
+ src/freenet/frostidentity.cpp\r
+ src/freenet/frostmessagerequester.cpp\r
+ src/freenet/frostmessagexml.cpp)\r
+ENDIF(FROST_SUPPORT)\r
+\r
+# Get a relative list of include files.\r
+FILE(GLOB_RECURSE FMS_INC RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} include/*.h)\r
+\r
+# Create source groups for all sources and includes, in their original directory structure.\r
+FOREACH(SRC ${FMS_SRC} ${FMS_INC})\r
+ STRING(REGEX REPLACE ${CMAKE_CURRENT_SOURCE_DIR} "Files" REL_DIR "${SRC}")\r
+ STRING(REGEX REPLACE "[\\\\/][^\\\\/]*$" "" REL_DIR "${REL_DIR}")\r
+ STRING(REGEX REPLACE "^[\\\\/]" "" REL_DIR "${REL_DIR}")\r
+ IF(REL_DIR)\r
+ STRING(REPLACE "/" "\\" REL_DIR "${REL_DIR}")\r
+ SOURCE_GROUP(${REL_DIR} FILES ${SRC})\r
+ ELSE(REL_DIR)\r
+ SOURCE_GROUP(Files FILES ${SRC})\r
+ ENDIF(REL_DIR)\r
+ENDFOREACH(SRC)\r
+\r
IF(NOT I_HAVE_READ_THE_README)\r
MESSAGE(FATAL_ERROR "You must fully read the readme.txt before continuing.")\r
ENDIF(NOT I_HAVE_READ_THE_README)\r
\r
-ADD_EXECUTABLE(fms ${FMS_SRC} ${FMS_PLATFORM_SRC})\r
+ADD_EXECUTABLE(fms ${FMS_SRC} ${FMS_PLATFORM_SRC} ${FMS_INC})\r
\r
# link dl - For SQLite3 and shttpd - not for FreeBSD\r
IF(CMAKE_COMPILER_IS_GNUCC)\r
IF(NOT USE_BUNDLED_SQLITE)\r
FIND_LIBRARY(SQLITE3_LIBRARY NAMES sqlite3 sqlite3_s)\r
ENDIF(NOT USE_BUNDLED_SQLITE)\r
+\r
FIND_LIBRARY(POCO_FOUNDATION_LIBRARY NAMES PocoFoundation PocoFoundationmt)\r
FIND_LIBRARY(POCO_NET_LIBRARY NAMES PocoNet PocoNetmt)\r
FIND_LIBRARY(POCO_UTIL_LIBRARY NAMES PocoUtil PocoUtilmt)\r
ENDIF(ALTERNATE_CAPTCHA)\r
\r
IF(POCO_FOUNDATION_LIBRARY)\r
- TARGET_LINK_LIBRARIES(fms ${POCO_FOUNDATION_LIBRARY})\r
+ # We don't need to explicitly link under MSVC, POCO uses #pragmas to specify linked libraries.\r
+ IF(NOT MSVC)\r
+ TARGET_LINK_LIBRARIES(fms ${POCO_FOUNDATION_LIBRARY})\r
+ ENDIF(NOT MSVC)\r
ADD_DEFINITIONS(-DPOCO_HAVE_IPv6)\r
IF(WIN32)\r
ADD_DEFINITIONS(-DPOCO_STATIC)\r
ENDIF(WIN32)\r
IF(POCO_UTIL_LIBRARY)\r
- TARGET_LINK_LIBRARIES(fms ${POCO_UTIL_LIBRARY})\r
+ IF(NOT MSVC)\r
+ TARGET_LINK_LIBRARIES(fms ${POCO_UTIL_LIBRARY})\r
+ ENDIF(NOT MSVC)\r
ELSE(POCO_UTIL_LIBRARY)\r
MESSAGE(FATAL_ERROR "Could not find system Poco Util library. You must set the location manually.")\r
ENDIF(POCO_UTIL_LIBRARY)\r
IF(POCO_NET_LIBRARY)\r
- TARGET_LINK_LIBRARIES(fms ${POCO_NET_LIBRARY})\r
+ IF(NOT MSVC)\r
+ TARGET_LINK_LIBRARIES(fms ${POCO_NET_LIBRARY})\r
+ ENDIF(NOT MSVC)\r
ELSE(POCO_NET_LIBRARY)\r
MESSAGE(FATAL_ERROR "Could not find system Poco Net library. You must set the location manually.")\r
ENDIF(POCO_NET_LIBRARY)\r
IF(POCO_XML_LIBRARY)\r
- TARGET_LINK_LIBRARIES(fms ${POCO_XML_LIBRARY})\r
+ IF(NOT MSVC)\r
+ TARGET_LINK_LIBRARIES(fms ${POCO_XML_LIBRARY})\r
+ ENDIF(NOT MSVC)\r
ELSE(POCO_XML_LIBRARY)\r
MESSAGE(FATAL_ERROR "Could not find system Poco XML library. You must set the location manually.")\r
ENDIF(POCO_XML_LIBRARY)\r
ENDIF(FREEIMAGE_LIBRARY)\r
ENDIF(ALTERNATE_CAPTCHA)\r
\r
+IF(FROST_SUPPORT)\r
+ FIND_LIBRARY(TOMCRYPT_LIBRARY NAMES tomcrypt libtomcrypt)\r
+ FIND_LIBRARY(TOMMATH_LIBRARY NAMES tommath libtommath)\r
+ \r
+ IF(TOMMATH_LIBRARY)\r
+ TARGET_LINK_LIBRARIES(fms ${TOMMATH_LIBRARY})\r
+ ELSE(TOMMATH_LIBRARY)\r
+ #ADD_LIBRARY(tommath ${LIBTOMMATH_SRC})\r
+ ADD_SUBDIRECTORY(libs/libtommath)\r
+ TARGET_LINK_LIBRARIES(fms tommath)\r
+ INCLUDE_DIRECTORIES(libs/libtommath)\r
+ ENDIF(TOMMATH_LIBRARY)\r
+ \r
+ IF(TOMCRYPT_LIBRARY)\r
+ TARGET_LINK_LIBRARIES(fms ${TOMCRYPT_LIBRARY})\r
+ ELSE(TOMCRYPT_LIBRARY)\r
+ #ADD_DEFINITIONS(-DLTC_NO_ASM)\r
+ #ADD_LIBRARY(tomcrypt ${LIBTOMCRYPT_SRC})\r
+ ADD_SUBDIRECTORY(libs/libtomcrypt)\r
+ TARGET_LINK_LIBRARIES(fms tomcrypt)\r
+ INCLUDE_DIRECTORIES(libs/libtomcrypt/headers)\r
+ ENDIF(TOMCRYPT_LIBRARY)\r
+ \r
+ ADD_DEFINITIONS(-DFROST_SUPPORT)\r
+ \r
+ENDIF(FROST_SUPPORT)\r
+\r
# FreeBSD won't find Poco include files without this\r
IF(CMAKE_SYSTEM_NAME STREQUAL "FreeBSD")\r
INCLUDE_DIRECTORIES(AFTER /usr/local/include)\r
ENDIF(CMAKE_SYSTEM_NAME STREQUAL "FreeBSD")\r
+\r
+IF(QUERY_LOG)\r
+ ADD_DEFINITIONS(-DQUERY_LOG)\r
+ENDIF(QUERY_LOG)\r