blob: ea7ca59b90a1e1645af6ae5ccfab18a8ca5a6e16 [file] [log] [blame]
From 414ad3a07f4bb9a4a6678d25e992d337771684b3 Mon Sep 17 00:00:00 2001
From: Nikoli <nikoli@lavabit.com>
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