summaryrefslogtreecommitdiffstats
path: root/cmake/QxtConfig.cmake
diff options
context:
space:
mode:
Diffstat (limited to 'cmake/QxtConfig.cmake')
-rw-r--r--cmake/QxtConfig.cmake117
1 files changed, 117 insertions, 0 deletions
diff --git a/cmake/QxtConfig.cmake b/cmake/QxtConfig.cmake
new file mode 100644
index 0000000..d816285
--- /dev/null
+++ b/cmake/QxtConfig.cmake
@@ -0,0 +1,117 @@
+##
+## It should be noted that at the time of writing, that
+## I (mschnee) have an extremely limited understanding of the
+## way Find*.cmake files work, but I have attempted to
+## emulate what FindQt4.cmake and a few others do.
+##
+## To enable a specific component, set your QXT_USE_${modname}:
+## SET(QXT_USE_QXTCORE TRUE)
+## SET(QXT_USE_QXTGUI FALSE)
+## Currently available components:
+## QxtCore, QxtGui, QxtNetwork, QxtWeb, QxtSql
+## Auto-including directories are enabled with INCLUDE_DIRECTORIES(), but
+## can be accessed if necessary via ${QXT_INCLUDE_DIRS}
+##
+## To add the libraries to your build, TARGET_LINK_LIBRARIES(), such as...
+## TARGET_LINK_LIBRARIES(YourTargetNameHere ${QXT_LIBRARIES})
+## ...or..
+## TARGET_LINK_LIBRARIES(YourTargetNameHere ${QT_LIBRARIES} ${QXT_LIBRARIES})
+################### TODO:
+## The purpose of this cmake file is to find what components
+## exist, regardless of how libQxt was build or configured, thus
+## it should search/find all possible options. As I am not aware
+## that any module requires anything special to be used, adding all
+## modules to ${QXT_MODULES} below should be sufficient.
+## Eventually, there should be version numbers, but
+## I am still too unfamiliar with cmake to determine how to do
+## version checks and comparisons.
+## At the moment, this cmake returns a failure if you
+## try to use a component that doesn't exist. I don't know how to
+## set up warnings.
+## It would be nice having a FindQxt.cmake and a UseQxt.cmake
+## file like done for Qt - one to check for everything in advance
+
+##############
+
+###### setup .... if everything depends on core... right?
+SET(QXT_MODULES QxtGui QxtNetwork QxtWork QxtSql QxtCore)
+FOREACH(mod ${QXT_MODULES})
+ STRING(TOUPPER ${mod} U_MOD)
+ SET(QXT_${U_MOD}_INCLUDE_DIR NOTFOUND)
+ SET(QXT_${U_MOD}_LIB_DEBUG NOTFOUND)
+ SET(QXT_${U_MOD}_LIB_RELEASE NOTFOUND)
+ SET(QXT_FOUND_${U_MOD} FALSE)
+ENDFOREACH(mod)
+SET(QXT_QXTGUI_DEPENDSON QxtCore)
+SET(QXT_QXTNETWORK_DEPENDSON QxtCore)
+SET(QXT_QXTWEB_DEPENDSON QxtCore)
+SET(QXT_QXTQSQL_DEPENDSON QxtCore)
+
+FOREACH(mod ${QXT_MODULES})
+ STRING(TOUPPER ${mod} U_MOD)
+ FIND_PATH(QXT_${U_MOD}_INCLUDE_DIR ${mod}
+ /usr/Qxt/include/${mod}
+ /usr/local/Qxt/include/${mod}
+ C:\\libQxt\\include\\${mod}
+ NO_DEFAULT_PATH
+ )
+ FIND_LIBRARY(QXT_${U_MOD}_LIB_RELEASE NAME ${mod}
+ PATHS
+ /usr/Qxt/lib
+ /usr/local/Qxt/lib
+ C:\\libQxt\\lib
+ NO_DEFAULT_PATH
+ )
+ FIND_LIBRARY(QXT_${U_MOD}_LIB_DEBUG NAME ${mod}d
+ PATHS
+ /usr/Qxt/lib
+ /usr/local/Qxt/lib
+ C:\\libQxt\\lib
+ NO_DEFAULT_PATH
+ )
+ MESSAGE( "Found lib..." ${QXT_${U_MOD}_LIB_RELEASE} )
+ENDFOREACH(mod)
+
+FOREACH(mod ${QXT_MODULES})
+ STRING(TOUPPER ${mod} U_MOD)
+ IF(QXT_${U_MOD}_INCLUDE_DIR AND QXT_${U_MOD}_LIB_RELEASE)
+ SET(QXT_FOUND_${U_MOD} TRUE)
+ ENDIF(QXT_${U_MOD}_INCLUDE_DIR AND QXT_${U_MOD}_LIB_RELEASE)
+ENDFOREACH(mod)
+
+
+##### find and include
+# To use a Qxt Library....
+# SET(QXT_FIND_COMPONENTS QxtCore, QxtGui)
+# ...and this will do the rest
+IF( QXT_FIND_COMPONENTS )
+ FOREACH( component ${QXT_FIND_COMPONENTS} )
+ STRING( TOUPPER ${component} _COMPONENT )
+ SET(QXT_USE_${_COMPONENT}_COMPONENT TRUE)
+ ENDFOREACH( component )
+ENDIF( QXT_FIND_COMPONENTS )
+
+SET(QXT_LIBRARIES "")
+SET(QXT_INCLUDE_DIRS "")
+
+# like FindQt4.cmake, in order of dependence
+FOREACH( module ${QXT_MODULES} )
+ STRING(TOUPPER ${module} U_MOD)
+ IF(QXT_USE_${U_MOD} OR QXT_DEPENDS_${U_MOD})
+ MESSAGE("Searching for ${module}")
+ IF(QXT_FOUND_${U_MOD})
+ STRING(REPLACE "QXT" "" qxt_module_def "${U_MOD}")
+ ADD_DEFINITIONS(-DQXT_${qxt_module_def}_LIB)
+ SET(QXT_INCLUDE_DIRS ${QXT_INCLUDE_DIRS} ${QXT_${U_MOD}_INCLUDE_DIR})
+ INCLUDE_DIRECTORIES(${QXT_${U_MOD}_INCLUDE_DIR})
+ SET(QXT_LIBRARIES ${QXT_LIBRARIES} ${QXT_${U_MOD}_LIB_RELEASE})
+ ELSE(QXT_FOUND_${U_MOD})
+ MESSAGE("Could not find Qxt Module ${module}")
+ RETURN()
+ ENDIF(QXT_FOUND_${U_MOD})
+ FOREACH(dep QXT_${U_MOD}_DEPENDSON)
+ SET(QXT_DEPENDS_${dep} TRUE)
+ ENDFOREACH(dep)
+ ENDIF(QXT_USE_${U_MOD} OR QXT_DEPENDS_${U_MOD})
+ENDFOREACH(module)
+MESSAGE( "Including QxtLibraries..." ${QXT_LIBRARIES} )