grim/guifications3

Parents d4bbd9f88813
Children fbba58580228
added gflib.cmake to save a ton of typing that I already did for the most part. Oh well, since source to edit in the future ;)
--- a/gflib/CMakeLists.txt Mon Dec 13 23:40:42 2010 -0600
+++ b/gflib/CMakeLists.txt Tue Dec 14 23:31:17 2010 -0600
@@ -1,101 +1,19 @@
cmake_minimum_required(VERSION 2.8)
-###############################################################################
-# Project Info
-###############################################################################
-project(gflib C)
-
-set(GFLIB_MAJOR_VERSION 0)
-set(GFLIB_MINOR_VERSION 0)
-set(GFLIB_MICRO_VERSION 1)
-set(GFLIB_EXTRA_VERSION dev)
+set(CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/cmake/Modules)
-set(VERSION ${GFLIB_MAJOR_VERSION}.${GFLIB_MINOR_VERSION}.${GFLIB_MICRO_VERSION}${GFLIB_EXTRA_VERSION})
-
-###############################################################################
-# Dependencies
-###############################################################################
-include(FindPkgConfig)
-
-pkg_check_modules(GLIB REQUIRED
- glib-2.0>=2.16.0
- gobject-2.0>=2.16.0
- gthread-2.0>=2.16.0
-)
+include(gflib)
+GFLIB_LIBRARY_PROJECT(gflib 0 0 1 dev)
pkg_check_modules(GMODULE REQUIRED gmodule-2.0>=2.16.0)
-
-find_program(GLIB_GENMARSHAL
- NAMES glib-genmarshal
- DOC "glib-genmarshal executable"
-)
-mark_as_advanced(GLIB_GENMARSHAL)
-
-find_program(GLIB_MKENUMS
- NAMES glib-mkenums
- DOC "glib-mkenums executable"
-)
-mark_as_advanced(GLIB_MKENUMS)
-
-find_program(GTESTER
- NAMES gtester
- DOC "gtester executable"
-)
-mark_as_advanced(GTESTER)
+include_directories(${GMODULE_INCLUDE_DIRS})
+link_directories(${GMODULE_LIBRARY_DIRS})
-###############################################################################
-# Build Info
-###############################################################################
-include_directories(
- ${CMAKE_SOURCE_DIR}
- ${CMAKE_SOURCE_DIR}/gflib
- ${CMAKE_BINARY_DIR}
- ${CMAKE_BINARY_DIR}/gflib
- ${GLIB_INCLUDE_DIRS}
- ${GMODULE_INCLUDE_DIRS}
-)
-
-link_directories(
- ${GLIB_LIBRARY_DIRS}
- ${GMODULE_LIBRARY_DIRS}
-)
-
-add_definitions(
- -DGETTEXT_PACKAGE="gflib"
- -DDATADIR="${CMAKE_INSTALL_PREFIX}/share"
- -DLIBDIR="${CMAKE_INSTALL_PREFIX}/lib"
- -DLOCALEDIR="${CMAKE_INSTALL_PREFIX}/locale"
- -g -g3 -Wall
-)
-
-###############################################################################
# Subdirectories
-###############################################################################
add_subdirectory(gflib)
+add_subdirectory(cmake)
add_subdirectory(contrib)
add_subdirectory(doc)
add_subdirectory(po)
add_subdirectory(tests)
-###############################################################################
-# Config Files
-###############################################################################
-configure_file(gflib.pc.in gflib.pc @ONLY)
-
-###############################################################################
-# Unit Testing
-###############################################################################
-enable_testing()
-
-###############################################################################
-# Install Stuff
-###############################################################################
-# documentation
-install(
- FILES AUTHORS ChangeLog COPYING NEWS README
- DESTINATION share/doc/gflib
-)
-
-# pkg-config files
-install(FILES ${CMAKE_CURRENT_BINARY_DIR}/gflib.pc DESTINATION lib/pkgconfig)
-
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/gflib/cmake/CMakeLists.txt Tue Dec 14 23:31:17 2010 -0600
@@ -0,0 +1,2 @@
+add_subdirectory(Modules)
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/gflib/cmake/Modules/CMakeLists.txt Tue Dec 14 23:31:17 2010 -0600
@@ -0,0 +1,5 @@
+install(
+ FILES gflib.cmake
+ DESTINATION share/cmake-${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION}/Modules
+)
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/gflib/cmake/Modules/gflib.cmake Tue Dec 14 23:31:17 2010 -0600
@@ -0,0 +1,112 @@
+macro(_gflib_add_dependencies _project _is_gflib)
+ # if we're on osx add the fink and macports pkg-config paths
+ if(${CMAKE_HOST_APPLE})
+ set(ENV{PKG_CONFIG_PATH} $ENV{PKG_CONFIG_PATH} /sw/lib/pkgconfig /opt/local/lib/pkgconfig)
+ endif(${CMAKE_HOST_APPLE})
+
+ # include pkg-config
+ include(FindPkgConfig)
+
+ # look for glib and it's helper tools
+ pkg_check_modules(GLIB REQUIRED
+ glib-2.0>=2.16.0
+ gobject-2.0>=2.16.0
+ gthread-2.0>=2.16.0
+ )
+
+ find_program(GLIB_GENMARSHAL
+ NAMES glib-genmarshal
+ DOC "glib-genmarshal executable"
+ )
+ mark_as_advanced(GLIB_GENMARSHAL)
+
+ find_program(GLIB_MKENUMS
+ NAMES glib-mkenums
+ DOC "glib-mkenums executable"
+ )
+ mark_as_advanced(GLIB_MKENUMS)
+
+ find_program(GTESTER
+ NAMES gtester
+ DOC "gtester executable"
+ )
+ mark_as_advanced(GTESTER)
+
+ # now add gflib as a dependency unless this is gflib
+ if(NOT ${_is_gflib})
+ pkg_check_modules(GFLIB REQUIRED gflib)
+ endif(NOT ${_is_gflib})
+endmacro(_gflib_add_dependencies)
+
+# This macro adds our include directories, link directories, and definitions
+macro(_gflib_add_build_info _project _is_gflib)
+ include_directories(
+ ${CMAKE_SOURCE_DIR}
+ ${CMAKE_BINARY_DIR}
+ ${GLIB_INCLUDE_DIRS}
+ )
+
+ link_directories(
+ ${GLIB_LIBRARY_DIRS}
+ )
+
+ add_definitions(
+ -DGETTEXT_PACKAGE="${_project}"
+ -DDATADIR="${CMAKE_INSTALL_PREFIX}/share"
+ -DLIBDIR="${CMAKE_INSTALL_PREFIX}/lib"
+ -DLOCALEDIR="${CMAKE_INSTALL_PREFIX}/locale"
+ -DVERSION="${VERSION}"
+ -g -g3 -Wall
+ )
+
+ if(NOT ${_is_gflib})
+ include_directories(${GFLIB_INCLUDE_DIRS})
+ link_directories(${GFLIB_LIBRARY_DIRS})
+ endif(NOT ${_is_gflib})
+endmacro(_gflib_add_build_info)
+
+macro(GFLIB_PROJECT _project _major _minor _micro _extra)
+ project(${_project} C)
+
+ string(TOUPPER ${_project} _project_upper)
+
+ set(${_project_upper}_MAJOR_VERSION ${_major})
+ set(${_project_upper}_MINOR_VERSION ${_minor})
+ set(${_project_upper}_MICRO_VERSION ${_micro})
+ set(${_project_upper}_EXTRA_VERSION ${_extra})
+
+ set(VERSION ${${_project_upper}_MAJOR_VERSION}.${${_project_upper}_MINOR_VERSION}.${${_project_upper}_MICRO_VERSION}${${_project_upper}_EXTRA_VERSION})
+
+ string(COMPARE EQUAL ${_project} gflib _is_gflib)
+
+ _gflib_add_dependencies(${_project} ${_is_gflib})
+ _gflib_add_build_info(${_project} ${_is_gflib})
+
+ # we assume we still have all the autotools documentation files to install
+ install(
+ FILES AUTHORS ChangeLog COPYING NEWS README
+ DESTINATION share/doc/${_project}
+ )
+endmacro(GFLIB_PROJECT)
+
+macro(GFLIB_LIBRARY_PROJECT _project _major _minor _micro _extra)
+ # call the main project macro
+ GFLIB_PROJECT(${_project} ${_major} ${_minor} ${_micro} ${_extra})
+
+ # since this is a library, we assume that the src directory is the project
+ # name and add it and the binary directory to our include_directories
+ include_directories(
+ ${CMAKE_SOURCE_DIR}/${_project}
+ ${CMAKE_BINARY_DIR}/${_project}
+ )
+
+ # enable testing
+ enable_testing()
+
+ # add and install the pkg-config file
+ configure_file(${_project}.pc.in ${_project}.pc @ONLY)
+ install(
+ FILES ${CMAKE_CURRENT_BINARY_DIR}/${_project}.pc
+ DESTINATION lib/pkgconfig
+ )
+endmacro(GFLIB_LIBRARY_PROJECT)