From 414ad3a07f4bb9a4a6678d25e992d337771684b3 Mon Sep 17 00:00:00 2001 From: Nikoli Date: Wed, 22 Sep 2010 08:18:48 +0400 Subject: [PATCH] cmake: fix automagic, config installation; make examples and resources optional --- CMakeLists.txt | 30 ++++++++++++++++++---------- examples/mandelbrot/CMakeLists.txt | 6 ++-- examples/style/CMakeLists.txt | 6 ++-- src/CMakeLists.txt | 28 +++++++++++++++----------- src/Wt/CMakeLists.txt | 12 ++++++++++- src/Wt/Dbo/backend/CMakeLists.txt | 17 ++++++++++++--- test/CMakeLists.txt | 37 +++++++++++++++++++++-------------- 7 files changed, 87 insertions(+), 49 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 896bd2d..9c6f679 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -27,6 +27,10 @@ SET(WTDBOPOSTGRES_SOVERSION 23) # # Various things that must be configured by the user or packager ... # +option(BUILD_EXAMPLES "Build examples" OFF) +option(INSTALL_RESOURCES "Install resources directory" ON) +option(ENABLE_GM "Enable GraphicsMagick, for supporting painting to raster images (PNG, GIF, ...) (WRasterImage)" ON) +option(ENABLE_HARU "Enable Haru Free PDF Library, which is used to provide support for painting to PDF (WPdfImage)" ON) IF(NOT SHARED_LIBS) IF(WIN32) @@ -296,11 +300,11 @@ IF (DOXYGEN_FOUND) ADD_DEPENDENCIES(doc doxygen-examples) ENDIF (DOXYGEN_FOUND) -IF(WIN32) - SUBDIRS(src examples) -ELSE(WIN32) - SUBDIRS(src EXCLUDE_FROM_ALL examples) -ENDIF(WIN32) +SUBDIRS(src) + +IF(BUILD_EXAMPLES) + SUBDIRS(examples) +ENDIF(BUILD_EXAMPLES) IF(BUILD_TESTS) SUBDIRS(test) @@ -313,20 +317,24 @@ ENDIF( NOT DEFINED WT_CMAKE_FINDER_INSTALL_DIR) INSTALL(FILES ${PROJECT_SOURCE_DIR}/cmake/FindWt.cmake DESTINATION ${CMAKE_INSTALL_PREFIX}/${WT_CMAKE_FINDER_INSTALL_DIR} ) +IF(INSTALL_RESOURCES) INSTALL(DIRECTORY ${PROJECT_SOURCE_DIR}/resources DESTINATION ${CMAKE_INSTALL_PREFIX}/share/Wt/) +ENDIF(INSTALL_RESOURCES) -IF(NOT EXISTS ${CONFIGDIR}/wt_config.xml) +IF(NOT EXISTS ${DESTDIR}${CONFIGDIR}/wt_config.xml) INSTALL(FILES ${WT_BINARY_DIR}/wt_config.xml DESTINATION ${CONFIGDIR}) -ENDIF (NOT EXISTS ${CONFIGDIR}/wt_config.xml) +ENDIF (NOT EXISTS ${DESTDIR}${CONFIGDIR}/wt_config.xml) -IF(HARU_FOUND) +IF(ENABLE_HARU AND HARU_FOUND) + SET(HAVE_HARU ON) SET(WT_HAS_WPDFIMAGE true) -ENDIF(HARU_FOUND) +ENDIF(ENABLE_HARU AND HARU_FOUND) -IF(GM_FOUND) +IF(ENABLE_GM AND GM_FOUND) + SET(HAVE_GM ON) SET(WT_HAS_WRASTERIMAGE true) -ENDIF(GM_FOUND) +ENDIF(ENABLE_GM AND GM_FOUND) # Compile time constants & make sure our build finds it FILE(MAKE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/Wt) diff --git a/examples/mandelbrot/CMakeLists.txt b/examples/mandelbrot/CMakeLists.txt index 176cab6..64b8ff7 100644 --- a/examples/mandelbrot/CMakeLists.txt +++ b/examples/mandelbrot/CMakeLists.txt @@ -1,6 +1,6 @@ -IF(NOT GM_FOUND) +IF(NOT HAVE_GM) MESSAGE(STATUS "** Not building mandelbrot example: requires Wt::WRasterImage.") -ELSE(NOT GM_FOUND) +ELSE(NOT HAVE_GM) WT_ADD_EXAMPLE(mandelbrot.wt MandelbrotImage.C MandelbrotExample.C) @@ -11,5 +11,5 @@ ELSE(NOT GM_FOUND) ADD_DEPENDENCIES(mandelbrot.wt wt ${EXAMPLES_CONNECTOR}) -ENDIF(NOT GM_FOUND) +ENDIF(NOT HAVE_GM) diff --git a/examples/style/CMakeLists.txt b/examples/style/CMakeLists.txt index 6443035..04a71f7 100644 --- a/examples/style/CMakeLists.txt +++ b/examples/style/CMakeLists.txt @@ -1,8 +1,8 @@ -IF(NOT GM_FOUND) +IF(NOT HAVE_GM) MESSAGE(STATUS "** Not building style example: requires WRasterImage.") -ELSE(NOT GM_FOUND) +ELSE(NOT HAVE_GM) WT_ADD_EXAMPLE(styleexample.wt CornerImage.C RoundedWidget.C StyleExample.C) @@ -12,5 +12,5 @@ ELSE(NOT GM_FOUND) ADD_DEPENDENCIES(styleexample.wt wt ${EXAMPLES_CONNECTOR}) -ENDIF(NOT GM_FOUND) +ENDIF(NOT HAVE_GM) diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 7d11b67..4523540 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -238,33 +238,37 @@ IF (MULTI_THREADED_BUILD) SET(libsources ${libsources} web/SocketNotifier.C) ENDIF(MULTI_THREADED_BUILD) -IF(HARU_FOUND) +IF(HAVE_HARU) SET(libsources ${libsources} Wt/WPdfImage.C) -ENDIF(HARU_FOUND) +ENDIF(HAVE_HARU) -IF(GM_FOUND) +IF(HAVE_GM) SET(libsources ${libsources} Wt/WRasterImage.C) -ENDIF(GM_FOUND) +ENDIF(HAVE_GM) ADD_LIBRARY(wt ${libsources}) TARGET_LINK_LIBRARIES(wt ${BOOST_WT_LIBRARIES}) -IF(HARU_FOUND) +IF(HAVE_HARU) TARGET_LINK_LIBRARIES(wt ${HARU_LIBRARIES}) INCLUDE_DIRECTORIES(${HARU_INCLUDE_DIRS}) -ELSE(HARU_FOUND) +ELSE(HAVE_HARU) MESSAGE("** Disabling PDF support (WPdfImage): requires libharu.") - MESSAGE(" Indicate the location of your haru library using -DHARU_PREFIX=...") -ENDIF(HARU_FOUND) + IF(ENABLE_HARU) + MESSAGE(" Indicate the location of your haru library using -DHARU_PREFIX=...") + ENDIF(ENABLE_HARU) +ENDIF(HAVE_HARU) -IF(GM_FOUND) +IF(HAVE_GM) TARGET_LINK_LIBRARIES(wt ${GM_LIBRARIES}) INCLUDE_DIRECTORIES(${GM_INCLUDE_DIRS}) ADD_DEFINITIONS(-DHAVE_RASTER_IMAGE) -ELSE(GM_FOUND) +ELSE(HAVE_GM) MESSAGE("** Disabling raster image support (WRasterImage): requires graphicsmagick.") - MESSAGE(" Indicate the location of your graphicsmagick library using -DGM_PREFIX=...") -ENDIF(GM_FOUND) + IF(ENABLE_GM) + MESSAGE(" Indicate the location of your graphicsmagick library using -DGM_PREFIX=...") + ENDIF(ENABLE_GM) +ENDIF(HAVE_GM) IF(MULTI_THREADED_BUILD) TARGET_LINK_LIBRARIES(wt ${CMAKE_THREAD_LIBS_INIT}) diff --git a/src/Wt/CMakeLists.txt b/src/Wt/CMakeLists.txt index d5a3c58..67faae8 100644 --- a/src/Wt/CMakeLists.txt +++ b/src/Wt/CMakeLists.txt @@ -1,4 +1,14 @@ -SUBDIRS(Dbo Ext Chart Http Test) +SUBDIRS(Chart Http Test) + +# FIXME we should use (HAVE_SQLITE OR HAVE_POSTGRES) +IF(ENABLE_SQLITE OR ENABLE_POSTGRES) + SUBDIRS(Dbo) +ENDIF(ENABLE_SQLITE OR ENABLE_POSTGRES) + +option(ENABLE_EXT "Build Wt Ext library with JavaScript-only widgets (http://extjs.com/)" ON) +IF(ENABLE_EXT) + SUBDIRS(Ext) +ENDIF(ENABLE_EXT) INSTALL_FILES(/include/Wt "^W.*[^C~]$") #INSTALL( diff --git a/src/Wt/Dbo/backend/CMakeLists.txt b/src/Wt/Dbo/backend/CMakeLists.txt index 653a830..7668b90 100644 --- a/src/Wt/Dbo/backend/CMakeLists.txt +++ b/src/Wt/Dbo/backend/CMakeLists.txt @@ -1,3 +1,8 @@ +OPTION(ENABLE_SQLITE "Build SQLite3 backend for Wt::Dbo" ON) +OPTION(ENABLE_POSTGRES "Build PostgreSQL backend for Wt::Dbo" OFF) + +IF(ENABLE_SQLITE) + OPTION( USE_SYSTEM_SQLITE3 "Use system-wide Sqlite3 instead of Wt's version" OFF) IF(USE_SYSTEM_SQLITE3) @@ -41,7 +46,9 @@ PROPERTIES INSTALL_FILES(/include/Wt/Dbo/backend "^Sqlite3$") INSTALL_FILES(/include/Wt/Dbo/backend "^.*Sqlite3.*h$") -IF(POSTGRES_FOUND) +ENDIF(ENABLE_SQLITE) + +IF(ENABLE_POSTGRES AND POSTGRES_FOUND) MESSAGE("** Wt::Dbo: building Postgres backend.") ADD_LIBRARY(wtdbopostgres Postgres.C @@ -65,8 +72,10 @@ IF(POSTGRES_FOUND) INSTALL_FILES(/include/Wt/Dbo/backend "^Postgres$") INSTALL_FILES(/include/Wt/Dbo/backend "^.*Postgres.*h$") -ELSE(POSTGRES_FOUND) +ELSE(ENABLE_POSTGRES AND POSTGRES_FOUND) MESSAGE("** Wt::Dbo: not building Postgres backend.") - MESSAGE(" Indicate the location of your postgres installation using -DPOSTGRES_PREFIX=...") -ENDIF(POSTGRES_FOUND) + IF(ENABLE_POSTGRES) + MESSAGE(" Indicate the location of your postgres installation using -DPOSTGRES_PREFIX=...") + ENDIF(ENABLE_POSTGRES) +ENDIF(ENABLE_POSTGRES AND POSTGRES_FOUND) diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt index d18ca2e..2a928ae 100644 --- a/test/CMakeLists.txt +++ b/test/CMakeLists.txt @@ -1,20 +1,27 @@ -ADD_EXECUTABLE(test - test.C - chart/WChartTest.C - dbo/DboTest.C - dbo/DboTest2.C - models/WBatchEditProxyModelTest.C - utf8/Utf8Test.C - wdatetime/WDateTimeTest.C -) +# Tests need sqlite +IF(ENABLE_SQLITE) -# SQLITE3 test -TARGET_LINK_LIBRARIES(test wt wtdbo wtdbosqlite3) -ADD_DEFINITIONS(-DSQLITE3) + ADD_EXECUTABLE(test + test.C + chart/WChartTest.C + dbo/DboTest.C + dbo/DboTest2.C + models/WBatchEditProxyModelTest.C + utf8/Utf8Test.C + wdatetime/WDateTimeTest.C + ) -# POSTGRES test -#TARGET_LINK_LIBRARIES(test wt wtdbo wtdbopostgres) -#ADD_DEFINITIONS(-DPOSTGRES) + # SQLITE3 test + TARGET_LINK_LIBRARIES(test wt wtdbo wtdbosqlite3) + ADD_DEFINITIONS(-DSQLITE3) + +ENDIF(ENABLE_SQLITE) + +## # POSTGRES test +## IF(ENABLE_POSTGRES AND POSTGRES_FOUND) +## TARGET_LINK_LIBRARIES(test wt wtdbo wtdbopostgres) +## ADD_DEFINITIONS(-DPOSTGRES) +## ENDIF(ENABLE_POSTGRES AND POSTGRES_FOUND) INCLUDE_DIRECTORIES(${WT_SOURCE_DIR}/src) -- 1.7.2.2