cmake_minimum_required(VERSION 2.6) project(aCms) find_library(CPPCMS cppcms) find_library(BOOSTER booster) find_library(CPPDB cppdb) find_path(CPPCMS_INC cppcms/application.h) find_path(BOOSTER_INC booster/shared_ptr.h) find_path(CPPDB_INC cppdb/frontend.h) add_subdirectory(3rdParty) add_definitions( "-DBUFFERSIZE=4096" ) include_directories(${CPPCMS_INC}) include_directories(${BOOSTER_INC}) include_directories(${CPPDB_INC}) include_directories(${CMAKE_CURRENT_SOURCE_DIR}/src) include_directories(${CMAKE_CURRENT_SOURCE_DIR}/3rdParty/libb64/include) include_directories(${CMAKE_CURRENT_SOURCE_DIR}/3rdParty/libquickmail) find_program(TMPLCC cppcms_tmpl_cc) find_program(XGETTEXT xgettext) find_program(MSGFMT msgfmt) find_program(MSGMERGE msgmerge) find_library(CURL curl /usr/lib) find_library(CRYPTOPP crypto++ /usr/lib) if(CMAKE_COMPILER_IS_GNUCXX) set( CMAKE_CXX_FLAGS "-std=c++98 -Wall -pedantic -g -Wfatal-errors -Werror -fPIC -O0" ) endif() set(TEMPLATES ${CMAKE_CURRENT_SOURCE_DIR}/templates/master.tmpl ${CMAKE_CURRENT_SOURCE_DIR}/templates/not_found_404.tmpl ${CMAKE_CURRENT_SOURCE_DIR}/templates/intro.tmpl ${CMAKE_CURRENT_SOURCE_DIR}/templates/login.tmpl ${CMAKE_CURRENT_SOURCE_DIR}/templates/logout.tmpl ${CMAKE_CURRENT_SOURCE_DIR}/templates/register.tmpl ${CMAKE_CURRENT_SOURCE_DIR}/templates/confirm_register.tmpl ) set(SRC src/main.cpp src/aCms.cpp src/captcha.cpp src/cracklib.cpp src/mail.cpp src/master.cpp src/intro.cpp src/user.cpp src/page.cpp ) add_custom_command( OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/view.cpp COMMAND ${TMPLCC} -d wikipp -o ${CMAKE_CURRENT_BINARY_DIR}/view.cpp ${TEMPLATES} DEPENDS ${TEMPLATES} ) if(USE_STATIC_VIEW) add_executable(aCms ${SRC} ${CMAKE_CURRENT_BINARY_DIR}/view.cpp) else() add_executable(aCms ${SRC} ${CAPTCHA}) add_library(view SHARED ${CMAKE_CURRENT_BINARY_DIR}/view.cpp) target_link_libraries(view ${BOOSTER} ${CPPCMS}) endif() link_directories( "${PROJECT_SOURCE_DIR}/3rdParty/captcha" ) link_directories( "${PROJECT_SOURCE_DIR}/3rdParty/libb64" ) link_directories( "${PROJECT_SOURCE_DIR}/3rdParty/libquickmail" ) target_link_libraries(aCms ${BOOSTER} ${CPPCMS} ${CPPDB} captcha b64 quickmail curl cryptopp crack) #~ set(LOCALES de fr) #~ #~ set(MO_FILES) #~ set(UPDATE_PO_LIST) #~ set(POT_TEMPLATE "${CMAKE_CURRENT_SOURCE_DIR}/po/aCms.pot") #~ #~ add_custom_command( #~ OUTPUT ${POT_TEMPLATE} #~ COMMAND #~ ${XGETTEXT} #~ --keyword=translate:1,1t #~ --keyword=translate:1,2,3t #~ --keyword=_ #~ --keyword=N_ #~ ${SRC} #~ ${CMAKE_CURRENT_BINARY_DIR}/view.cpp #~ --output=${POT_TEMPLATE} #~ DEPENDS ${SRC} ${CMAKE_CURRENT_BINARY_DIR}/view.cpp #~ WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} #~ ) #~ #~ add_custom_target(update-po) #~ #~ foreach(LOCALE ${LOCALES}) #~ set(MODIR "${CMAKE_CURRENT_BINARY_DIR}/locale/${LOCALE}/LC_MESSAGES") #~ file(MAKE_DIRECTORY "${MODIR}") #~ set(MOFILE "${MODIR}/aCms.mo") #~ set(POFILE "${CMAKE_CURRENT_SOURCE_DIR}/po/${LOCALE}.po") #~ #~ add_custom_command( #~ OUTPUT ${MOFILE} #~ COMMAND ${MSGFMT} ${POFILE} -o ${MOFILE} #~ DEPENDS ${POFILE}) #~ #~ add_custom_target(update-po-${LOCALE} #~ COMMAND ${MSGMERGE} -U ${POFILE} ${CMAKE_CURRENT_SOURCE_DIR}/po/aCms.pot #~ DEPENDS ${POT_TEMPLATE} #~ ) #~ add_dependencies(update-po update-po-${LOCALE}) #~ #~ set(MO_FILES ${MO_FILES} ${MOFILE}) #~ set(UPDATE_PO_LIST ${UPDATE_PO_LIST} update-po-${LOCALE}) #~ endforeach() #~ #~ add_custom_target(create-po ALL DEPENDS ${MO_FILES}) #~ #~ install(TARGETS aCms view #~ RUNTIME DESTINATION bin #~ LIBRARY DESTINATION lib/aCms #~ ARCHIVE DESTINATION lib/aCms) #~ #~ foreach(STYLE style style-ltr style-rtl) #~ install(FILES media/${STYLE}.css DESTINATION share/aCms/media) #~ endforeach() #~ #~ foreach(SQL sqlite3 postgresql) #~ install(FILES sql/${SQL}.sql DESTINATION share/aCms/sql) #~ endforeach() #~ #~ foreach(LOCALE ${LOCALES}) #~ install(FILES ${CMAKE_CURRENT_BINARY_DIR}/locale/${LOCALE}/LC_MESSAGES/aCms.mo #~ DESTINATION share/locale/${LOCALE}/LC_MESSAGES/) #~ endforeach() #~ #~ install(FILES sample_config.js DESTINATION share/aCms) if(UNIX) ADD_CUSTOM_TARGET (distclean @echo cleaning for source distribution) SET(DISTCLEANED cmake.depends cmake.check_depends CMakeCache.txt cmake.check_cache *.cmake Makefile core core.* *~ CMakeFiles ) ADD_CUSTOM_COMMAND( DEPENDS clean COMMENT "distribution clean" COMMAND rm ARGS -Rf pkg ${DISTCLEANED} TARGET distclean ) endif() ADD_CUSTOM_TARGET(run @echo runs the web server) ADD_CUSTOM_COMMAND( COMMENT "run" COMMAND aCms ARGS -c ./config.js TARGET run )