muntyan / moo (http://mooedit.sourceforget.net/)

Main medit repository

Clone this repository (size: 14.5 MB): HTTPS / SSH
$ hg clone http://bitbucket.org/muntyan/moo/
commit 3913: 1c0332776519
parent 3912: 0198cca85572
branch: default
Fixed line endings
Yevgen Muntyan
8 weeks ago

Changed (Δ6.3 KB):

raw changeset »

CMakeLists.txt (64 lines added, 64 lines removed)

cmake/dist.cmake (101 lines added, 101 lines removed)

cmake/gtk.cmake (65 lines added, 65 lines removed)

cmake/modules/FindMooCmake.cmake (365 lines added, 365 lines removed)

cmake/modules/FindMooCmakeUtils.cmake (31 lines added, 31 lines removed)

cmake/modules/FindMooCompilers.cmake (328 lines added, 328 lines removed)

cmake/modules/FindMooI18n.cmake (29 lines added, 29 lines removed)

cmake/modules/FindMooLibXml2.cmake (11 lines added, 11 lines removed)

cmake/moo-libs.cmake (93 lines added, 93 lines removed)

cmake/moo.cmake (169 lines added, 169 lines removed)

config-dirs.h.in (11 lines added, 11 lines removed)

config.cmake (134 lines added, 134 lines removed)

doc/CMakeLists.txt (50 lines added, 50 lines removed)

doc/help-sections.h (33 lines added, 33 lines removed)

doc/help.html (1540 lines added, 1540 lines removed)

doc/help/regex-search.html (44 lines added, 44 lines removed)

doc/help/regex.html (43 lines added, 43 lines removed)

doc/makedocs.cmake (61 lines added, 61 lines removed)

doc/man-medit.t2t (107 lines added, 107 lines removed)

doc/medit.t2t (50 lines added, 50 lines removed)

doc/regex.t2t (16 lines added, 16 lines removed)

medit/CMakeLists.txt (27 lines added, 27 lines removed)

medit/data/encodings/GB2312 (1 lines added, 1 lines removed)

moo/CMakeLists.txt (98 lines added, 98 lines removed)

moo/gendef.py (324 lines added, 324 lines removed)

moo/gendummy.cmake (6 lines added, 6 lines removed)

moo/genenums.py (143 lines added, 143 lines removed)

moo/genmarshal.cmake (19 lines added, 19 lines removed)

moo/glade2c.cmake.in (16 lines added, 16 lines removed)

moo/marshals.list (60 lines added, 60 lines removed)

moo/moo-config.h (63 lines added, 63 lines removed)

moo/moo-dll.c (11 lines added, 11 lines removed)

moo/mooapp/CMakeLists.cmake (31 lines added, 31 lines removed)

moo/mooapp/smclient/CMakeLists.cmake (19 lines added, 19 lines removed)

moo/mooedit/CMakeLists.cmake (130 lines added, 130 lines removed)

moo/mooedit/gtksourceview/CMakeLists.cmake (50 lines added, 50 lines removed)

moo/mooedit/gtksourceview/mangle.py (77 lines added, 77 lines removed)

moo/mooedit/langs/CMakeLists.cmake (92 lines added, 92 lines removed)

moo/mooedit/mooedit-enums-in.py (73 lines added, 73 lines removed)

moo/moofileview/CMakeLists.cmake (46 lines added, 46 lines removed)

moo/moolua/CMakeLists.cmake (23 lines added, 23 lines removed)

moo/mooutils/CMakeLists.cmake (228 lines added, 228 lines removed)

moo/mooutils/genpixbufcsource.cmake.in (14 lines added, 14 lines removed)

moo/mooutils/moocpp-cont.h (633 lines added, 633 lines removed)

moo/mooutils/moocpp-exc.h (100 lines added, 100 lines removed)

moo/mooutils/moocpp-gobject.cpp (105 lines added, 105 lines removed)

moo/mooutils/moocpp-gobject.h (221 lines added, 221 lines removed)

moo/mooutils/moocpp-gtk.h (149 lines added, 149 lines removed)

moo/mooutils/moocpp-macros.h (98 lines added, 98 lines removed)

moo/mooutils/moocpp-refptr.h (240 lines added, 240 lines removed)

Up to file-list CMakeLists.txt:

1
CMAKE_MINIMUM_REQUIRED(VERSION 2.6)
2
PROJECT(MOO)
3
4
SET(CMAKE_MODULE_PATH ${CMAKE_SOURCE_DIR}/cmake/modules)
5
FIND_PACKAGE(MooCmake)
6
7
SET(MOO_VERSION 0.9.5)
8
SET(MOO_PACKAGE_NAME moo)
9
SET(MOO_EMAIL "emuntyan@sourceforge.net")
10
SET(MOO_COPYRIGHT "2004-2009 Yevgen Muntyan <${MOO_EMAIL}>")
11
SET(PACKAGE_BUGREPORT ${MOO_EMAIL})
12
SET(MOO_PACKAGE_VENDOR ${MOO_EMAIL})
13
14
MOO_OPTION(MOO_BUILD_SHARED_LIB ${MOO_OS_WIN32} "Build shared library")
15
MOO_OPTION(MOO_BUILD_CTAGS ${MOO_OS_UNIX} "Build Ctags plugin" HIDDEN ${MOO_OS_WIN32} HEADER TRUE)
16
MOO_OPTION(MOO_ENABLE_PROJECT FALSE "Build project plugin" HIDDEN TRUE)
17
MOO_OPTION(MOO_ENABLE_UNIT_TESTS FALSE "Build unit tests" DEFINE TRUE)
18
MOO_OPTION(MOO_ENABLE_GENERATED_FILES ${MOO_OS_UNIX} "Run gtk-update-icon-cache on install")
19
MOO_OPTION(MOO_BROKEN_GTK_THEME FALSE "Work around bugs in gtk theme" HEADER TRUE)
20
21
INCLUDE(cmake/moo.cmake)
22
INCLUDE(cmake/dist.cmake)
23
INCLUDE(cmake/gtk.cmake)
24
25
MOO_DEFINE_VERSIONS(MOO ${MOO_VERSION})
26
SET(MOO_MODULE_MAJOR_VERSION 1)
27
SET(MOO_MODULE_MINOR_VERSION 0)
28
SET(MOO_MODULE_VERSION \"${MOO_MODULE_MAJOR_VERSION}.${MOO_MODULE_MINOR_VERSION}\")
29
30
ADD_DEFINITIONS(-DHAVE_CONFIG_H)
31
ADD_DEFINITIONS(-DGETTEXT_PACKAGE=\"moo\")
32
ADD_DEFINITIONS(-DG_LOG_DOMAIN=\"Moo\")
33
INCLUDE_DIRECTORIES(${MOO_BINARY_DIR} ${MOO_BINARY_DIR}/moo ${MOO_SOURCE_DIR}/moo)
34
ADD_DEFINITIONS(${GTK_CFLAGS} ${GTK_CFLAGS_OTHER})
35
36
INCLUDE(config.cmake)
37
38
ADD_SUBDIRECTORY(doc)
39
ADD_SUBDIRECTORY(moo)
40
ADD_SUBDIRECTORY(plugins)
41
ADD_SUBDIRECTORY(medit)
42
43
MOO_ADD_MSG_CATALOG(moo po)
44
MOO_ADD_MSG_CATALOG(moo-gsv po-gsv)
45
46
MOO_WRITE_CONFIG_H(config.h.in config.h @ONLY)
47
48
CONFIGURE_FILE(config-dirs.h.in config-dirs.h @ONLY)
49
50
IF(WIN32)
51
  GET_FILENAME_COMPONENT(_MOO_SOURCE_DIR ${MOO_SOURCE_DIR} ABSOLUTE)
52
  # TO_NATIVE_PATH damn it! Cmake is such a wonderful piece of language...
53
  STRING(REPLACE "/" "\\" _MOO_SOURCE_DIR "${_MOO_SOURCE_DIR}")
54
  GET_FILENAME_COMPONENT(_MOO_BINARY_DIR ${MOO_BINARY_DIR} ABSOLUTE)
55
  STRING(REPLACE "/" "\\" _MOO_BINARY_DIR "${_MOO_BINARY_DIR}")
56
  SET(_MOO_RUN_HOW "@")
57
  CONFIGURE_FILE(plat/win32/run-medit.in run-medit.bat)
58
  SET(_MOO_RUN_HOW "gdb --args ")
59
  CONFIGURE_FILE(plat/win32/run-medit.in run-medit-in-gdb.bat)
60
ENDIF(WIN32)
61
62
IF(NOT WIN32)
63
  INSTALL(PROGRAMS plat/unix/xdg-open plat/unix/xdg-email plat/unix/moo-open-html-help DESTINATION ${MOO_DATA_DIR}/scripts)
64
ENDIF(NOT WIN32)
1
CMAKE_MINIMUM_REQUIRED(VERSION 2.6)
2
PROJECT(MOO)
3
4
SET(CMAKE_MODULE_PATH ${CMAKE_SOURCE_DIR}/cmake/modules)
5
FIND_PACKAGE(MooCmake)
6
7
SET(MOO_VERSION 0.9.5)
8
SET(MOO_PACKAGE_NAME moo)
9
SET(MOO_EMAIL "emuntyan@sourceforge.net")
10
SET(MOO_COPYRIGHT "2004-2009 Yevgen Muntyan <${MOO_EMAIL}>")
11
SET(PACKAGE_BUGREPORT ${MOO_EMAIL})
12
SET(MOO_PACKAGE_VENDOR ${MOO_EMAIL})
13
14
MOO_OPTION(MOO_BUILD_SHARED_LIB ${MOO_OS_WIN32} "Build shared library")
15
MOO_OPTION(MOO_BUILD_CTAGS ${MOO_OS_UNIX} "Build Ctags plugin" HIDDEN ${MOO_OS_WIN32} HEADER TRUE)
16
MOO_OPTION(MOO_ENABLE_PROJECT FALSE "Build project plugin" HIDDEN TRUE)
17
MOO_OPTION(MOO_ENABLE_UNIT_TESTS FALSE "Build unit tests" DEFINE TRUE)
18
MOO_OPTION(MOO_ENABLE_GENERATED_FILES ${MOO_OS_UNIX} "Run gtk-update-icon-cache on install")
19
MOO_OPTION(MOO_BROKEN_GTK_THEME FALSE "Work around bugs in gtk theme" HEADER TRUE)
20
21
INCLUDE(cmake/moo.cmake)
22
INCLUDE(cmake/dist.cmake)
23
INCLUDE(cmake/gtk.cmake)
24
25
MOO_DEFINE_VERSIONS(MOO ${MOO_VERSION})
26
SET(MOO_MODULE_MAJOR_VERSION 1)
27
SET(MOO_MODULE_MINOR_VERSION 0)
28
SET(MOO_MODULE_VERSION \"${MOO_MODULE_MAJOR_VERSION}.${MOO_MODULE_MINOR_VERSION}\")
29
30
ADD_DEFINITIONS(-DHAVE_CONFIG_H)
31
ADD_DEFINITIONS(-DGETTEXT_PACKAGE=\"moo\")
32
ADD_DEFINITIONS(-DG_LOG_DOMAIN=\"Moo\")
33
INCLUDE_DIRECTORIES(${MOO_BINARY_DIR} ${MOO_BINARY_DIR}/moo ${MOO_SOURCE_DIR}/moo)
34
ADD_DEFINITIONS(${GTK_CFLAGS} ${GTK_CFLAGS_OTHER})
35
36
INCLUDE(config.cmake)
37
38
ADD_SUBDIRECTORY(doc)
39
ADD_SUBDIRECTORY(moo)
40
ADD_SUBDIRECTORY(plugins)
41
ADD_SUBDIRECTORY(medit)
42
43
MOO_ADD_MSG_CATALOG(moo po)
44
MOO_ADD_MSG_CATALOG(moo-gsv po-gsv)
45
46
MOO_WRITE_CONFIG_H(config.h.in config.h @ONLY)
47
48
CONFIGURE_FILE(config-dirs.h.in config-dirs.h @ONLY)
49
50
IF(WIN32)
51
  GET_FILENAME_COMPONENT(_MOO_SOURCE_DIR ${MOO_SOURCE_DIR} ABSOLUTE)
52
  # TO_NATIVE_PATH damn it! Cmake is such a wonderful piece of language...
53
  STRING(REPLACE "/" "\\" _MOO_SOURCE_DIR "${_MOO_SOURCE_DIR}")
54
  GET_FILENAME_COMPONENT(_MOO_BINARY_DIR ${MOO_BINARY_DIR} ABSOLUTE)
55
  STRING(REPLACE "/" "\\" _MOO_BINARY_DIR "${_MOO_BINARY_DIR}")
56
  SET(_MOO_RUN_HOW "@")
57
  CONFIGURE_FILE(plat/win32/run-medit.in run-medit.bat)
58
  SET(_MOO_RUN_HOW "gdb --args ")
59
  CONFIGURE_FILE(plat/win32/run-medit.in run-medit-in-gdb.bat)
60
ENDIF(WIN32)
61
62
IF(NOT WIN32)
63
  INSTALL(PROGRAMS plat/unix/xdg-open plat/unix/xdg-email plat/unix/moo-open-html-help DESTINATION ${MOO_DATA_DIR}/scripts)
64
ENDIF(NOT WIN32)

Up to file-list cmake/dist.cmake:

1
FILE(WRITE ${CMAKE_BINARY_DIR}/cmake_uninstall.cmake.in
2
"
3
IF(NOT EXISTS \"\@CMAKE_CURRENT_BINARY_DIR\@/install_manifest.txt\")
4
  MESSAGE(FATAL_ERROR \"Cannot find install manifest: \\\"\@CMAKE_CURRENT_BINARY_DIR\@/install_manifest.txt\\\"\")
5
ENDIF(NOT EXISTS \"\@CMAKE_CURRENT_BINARY_DIR\@/install_manifest.txt\")
6
7
FILE(READ \"\@CMAKE_CURRENT_BINARY_DIR\@/install_manifest.txt\" files)
8
STRING(REGEX REPLACE \"\\n\" \";\" files \"\${files}\")
9
FOREACH(file \${files})
10
  MESSAGE(STATUS \"Uninstalling \\\"\$ENV{DESTDIR}\${file}\\\"\")
11
  IF(EXISTS \"\$ENV{DESTDIR}\${file}\")
12
    EXECUTE_PROCESS(
13
      COMMAND \"\@CMAKE_COMMAND\@\" -E remove \"\$ENV{DESTDIR}\${file}\"
14
      RESULT_VARIABLE rm_retval
15
    )
16
    IF(NOT rm_retval EQUAL 0)
17
      MESSAGE(FATAL_ERROR \"Problem when removing \\\"\$ENV{DESTDIR}\${file}\\\": \${rm_retval}\")
18
    ENDIF(NOT rm_retval EQUAL 0)
19
  ENDIF(EXISTS \"\$ENV{DESTDIR}\${file}\")
20
ENDFOREACH(file)
21
")
22
CONFIGURE_FILE("${CMAKE_BINARY_DIR}/cmake_uninstall.cmake.in" "${CMAKE_BINARY_DIR}/cmake_uninstall.cmake" @ONLY)
23
ADD_CUSTOM_TARGET(uninstall "${CMAKE_COMMAND}" -P "${CMAKE_BINARY_DIR}/cmake_uninstall.cmake")
24
25
26
#############################################################################
27
#
28
# Installation dirs
29
#
30
31
IF(WIN32)
32
  IF("${CMAKE_INSTALL_PREFIX}" STREQUAL "C:/Program Files/MOO")
33
    SET(CMAKE_INSTALL_PREFIX "C:/Program Files/medit")
34
  ENDIF("${CMAKE_INSTALL_PREFIX}" STREQUAL "C:/Program Files/MOO")
35
ENDIF(WIN32)
36
37
SET(MOO_DATA_DIR ${DATADIR}/moo CACHE PATH "Where data files go")
38
SET(MOO_LIB_DIR ${LIBDIR}/moo CACHE PATH "Where lib files go")
39
SET(MOO_PLUGINS_DIR ${MOO_LIB_DIR}/plugins CACHE PATH "Where plugins go")
40
SET(MOO_TEXT_LANG_FILES_DIR ${MOO_DATA_DIR}/language-specs CACHE PATH "Where lang files go")
41
SET(MOO_DOC_DIR ${DATADIR}/doc/medit CACHE PATH "Where docs go")
42
SET(MOO_HELP_DIR ${MOO_DOC_DIR}/help CACHE PATH "Where html help files go")
43
FOREACH(name BINDIR DATADIR LIBDIR MOO_DATA_DIR MOO_LIB_DIR MOO_PLUGINS_DIR
44
             MOO_TEXT_LANG_FILES_DIR LOCALEDIR MOO_DOC_DIR MOO_HELP_DIR)
45
  SET(${name}_ABS ${CMAKE_INSTALL_PREFIX}/${${name}})
46
  MARK_AS_ADVANCED(${name})
47
ENDFOREACH(name)
48
49
IF(WIN32)
50
  SET(_MEDIT_LIBRARIES_DFLT)
51
  FOREACH(_moo_gtk_dir ${CMAKE_SOURCE_DIR}/../medit-bin-dist)
52
    IF(IS_DIRECTORY ${_moo_gtk_dir})
53
      SET(_MEDIT_LIBRARIES_DFLT ${_moo_gtk_dir})
54
      BREAK()
55
    ENDIF(IS_DIRECTORY ${_moo_gtk_dir})
56
  ENDFOREACH(_moo_gtk_dir)
57
  SET(MEDIT_LIBRARIES ${_MEDIT_LIBRARIES_DFLT} CACHE PATH "Where Gtk libraries are located")
58
  IF(MEDIT_LIBRARIES)
59
    INSTALL(DIRECTORY ${MEDIT_LIBRARIES}/ DESTINATION ".")
60
  ENDIF(MEDIT_LIBRARIES)
61
ENDIF(WIN32)
62
63
64
#############################################################################
65
#
66
# CPack
67
#
68
69
SET(CPACK_PACKAGE_NAME "medit")
70
SET(CPACK_PACKAGE_VENDOR ${MOO_PACKAGE_VENDOR})
71
STRING(REGEX REPLACE "([0-9]+)[.]([0-9]+)[.]([0-9]+)" "\\1" CPACK_PACKAGE_VERSION_MAJOR ${MOO_VERSION})
72
STRING(REGEX REPLACE "([0-9]+)[.]([0-9]+)[.]([0-9]+)" "\\2" CPACK_PACKAGE_VERSION_MINOR ${MOO_VERSION})
73
STRING(REGEX REPLACE "([0-9]+)[.]([0-9]+)[.]([0-9]+)" "\\3" CPACK_PACKAGE_VERSION_PATCH ${MOO_VERSION})
74
SET(CPACK_PACKAGE_DESCRIPTION_SUMMARY "medit a text editor")
75
SET(CPACK_PACKAGE_FILE_NAME ${CPACK_PACKAGE_NAME}-${MOO_VERSION})
76
SET(CPACK_RESOURCE_FILE_LICENSE ${CMAKE_SOURCE_DIR}/COPYING.GPL)
77
SET(CPACK_RESOURCE_FILE_README ${CMAKE_SOURCE_DIR}/README)
78
# SET(CPACK_GENERATOR)
79
SET(CPACK_PACKAGE_EXECUTABLES medit medit)
80
81
SET(CPACK_SOURCE_PACKAGE_FILE_NAME "medit-${MOO_VERSION}")
82
SET(CPACK_SOURCE_IGNORE_FILES "/build/;/[.]hg;/[.]git")
83
84
SET(CPACK_PACKAGE_INSTALL_DIRECTORY "medit")
85
SET(CPACK_PACKAGE_INSTALL_REGISTRY_KEY "medit")
86
# SET(CPACK_NSIS_MUI_ICON)
87
# SET(CPACK_NSIS_MUI_UNIICON)
88
# SET(CPACK_PACKAGE_ICON ${CMAKE_SOURCE_DIR}/moo/mooutils/pixmaps/medit.ico)
89
# SET(CPACK_NSIS_EXTRA_INSTALL_COMMANDS)
90
# SET(CPACK_NSIS_EXTRA_UNINSTALL_COMMANDS)
91
# SET(CPACK_NSIS_COMPRESSOR)
92
SET(CPACK_NSIS_DISPLAY_NAME "medit ${MOO_VERSION}")
93
SET(CPACK_NSIS_PACKAGE_NAME "medit")
94
# SET(CPACK_NSIS_INSTALLED_ICON_NAME)
95
SET(CPACK_NSIS_HELP_LINK "http://mooedit.sourceforge.net/")
96
SET(CPACK_NSIS_URL_INFO_ABOUT "http://mooedit.sourceforge.net/")
97
SET(CPACK_NSIS_CONTACT ${MOO_PACKAGE_VENDOR})
98
# SET(CPACK_NSIS_CREATE_ICONS_EXTRA)
99
# SET(CPACK_NSIS_DELETE_ICONS_EXTRA)
100
101
INCLUDE(CPack)
1
FILE(WRITE ${CMAKE_BINARY_DIR}/cmake_uninstall.cmake.in
2
"
3
IF(NOT EXISTS \"\@CMAKE_CURRENT_BINARY_DIR\@/install_manifest.txt\")
4
  MESSAGE(FATAL_ERROR \"Cannot find install manifest: \\\"\@CMAKE_CURRENT_BINARY_DIR\@/install_manifest.txt\\\"\")
5
ENDIF(NOT EXISTS \"\@CMAKE_CURRENT_BINARY_DIR\@/install_manifest.txt\")
6
7
FILE(READ \"\@CMAKE_CURRENT_BINARY_DIR\@/install_manifest.txt\" files)
8
STRING(REGEX REPLACE \"\\n\" \";\" files \"\${files}\")
9
FOREACH(file \${files})
10
  MESSAGE(STATUS \"Uninstalling \\\"\$ENV{DESTDIR}\${file}\\\"\")
11
  IF(EXISTS \"\$ENV{DESTDIR}\${file}\")
12
    EXECUTE_PROCESS(
13
      COMMAND \"\@CMAKE_COMMAND\@\" -E remove \"\$ENV{DESTDIR}\${file}\"
14
      RESULT_VARIABLE rm_retval
15
    )
16
    IF(NOT rm_retval EQUAL 0)
17
      MESSAGE(FATAL_ERROR \"Problem when removing \\\"\$ENV{DESTDIR}\${file}\\\": \${rm_retval}\")
18
    ENDIF(NOT rm_retval EQUAL 0)
19
  ENDIF(EXISTS \"\$ENV{DESTDIR}\${file}\")
20
ENDFOREACH(file)
21
")
22
CONFIGURE_FILE("${CMAKE_BINARY_DIR}/cmake_uninstall.cmake.in" "${CMAKE_BINARY_DIR}/cmake_uninstall.cmake" @ONLY)
23
ADD_CUSTOM_TARGET(uninstall "${CMAKE_COMMAND}" -P "${CMAKE_BINARY_DIR}/cmake_uninstall.cmake")
24
25
26
#############################################################################
27
#
28
# Installation dirs
29
#
30
31
IF(WIN32)
32
  IF("${CMAKE_INSTALL_PREFIX}" STREQUAL "C:/Program Files/MOO")
33
    SET(CMAKE_INSTALL_PREFIX "C:/Program Files/medit")
34
  ENDIF("${CMAKE_INSTALL_PREFIX}" STREQUAL "C:/Program Files/MOO")
35
ENDIF(WIN32)
36
37
SET(MOO_DATA_DIR ${DATADIR}/moo CACHE PATH "Where data files go")
38
SET(MOO_LIB_DIR ${LIBDIR}/moo CACHE PATH "Where lib files go")
39
SET(MOO_PLUGINS_DIR ${MOO_LIB_DIR}/plugins CACHE PATH "Where plugins go")
40
SET(MOO_TEXT_LANG_FILES_DIR ${MOO_DATA_DIR}/language-specs CACHE PATH "Where lang files go")
41
SET(MOO_DOC_DIR ${DATADIR}/doc/medit CACHE PATH "Where docs go")
42
SET(MOO_HELP_DIR ${MOO_DOC_DIR}/help CACHE PATH "Where html help files go")
43
FOREACH(name BINDIR DATADIR LIBDIR MOO_DATA_DIR MOO_LIB_DIR MOO_PLUGINS_DIR
44
             MOO_TEXT_LANG_FILES_DIR LOCALEDIR MOO_DOC_DIR MOO_HELP_DIR)
45
  SET(${name}_ABS ${CMAKE_INSTALL_PREFIX}/${${name}})
46
  MARK_AS_ADVANCED(${name})
47
ENDFOREACH(name)
48
49
IF(WIN32)
50
  SET(_MEDIT_LIBRARIES_DFLT)
51
  FOREACH(_moo_gtk_dir ${CMAKE_SOURCE_DIR}/../medit-bin-dist)
52
    IF(IS_DIRECTORY ${_moo_gtk_dir})
53
      SET(_MEDIT_LIBRARIES_DFLT ${_moo_gtk_dir})
54
      BREAK()
55
    ENDIF(IS_DIRECTORY ${_moo_gtk_dir})
56
  ENDFOREACH(_moo_gtk_dir)
57
  SET(MEDIT_LIBRARIES ${_MEDIT_LIBRARIES_DFLT} CACHE PATH "Where Gtk libraries are located")
58
  IF(MEDIT_LIBRARIES)
59
    INSTALL(DIRECTORY ${MEDIT_LIBRARIES}/ DESTINATION ".")
60
  ENDIF(MEDIT_LIBRARIES)
61
ENDIF(WIN32)
62
63
64
#############################################################################
65
#
66
# CPack
67
#
68
69
SET(CPACK_PACKAGE_NAME "medit")
70
SET(CPACK_PACKAGE_VENDOR ${MOO_PACKAGE_VENDOR})
71
STRING(REGEX REPLACE "([0-9]+)[.]([0-9]+)[.]([0-9]+)" "\\1" CPACK_PACKAGE_VERSION_MAJOR ${MOO_VERSION})
72
STRING(REGEX REPLACE "([0-9]+)[.]([0-9]+)[.]([0-9]+)" "\\2" CPACK_PACKAGE_VERSION_MINOR ${MOO_VERSION})
73
STRING(REGEX REPLACE "([0-9]+)[.]([0-9]+)[.]([0-9]+)" "\\3" CPACK_PACKAGE_VERSION_PATCH ${MOO_VERSION})
74
SET(CPACK_PACKAGE_DESCRIPTION_SUMMARY "medit a text editor")
75
SET(CPACK_PACKAGE_FILE_NAME ${CPACK_PACKAGE_NAME}-${MOO_VERSION})
76
SET(CPACK_RESOURCE_FILE_LICENSE ${CMAKE_SOURCE_DIR}/COPYING.GPL)
77
SET(CPACK_RESOURCE_FILE_README ${CMAKE_SOURCE_DIR}/README)
78
# SET(CPACK_GENERATOR)
79
SET(CPACK_PACKAGE_EXECUTABLES medit medit)
80
81
SET(CPACK_SOURCE_PACKAGE_FILE_NAME "medit-${MOO_VERSION}")
82
SET(CPACK_SOURCE_IGNORE_FILES "/build/;/[.]hg;/[.]git")
83
84
SET(CPACK_PACKAGE_INSTALL_DIRECTORY "medit")
85
SET(CPACK_PACKAGE_INSTALL_REGISTRY_KEY "medit")
86
# SET(CPACK_NSIS_MUI_ICON)
87
# SET(CPACK_NSIS_MUI_UNIICON)
88
# SET(CPACK_PACKAGE_ICON ${CMAKE_SOURCE_DIR}/moo/mooutils/pixmaps/medit.ico)
89
# SET(CPACK_NSIS_EXTRA_INSTALL_COMMANDS)
90
# SET(CPACK_NSIS_EXTRA_UNINSTALL_COMMANDS)
91
# SET(CPACK_NSIS_COMPRESSOR)
92
SET(CPACK_NSIS_DISPLAY_NAME "medit ${MOO_VERSION}")
93
SET(CPACK_NSIS_PACKAGE_NAME "medit")
94
# SET(CPACK_NSIS_INSTALLED_ICON_NAME)
95
SET(CPACK_NSIS_HELP_LINK "http://mooedit.sourceforge.net/")
96
SET(CPACK_NSIS_URL_INFO_ABOUT "http://mooedit.sourceforge.net/")
97
SET(CPACK_NSIS_CONTACT ${MOO_PACKAGE_VENDOR})
98
# SET(CPACK_NSIS_CREATE_ICONS_EXTRA)
99
# SET(CPACK_NSIS_DELETE_ICONS_EXTRA)
100
101
INCLUDE(CPack)

Up to file-list cmake/gtk.cmake:

1
FIND_PACKAGE(PkgConfig)
2
3
MACRO(_MOO_GET_PKG_CONFIG_VARIABLE cmakevar pkgconfigvar pkgname)
4
  MOO_EXEC_OR_DIE("pkg-config --variable=${pkgconfigvar} ${pkgname}"
5
    COMMAND ${PKG_CONFIG_EXECUTABLE} --variable=${pkgconfigvar} ${pkgname}
6
    OUTPUT_VARIABLE ${cmakevar})
7
  STRING(STRIP ${${cmakevar}} ${cmakevar})
8
ENDMACRO(_MOO_GET_PKG_CONFIG_VARIABLE)
9
10
PKG_CHECK_MODULES(GLIB REQUIRED glib-2.0>=2.14)
11
PKG_CHECK_MODULES(GTK REQUIRED gtk+-2.0 glib-2.0 gmodule-2.0 gthread-2.0 gobject-2.0)
12
PKG_CHECK_MODULES(GIO gio-2.0)
13
14
LIST(APPEND MOO_DEP_LIBS ${GTK_LIBRARIES})
15
IF(GIO_FOUND)
16
  LIST(APPEND MOO_DEP_LIBS ${GIO_LIBRARIES})
17
ENDIF(GIO_FOUND)
18
19
MOO_ADD_COMPILE_DEFINITIONS(RELEASE -DG_DISABLE_CAST_CHECKS -DG_DISABLE_ASSERT)
20
MOO_ADD_COMPILER_FLAGS(GCC WIN32 -mms-bitfields)
21
22
# Do not use pkg-config because the official win32 binary
23
# is distributed without pc files
24
FIND_PACKAGE(MooLibXml2)
25
IF(NOT LIBXML2_FOUND)
26
  MOO_ERROR("Libxml2 not found")
27
ENDIF(NOT LIBXML2_FOUND)
28
SET(MOO_USE_XML TRUE)
29
MOO_DEFINE_H(MOO_USE_XML)
30
LIST(APPEND MOO_DEP_LIBS ${LIBXML2_LIBRARIES})
31
32
LINK_DIRECTORIES(${GTK_LIBRARY_DIRS} ${XML_LIBRARY_DIRS})
33
34
_MOO_GET_PKG_CONFIG_VARIABLE(_moo_gdk_target target gdk-2.0)
35
SET(GDK_X11 FALSE)
36
SET(GDK_WIN32 FALSE)
37
SET(GDK_QUARTZ FALSE)
38
IF("${_moo_gdk_target}" STREQUAL "x11")
39
  SET(GDK_X11 TRUE)
40
ELSEIF("${_moo_gdk_target}" STREQUAL "quartz")
41
  SET(GDK_QUARTZ TRUE)
42
ELSEIF("${_moo_gdk_target}" STREQUAL "win32")
43
  SET(GDK_WIN32 TRUE)
44
ENDIF("${_moo_gdk_target}" STREQUAL "x11")
45
46
MACRO(_MOO_FIND_PROGRAM_OR_DIE varname progname pkgvar pkgname)
47
  _MOO_GET_PKG_CONFIG_VARIABLE(_moo_pkg_exec_prefix exec_prefix ${pkgname})
48
  IF(pkgvar)
49
    _MOO_GET_PKG_CONFIG_VARIABLE(_moo_pkg_prog ${pkgvar} ${pkgname})
50
    SET(_moo_prg_names "${_moo_pkg_prog}" ${progname})
51
  ELSE(pkgvar)
52
    SET(_moo_prg_names ${progname})
53
  ENDIF(pkgvar)
54
  FIND_PROGRAM(${varname} 
55
    NAMES ${_moo_prg_names}
56
    PATHS "${_moo_pkg_exec_prefix}/bin" 
57
    DOC "Path to ${progname} executable")
58
  MARK_AS_ADVANCED(${varname})
59
  IF(NOT ${varname})
60
    MOO_ERROR("Could not find ${progname} executable")
61
  ENDIF(NOT ${varname})
62
ENDMACRO(_MOO_FIND_PROGRAM_OR_DIE)
63
64
_MOO_FIND_PROGRAM_OR_DIE(GLIB_GENMARSHAL_EXECUTABLE glib-genmarshal glib_genmarshal glib-2.0)
65
_MOO_FIND_PROGRAM_OR_DIE(GDK_PIXBUF_CSOURCE_EXECUTABLE gdk-pixbuf-csource "" gtk+-2.0)
1
FIND_PACKAGE(PkgConfig)
2
3
MACRO(_MOO_GET_PKG_CONFIG_VARIABLE cmakevar pkgconfigvar pkgname)
4
  MOO_EXEC_OR_DIE("pkg-config --variable=${pkgconfigvar} ${pkgname}"
5
    COMMAND ${PKG_CONFIG_EXECUTABLE} --variable=${pkgconfigvar} ${pkgname}
6
    OUTPUT_VARIABLE ${cmakevar})
7
  STRING(STRIP ${${cmakevar}} ${cmakevar})
8
ENDMACRO(_MOO_GET_PKG_CONFIG_VARIABLE)
9
10
PKG_CHECK_MODULES(GLIB REQUIRED glib-2.0>=2.14)
11
PKG_CHECK_MODULES(GTK REQUIRED gtk+-2.0 glib-2.0 gmodule-2.0 gthread-2.0 gobject-2.0)
12
PKG_CHECK_MODULES(GIO gio-2.0)
13
14
LIST(APPEND MOO_DEP_LIBS ${GTK_LIBRARIES})
15
IF(GIO_FOUND)
16
  LIST(APPEND MOO_DEP_LIBS ${GIO_LIBRARIES})
17
ENDIF(GIO_FOUND)
18
19
MOO_ADD_COMPILE_DEFINITIONS(RELEASE -DG_DISABLE_CAST_CHECKS -DG_DISABLE_ASSERT)
20
MOO_ADD_COMPILER_FLAGS(GCC WIN32 -mms-bitfields)
21
22
# Do not use pkg-config because the official win32 binary
23
# is distributed without pc files
24
FIND_PACKAGE(MooLibXml2)
25
IF(NOT LIBXML2_FOUND)
26
  MOO_ERROR("Libxml2 not found")
27
ENDIF(NOT LIBXML2_FOUND)
28
SET(MOO_USE_XML TRUE)
29
MOO_DEFINE_H(MOO_USE_XML)
30
LIST(APPEND MOO_DEP_LIBS ${LIBXML2_LIBRARIES})
31
32
LINK_DIRECTORIES(${GTK_LIBRARY_DIRS} ${XML_LIBRARY_DIRS})
33
34
_MOO_GET_PKG_CONFIG_VARIABLE(_moo_gdk_target target gdk-2.0)
35
SET(GDK_X11 FALSE)
36
SET(GDK_WIN32 FALSE)
37
SET(GDK_QUARTZ FALSE)
38
IF("${_moo_gdk_target}" STREQUAL "x11")
39
  SET(GDK_X11 TRUE)
40
ELSEIF("${_moo_gdk_target}" STREQUAL "quartz")
41
  SET(GDK_QUARTZ TRUE)
42
ELSEIF("${_moo_gdk_target}" STREQUAL "win32")
43
  SET(GDK_WIN32 TRUE)
44
ENDIF("${_moo_gdk_target}" STREQUAL "x11")
45
46
MACRO(_MOO_FIND_PROGRAM_OR_DIE varname progname pkgvar pkgname)
47
  _MOO_GET_PKG_CONFIG_VARIABLE(_moo_pkg_exec_prefix exec_prefix ${pkgname})
48
  IF(pkgvar)
49
    _MOO_GET_PKG_CONFIG_VARIABLE(_moo_pkg_prog ${pkgvar} ${pkgname})
50
    SET(_moo_prg_names "${_moo_pkg_prog}" ${progname})
51
  ELSE(pkgvar)
52
    SET(_moo_prg_names ${progname})
53
  ENDIF(pkgvar)
54
  FIND_PROGRAM(${varname} 
55
    NAMES ${_moo_prg_names}
56
    PATHS "${_moo_pkg_exec_prefix}/bin" 
57
    DOC "Path to ${progname} executable")
58
  MARK_AS_ADVANCED(${varname})
59
  IF(NOT ${varname})
60
    MOO_ERROR("Could not find ${progname} executable")
61
  ENDIF(NOT ${varname})
62
ENDMACRO(_MOO_FIND_PROGRAM_OR_DIE)
63
64
_MOO_FIND_PROGRAM_OR_DIE(GLIB_GENMARSHAL_EXECUTABLE glib-genmarshal glib_genmarshal glib-2.0)
65
_MOO_FIND_PROGRAM_OR_DIE(GDK_PIXBUF_CSOURCE_EXECUTABLE gdk-pixbuf-csource "" gtk+-2.0)

Up to file-list cmake/modules/FindMooCmake.cmake:

1
OPTION(MOO_DEV_MODE_CMAKE "Enable developer mode for cmake - bunch of checks, warnings, etc." OFF)
2
MARK_AS_ADVANCED(MOO_DEV_MODE_CMAKE)
3
4
IF(MOO_DEV_MODE_CMAKE)
5
  MACRO(MOO_DEBUG)
6
    MESSAGE(${ARGN})
7
  ENDMACRO(MOO_DEBUG)
8
ELSE(MOO_DEV_MODE_CMAKE)
9
  MACRO(MOO_DEBUG)
10
  ENDMACRO(MOO_DEBUG)
11
ENDIF(MOO_DEV_MODE_CMAKE)
12
13
MACRO(MOO_ERROR)
14
  MESSAGE(FATAL_ERROR ${ARGN})
15
ENDMACRO(MOO_ERROR)
16
17
###########################################################################
18
#
19
# Build type
20
#
21
22
IF("${CMAKE_BUILD_TYPE}" STREQUAL "")
23
  SET(CMAKE_BUILD_TYPE Release)
24
ENDIF("${CMAKE_BUILD_TYPE}" STREQUAL "")
25
STRING(TOUPPER ${CMAKE_BUILD_TYPE} MOO_BUILD_TYPE)
26
SET(MOO_BUILD_SUBTYPE ${MOO_BUILD_TYPE})
27
IF("${MOO_BUILD_TYPE}" STREQUAL "RELWITHDEBINFO" OR "${MOO_BUILD_TYPE}" STREQUAL "MINSIZEREL")
28
  SET(MOO_BUILD_TYPE RELEASE)
29
ELSEIF(NOT "${MOO_BUILD_TYPE}" STREQUAL "DEBUG" AND NOT "${MOO_BUILD_TYPE}" STREQUAL "RELEASE")
30
  MOO_ERROR("Unknown build type '${MOO_BUILD_TYPE}'")
31
ENDIF("${MOO_BUILD_TYPE}" STREQUAL "RELWITHDEBINFO" OR "${MOO_BUILD_TYPE}" STREQUAL "MINSIZEREL")
32
MOO_DEBUG(STATUS "MOO_BUILD_TYPE: ${MOO_BUILD_TYPE}")
33
34
IF("${MOO_BUILD_TYPE}" STREQUAL "DEBUG")
35
  SET(MOO_DEBUG TRUE)
36
ELSE("${MOO_BUILD_TYPE}" STREQUAL "DEBUG")
37
  SET(MOO_DEBUG FALSE)
38
ENDIF("${MOO_BUILD_TYPE}" STREQUAL "DEBUG")
39
40
###########################################################################
41
#
42
# MOO_DEFINE_H
43
#
44
45
SET(__MOO_DEFINE_H_FILE__ ${CMAKE_BINARY_DIR}/moo-config.h.in)
46
FILE(WRITE ${__MOO_DEFINE_H_FILE__} "")
47
48
MACRO(MOO_DEFINE_H _moo_varname)
49
  SET(_moo_comment)
50
  FOREACH(_moo_arg ${ARGN})
51
    SET(_moo_comment ${_moo_arg})
52
  ENDFOREACH(_moo_arg)
53
  IF(_moo_comment)
54
    FILE(APPEND ${__MOO_DEFINE_H_FILE__} "/* ${_moo_comment} */\n")
55
  ENDIF(_moo_comment)
56
  FILE(APPEND ${__MOO_DEFINE_H_FILE__} "#moodefine ${_moo_varname}\n\n")
57
ENDMACRO(MOO_DEFINE_H)
58
59
MACRO(MOO_MAKE_ABSOLUTE_INPUT_FILE file out_var)
60
  SET(_moo_maif_abs_file "${file}")
61
  IF(NOT EXISTS "${_moo_maif_abs_file}")
62
    IF(EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/${_moo_maif_abs_file}")
63
      SET(_moo_maif_abs_file ${CMAKE_CURRENT_SOURCE_DIR}/${_moo_maif_abs_file})
64
    ENDIF(EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/${_moo_maif_abs_file}")
65
  ENDIF(NOT EXISTS "${_moo_maif_abs_file}")
66
  IF(NOT EXISTS "${_moo_maif_abs_file}")
67
    MOO_ERROR("File '${_moo_maif_abs_file}' does not exist")
68
  ENDIF(NOT EXISTS "${_moo_maif_abs_file}")
69
  SET(${out_var} "${_moo_maif_abs_file}")
70
ENDMACRO(MOO_MAKE_ABSOLUTE_INPUT_FILE)
71
72
MACRO(MOO_MAKE_ABSOLUTE_OUTPUT_FILE file out_var)
73
  SET(_moo_maof_abs_file "${file}")
74
  IF(NOT IS_ABSOLUTE "${_moo_maof_abs_file}")
75
    SET(_moo_maof_abs_file "${CMAKE_CURRENT_BINARY_DIR}/${_moo_maof_abs_file}")
76
  ENDIF(NOT IS_ABSOLUTE "${_moo_maof_abs_file}")
77
  SET(${out_var} "${_moo_maof_abs_file}")
78
ENDMACRO(MOO_MAKE_ABSOLUTE_OUTPUT_FILE)
79
80
MACRO(MOO_WRITE_CONFIG_H _moo_in_file _moo_out_file)
81
  MOO_MAKE_ABSOLUTE_INPUT_FILE("${_moo_in_file}" _moo_abs_in_file)
82
  MOO_MAKE_ABSOLUTE_OUTPUT_FILE("${_moo_out_file}" _moo_abs_out_file)
83
84
  FILE(WRITE ${_moo_abs_out_file}-in.moo "#ifndef __CONFIG_H__\n")
85
  FILE(APPEND ${_moo_abs_out_file}-in.moo "#define __CONFIG_H__\n\n")
86
  FILE(READ ${_moo_abs_in_file} _moo_contents)
87
  FILE(APPEND ${_moo_abs_out_file}-in.moo ${_moo_contents})
88
  FILE(APPEND ${_moo_abs_out_file}-in.moo "\n")
89
90
  FILE(STRINGS ${__MOO_DEFINE_H_FILE__} _moo_wch_lines)
91
  FOREACH(_moo_wch_l ${_moo_wch_lines})
92
    IF(_moo_wch_l MATCHES "^#moodefine (.*)$")
93
      STRING(REGEX REPLACE "^#moodefine (.*)$" "\\1" _moo_wch_var "${_moo_wch_l}")
94
      IF(${_moo_wch_var})
95
        FILE(APPEND ${_moo_abs_out_file}-in.moo "#define ${_moo_wch_var} 1\n\n")
96
      ELSE(${_moo_wch_var})
97
        FILE(APPEND ${_moo_abs_out_file}-in.moo "/* #undef ${_moo_wch_var} */\n\n")
98
      ENDIF(${_moo_wch_var})
99
    ELSE(_moo_wch_l MATCHES "^#moodefine (.*)$")
100
      FILE(APPEND ${_moo_abs_out_file}-in.moo "${_moo_wch_l}\n")
101
    ENDIF(_moo_wch_l MATCHES "^#moodefine (.*)$")
102
  ENDFOREACH(_moo_wch_l)
103
104
  FILE(APPEND ${_moo_abs_out_file}-in.moo "#endif /* __CONFIG_H__ */\n")
105
106
  CONFIGURE_FILE(${_moo_abs_out_file}-in.moo ${_moo_abs_out_file} ${ARGN})
107
ENDMACRO(MOO_WRITE_CONFIG_H)
108
109
###########################################################################
110
#
111
# OS
112
#
113
114
SET(_MOO_KNOWN_PLATFORMS CYGWIN WIN32 DARWIN UNIX FREEBSD BSD LINUX FDO)
115
FOREACH(_moo_os ${_MOO_KNOWN_PLATFORMS})
116
  SET(MOO_OS_${_moo_os} FALSE)
117
ENDFOREACH(_moo_os)
118
119
IF(APPLE)
120
  SET(MOO_OS_DARWIN TRUE)
121
ENDIF(APPLE)
122
123
IF(CYGWIN)
124
  SET(MOO_OS_CYGWIN TRUE)
125
ENDIF(CYGWIN)
126
127
IF(WIN32 OR CYGWIN)
128
  SET(MOO_OS_WIN32 TRUE)
129
ENDIF(WIN32 OR CYGWIN)
130
131
IF(UNIX)
132
  SET(MOO_OS_UNIX TRUE)
133
ENDIF(UNIX)
134
135
IF(UNIX AND NOT WIN32 AND NOT APPLE)
136
  SET(MOO_OS_FDO TRUE)
137
ENDIF(UNIX AND NOT WIN32 AND NOT APPLE)
138
139
IF(CMAKE_SYSTEM_NAME MATCHES "FreeBSD")
140
  SET(MOO_OS_FREEBSD TRUE)
141
ENDIF(CMAKE_SYSTEM_NAME MATCHES "FreeBSD")
142
143
IF(CMAKE_SYSTEM_NAME MATCHES "BSD")
144
  SET(MOO_OS_BSD TRUE)
145
ENDIF(CMAKE_SYSTEM_NAME MATCHES "BSD")
146
147
IF(CMAKE_SYSTEM_NAME MATCHES "Linux")
148
  SET(MOO_OS_LINUX TRUE)
149
ENDIF(CMAKE_SYSTEM_NAME MATCHES "Linux")
150
151
IF(MOO_OS_DARWIN OR MOO_OS_FREEBSD)
152
  SET(MOO_OS_BSD TRUE)
153
ENDIF(MOO_OS_DARWIN OR MOO_OS_FREEBSD)
154
155
IF(MOO_OS_BSD OR MOO_OS_LINUX)
156
  SET(MOO_OS_UNIX TRUE)
157
ENDIF(MOO_OS_BSD OR MOO_OS_LINUX)
158
159
###########################################################################
160
#
161
# Installation dirs
162
#
163
164
SET(BINDIR bin CACHE PATH "bin")
165
SET(DATADIR share CACHE PATH "share")
166
SET(DESKTOPFILEDIR ${DATADIR}/applications CACHE PATH "share/applications")
167
SET(LIBDIR lib CACHE PATH "lib")
168
SET(LOCALEDIR ${DATADIR}/locale CACHE PATH "Where mo files go")
169
170
###########################################################################
171
#
172
# Aux macros
173
#
174
175
# MOO_COLLECT_ARGS(ARG FOO VAR foo ARG BAR VAR bar ARGN ...)
176
# caller: SOME_MACRO(FOO foo1 foo2 foo3 BAR bar1)
177
MACRO(MOO_COLLECT_ARGS)
178
  SET(_moo_args)
179
  SET(_moo_vars)
180
  SET(_moo_argn)
181
182
  SET(_moo_what)
183
184
  FOREACH(_moo_a ${ARGN})
185
    IF("${_moo_what}" STREQUAL "ARG")
186
      LIST(APPEND _moo_args ${_moo_a})
187
      SET(_moo_what VAR)
188
    ELSEIF("${_moo_what}" STREQUAL "VAR")
189
      LIST(APPEND _moo_vars ${_moo_a})
190
      SET(_moo_what)
191
    ELSEIF("${_moo_what}" STREQUAL "ARGN")
192
      LIST(APPEND _moo_argn ${_moo_a})
193
    ELSEIF("${_moo_a}" STREQUAL "ARG")
194
      SET(_moo_what ARG)
195
    ELSEIF("${_moo_a}" STREQUAL "ARGN")
196
      SET(_moo_what ARGN)
197
    ELSE("${_moo_what}" STREQUAL "ARG")
198
      MOO_ERROR("bad argument ${moo_a}")
199
    ENDIF("${_moo_what}" STREQUAL "ARG")
200
  ENDFOREACH(_moo_a)
201
202
#   MESSAGE("args: ${_moo_args}")
203
#   MESSAGE("vars: ${_moo_vars}")
204
#   MESSAGE("argn: ${_moo_argn}")
205
206
  SET(_moo_what -1)
207
  FOREACH(_moo_arg ${_moo_argn})
208
    LIST(FIND _moo_args "${_moo_arg}" _moo_what2)
209
    IF(NOT _moo_what2 EQUAL -1)
210
      SET(_moo_what ${_moo_what2})
211
    ELSE(NOT _moo_what2 EQUAL -1)
212
      IF(_moo_what EQUAL -1)
213
        MOO_ERROR("Invalid argument ${_moo_arg}")
214
      ENDIF(_moo_what EQUAL -1)
215
      LIST(GET _moo_vars ${_moo_what} _moo_v)
216
      LIST(APPEND ${_moo_v} "${_moo_arg}")
217
    ENDIF(NOT _moo_what2 EQUAL -1)
218
  ENDFOREACH(_moo_arg)
219
220
  LIST(LENGTH _moo_args _moo_nargs)
221
  MATH(EXPR _moo_nargs "${_moo_nargs} - 1")
222
  FOREACH(_moo_what RANGE ${_moo_nargs})
223
    LIST(GET _moo_args ${_moo_what} _moo_a)
224
    LIST(GET _moo_vars ${_moo_what} _moo_v)
225
    #MOO_DEBUG("${_moo_what}. ${_moo_v}: ${${_moo_v}}")
226
  ENDFOREACH(_moo_what)
227
ENDMACRO(MOO_COLLECT_ARGS)
228
229
MACRO(__MOO_SET_SIMPLE_VAR var)
230
  SET(${var} ${ARGN})
231
ENDMACRO(__MOO_SET_SIMPLE_VAR)
232
233
# _MOO_COLLECT_ARGS_IMPL(FOO foo setfoo BAR bar setbar ARGN ...)
234
MACRO(_MOO_COLLECT_ARGS_IMPL)
235
  SET(_moo__cai_args)
236
  SET(_moo__cai_vars)
237
  SET(_moo__cai_macros)
238
  SET(_moo__cai_argn)
239
240
  SET(_moo__cai_what)
241
242
  FOREACH(_moo__cai_a ${ARGN})
243
    IF("${_moo__cai_what}" STREQUAL "VAR")
244
      LIST(APPEND _moo__cai_vars ${_moo__cai_a})
245
      SET(_moo__cai_what SETVAR)
246
    ELSEIF("${_moo__cai_what}" STREQUAL "SETVAR")
247
      LIST(APPEND _moo__cai_macros ${_moo__cai_a})
248
      SET(_moo__cai_what)
249
    ELSEIF("${_moo__cai_what}" STREQUAL "ARGN")
250
      LIST(APPEND _moo__cai_argn ${_moo__cai_a})
251
    ELSEIF("${_moo__cai_a}" STREQUAL "ARGN")
252
      SET(_moo__cai_what ARGN)
253
    ELSE("${_moo__cai_what}" STREQUAL "VAR")
254
      LIST(APPEND _moo__cai_args ${_moo__cai_a})
255
      SET(_moo__cai_what VAR)
256
    ENDIF("${_moo__cai_what}" STREQUAL "VAR")
257
  ENDFOREACH(_moo__cai_a)
258
259
#   MOO_DEBUG("args: ${_moo__cai_args}")
260
#   MOO_DEBUG("vars: ${_moo__cai_vars}")
261
#   MOO_DEBUG("macros: ${_moo__cai_macros}")
262
#   MOO_DEBUG("argn: ${_moo__cai_argn}")
263
264
  SET(_moo__cai_what -1)
265
  FOREACH(_moo__cai_arg ${_moo__cai_argn})
266
    LIST(FIND _moo__cai_args "${_moo__cai_arg}" _moo__cai_what2)
267
    IF(NOT _moo__cai_what2 EQUAL -1)
268
      SET(_moo__cai_what ${_moo__cai_what2})
269
    ELSE(NOT _moo__cai_what2 EQUAL -1)
270
      IF(_moo__cai_what EQUAL -1)
271
        MOO_ERROR("Invalid argument ${_moo__cai_arg}")
272
      ENDIF(_moo__cai_what EQUAL -1)
273
      LIST(GET _moo__cai_vars ${_moo__cai_what} _moo__cai_v)
274
      LIST(GET _moo__cai_macros ${_moo__cai_what} _moo__cai_sv)
275
      IF("${_moo__cai_sv}" STREQUAL "__MOO_SET_SIMPLE_VAR")
276
#         MOO_DEBUG("${_moo__cai_v} = ${_moo__cai_arg}")
277
        __MOO_SET_SIMPLE_VAR(${_moo__cai_v} ${_moo__cai_arg})
278
      ELSE("${_moo__cai_sv}" STREQUAL "__MOO_SET_SIMPLE_VAR")
279
        MOO_ERROR("Invalid argument ${_moo__cai_sv}")
280
      ENDIF("${_moo__cai_sv}" STREQUAL "__MOO_SET_SIMPLE_VAR")
281
    ENDIF(NOT _moo__cai_what2 EQUAL -1)
282
  ENDFOREACH(_moo__cai_arg)
283
284
  LIST(LENGTH _moo__cai_args _moo__cai_nargs)
285
  MATH(EXPR _moo__cai_nargs "${_moo__cai_nargs} - 1")
286
  FOREACH(_moo__cai_what RANGE ${_moo__cai_nargs})
287
    LIST(GET _moo__cai_args ${_moo__cai_what} _moo__cai_a)
288
    LIST(GET _moo__cai_vars ${_moo__cai_what} _moo__cai_v)
289
#     MOO_DEBUG("${_moo__cai_what}. ${_moo__cai_v}: ${${_moo__cai_v}}")
290
  ENDFOREACH(_moo__cai_what)
291
ENDMACRO(_MOO_COLLECT_ARGS_IMPL)
292
293
# MOO_COLLECT_SIMPLE_ARGS(FOO foo BAR bar ARGN ...)
294
MACRO(MOO_COLLECT_SIMPLE_ARGS)
295
  SET(_moo_csa_impl_argn)
296
297
  SET(_moo_csa_argn ${ARGN})
298
  SET(_moo_csa_i 0)
299
  LIST(LENGTH _moo_csa_argn _moo_csa_nargs)
300
  WHILE(_moo_csa_i LESS _moo_csa_nargs)
301
    LIST(GET _moo_csa_argn ${_moo_csa_i} _moo_csa_a)
302
    IF("${_moo_csa_a}" STREQUAL "ARGN")
303
      BREAK()
304
    ENDIF("${_moo_csa_a}" STREQUAL "ARGN")
305
    MATH(EXPR _moo_csa_i "${_moo_csa_i} + 1")
306
    LIST(GET _moo_csa_argn ${_moo_csa_i} _moo_csa_v)
307
    LIST(APPEND _moo_csa_impl_argn "${_moo_csa_a}")
308
    LIST(APPEND _moo_csa_impl_argn "${_moo_csa_v}")
309
    LIST(APPEND _moo_csa_impl_argn __MOO_SET_SIMPLE_VAR)
310
    MATH(EXPR _moo_csa_i "${_moo_csa_i} + 1")
311
  ENDWHILE(_moo_csa_i LESS _moo_csa_nargs)
312
313
  WHILE(_moo_csa_i LESS _moo_csa_nargs)
314
    LIST(GET _moo_csa_argn ${_moo_csa_i} _moo_csa_a)
315
    LIST(APPEND _moo_csa_impl_argn "${_moo_csa_a}")
316
    MATH(EXPR _moo_csa_i "${_moo_csa_i} + 1")
317
  ENDWHILE(_moo_csa_i LESS _moo_csa_nargs)
318
319
#   MOO_DEBUG("MOO_COLLECT_SIMPLE_ARGS: ${_moo_csa_argn}")
320
#   MOO_DEBUG("MOO_COLLECT_SIMPLE_ARGS: ${_moo_csa_impl_argn}")
321
322
  _MOO_COLLECT_ARGS_IMPL(${_moo_csa_impl_argn})
323
ENDMACRO(MOO_COLLECT_SIMPLE_ARGS)
324
325
###########################################################################
326
#
327
# MOO_OPTION
328
#
329
330
MACRO(MOO_OPTION variable dfltval helpstring)
331
  IF(DEFINED __MOO_OPTION_SET_${variable})
332
    MOO_ERROR("Option ${variable} is already created")
333
  ENDIF(DEFINED __MOO_OPTION_SET_${variable})
334
  SET(_moo_option_hidden)
335
  SET(_moo_option_header)
336
  SET(_moo_option_define)
337
  MOO_COLLECT_SIMPLE_ARGS(HIDDEN _moo_option_hidden HEADER _moo_option_header DEFINE _moo_option_define ARGN ${ARGN})
338
  IF(NOT _moo_option_hidden)
339
    OPTION(${variable} "${helpstring}" "${dfltval}")
340
  ELSE(NOT _moo_option_hidden)
341
    SET(${variable} "${dfltval}" CACHE BOOL "${helpstring}")
342
    MARK_AS_ADVANCED(${variable})
343
  ENDIF(NOT _moo_option_hidden)
344
  IF(_moo_option_header)
345
#     MOO_DEBUG(${variable})
346
    MOO_DEFINE_H(${variable} "${helpstring}")
347
  ENDIF(_moo_option_header)
348
  IF(_moo_option_define AND ${variable})
349
    ADD_DEFINITIONS(-D${variable}=1)
350
  ENDIF(_moo_option_define AND ${variable})
351
  SET(__MOO_OPTION_SET_${variable} 1)
352
#   MOO_DEBUG(STATUS "Option ${variable}")
353
ENDMACRO(MOO_OPTION)
354
355
MACRO(MOO_CHECK_OPTION variable)
356
  IF(NOT DEFINED __MOO_OPTION_SET_${variable})
357
    MOO_ERROR("Option ${variable} is not set")
358
  ENDIF(NOT DEFINED __MOO_OPTION_SET_${variable})
359
ENDMACRO(MOO_CHECK_OPTION)
360
361
MOO_OPTION(MOO_DEV_MODE FALSE "Enable developer mode - bunch of checks, warnings, etc." DEFINE 1)
362
363
FIND_PACKAGE(MooCompilers)
364
FIND_PACKAGE(MooCmakeUtils)
365
FIND_PACKAGE(MooI18n)
1
OPTION(MOO_DEV_MODE_CMAKE "Enable developer mode for cmake - bunch of checks, warnings, etc." OFF)
2
MARK_AS_ADVANCED(MOO_DEV_MODE_CMAKE)
3
4
IF(MOO_DEV_MODE_CMAKE)
5
  MACRO(MOO_DEBUG)
6
    MESSAGE(${ARGN})
7
  ENDMACRO(MOO_DEBUG)
8
ELSE(MOO_DEV_MODE_CMAKE)
9
  MACRO(MOO_DEBUG)
10
  ENDMACRO(MOO_DEBUG)
11
ENDIF(MOO_DEV_MODE_CMAKE)
12
13
MACRO(MOO_ERROR)
14
  MESSAGE(FATAL_ERROR ${ARGN})
15
ENDMACRO(MOO_ERROR)
16
17
###########################################################################
18
#
19
# Build type
20
#
21
22
IF("${CMAKE_BUILD_TYPE}" STREQUAL "")
23
  SET(CMAKE_BUILD_TYPE Release)
24
ENDIF("${CMAKE_BUILD_TYPE}" STREQUAL "")
25
STRING(TOUPPER ${CMAKE_BUILD_TYPE} MOO_BUILD_TYPE)
26
SET(MOO_BUILD_SUBTYPE ${MOO_BUILD_TYPE})
27
IF("${MOO_BUILD_TYPE}" STREQUAL "RELWITHDEBINFO" OR "${MOO_BUILD_TYPE}" STREQUAL "MINSIZEREL")
28
  SET(MOO_BUILD_TYPE RELEASE)
29
ELSEIF(NOT "${MOO_BUILD_TYPE}" STREQUAL "DEBUG" AND NOT "${MOO_BUILD_TYPE}" STREQUAL "RELEASE")
30
  MOO_ERROR("Unknown build type '${MOO_BUILD_TYPE}'")
31
ENDIF("${MOO_BUILD_TYPE}" STREQUAL "RELWITHDEBINFO" OR "${MOO_BUILD_TYPE}" STREQUAL "MINSIZEREL")
32
MOO_DEBUG(STATUS "MOO_BUILD_TYPE: ${MOO_BUILD_TYPE}")
33
34
IF("${MOO_BUILD_TYPE}" STREQUAL "DEBUG")
35
  SET(MOO_DEBUG TRUE)
36
ELSE("${MOO_BUILD_TYPE}" STREQUAL "DEBUG")
37
  SET(MOO_DEBUG FALSE)
38
ENDIF("${MOO_BUILD_TYPE}" STREQUAL "DEBUG")
39
40
###########################################################################
41
#
42
# MOO_DEFINE_H
43
#
44
45
SET(__MOO_DEFINE_H_FILE__ ${CMAKE_BINARY_DIR}/moo-config.h.in)
46
FILE(WRITE ${__MOO_DEFINE_H_FILE__} "")
47
48
MACRO(MOO_DEFINE_H _moo_varname)
49
  SET(_moo_comment)
50
  FOREACH(_moo_arg ${ARGN})
51
    SET(_moo_comment ${_moo_arg})
52
  ENDFOREACH(_moo_arg)
53
  IF(_moo_comment)
54
    FILE(APPEND ${__MOO_DEFINE_H_FILE__} "/* ${_moo_comment} */\n")
55
  ENDIF(_moo_comment)
56
  FILE(APPEND ${__MOO_DEFINE_H_FILE__} "#moodefine ${_moo_varname}\n\n")
57
ENDMACRO(MOO_DEFINE_H)
58
59
MACRO(MOO_MAKE_ABSOLUTE_INPUT_FILE file out_var)
60
  SET(_moo_maif_abs_file "${file}")
61
  IF(NOT EXISTS "${_moo_maif_abs_file}")
62
    IF(EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/${_moo_maif_abs_file}")
63
      SET(_moo_maif_abs_file ${CMAKE_CURRENT_SOURCE_DIR}/${_moo_maif_abs_file})
64
    ENDIF(EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/${_moo_maif_abs_file}")
65
  ENDIF(NOT EXISTS "${_moo_maif_abs_file}")
66
  IF(NOT EXISTS "${_moo_maif_abs_file}")
67
    MOO_ERROR("File '${_moo_maif_abs_file}' does not exist")
68
  ENDIF(NOT EXISTS "${_moo_maif_abs_file}")
69
  SET(${out_var} "${_moo_maif_abs_file}")
70
ENDMACRO(MOO_MAKE_ABSOLUTE_INPUT_FILE)
71
72
MACRO(MOO_MAKE_ABSOLUTE_OUTPUT_FILE file out_var)
73
  SET(_moo_maof_abs_file "${file}")
74
  IF(NOT IS_ABSOLUTE "${_moo_maof_abs_file}")
75
    SET(_moo_maof_abs_file "${CMAKE_CURRENT_BINARY_DIR}/${_moo_maof_abs_file}")
76
  ENDIF(NOT IS_ABSOLUTE "${_moo_maof_abs_file}")
77
  SET(${out_var} "${_moo_maof_abs_file}")
78
ENDMACRO(MOO_MAKE_ABSOLUTE_OUTPUT_FILE)
79
80
MACRO(MOO_WRITE_CONFIG_H _moo_in_file _moo_out_file)
81
  MOO_MAKE_ABSOLUTE_INPUT_FILE("${_moo_in_file}" _moo_abs_in_file)
82
  MOO_MAKE_ABSOLUTE_OUTPUT_FILE("${_moo_out_file}" _moo_abs_out_file)
83
84
  FILE(WRITE ${_moo_abs_out_file}-in.moo "#ifndef __CONFIG_H__\n")
85
  FILE(APPEND ${_moo_abs_out_file}-in.moo "#define __CONFIG_H__\n\n")
86
  FILE(READ ${_moo_abs_in_file} _moo_contents)
87
  FILE(APPEND ${_moo_abs_out_file}-in.moo ${_moo_contents})
88
  FILE(APPEND ${_moo_abs_out_file}-in.moo "\n")
89
90
  FILE(STRINGS ${__MOO_DEFINE_H_FILE__} _moo_wch_lines)
91
  FOREACH(_moo_wch_l ${_moo_wch_lines})
92
    IF(_moo_wch_l MATCHES "^#moodefine (.*)$")
93
      STRING(REGEX REPLACE "^#moodefine (.*)$" "\\1" _moo_wch_var "${_moo_wch_l}")
94
      IF(${_moo_wch_var})
95
        FILE(APPEND ${_moo_abs_out_file}-in.moo "#define ${_moo_wch_var} 1\n\n")
96
      ELSE(${_moo_wch_var})
97
        FILE(APPEND ${_moo_abs_out_file}-in.moo "/* #undef ${_moo_wch_var} */\n\n")
98
      ENDIF(${_moo_wch_var})
99
    ELSE(_moo_wch_l MATCHES "^#moodefine (.*)$")
100
      FILE(APPEND ${_moo_abs_out_file}-in.moo "${_moo_wch_l}\n")
101
    ENDIF(_moo_wch_l MATCHES "^#moodefine (.*)$")
102
  ENDFOREACH(_moo_wch_l)
103
104
  FILE(APPEND ${_moo_abs_out_file}-in.moo "#endif /* __CONFIG_H__ */\n")
105
106
  CONFIGURE_FILE(${_moo_abs_out_file}-in.moo ${_moo_abs_out_file} ${ARGN})
107
ENDMACRO(MOO_WRITE_CONFIG_H)
108
109
###########################################################################
110
#
111
# OS
112
#
113
114
SET(_MOO_KNOWN_PLATFORMS CYGWIN WIN32 DARWIN UNIX FREEBSD BSD LINUX FDO)
115
FOREACH(_moo_os ${_MOO_KNOWN_PLATFORMS})
116
  SET(MOO_OS_${_moo_os} FALSE)
117
ENDFOREACH(_moo_os)
118
119
IF(APPLE)
120
  SET(MOO_OS_DARWIN TRUE)
121
ENDIF(APPLE)
122
123
IF(CYGWIN)
124
  SET(MOO_OS_CYGWIN TRUE)
125
ENDIF(CYGWIN)
126
127
IF(WIN32 OR CYGWIN)
128
  SET(MOO_OS_WIN32 TRUE)
129
ENDIF(WIN32 OR CYGWIN)
130
131
IF(UNIX)
132
  SET(MOO_OS_UNIX TRUE)
133
ENDIF(UNIX)
134
135
IF(UNIX AND NOT WIN32 AND NOT APPLE)
136
  SET(MOO_OS_FDO TRUE)
137
ENDIF(UNIX AND NOT WIN32 AND NOT APPLE)
138
139
IF(CMAKE_SYSTEM_NAME MATCHES "FreeBSD")
140
  SET(MOO_OS_FREEBSD TRUE)
141
ENDIF(CMAKE_SYSTEM_NAME MATCHES "FreeBSD")
142
143
IF(CMAKE_SYSTEM_NAME MATCHES "BSD")
144
  SET(MOO_OS_BSD TRUE)
145
ENDIF(CMAKE_SYSTEM_NAME MATCHES "BSD")
146
147
IF(CMAKE_SYSTEM_NAME MATCHES "Linux")
148
  SET(MOO_OS_LINUX TRUE)
149
ENDIF(CMAKE_SYSTEM_NAME MATCHES "Linux")
150
151
IF(MOO_OS_DARWIN OR MOO_OS_FREEBSD)
152
  SET(MOO_OS_BSD TRUE)
153
ENDIF(MOO_OS_DARWIN OR MOO_OS_FREEBSD)
154
155
IF(MOO_OS_BSD OR MOO_OS_LINUX)
156
  SET(MOO_OS_UNIX TRUE)
157
ENDIF(MOO_OS_BSD OR MOO_OS_LINUX)
158
159
###########################################################################
160
#
161
# Installation dirs
162
#
163
164
SET(BINDIR bin CACHE PATH "bin")
165
SET(DATADIR share CACHE PATH "share")
166
SET(DESKTOPFILEDIR ${DATADIR}/applications CACHE PATH "share/applications")
167
SET(LIBDIR lib CACHE PATH "lib")
168
SET(LOCALEDIR ${DATADIR}/locale CACHE PATH "Where mo files go")
169
170
###########################################################################
171
#
172
# Aux macros
173
#
174
175
# MOO_COLLECT_ARGS(ARG FOO VAR foo ARG BAR VAR bar ARGN ...)
176
# caller: SOME_MACRO(FOO foo1 foo2 foo3 BAR bar1)
177
MACRO(MOO_COLLECT_ARGS)
178
  SET(_moo_args)
179
  SET(_moo_vars)
180
  SET(_moo_argn)
181
182
  SET(_moo_what)
183
184
  FOREACH(_moo_a ${ARGN})
185
    IF("${_moo_what}" STREQUAL "ARG")
186
      LIST(APPEND _moo_args ${_moo_a})
187
      SET(_moo_what VAR)
188
    ELSEIF("${_moo_what}" STREQUAL "VAR")
189
      LIST(APPEND _moo_vars ${_moo_a})
190
      SET(_moo_what)
191
    ELSEIF("${_moo_what}" STREQUAL "ARGN")
192
      LIST(APPEND _moo_argn ${_moo_a})
193
    ELSEIF("${_moo_a}" STREQUAL "ARG")
194
      SET(_moo_what ARG)
195
    ELSEIF("${_moo_a}" STREQUAL "ARGN")
196
      SET(_moo_what ARGN)
197
    ELSE("${_moo_what}" STREQUAL "ARG")
198
      MOO_ERROR("bad argument ${moo_a}")
199
    ENDIF("${_moo_what}" STREQUAL "ARG")
200
  ENDFOREACH(_moo_a)
201
202
#   MESSAGE("args: ${_moo_args}")
203
#   MESSAGE("vars: ${_moo_vars}")
204
#   MESSAGE("argn: ${_moo_argn}")
205
206
  SET(_moo_what -1)
207
  FOREACH(_moo_arg ${_moo_argn})
208
    LIST(FIND _moo_args "${_moo_arg}" _moo_what2)
209
    IF(NOT _moo_what2 EQUAL -1)
210
      SET(_moo_what ${_moo_what2})
211
    ELSE(NOT _moo_what2 EQUAL -1)
212
      IF(_moo_what EQUAL -1)
213
        MOO_ERROR("Invalid argument ${_moo_arg}")
214
      ENDIF(_moo_what EQUAL -1)
215
      LIST(GET _moo_vars ${_moo_what} _moo_v)
216
      LIST(APPEND ${_moo_v} "${_moo_arg}")
217
    ENDIF(NOT _moo_what2 EQUAL -1)
218
  ENDFOREACH(_moo_arg)
219
220
  LIST(LENGTH _moo_args _moo_nargs)
221
  MATH(EXPR _moo_nargs "${_moo_nargs} - 1")
222
  FOREACH(_moo_what RANGE ${_moo_nargs})
223
    LIST(GET _moo_args ${_moo_what} _moo_a)
224
    LIST(GET _moo_vars ${_moo_what} _moo_v)
225
    #MOO_DEBUG("${_moo_what}. ${_moo_v}: ${${_moo_v}}")
226
  ENDFOREACH(_moo_what)
227
ENDMACRO(MOO_COLLECT_ARGS)
228
229
MACRO(__MOO_SET_SIMPLE_VAR var)
230
  SET(${var} ${ARGN})
231
ENDMACRO(__MOO_SET_SIMPLE_VAR)
232
233
# _MOO_COLLECT_ARGS_IMPL(FOO foo setfoo BAR bar setbar ARGN ...)
234
MACRO(_MOO_COLLECT_ARGS_IMPL)
235
  SET(_moo__cai_args)
236
  SET(_moo__cai_vars)
237
  SET(_moo__cai_macros)
238
  SET(_moo__cai_argn)
239
240
  SET(_moo__cai_what)
241
242
  FOREACH(_moo__cai_a ${ARGN})
243
    IF("${_moo__cai_what}" STREQUAL "VAR")
244
      LIST(APPEND _moo__cai_vars ${_moo__cai_a})
245
      SET(_moo__cai_what SETVAR)
246
    ELSEIF("${_moo__cai_what}" STREQUAL "SETVAR")
247
      LIST(APPEND _moo__cai_macros ${_moo__cai_a})
248
      SET(_moo__cai_what)
249
    ELSEIF("${_moo__cai_what}" STREQUAL "ARGN")
250
      LIST(APPEND _moo__cai_argn ${_moo__cai_a})
251
    ELSEIF("${_moo__cai_a}" STREQUAL "ARGN")
252
      SET(_moo__cai_what ARGN)
253
    ELSE("${_moo__cai_what}" STREQUAL "VAR")
254
      LIST(APPEND _moo__cai_args ${_moo__cai_a})
255
      SET(_moo__cai_what VAR)
256
    ENDIF("${_moo__cai_what}" STREQUAL "VAR")
257
  ENDFOREACH(_moo__cai_a)
258
259
#   MOO_DEBUG("args: ${_moo__cai_args}")
260
#   MOO_DEBUG("vars: ${_moo__cai_vars}")
261
#   MOO_DEBUG("macros: ${_moo__cai_macros}")
262
#   MOO_DEBUG("argn: ${_moo__cai_argn}")
263
264
  SET(_moo__cai_what -1)
265
  FOREACH(_moo__cai_arg ${_moo__cai_argn})
266
    LIST(FIND _moo__cai_args "${_moo__cai_arg}" _moo__cai_what2)
267
    IF(NOT _moo__cai_what2 EQUAL -1)
268
      SET(_moo__cai_what ${_moo__cai_what2})
269
    ELSE(NOT _moo__cai_what2 EQUAL -1)
270
      IF(_moo__cai_what EQUAL -1)
271
        MOO_ERROR("Invalid argument ${_moo__cai_arg}")
272
      ENDIF(_moo__cai_what EQUAL -1)
273
      LIST(GET _moo__cai_vars ${_moo__cai_what} _moo__cai_v)
274
      LIST(GET _moo__cai_macros ${_moo__cai_what} _moo__cai_sv)
275
      IF("${_moo__cai_sv}" STREQUAL "__MOO_SET_SIMPLE_VAR")
276
#         MOO_DEBUG("${_moo__cai_v} = ${_moo__cai_arg}")
277
        __MOO_SET_SIMPLE_VAR(${_moo__cai_v} ${_moo__cai_arg})
278
      ELSE("${_moo__cai_sv}" STREQUAL "__MOO_SET_SIMPLE_VAR")
279
        MOO_ERROR("Invalid argument ${_moo__cai_sv}")
280
      ENDIF("${_moo__cai_sv}" STREQUAL "__MOO_SET_SIMPLE_VAR")
281
    ENDIF(NOT _moo__cai_what2 EQUAL -1)
282
  ENDFOREACH(_moo__cai_arg)
283
284
  LIST(LENGTH _moo__cai_args _moo__cai_nargs)
285
  MATH(EXPR _moo__cai_nargs "${_moo__cai_nargs} - 1")
286
  FOREACH(_moo__cai_what RANGE ${_moo__cai_nargs})
287
    LIST(GET _moo__cai_args ${_moo__cai_what} _moo__cai_a)
288
    LIST(GET _moo__cai_vars ${_moo__cai_what} _moo__cai_v)
289
#     MOO_DEBUG("${_moo__cai_what}. ${_moo__cai_v}: ${${_moo__cai_v}}")
290
  ENDFOREACH(_moo__cai_what)
291
ENDMACRO(_MOO_COLLECT_ARGS_IMPL)
292
293
# MOO_COLLECT_SIMPLE_ARGS(FOO foo BAR bar ARGN ...)
294
MACRO(MOO_COLLECT_SIMPLE_ARGS)
295
  SET(_moo_csa_impl_argn)
296
297
  SET(_moo_csa_argn ${ARGN})
298
  SET(_moo_csa_i 0)
299
  LIST(LENGTH _moo_csa_argn _moo_csa_nargs)
300
  WHILE(_moo_csa_i LESS _moo_csa_nargs)
301
    LIST(GET _moo_csa_argn ${_moo_csa_i} _moo_csa_a)
302
    IF("${_moo_csa_a}" STREQUAL "ARGN")
303
      BREAK()
304
    ENDIF("${_moo_csa_a}" STREQUAL "ARGN")
305
    MATH(EXPR _moo_csa_i "${_moo_csa_i} + 1")
306
    LIST(GET _moo_csa_argn ${_moo_csa_i} _moo_csa_v)
307
    LIST(APPEND _moo_csa_impl_argn "${_moo_csa_a}")
308
    LIST(APPEND _moo_csa_impl_argn "${_moo_csa_v}")
309
    LIST(APPEND _moo_csa_impl_argn __MOO_SET_SIMPLE_VAR)
310
    MATH(EXPR _moo_csa_i "${_moo_csa_i} + 1")
311
  ENDWHILE(_moo_csa_i LESS _moo_csa_nargs)
312
313
  WHILE(_moo_csa_i LESS _moo_csa_nargs)
314
    LIST(GET _moo_csa_argn ${_moo_csa_i} _moo_csa_a)
315
    LIST(APPEND _moo_csa_impl_argn "${_moo_csa_a}")
316
    MATH(EXPR _moo_csa_i "${_moo_csa_i} + 1")
317
  ENDWHILE(_moo_csa_i LESS _moo_csa_nargs)
318
319
#   MOO_DEBUG("MOO_COLLECT_SIMPLE_ARGS: ${_moo_csa_argn}")
320
#   MOO_DEBUG("MOO_COLLECT_SIMPLE_ARGS: ${_moo_csa_impl_argn}")
321
322
  _MOO_COLLECT_ARGS_IMPL(${_moo_csa_impl_argn})
323
ENDMACRO(MOO_COLLECT_SIMPLE_ARGS)
324
325
###########################################################################
326
#
327
# MOO_OPTION
328
#
329
330
MACRO(MOO_OPTION variable dfltval helpstring)
331
  IF(DEFINED __MOO_OPTION_SET_${variable})
332
    MOO_ERROR("Option ${variable} is already created")
333
  ENDIF(DEFINED __MOO_OPTION_SET_${variable})
334
  SET(_moo_option_hidden)
335
  SET(_moo_option_header)
336
  SET(_moo_option_define)
337
  MOO_COLLECT_SIMPLE_ARGS(HIDDEN _moo_option_hidden HEADER _moo_option_header DEFINE _moo_option_define ARGN ${ARGN})
338
  IF(NOT _moo_option_hidden)
339
    OPTION(${variable} "${helpstring}" "${dfltval}")
340
  ELSE(NOT _moo_option_hidden)
341
    SET(${variable} "${dfltval}" CACHE BOOL "${helpstring}")
342
    MARK_AS_ADVANCED(${variable})
343
  ENDIF(NOT _moo_option_hidden)
344
  IF(_moo_option_header)
345
#     MOO_DEBUG(${variable})
346
    MOO_DEFINE_H(${variable} "${helpstring}")
347
  ENDIF(_moo_option_header)
348
  IF(_moo_option_define AND ${variable})
349
    ADD_DEFINITIONS(-D${variable}=1)
350
  ENDIF(_moo_option_define AND ${variable})
351
  SET(__MOO_OPTION_SET_${variable} 1)
352
#   MOO_DEBUG(STATUS "Option ${variable}")
353
ENDMACRO(MOO_OPTION)
354
355
MACRO(MOO_CHECK_OPTION variable)
356
  IF(NOT DEFINED __MOO_OPTION_SET_${variable})
357
    MOO_ERROR("Option ${variable} is not set")
358
  ENDIF(NOT DEFINED __MOO_OPTION_SET_${variable})
359
ENDMACRO(MOO_CHECK_OPTION)
360
361
MOO_OPTION(MOO_DEV_MODE FALSE "Enable developer mode - bunch of checks, warnings, etc." DEFINE 1)
362
363
FIND_PACKAGE(MooCompilers)
364
FIND_PACKAGE(MooCmakeUtils)
365
FIND_PACKAGE(MooI18n)

Up to file-list cmake/modules/FindMooCmakeUtils.cmake:

1
MACRO(MOO_EXEC_OR_DIE command)
2
  EXECUTE_PROCESS(${ARGN}
3
                  RESULT_VARIABLE __moo_command_result
4
                  ERROR_VARIABLE __moo_command_error
5
  )
6
  IF(NOT __moo_command_result EQUAL 0)
7
    MESSAGE(FATAL_ERROR "Command ${command} failed: ${__moo_command_error}")
8
  ENDIF(NOT __moo_command_result EQUAL 0)
9
ENDMACRO(MOO_EXEC_OR_DIE)
10
11
MACRO(MOO_COPY_FILE file1 file2)
12
  MOO_EXEC_OR_DIE("copy ${file1} ${file2}"
13
    COMMAND ${CMAKE_COMMAND} -E copy ${file1} ${file2}
14
  )
15
ENDMACRO(MOO_COPY_FILE)
16
17
MACRO(MOO_COPY_IF_CHANGED file1 file2)
18
  SET(__moo_do_copy)
19
  IF(NOT EXISTS ${file2})
20
    SET(__moo_do_copy 1)
21
  ELSE(NOT EXISTS ${file2})
22
    FILE(READ ${file1} __moo_contents1)
23
    FILE(READ ${file2} __moo_contents2)
24
    IF(NOT "${__moo_contents1}" STREQUAL "${__moo_contents2}")
25
      SET(__moo_do_copy 1)
26
    ENDIF(NOT "${__moo_contents1}" STREQUAL "${__moo_contents2}")
27
  ENDIF(NOT EXISTS ${file2})
28
  IF(__moo_do_copy)
29
    MOO_COPY_FILE(${file1} ${file2})
30
  ENDIF(__moo_do_copy)
31
ENDMACRO(MOO_COPY_IF_CHANGED)
1
MACRO(MOO_EXEC_OR_DIE command)
2
  EXECUTE_PROCESS(${ARGN}
3
                  RESULT_VARIABLE __moo_command_result
4
                  ERROR_VARIABLE __moo_command_error
5
  )
6
  IF(NOT __moo_command_result EQUAL 0)
7
    MESSAGE(FATAL_ERROR "Command ${command} failed: ${__moo_command_error}")
8
  ENDIF(NOT __moo_command_result EQUAL 0)
9
ENDMACRO(MOO_EXEC_OR_DIE)
10
11
MACRO(MOO_COPY_FILE file1 file2)
12
  MOO_EXEC_OR_DIE("copy ${file1} ${file2}"
13
    COMMAND ${CMAKE_COMMAND} -E copy ${file1} ${file2}
14
  )
15
ENDMACRO(MOO_COPY_FILE)
16
17
MACRO(MOO_COPY_IF_CHANGED file1 file2)
18
  SET(__moo_do_copy)
19
  IF(NOT EXISTS ${file2})
20
    SET(__moo_do_copy 1)
21
  ELSE(NOT EXISTS ${file2})
22
    FILE(READ ${file1} __moo_contents1)
23
    FILE(READ ${file2} __moo_contents2)
24
    IF(NOT "${__moo_contents1}" STREQUAL "${__moo_contents2}")
25
      SET(__moo_do_copy 1)
26
    ENDIF(NOT "${__moo_contents1}" STREQUAL "${__moo_contents2}")
27
  ENDIF(NOT EXISTS ${file2})
28
  IF(__moo_do_copy)
29
    MOO_COPY_FILE(${file1} ${file2})
30
  ENDIF(__moo_do_copy)
31
ENDMACRO(MOO_COPY_IF_CHANGED)

Up to file-list cmake/modules/FindMooCompilers.cmake:

1
MACRO(_MOO_JOIN_STRING_LIST outvar sep)
2
  SET(_moo__jsl_result)
3
  SET(_moo__jsl_first TRUE)
4
  FOREACH(_moo__jsl_arg ${ARGN})
5
    IF(_moo__jsl_first)
6
      SET(_moo__jsl_result "${_moo__jsl_arg}")
7
      SET(_moo__jsl_first FALSE)
8
    ELSE(_moo__jsl_first)
9
      SET(_moo__jsl_result "${_moo__jsl_result}${sep}${_moo__jsl_arg}")
10
    ENDIF(_moo__jsl_first)
11
  ENDFOREACH(_moo__jsl_arg)
12
  SET(${outvar} "${_moo__jsl_result}")
13
ENDMACRO(_MOO_JOIN_STRING_LIST)
14
15
MACRO(_MOO_CHECK_COMPILER_LANG lang var)
16
  STRING(TOUPPER ${lang} _moo__ccl_lang)
17
  IF("${_moo__ccl_lang}" STREQUAL "ALL")
18
    SET(_moo__ccl_langs C CXX)
19
  ELSEIF("${_moo__ccl_lang}" STREQUAL "C" OR "${_moo__ccl_lang}" STREQUAL "CXX")
20
    SET(_moo__ccl_langs ${_moo__ccl_lang})
21
  ELSE("${_moo__ccl_lang}" STREQUAL "ALL")
22
    MOO_ERROR("Invalid lang '${lang}'")
23
  ENDIF("${_moo__ccl_lang}" STREQUAL "ALL")
24
  SET(${var} ${_moo__ccl_langs})
25
ENDMACRO(_MOO_CHECK_COMPILER_LANG)
26
27
MACRO(_MOO_CHECK_BUILD_TYPE build prefix var)
28
  STRING(TOUPPER ${build} _moo__cbt_build)
29
  IF("${_moo__cbt_build}" STREQUAL "ALL")
30
    SET(_moo__cbt_vars ${prefix})
31
  ELSEIF("${_moo__cbt_build}" STREQUAL "RELEASE")
32
    SET(_moo__cbt_vars ${prefix}_RELEASE ${prefix}_RELWITHDEBINFO ${prefix}_MINSIZEREL)
33
  ELSEIF("${_moo__cbt_build}" STREQUAL "RELEASEONLY")
34
    SET(_moo__cbt_vars ${prefix}_RELEASE)
35
  ELSEIF("${_moo__cbt_build}" STREQUAL "DEBUG" OR "${_moo__cbt_build}" STREQUAL "RELWITHDEBINFO" OR "${_moo__cbt_build}" STREQUAL "MINSIZEREL")
36
    SET(_moo__cbt_vars ${prefix}_${_moo__cbt_build})
37
  ELSE("${_moo__cbt_build}" STREQUAL "ALL")
38
    MOO_ERROR("Invalid build type '${build}'")
39
  ENDIF("${_moo__cbt_build}" STREQUAL "ALL")
40
  SET(${var} ${_moo__cbt_vars})
41
ENDMACRO(_MOO_CHECK_BUILD_TYPE)
42
43
MACRO(_MOO_GET_COMPILER_CONFIG_ARGS var_lang var_build_prefix var_build_vars var_args)
44
  SET(_moo__gcca_langs C CXX)
45
  SET(_moo__gcca_args)
46
  SET(_moo__gcca_do TRUE)
47
  _MOO_CHECK_BUILD_TYPE("ALL" ${var_build_prefix} _moo__gcca_bvars)
48
49
  FOREACH(_moo__gcca_arg ${ARGN})
50
    IF("${_moo__gcca_arg}" STREQUAL "GCC" OR "${_moo__gcca_arg}" STREQUAL "GNUCC")
51
      IF(NOT CMAKE_COMPILER_IS_GNUCC)
52
        SET(_moo__gcca_do FALSE)
53
      ENDIF(NOT CMAKE_COMPILER_IS_GNUCC)
54
    ELSEIF("${_moo__gcca_arg}" STREQUAL "MSVC")
55
      IF(NOT MSVC)
56
        SET(_moo__gcca_do FALSE)
57
      ENDIF(NOT MSVC)
58
    ELSEIF("${_moo__gcca_arg}" STREQUAL "DEBUG" OR "${_moo__gcca_arg}" STREQUAL "RELEASE" OR
59
           "${_moo__gcca_arg}" STREQUAL "RELEASEONLY" OR "${_moo__gcca_arg}" STREQUAL "RELWITHDEBINFO" OR
60
           "${_moo__gcca_arg}" STREQUAL "MINSIZEREL")
61
      _MOO_CHECK_BUILD_TYPE(${_moo__gcca_arg} ${var_build_prefix} _moo__gcca_bvars)
62
    ELSEIF("${_moo__gcca_arg}" STREQUAL "C" OR "${_moo__gcca_arg}" STREQUAL "CXX")
63
      SET(_moo__gcca_langs ${_moo__gcca_arg})
64
    ELSEIF("${_moo__gcca_arg}" STREQUAL "WIN32" OR "${_moo__gcca_arg}" STREQUAL "UNIX")
65
      IF("${_moo__gcca_arg}" STREQUAL "WIN32" AND NOT WIN32)
66
	SET(_moo__gcca_do FALSE)
67
      ELSEIF("${_moo__gcca_arg}" STREQUAL "UNIX" AND WIN32)
68
	SET(_moo__gcca_do FALSE)
69
      ENDIF("${_moo__gcca_arg}" STREQUAL "WIN32" AND NOT WIN32)
70
    ELSE("${_moo__gcca_arg}" STREQUAL "GCC" OR "${_moo__gcca_arg}" STREQUAL "GNUCC")
71
      LIST(APPEND _moo__gcca_args ${_moo__gcca_arg})
72
    ENDIF("${_moo__gcca_arg}" STREQUAL "GCC" OR "${_moo__gcca_arg}" STREQUAL "GNUCC")
73
  ENDFOREACH(_moo__gcca_arg)
74
75
  #MESSAGE("_MOO_GET_COMPILER_CONFIG_ARGS(var_lang=${var_lang}, var_build_prefix=${var_build_prefix}, var_build_vars=${var_build_vars}, var_args=${var_args}, args=${ARGN})")
76
  IF(_moo__gcca_do)
77
    SET(${var_lang} ${_moo__gcca_langs})
78
    SET(${var_build_vars} ${_moo__gcca_bvars})
79
    SET(${var_args} ${_moo__gcca_args})
80
    #MESSAGE("    var_lang=${_moo__gcca_langs}, var_build_vars=${_moo__gcca_bsfxs}, var_args=${_moo__gcca_args}")
81
  ELSE(_moo__gcca_do)
82
    SET(${var_lang})
83
    SET(${var_build_vars})
84
    SET(${var_args})
85
    #MESSAGE("    DISABLED")
86
  ENDIF(_moo__gcca_do)
87
ENDMACRO(_MOO_GET_COMPILER_CONFIG_ARGS)
88
89
MACRO(MOO_ADD_COMPILER_FLAGS)
90
  _MOO_GET_COMPILER_CONFIG_ARGS(_moo_acf_langs "FLAGS" _moo_acf_bvars _moo_acf_args ${ARGN})
91
  IF(_moo_acf_args)
92
    _MOO_JOIN_STRING_LIST(_moo_acf_flags " " ${_moo_acf_args})
93
    FOREACH(_moo_acf_lang ${_moo_acf_langs})
94
      FOREACH(_moo_acf_bvar ${_moo_acf_bvars})
95
        SET(_moo__acf_var CMAKE_${_moo_acf_lang}_${_moo_acf_bvar})
96
        SET(${_moo__acf_var} "${${_moo__acf_var}} ${_moo_acf_flags}")
97
        MOO_DEBUG(STATUS "${_moo__acf_var} += ${_moo_acf_flags}")
98
      ENDFOREACH(_moo_acf_bvar)
99
    ENDFOREACH(_moo_acf_lang)
100
  ENDIF(_moo_acf_args)
101
ENDMACRO(MOO_ADD_COMPILER_FLAGS)
102
103
104
INCLUDE(CheckCCompilerFlag)
105
INCLUDE(CheckCXXCompilerFlag)
106
107
MACRO(MOO_COMPILER_FLAG_VAR_NAME flag lang var)
108
  STRING(REGEX REPLACE "[-=]" "_" _moo_cfvn_name MOO_${lang}FLAG${flag})
109
  STRING(REPLACE "+" "x" _moo_cfvn_name ${_moo_cfvn_name})
110
  SET(${var} ${_moo_cfvn_name})
111
ENDMACRO(MOO_COMPILER_FLAG_VAR_NAME)
112
113
MACRO(MOO_CHECK_COMPILER_FLAGS)
114
  _MOO_GET_COMPILER_CONFIG_ARGS(_moo_ccf_langs "FLAGS" _moo_ccf_bvars _moo_ccf_args ${ARGN})
115
  FOREACH(_moo_ccf_lang ${_moo_ccf_langs})
116
    SET(_moo_ccf_good_flags)
117
    FOREACH(_moo_ccf_flag ${_moo_ccf_args})
118
      MOO_COMPILER_FLAG_VAR_NAME(${_moo_ccf_flag} ${_moo_ccf_lang} _moo_ccf_flag_name)
119
120
      IF("${_moo_ccf_lang}" STREQUAL "C")
121
        CHECK_C_COMPILER_FLAG("${_moo_ccf_flag}" ${_moo_ccf_flag_name})
122
      ELSEIF("${_moo_ccf_lang}" STREQUAL "CXX")
123
        CHECK_CXX_COMPILER_FLAG("${_moo_ccf_flag}" ${_moo_ccf_flag_name})
124
      ELSE("${_moo_ccf_lang}" STREQUAL "C")
125
        MOO_ERROR("Unknown lang '${lang}'")
126
      ENDIF("${_moo_ccf_lang}" STREQUAL "C")
127
128
      IF(${_moo_ccf_flag_name})
129
        LIST(APPEND _moo_ccf_good_flags "${_moo_ccf_flag}")
130
      ENDIF(${_moo_ccf_flag_name})
131
    ENDFOREACH(_moo_ccf_flag)
132
    IF(_moo_ccf_good_flags)
133
      _MOO_JOIN_STRING_LIST(_moo_ccf_good_flags " " ${_moo_ccf_good_flags})
134
      FOREACH(_moo_ccf_bvar ${_moo_ccf_bvars})
135
        SET(_moo_ccf_flags_var CMAKE_${_moo_ccf_lang}_${_moo_ccf_bvar})
136
        SET(${_moo_ccf_flags_var} "${${_moo_ccf_flags_var}} ${_moo_ccf_good_flags}")
137
        MOO_DEBUG(STATUS "${_moo_ccf_flags_var} += ${_moo_ccf_good_flags}")
138
      ENDFOREACH(_moo_ccf_bvar)
139
    ENDIF(_moo_ccf_good_flags)
140
  ENDFOREACH(_moo_ccf_lang)
141
ENDMACRO(MOO_CHECK_COMPILER_FLAGS)
142
143
144
MACRO(MOO_ADD_COMPILE_DEFINITIONS)
145
  _MOO_GET_COMPILER_CONFIG_ARGS(_moo_acd_langs "COMPILE_DEFINITIONS" _moo_acd_bvars _moo_acd_args ${ARGN})
146
  SET(_moo_acd_defs)
147
  FOREACH(_moo_acd_a ${_moo_acd_args})
148
    STRING(REGEX REPLACE "^(-D|/D)" "" _moo_acd_a "${_moo_acd_a}")
149
    LIST(APPEND _moo_acd_defs "${_moo_acd_a}")
150
  ENDFOREACH(_moo_acd_a)
151
  #MESSAGE("MOO_ADD_COMPILE_DEFINITIONS(${ARGN}) => ${_moo_acd_langs}, ${_moo_acd_bvars}, ${_moo_acd_args}")
152
  FOREACH(_moo_acd_bvar ${_moo_acd_bvars})
153
    SET_PROPERTY(DIRECTORY APPEND PROPERTY ${_moo_acd_bvar} ${_moo_acd_defs})
154
    _MOO_JOIN_STRING_LIST(_moo_acd_defs_string " " ${_moo_acd_defs})
155
    MOO_DEBUG(STATUS "${_moo_acd_bvar} += ${_moo_acd_defs_string}")
156
  ENDFOREACH(_moo_acd_bvar)
157
ENDMACRO(MOO_ADD_COMPILE_DEFINITIONS)
158
159
160
###########################################################################
161
#
162
# DEBUG
163
#
164
165
MOO_ADD_COMPILE_DEFINITIONS(DEBUG -DMOO_DEBUG -DDEBUG -D_DEBUG)
166
167
168
###########################################################################
169
#
170
# GCC
171
#
172
173
# Set this first because it may affect checks below
174
IF(MOO_DEV_MODE)
175
  MOO_ADD_COMPILER_FLAGS(GCC -Werror)
176
ENDIF(MOO_DEV_MODE)
177
178
MOO_ADD_COMPILER_FLAGS(GCC -Wall -Wextra)
179
MOO_CHECK_COMPILER_FLAGS(GCC -fexceptions -fno-strict-aliasing -fno-strict-overflow)
180
MOO_CHECK_COMPILER_FLAGS(GCC -Wno-missing-field-initializers -Wno-overlength-strings  -Wno-missing-declarations)
181
182
MOO_CHECK_COMPILER_FLAGS(GCC DEBUG -ftrapv)
183
184
MOO_ADD_COMPILER_FLAGS(GCC CXX -std=c++98 -pedantic)
185
MOO_CHECK_COMPILER_FLAGS(GCC CXX -fno-rtti)
186
MOO_CHECK_COMPILER_FLAGS(GCC CXX RELEASE -fno-enforce-eh-specs)
187
188
IF(MOO_DEV_MODE)
189
  MOO_CHECK_COMPILER_FLAGS(GCC
190
    -Wcast-align -Wlogical-op
191
    -Wmissing-format-attribute -Wnested-externs -Wlong-long -Wvla
192
    -Wuninitialized -Winit-self)
193
  MOO_CHECK_COMPILER_FLAGS(GCC CXX -fno-nonansi-builtins -fno-gnu-keywords)
194
  MOO_CHECK_COMPILER_FLAGS(GCC CXX
195
    -Wctor-dtor-privacy -Wnon-virtual-dtor -Wabi
196
    -Wstrict-null-sentinel -Woverloaded-virtual -Wsign-promo
197
  )
198
ENDIF(MOO_DEV_MODE)
199
200
201
###############################################################################
202
#
203
# Windows
204
#
205
206
MOO_ADD_COMPILE_DEFINITIONS(WIN32 -D__WIN32__ -DWIN32_LEAN_AND_MEAN -DUNICODE -D_UNICODE -DSTRICT)
207
208
MOO_ADD_COMPILER_FLAGS(MSVC /W4 /GS)
209
MOO_ADD_COMPILER_FLAGS(MSVC CXX /Zc:wchar_t,forScope /GR /EHc /EHsc)
210
211
MOO_ADD_COMPILER_FLAGS(MSVC
212
  /wd4221 /wd4204 /wd4996 /wd4244 /wd4055 /wd4127 /wd4100
213
  /wd4054 /wd4152 /wd4706 /wd4125 /wd4389 /wd4132 /wd4018
214
)
215
216
IF(MOO_DEV_MODE)
217
  MOO_ADD_COMPILER_FLAGS(MSVC /WX)
218
  MOO_ADD_COMPILER_FLAGS(MSVC DEBUG /RTCsu /RTCc)
219
ENDIF(MOO_DEV_MODE)
220
221
222
###############################################################################
223
#
224
# Mac OS X
225
#
226
227
IF(APPLE)
228
  MOO_OPTION(MOO_ENABLE_UNIVERSAL FALSE "Build a universal binary on Mac OS X" HIDDEN !${MOO_OS_DARWIN})
229
ENDIF(APPLE)
230
231
IF(APPLE AND MOO_ENABLE_UNIVERSAL)
232
  SET(CMAKE_OSX_ARCHITECTURES "ppc;i386")
233
  SET(CMAKE_OSX_SYSROOT "/Developer/SDKs/MacOSX10.4u.sdk")
234
ENDIF(APPLE AND MOO_ENABLE_UNIVERSAL)
235
236
237
###############################################################################
238
#
239
# Precompiled headers
240
#
241
242
MOO_OPTION(MOO_ENABLE_PCH FALSE "Enable precompiled headers. May be broken.")
243
244
MACRO(__MOO_PCH_GNUCXX_GET_COMPILE_FLAGS outvar target)
245
246
  STRING(TOUPPER "CMAKE_CXX_FLAGS_${CMAKE_BUILD_TYPE}" _moo_varname)
247
  LIST(APPEND ${outvar} ${${_moo_varname}})
248
249
  GET_TARGET_PROPERTY(target_type ${target} TYPE)
250
  IF("${target_type}" STREQUAL "SHARED_LIBRARY")
251
    LIST(APPEND ${outvar} -fPIC)
252
  ENDIF("${target_type}" STREQUAL "SHARED_LIBRARY")
253
254
  GET_DIRECTORY_PROPERTY(includes INCLUDE_DIRECTORIES)
255
  FOREACH(item ${includes})
256
    LIST(APPEND ${outvar} "-I${item}")
257
  ENDFOREACH(item)
258
259
  STRING(TOUPPER "COMPILE_DEFINITIONS_${CMAKE_BUILD_TYPE}" _moo_varname)
260
  GET_DIRECTORY_PROPERTY(flags ${_moo_varname})
261
  FOREACH(item ${flags})
262
    LIST(APPEND ${outvar} "-D${item}")
263
  ENDFOREACH(item)
264
  GET_DIRECTORY_PROPERTY(flags COMPILE_DEFINITIONS)
265
  FOREACH(item ${flags})
266
    LIST(APPEND ${outvar} "-D${item}")
267
  ENDFOREACH(item)
268
269
  GET_DIRECTORY_PROPERTY(flags DEFINITIONS)
270
  LIST(APPEND ${outvar} ${flags})
271
  LIST(APPEND ${outvar} ${CMAKE_CXX_FLAGS} )
272
273
  SEPARATE_ARGUMENTS(${outvar})
274
ENDMACRO(__MOO_PCH_GNUCXX_GET_COMPILE_FLAGS)
275
276
MACRO(__MOO_PCH_GNUCXX_GET_COMMAND outvar target input output)
277
  __MOO_PCH_GNUCXX_GET_COMPILE_FLAGS(_moo_compile_flags target)
278
  SET(_moo_pch_compile_command
279
    ${CMAKE_CXX_COMPILER} ${CMAKE_CXX_COMPILER_ARG1} ${_moo_compile_flags} -x c++-header -o ${output} ${input}
280
  )
281
ENDMACRO(__MOO_PCH_GNUCXX_GET_COMMAND)
282
283
MACRO(__MOO_PRECOMPILE_HEADER_GNUCXX header target)
284
  SET(_moo_pch_output_dir ${CMAKE_CURRENT_BINARY_DIR}/${header}.gch)
285
  SET(_moo_pch_output ${_moo_pch_output_dir}/c++)
286
  SET(_moo_pch_input_s ${CMAKE_CURRENT_SOURCE_DIR}/${header})
287
  SET(_moo_pch_input_b ${CMAKE_CURRENT_BINARY_DIR}/${header})
288
  SET(_moo_pch_lib ${target}_pchlib)
289
290
  SET_SOURCE_FILES_PROPERTIES(${_moo_pch_input_b} PROPERTIES GENERATED 1)
291
292
  MOO_SUBDIR_NAME(_moo_subdir)
293
294
  ADD_CUSTOM_COMMAND(OUTPUT ${_moo_pch_input_b}
295
    COMMAND ${CMAKE_COMMAND} -E copy ${_moo_pch_input_s} ${_moo_pch_input_b}
296
    DEPENDS ${_moo_pch_input_s}
297
    COMMENT "Generating ${_moo_subdir}/${header}"
298
  )
299
300
  ADD_CUSTOM_TARGET(${target}_pch DEPENDS ${_moo_pch_output})
301
  ADD_DEPENDENCIES(${target} ${target}_pch)
302
303
  __MOO_PCH_GNUCXX_GET_COMMAND(_moo_pch_compile_command ${target} ${_moo_pch_input_b} ${_moo_pch_output})
304
  ADD_CUSTOM_COMMAND(OUTPUT ${_moo_pch_output}
305
    COMMAND ${CMAKE_COMMAND} -E make_directory ${_moo_pch_output_dir}
306
    COMMAND ${_moo_pch_compile_command}
307
    DEPENDS ${_moo_pch_input_s} ${_moo_pch_input_b} # ${_moo_pch_lib}
308
    COMMENT "Generating ${_moo_subdir}/${header}.gch/c++"
309
  )
310
311
  GET_TARGET_PROPERTY(_moo_old_flags ${target} COMPILE_FLAGS)
312
  IF(NOT _moo_old_flags)
313
    SET(_moo_old_flags)
314
  ENDIF(NOT _moo_old_flags)
315
  SET_TARGET_PROPERTIES(${target} PROPERTIES COMPILE_FLAGS
316
    "-include ${_moo_pch_input_b} -Winvalid-pch ${_moo_old_flags}"
317
  )
318
ENDMACRO(__MOO_PRECOMPILE_HEADER_GNUCXX)
319
320
MACRO(MOO_PRECOMPILE_HEADER header target)
321
  IF(MOO_ENABLE_PCH)
322
    IF(CMAKE_COMPILER_IS_GNUCXX)
323
      __MOO_PRECOMPILE_HEADER_GNUCXX(${header} ${target})
324
    ELSE(CMAKE_COMPILER_IS_GNUCXX)
325
      MESSAGE(STATUS "*** IMPLEMENT ME: precompiled headers for this compiler")
326
    ENDIF(CMAKE_COMPILER_IS_GNUCXX)
327
  ENDIF(MOO_ENABLE_PCH)
328
ENDMACRO(MOO_PRECOMPILE_HEADER)
1
MACRO(_MOO_JOIN_STRING_LIST outvar sep)
2
  SET(_moo__jsl_result)
3
  SET(_moo__jsl_first TRUE)
4
  FOREACH(_moo__jsl_arg ${ARGN})
5
    IF(_moo__jsl_first)
6
      SET(_moo__jsl_result "${_moo__jsl_arg}")
7
      SET(_moo__jsl_first FALSE)
8
    ELSE(_moo__jsl_first)
9
      SET(_moo__jsl_result "${_moo__jsl_result}${sep}${_moo__jsl_arg}")
10
    ENDIF(_moo__jsl_first)
11
  ENDFOREACH(_moo__jsl_arg)
12
  SET(${outvar} "${_moo__jsl_result}")
13
ENDMACRO(_MOO_JOIN_STRING_LIST)
14
15
MACRO(_MOO_CHECK_COMPILER_LANG lang var)
16
  STRING(TOUPPER ${lang} _moo__ccl_lang)
17
  IF("${_moo__ccl_lang}" STREQUAL "ALL")
18
    SET(_moo__ccl_langs C CXX)
19
  ELSEIF("${_moo__ccl_lang}" STREQUAL "C" OR "${_moo__ccl_lang}" STREQUAL "CXX")
20
    SET(_moo__ccl_langs ${_moo__ccl_lang})
21
  ELSE("${_moo__ccl_lang}" STREQUAL "ALL")
22
    MOO_ERROR("Invalid lang '${lang}'")
23
  ENDIF("${_moo__ccl_lang}" STREQUAL "ALL")
24
  SET(${var} ${_moo__ccl_langs})
25
ENDMACRO(_MOO_CHECK_COMPILER_LANG)
26
27
MACRO(_MOO_CHECK_BUILD_TYPE build prefix var)
28
  STRING(TOUPPER ${build} _moo__cbt_build)
29
  IF("${_moo__cbt_build}" STREQUAL "ALL")
30
    SET(_moo__cbt_vars ${prefix})
31
  ELSEIF("${_moo__cbt_build}" STREQUAL "RELEASE")
32
    SET(_moo__cbt_vars ${prefix}_RELEASE ${prefix}_RELWITHDEBINFO ${prefix}_MINSIZEREL)
33
  ELSEIF("${_moo__cbt_build}" STREQUAL "RELEASEONLY")
34
    SET(_moo__cbt_vars ${prefix}_RELEASE)
35
  ELSEIF("${_moo__cbt_build}" STREQUAL "DEBUG" OR "${_moo__cbt_build}" STREQUAL "RELWITHDEBINFO" OR "${_moo__cbt_build}" STREQUAL "MINSIZEREL")
36
    SET(_moo__cbt_vars ${prefix}_${_moo__cbt_build})
37
  ELSE("${_moo__cbt_build}" STREQUAL "ALL")
38
    MOO_ERROR("Invalid build type '${build}'")
39
  ENDIF("${_moo__cbt_build}" STREQUAL "ALL")
40
  SET(${var} ${_moo__cbt_vars})
41
ENDMACRO(_MOO_CHECK_BUILD_TYPE)
42
43
MACRO(_MOO_GET_COMPILER_CONFIG_ARGS var_lang var_build_prefix var_build_vars var_args)
44
  SET(_moo__gcca_langs C CXX)
45
  SET(_moo__gcca_args)
46
  SET(_moo__gcca_do TRUE)
47
  _MOO_CHECK_BUILD_TYPE("ALL" ${var_build_prefix} _moo__gcca_bvars)
48
49
  FOREACH(_moo__gcca_arg ${ARGN})
50
    IF("${_moo__gcca_arg}" STREQUAL "GCC" OR "${_moo__gcca_arg}" STREQUAL "GNUCC")
51
      IF(NOT CMAKE_COMPILER_IS_GNUCC)
52
        SET(_moo__gcca_do FALSE)
53
      ENDIF(NOT CMAKE_COMPILER_IS_GNUCC)
54
    ELSEIF("${_moo__gcca_arg}" STREQUAL "MSVC")
55
      IF(NOT MSVC)
56
        SET(_moo__gcca_do FALSE)
57
      ENDIF(NOT MSVC)
58
    ELSEIF("${_moo__gcca_arg}" STREQUAL "DEBUG" OR "${_moo__gcca_arg}" STREQUAL "RELEASE" OR
59
           "${_moo__gcca_arg}" STREQUAL "RELEASEONLY" OR "${_moo__gcca_arg}" STREQUAL "RELWITHDEBINFO" OR
60
           "${_moo__gcca_arg}" STREQUAL "MINSIZEREL")
61
      _MOO_CHECK_BUILD_TYPE(${_moo__gcca_arg} ${var_build_prefix} _moo__gcca_bvars)
62
    ELSEIF("${_moo__gcca_arg}" STREQUAL "C" OR "${_moo__gcca_arg}" STREQUAL "CXX")
63
      SET(_moo__gcca_langs ${_moo__gcca_arg})
64
    ELSEIF("${_moo__gcca_arg}" STREQUAL "WIN32" OR "${_moo__gcca_arg}" STREQUAL "UNIX")
65
      IF("${_moo__gcca_arg}" STREQUAL "WIN32" AND NOT WIN32)
66
	SET(_moo__gcca_do FALSE)
67
      ELSEIF("${_moo__gcca_arg}" STREQUAL "UNIX" AND WIN32)
68
	SET(_moo__gcca_do FALSE)
69
      ENDIF("${_moo__gcca_arg}" STREQUAL "WIN32" AND NOT WIN32)
70
    ELSE("${_moo__gcca_arg}" STREQUAL "GCC" OR "${_moo__gcca_arg}" STREQUAL "GNUCC")
71
      LIST(APPEND _moo__gcca_args ${_moo__gcca_arg})
72
    ENDIF("${_moo__gcca_arg}" STREQUAL "GCC" OR "${_moo__gcca_arg}" STREQUAL "GNUCC")
73
  ENDFOREACH(_moo__gcca_arg)
74
75
  #MESSAGE("_MOO_GET_COMPILER_CONFIG_ARGS(var_lang=${var_lang}, var_build_prefix=${var_build_prefix}, var_build_vars=${var_build_vars}, var_args=${var_args}, args=${ARGN})")
76
  IF(_moo__gcca_do)
77
    SET(${var_lang} ${_moo__gcca_langs})
78
    SET(${var_build_vars} ${_moo__gcca_bvars})
79
    SET(${var_args} ${_moo__gcca_args})
80
    #MESSAGE("    var_lang=${_moo__gcca_langs}, var_build_vars=${_moo__gcca_bsfxs}, var_args=${_moo__gcca_args}")
81
  ELSE(_moo__gcca_do)
82
    SET(${var_lang})
83
    SET(${var_build_vars})
84
    SET(${var_args})
85
    #MESSAGE("    DISABLED")
86
  ENDIF(_moo__gcca_do)
87
ENDMACRO(_MOO_GET_COMPILER_CONFIG_ARGS)
88
89
MACRO(MOO_ADD_COMPILER_FLAGS)
90
  _MOO_GET_COMPILER_CONFIG_ARGS(_moo_acf_langs "FLAGS" _moo_acf_bvars _moo_acf_args ${ARGN})
91
  IF(_moo_acf_args)
92
    _MOO_JOIN_STRING_LIST(_moo_acf_flags " " ${_moo_acf_args})
93
    FOREACH(_moo_acf_lang ${_moo_acf_langs})
94
      FOREACH(_moo_acf_bvar ${_moo_acf_bvars})
95
        SET(_moo__acf_var CMAKE_${_moo_acf_lang}_${_moo_acf_bvar})
96
        SET(${_moo__acf_var} "${${_moo__acf_var}} ${_moo_acf_flags}")
97
        MOO_DEBUG(STATUS "${_moo__acf_var} += ${_moo_acf_flags}")
98
      ENDFOREACH(_moo_acf_bvar)
99
    ENDFOREACH(_moo_acf_lang)
100
  ENDIF(_moo_acf_args)
101
ENDMACRO(MOO_ADD_COMPILER_FLAGS)
102
103
104
INCLUDE(CheckCCompilerFlag)
105
INCLUDE(CheckCXXCompilerFlag)
106
107
MACRO(MOO_COMPILER_FLAG_VAR_NAME flag lang var)
108
  STRING(REGEX REPLACE "[-=]" "_" _moo_cfvn_name MOO_${lang}FLAG${flag})
109
  STRING(REPLACE "+" "x" _moo_cfvn_name ${_moo_cfvn_name})
110
  SET(${var} ${_moo_cfvn_name})
111
ENDMACRO(MOO_COMPILER_FLAG_VAR_NAME)
112
113
MACRO(MOO_CHECK_COMPILER_FLAGS)
114
  _MOO_GET_COMPILER_CONFIG_ARGS(_moo_ccf_langs "FLAGS" _moo_ccf_bvars _moo_ccf_args ${ARGN})
115
  FOREACH(_moo_ccf_lang ${_moo_ccf_langs})
116
    SET(_moo_ccf_good_flags)
117
    FOREACH(_moo_ccf_flag ${_moo_ccf_args})
118
      MOO_COMPILER_FLAG_VAR_NAME(${_moo_ccf_flag} ${_moo_ccf_lang} _moo_ccf_flag_name)
119
120
      IF("${_moo_ccf_lang}" STREQUAL "C")
121
        CHECK_C_COMPILER_FLAG("${_moo_ccf_flag}" ${_moo_ccf_flag_name})
122
      ELSEIF("${_moo_ccf_lang}" STREQUAL "CXX")
123
        CHECK_CXX_COMPILER_FLAG("${_moo_ccf_flag}" ${_moo_ccf_flag_name})
124
      ELSE("${_moo_ccf_lang}" STREQUAL "C")
125
        MOO_ERROR("Unknown lang '${lang}'")
126
      ENDIF("${_moo_ccf_lang}" STREQUAL "C")
127
128
      IF(${_moo_ccf_flag_name})
129
        LIST(APPEND _moo_ccf_good_flags "${_moo_ccf_flag}")
130
      ENDIF(${_moo_ccf_flag_name})
131
    ENDFOREACH(_moo_ccf_flag)
132
    IF(_moo_ccf_good_flags)
133
      _MOO_JOIN_STRING_LIST(_moo_ccf_good_flags " " ${_moo_ccf_good_flags})
134
      FOREACH(_moo_ccf_bvar ${_moo_ccf_bvars})
135
        SET(_moo_ccf_flags_var CMAKE_${_moo_ccf_lang}_${_moo_ccf_bvar})
136
        SET(${_moo_ccf_flags_var} "${${_moo_ccf_flags_var}} ${_moo_ccf_good_flags}")
137
        MOO_DEBUG(STATUS "${_moo_ccf_flags_var} += ${_moo_ccf_good_flags}")
138
      ENDFOREACH(_moo_ccf_bvar)
139
    ENDIF(_moo_ccf_good_flags)
140
  ENDFOREACH(_moo_ccf_lang)
141
ENDMACRO(MOO_CHECK_COMPILER_FLAGS)
142
143
144
MACRO(MOO_ADD_COMPILE_DEFINITIONS)
145
  _MOO_GET_COMPILER_CONFIG_ARGS(_moo_acd_langs "COMPILE_DEFINITIONS" _moo_acd_bvars _moo_acd_args ${ARGN})
146
  SET(_moo_acd_defs)
147
  FOREACH(_moo_acd_a ${_moo_acd_args})
148
    STRING(REGEX REPLACE "^(-D|/D)" "" _moo_acd_a "${_moo_acd_a}")
149
    LIST(APPEND _moo_acd_defs "${_moo_acd_a}")
150
  ENDFOREACH(_moo_acd_a)
151
  #MESSAGE("MOO_ADD_COMPILE_DEFINITIONS(${ARGN}) => ${_moo_acd_langs}, ${_moo_acd_bvars}, ${_moo_acd_args}")
152
  FOREACH(_moo_acd_bvar ${_moo_acd_bvars})
153
    SET_PROPERTY(DIRECTORY APPEND PROPERTY ${_moo_acd_bvar} ${_moo_acd_defs})
154
    _MOO_JOIN_STRING_LIST(_moo_acd_defs_string " " ${_moo_acd_defs})
155
    MOO_DEBUG(STATUS "${_moo_acd_bvar} += ${_moo_acd_defs_string}")
156
  ENDFOREACH(_moo_acd_bvar)
157
ENDMACRO(MOO_ADD_COMPILE_DEFINITIONS)
158
159
160
###########################################################################
161
#
162
# DEBUG
163
#
164
165
MOO_ADD_COMPILE_DEFINITIONS(DEBUG -DMOO_DEBUG -DDEBUG -D_DEBUG)
166
167
168
###########################################################################
169
#
170
# GCC
171
#
172
173
# Set this first because it may affect checks below
174
IF(MOO_DEV_MODE)
175
  MOO_ADD_COMPILER_FLAGS(GCC -Werror)
176
ENDIF(MOO_DEV_MODE)
177
178
MOO_ADD_COMPILER_FLAGS(GCC -Wall -Wextra)
179
MOO_CHECK_COMPILER_FLAGS(GCC -fexceptions -fno-strict-aliasing -fno-strict-overflow)
180
MOO_CHECK_COMPILER_FLAGS(GCC -Wno-missing-field-initializers -Wno-overlength-strings  -Wno-missing-declarations)
181
182
MOO_CHECK_COMPILER_FLAGS(GCC DEBUG -ftrapv)
183
184
MOO_ADD_COMPILER_FLAGS(GCC CXX -std=c++98 -pedantic)
185
MOO_CHECK_COMPILER_FLAGS(GCC CXX -fno-rtti)
186
MOO_CHECK_COMPILER_FLAGS(GCC CXX RELEASE -fno-enforce-eh-specs)
187
188
IF(MOO_DEV_MODE)
189
  MOO_CHECK_COMPILER_FLAGS(GCC
190
    -Wcast-align -Wlogical-op
191
    -Wmissing-format-attribute -Wnested-externs -Wlong-long -Wvla
192
    -Wuninitialized -Winit-self)
193
  MOO_CHECK_COMPILER_FLAGS(GCC CXX -fno-nonansi-builtins -fno-gnu-keywords)
194
  MOO_CHECK_COMPILER_FLAGS(GCC CXX
195
    -Wctor-dtor-privacy -Wnon-virtual-dtor -Wabi
196
    -Wstrict-null-sentinel -Woverloaded-virtual -Wsign-promo
197
  )
198
ENDIF(MOO_DEV_MODE)
199
200
201
###############################################################################
202
#
203
# Windows
204
#
205
206
MOO_ADD_COMPILE_DEFINITIONS(WIN32 -D__WIN32__ -DWIN32_LEAN_AND_MEAN -DUNICODE -D_UNICODE -DSTRICT)
207
208
MOO_ADD_COMPILER_FLAGS(MSVC /W4 /GS)
209
MOO_ADD_COMPILER_FLAGS(MSVC CXX /Zc:wchar_t,forScope /GR /EHc /EHsc)
210
211
MOO_ADD_COMPILER_FLAGS(MSVC
212
  /wd4221 /wd4204 /wd4996 /wd4244 /wd4055 /wd4127 /wd4100
213
  /wd4054 /wd4152 /wd4706 /wd4125 /wd4389 /wd4132 /wd4018
214
)
215
216
IF(MOO_DEV_MODE)
217
  MOO_ADD_COMPILER_FLAGS(MSVC /WX)
218
  MOO_ADD_COMPILER_FLAGS(MSVC DEBUG /RTCsu /RTCc)
219
ENDIF(MOO_DEV_MODE)
220
221
222
###############################################################################
223
#
224
# Mac OS X
225
#
226
227
IF(APPLE)
228
  MOO_OPTION(MOO_ENABLE_UNIVERSAL FALSE "Build a universal binary on Mac OS X" HIDDEN !${MOO_OS_DARWIN})
229
ENDIF(APPLE)
230
231
IF(APPLE AND MOO_ENABLE_UNIVERSAL)
232
  SET(CMAKE_OSX_ARCHITECTURES "ppc;i386")
233
  SET(CMAKE_OSX_SYSROOT "/Developer/SDKs/MacOSX10.4u.sdk")
234
ENDIF(APPLE AND MOO_ENABLE_UNIVERSAL)
235
236
237
###############################################################################
238
#
239
# Precompiled headers
240
#
241
242
MOO_OPTION(MOO_ENABLE_PCH FALSE "Enable precompiled headers. May be broken.")
243
244
MACRO(__MOO_PCH_GNUCXX_GET_COMPILE_FLAGS outvar target)
245
246
  STRING(TOUPPER "CMAKE_CXX_FLAGS_${CMAKE_BUILD_TYPE}" _moo_varname)
247
  LIST(APPEND ${outvar} ${${_moo_varname}})
248
249
  GET_TARGET_PROPERTY(target_type ${target} TYPE)
250
  IF("${target_type}" STREQUAL "SHARED_LIBRARY")
251
    LIST(APPEND ${outvar} -fPIC)
252
  ENDIF("${target_type}" STREQUAL "SHARED_LIBRARY")
253
254
  GET_DIRECTORY_PROPERTY(includes INCLUDE_DIRECTORIES)
255
  FOREACH(item ${includes})
256
    LIST(APPEND ${outvar} "-I${item}")
257
  ENDFOREACH(item)
258
259
  STRING(TOUPPER "COMPILE_DEFINITIONS_${CMAKE_BUILD_TYPE}" _moo_varname)
260
  GET_DIRECTORY_PROPERTY(flags ${_moo_varname})
261
  FOREACH(item ${flags})
262
    LIST(APPEND ${outvar} "-D${item}")
263
  ENDFOREACH(item)
264
  GET_DIRECTORY_PROPERTY(flags COMPILE_DEFINITIONS)
265
  FOREACH(item ${flags})
266
    LIST(APPEND ${outvar} "-D${item}")
267
  ENDFOREACH(item)
268
269
  GET_DIRECTORY_PROPERTY(flags DEFINITIONS)
270
  LIST(APPEND ${outvar} ${flags})
271
  LIST(APPEND ${outvar} ${CMAKE_CXX_FLAGS} )
272
273
  SEPARATE_ARGUMENTS(${outvar})
274
ENDMACRO(__MOO_PCH_GNUCXX_GET_COMPILE_FLAGS)
275
276
MACRO(__MOO_PCH_GNUCXX_GET_COMMAND outvar target input output)
277
  __MOO_PCH_GNUCXX_GET_COMPILE_FLAGS(_moo_compile_flags target)
278
  SET(_moo_pch_compile_command
279
    ${CMAKE_CXX_COMPILER} ${CMAKE_CXX_COMPILER_ARG1} ${_moo_compile_flags} -x c++-header -o ${output} ${input}
280
  )
281
ENDMACRO(__MOO_PCH_GNUCXX_GET_COMMAND)
282
283
MACRO(__MOO_PRECOMPILE_HEADER_GNUCXX header target)
284
  SET(_moo_pch_output_dir ${CMAKE_CURRENT_BINARY_DIR}/${header}.gch)
285
  SET(_moo_pch_output ${_moo_pch_output_dir}/c++)
286
  SET(_moo_pch_input_s ${CMAKE_CURRENT_SOURCE_DIR}/${header})
287
  SET(_moo_pch_input_b ${CMAKE_CURRENT_BINARY_DIR}/${header})
288
  SET(_moo_pch_lib ${target}_pchlib)
289
290
  SET_SOURCE_FILES_PROPERTIES(${_moo_pch_input_b} PROPERTIES GENERATED 1)
291
292
  MOO_SUBDIR_NAME(_moo_subdir)
293
294
  ADD_CUSTOM_COMMAND(OUTPUT ${_moo_pch_input_b}
295
    COMMAND ${CMAKE_COMMAND} -E copy ${_moo_pch_input_s} ${_moo_pch_input_b}
296
    DEPENDS ${_moo_pch_input_s}
297
    COMMENT "Generating ${_moo_subdir}/${header}"
298
  )
299
300
  ADD_CUSTOM_TARGET(${target}_pch DEPENDS ${_moo_pch_output})
301
  ADD_DEPENDENCIES(${target} ${target}_pch)
302
303
  __MOO_PCH_GNUCXX_GET_COMMAND(_moo_pch_compile_command ${target} ${_moo_pch_input_b} ${_moo_pch_output})
304
  ADD_CUSTOM_COMMAND(OUTPUT ${_moo_pch_output}
305
    COMMAND ${CMAKE_COMMAND} -E make_directory ${_moo_pch_output_dir}
306
    COMMAND ${_moo_pch_compile_command}
307
    DEPENDS ${_moo_pch_input_s} ${_moo_pch_input_b} # ${_moo_pch_lib}
308
    COMMENT "Generating ${_moo_subdir}/${header}.gch/c++"
309
  )
310
311
  GET_TARGET_PROPERTY(_moo_old_flags ${target} COMPILE_FLAGS)
312
  IF(NOT _moo_old_flags)
313
    SET(_moo_old_flags)
314
  ENDIF(NOT _moo_old_flags)
315
  SET_TARGET_PROPERTIES(${target} PROPERTIES COMPILE_FLAGS
316
    "-include ${_moo_pch_input_b} -Winvalid-pch ${_moo_old_flags}"
317
  )
318
ENDMACRO(__MOO_PRECOMPILE_HEADER_GNUCXX)
319
320
MACRO(MOO_PRECOMPILE_HEADER header target)
321
  IF(MOO_ENABLE_PCH)
322
    IF(CMAKE_COMPILER_IS_GNUCXX)
323
      __MOO_PRECOMPILE_HEADER_GNUCXX(${header} ${target})
324
    ELSE(CMAKE_COMPILER_IS_GNUCXX)
325
      MESSAGE(STATUS "*** IMPLEMENT ME: precompiled headers for this compiler")
326
    ENDIF(CMAKE_COMPILER_IS_GNUCXX)
327
  ENDIF(MOO_ENABLE_PCH)
328
ENDMACRO(MOO_PRECOMPILE_HEADER)

Up to file-list cmake/modules/FindMooI18n.cmake:

1
MOO_OPTION(ENABLE_NLS TRUE "Enable i18n" HEADER TRUE)
2
3
IF(ENABLE_NLS)
4
  FIND_PACKAGE(Gettext)
5
  IF(NOT GETTEXT_FOUND)
6
    MOO_ERROR("Gettext has not been found, translations will not be enabled")
7
  ENDIF(NOT GETTEXT_FOUND)
8
ENDIF(ENABLE_NLS)
9
10
MACRO(MOO_ADD_MSG_CATALOG catalogname dir)
11
  IF(ENABLE_NLS)
12
    FILE(MAKE_DIRECTORY ${CMAKE_BINARY_DIR}/${dir})
13
    FILE(GLOB _moo_po_files ${dir}/*.po)
14
    SET(_moo_langs)
15
    SET(_moo_gmo_files)
16
    FOREACH(_moo_po_file ${_moo_po_files})
17
      GET_FILENAME_COMPONENT(_moo_lang_code ${_moo_po_file} NAME_WE)
18
      LIST(APPEND _moo_langs ${_moo_lang_code})
19
      SET(_moo_gmo_file ${CMAKE_BINARY_DIR}/${dir}/${_moo_lang_code}.gmo)
20
      LIST(APPEND _moo_gmo_files ${_moo_gmo_file})
21
      ADD_CUSTOM_COMMAND(OUTPUT ${_moo_gmo_file}
22
                         COMMAND ${GETTEXT_MSGFMT_EXECUTABLE} --check -o ${_moo_gmo_file} ${_moo_po_file}
23
                         DEPENDS ${_moo_po_file})
24
      INSTALL(FILES ${_moo_gmo_file} DESTINATION ${LOCALEDIR}/${_moo_lang_code}/LC_MESSAGES/ RENAME ${catalogname}.mo)
25
    ENDFOREACH(_moo_po_file)
26
    SET_SOURCE_FILES_PROPERTIES(${_moo_gmo_files} PROPERTIES GENERATED 1 EXTERNAL_OBJECT 1)
27
    ADD_CUSTOM_TARGET(translations-${catalogname} ALL SOURCES ${_moo_gmo_files})
28
  ENDIF(ENABLE_NLS)
29
ENDMACRO(MOO_ADD_MSG_CATALOG)
1
MOO_OPTION(ENABLE_NLS TRUE "Enable i18n" HEADER TRUE)
2
3
IF(ENABLE_NLS)
4
  FIND_PACKAGE(Gettext)
5
  IF(NOT GETTEXT_FOUND)
6
    MOO_ERROR("Gettext has not been found, translations will not be enabled")
7
  ENDIF(NOT GETTEXT_FOUND)
8
ENDIF(ENABLE_NLS)
9
10
MACRO(MOO_ADD_MSG_CATALOG catalogname dir)
11
  IF(ENABLE_NLS)
12
    FILE(MAKE_DIRECTORY ${CMAKE_BINARY_DIR}/${dir})
13
    FILE(GLOB _moo_po_files ${dir}/*.po)
14
    SET(_moo_langs)
15
    SET(_moo_gmo_files)
16
    FOREACH(_moo_po_file ${_moo_po_files})
17
      GET_FILENAME_COMPONENT(_moo_lang_code ${_moo_po_file} NAME_WE)
18
      LIST(APPEND _moo_langs ${_moo_lang_code})
19
      SET(_moo_gmo_file ${CMAKE_BINARY_DIR}/${dir}/${_moo_lang_code}.gmo)
20
      LIST(APPEND _moo_gmo_files ${_moo_gmo_file})
21
      ADD_CUSTOM_COMMAND(OUTPUT ${_moo_gmo_file}
22
                         COMMAND ${GETTEXT_MSGFMT_EXECUTABLE} --check -o ${_moo_gmo_file} ${_moo_po_file}
23
                         DEPENDS ${_moo_po_file})
24
      INSTALL(FILES ${_moo_gmo_file} DESTINATION ${LOCALEDIR}/${_moo_lang_code}/LC_MESSAGES/ RENAME ${catalogname}.mo)
25
    ENDFOREACH(_moo_po_file)
26
    SET_SOURCE_FILES_PROPERTIES(${_moo_gmo_files} PROPERTIES GENERATED 1 EXTERNAL_OBJECT 1)
27
    ADD_CUSTOM_TARGET(translations-${catalogname} ALL SOURCES ${_moo_gmo_files})
28
  ENDIF(ENABLE_NLS)
29
ENDMACRO(MOO_ADD_MSG_CATALOG)

Up to file-list cmake/modules/FindMooLibXml2.cmake:

1
FIND_PACKAGE(LibXml2)
2
IF(NOT LIBXML2_FOUND AND WIN32)
3
  IF(LIBXML2_XMLLINT_EXECUTABLE AND LIBXML2_LIBRARIES)
4
    GET_FILENAME_COMPONENT(_mpkg_libxml2_path ${LIBXML2_XMLLINT_EXECUTABLE} ABSOLUTE)
5
    GET_FILENAME_COMPONENT(_mpkg_libxml2_path ${_mpkg_libxml2_path} PATH)
6
    FIND_PATH(LIBXML2_INCLUDE_DIR libxml/xpath.h HINTS ${_mpkg_libxml2_path}/../include PATH_SUFFIXES libxml2)
7
    IF(LIBXML2_INCLUDE_DIR)
8
      SET(LIBXML2_FOUND 1)
9
    ENDIF(LIBXML2_INCLUDE_DIR)
10
  ENDIF(LIBXML2_XMLLINT_EXECUTABLE AND LIBXML2_LIBRARIES)
11
ENDIF(NOT LIBXML2_FOUND AND WIN32)
1
FIND_PACKAGE(LibXml2)
2
IF(NOT LIBXML2_FOUND AND WIN32)
3
  IF(LIBXML2_XMLLINT_EXECUTABLE AND LIBXML2_LIBRARIES)
4
    GET_FILENAME_COMPONENT(_mpkg_libxml2_path ${LIBXML2_XMLLINT_EXECUTABLE} ABSOLUTE)
5
    GET_FILENAME_COMPONENT(_mpkg_libxml2_path ${_mpkg_libxml2_path} PATH)
6
    FIND_PATH(LIBXML2_INCLUDE_DIR libxml/xpath.h HINTS ${_mpkg_libxml2_path}/../include PATH_SUFFIXES libxml2)
7
    IF(LIBXML2_INCLUDE_DIR)
8
      SET(LIBXML2_FOUND 1)
9
    ENDIF(LIBXML2_INCLUDE_DIR)
10
  ENDIF(LIBXML2_XMLLINT_EXECUTABLE AND LIBXML2_LIBRARIES)
11
ENDIF(NOT LIBXML2_FOUND AND WIN32)

Up to file-list cmake/moo-libs.cmake:

1
MACRO(MOO_ADD_COMPILE_FLAGS target flags)
2
  GET_TARGET_PROPERTY(__moo_prop_value ${target} COMPILE_FLAGS)
3
  IF(__moo_prop_value)
4
    SET_TARGET_PROPERTIES(${target} PROPERTIES COMPILE_FLAGS "${flags}")
5
  ELSE(__moo_prop_value)
6
    SET_TARGET_PROPERTIES(${target} PROPERTIES COMPILE_FLAGS "${__moo_prop_value} ${flags}")
7
  ENDIF(__moo_prop_value)
8
ENDMACRO(MOO_ADD_COMPILE_FLAGS)
9
10
MACRO(MOO_ADD_DEFINITIONS target defs)
11
  GET_TARGET_PROPERTY(__moo_prop_value ${target} COMPILE_DEFINITIONS)
12
  IF(__moo_prop_value)
13
    LIST(APPEND __moo_prop_value ${defs})
14
  ELSE(__moo_prop_value)
15
    SET(__moo_prop_value ${defs})
16
  ENDIF(__moo_prop_value)
17
  SET_TARGET_PROPERTIES(${target} PROPERTIES COMPILE_DEFINITIONS "${__moo_prop_value}")
18
ENDMACRO(MOO_ADD_DEFINITIONS)
19
20
MACRO(MOO_ADD_SOURCE_FILE_SET name subdir)
21
  _MOO_MODULE_SOURCES_VAR_NAMES(${name} _moo_s _moo_bs _moo_st)
22
23
  IF(_moo_code_module_created_${name})
24
    MESSAGE(FATAL_ERROR "MOO_ADD_SOURCE_FILE_SET(${name}) called twice")
25
  ENDIF(_moo_code_module_created_${name})
26
  SET(_moo_code_module_created_${name} 1)
27
28
  SET(_moo_source_file_prefix "")
29
  IF(NOT "" STREQUAL "${subdir}")
30
    SET(_moo_source_file_prefix "${subdir}/")
31
  ENDIF(NOT "" STREQUAL "${subdir}")
32
33
#   SET(${name}_cmake_dummy ${CMAKE_CURRENT_BINARY_DIR}/${name}-cmake-dummy.c)
34
#   ADD_CUSTOM_COMMAND(OUTPUT ${${name}_cmake_dummy}
35
#                      COMMAND ${CMAKE_COMMAND} -D LIBNAME=${name} -D OUTPUT=${${name}_cmake_dummy} -P ${CMAKE_SOURCE_DIR}/moo/gendummy.cmake
36
#                      DEPENDS ${${name}_stamps} ${CMAKE_SOURCE_DIR}/moo/gendummy.cmake)
37
#   SET_SOURCE_FILES_PROPERTIES(${${name}_cmake_dummy} PROPERTIES GENERATED 1)
38
39
  IF(_moo_source_file_prefix)
40
    SET(_moo_sources_set_tmp ${${_moo_s}})
41
    SET(${_moo_s})
42
    FOREACH(_moo_source_file ${_moo_sources_set_tmp})
43
      LIST(APPEND ${_moo_s} "${_moo_source_file_prefix}${_moo_source_file}")
44
    ENDFOREACH(_moo_source_file)
45
  ENDIF(_moo_source_file_prefix)
46
47
  LIST(APPEND moo_all_sources ${${_moo_s}} ${${_moo_bs}} ${${_moo_st}})
48
49
ENDMACRO(MOO_ADD_SOURCE_FILE_SET)
50
51
MACRO(MOO_ADD_MOO_CODE_MODULE name)
52
53
  SET(_moo_code_module_subdir ${name})
54
55
  SET(_moo_arg_next_subdir)
56
  FOREACH(_moo_arg ${ARGN})
57
    IF(_moo_arg_next_subdir)
58
      SET(_moo_code_module_subdir ${_moo_arg})
59
      SET(_moo_arg_next_subdir)
60
    ELSEIF("${_moo_arg}" STREQUAL "SUBDIR")
61
      SET(_moo_arg_next_subdir 1)
62
    ELSE(_moo_arg_next_subdir)
63
      MESSAGE(FATAL_ERROR " Invalid argument `${_moo_arg}' to macro MOO_ADD_CODE_MODULE")
64
    ENDIF(_moo_arg_next_subdir)
65
  ENDFOREACH(_moo_arg)
66
67
  MOO_ADD_SOURCE_FILE_SET(${name} ${_moo_code_module_subdir})
68
69
  INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/moo/${_moo_code_module_subdir} ${CMAKE_CURRENT_BINARY_DIR}/${_moo_code_module_subdir})
70
71
ENDMACRO(MOO_ADD_MOO_CODE_MODULE)
72
73
MACRO(MOO_WIN32_RESOURCE rc_in module)
74
  IF(WIN32)
75
    SET(_moo_rc_file ${CMAKE_CURRENT_BINARY_DIR}/${module}.rc)
76
    SET_SOURCE_FILES_PROPERTIES(${_moo_rc_file} PROPERTIES GENERATED 1)
77
    SET(_moo_res_file ${CMAKE_CURRENT_BINARY_DIR}/${module}.res)
78
    CONFIGURE_FILE(${rc_in} ${_moo_rc_file} @ONLY)
79
    _MOO_MODULE_SOURCES_VAR_NAMES(${module} _moo_s _moo_bs _moo_st)
80
    IF(MSVC)
81
      LIST(APPEND ${_moo_s} ${_moo_rc_file})
82
    ELSE(MSVC)
83
      ADD_CUSTOM_COMMAND(OUTPUT ${_moo_res_file}
84
        COMMAND ${WINDRES_EXECUTABLE} -i ${_moo_rc_file} --input-format=rc -o ${_moo_res_file} -O coff
85
        DEPENDS ${_moo_rc_file}
86
      )
87
      SET_SOURCE_FILES_PROPERTIES(${_moo_res_file} PROPERTIES EXTERNAL_OBJECT 1 GENERATED 1)
88
      LIST(APPEND ${_moo_s} ${_moo_res_file})
89
      LIST(APPEND ${module}_libs ${_moo_res_file})
90
      # FIXME rebuilding just doesn't work
91
    ENDIF(MSVC)
92
  ENDIF(WIN32)
93
ENDMACRO(MOO_WIN32_RESOURCE)
1
MACRO(MOO_ADD_COMPILE_FLAGS target flags)
2
  GET_TARGET_PROPERTY(__moo_prop_value ${target} COMPILE_FLAGS)
3
  IF(__moo_prop_value)
4
    SET_TARGET_PROPERTIES(${target} PROPERTIES COMPILE_FLAGS "${flags}")
5
  ELSE(__moo_prop_value)
6
    SET_TARGET_PROPERTIES(${target} PROPERTIES COMPILE_FLAGS "${__moo_prop_value} ${flags}")
7
  ENDIF(__moo_prop_value)
8
ENDMACRO(MOO_ADD_COMPILE_FLAGS)
9
10
MACRO(MOO_ADD_DEFINITIONS target defs)
11
  GET_TARGET_PROPERTY(__moo_prop_value ${target} COMPILE_DEFINITIONS)
12
  IF(__moo_prop_value)
13
    LIST(APPEND __moo_prop_value ${defs})
14
  ELSE(__moo_prop_value)
15
    SET(__moo_prop_value ${defs})
16
  ENDIF(__moo_prop_value)
17
  SET_TARGET_PROPERTIES(${target} PROPERTIES COMPILE_DEFINITIONS "${__moo_prop_value}")
18
ENDMACRO(MOO_ADD_DEFINITIONS)
19
20
MACRO(MOO_ADD_SOURCE_FILE_SET name subdir)
21
  _MOO_MODULE_SOURCES_VAR_NAMES(${name} _moo_s _moo_bs _moo_st)
22
23
  IF(_moo_code_module_created_${name})
24
    MESSAGE(FATAL_ERROR "MOO_ADD_SOURCE_FILE_SET(${name}) called twice")
25
  ENDIF(_moo_code_module_created_${name})
26
  SET(_moo_code_module_created_${name} 1)
27
28
  SET(_moo_source_file_prefix "")
29
  IF(NOT "" STREQUAL "${subdir}")
30
    SET(_moo_source_file_prefix "${subdir}/")
31
  ENDIF(NOT "" STREQUAL "${subdir}")
32
33
#   SET(${name}_cmake_dummy ${CMAKE_CURRENT_BINARY_DIR}/${name}-cmake-dummy.c)
34
#   ADD_CUSTOM_COMMAND(OUTPUT ${${name}_cmake_dummy}
35
#                      COMMAND ${CMAKE_COMMAND} -D LIBNAME=${name} -D OUTPUT=${${name}_cmake_dummy} -P ${CMAKE_SOURCE_DIR}/moo/gendummy.cmake
36
#                      DEPENDS ${${name}_stamps} ${CMAKE_SOURCE_DIR}/moo/gendummy.cmake)
37
#   SET_SOURCE_FILES_PROPERTIES(${${name}_cmake_dummy} PROPERTIES GENERATED 1)
38
39
  IF(_moo_source_file_prefix)
40
    SET(_moo_sources_set_tmp ${${_moo_s}})
41
    SET(${_moo_s})
42
    FOREACH(_moo_source_file ${_moo_sources_set_tmp})
43
      LIST(APPEND ${_moo_s} "${_moo_source_file_prefix}${_moo_source_file}")
44
    ENDFOREACH(_moo_source_file)
45
  ENDIF(_moo_source_file_prefix)
46
47
  LIST(APPEND moo_all_sources ${${_moo_s}} ${${_moo_bs}} ${${_moo_st}})
48
49
ENDMACRO(MOO_ADD_SOURCE_FILE_SET)
50
51
MACRO(MOO_ADD_MOO_CODE_MODULE name)
52
53
  SET(_moo_code_module_subdir ${name})
54
55
  SET(_moo_arg_next_subdir)
56
  FOREACH(_moo_arg ${ARGN})
57
    IF(_moo_arg_next_subdir)
58
      SET(_moo_code_module_subdir ${_moo_arg})
59
      SET(_moo_arg_next_subdir)
60
    ELSEIF("${_moo_arg}" STREQUAL "SUBDIR")
61
      SET(_moo_arg_next_subdir 1)
62
    ELSE(_moo_arg_next_subdir)
63
      MESSAGE(FATAL_ERROR " Invalid argument `${_moo_arg}' to macro MOO_ADD_CODE_MODULE")
64
    ENDIF(_moo_arg_next_subdir)
65
  ENDFOREACH(_moo_arg)
66
67
  MOO_ADD_SOURCE_FILE_SET(${name} ${_moo_code_module_subdir})
68
69
  INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/moo/${_moo_code_module_subdir} ${CMAKE_CURRENT_BINARY_DIR}/${_moo_code_module_subdir})
70
71
ENDMACRO(MOO_ADD_MOO_CODE_MODULE)
72
73
MACRO(MOO_WIN32_RESOURCE rc_in module)
74
  IF(WIN32)
75
    SET(_moo_rc_file ${CMAKE_CURRENT_BINARY_DIR}/${module}.rc)
76
    SET_SOURCE_FILES_PROPERTIES(${_moo_rc_file} PROPERTIES GENERATED 1)
77
    SET(_moo_res_file ${CMAKE_CURRENT_BINARY_DIR}/${module}.res)
78
    CONFIGURE_FILE(${rc_in} ${_moo_rc_file} @ONLY)
79
    _MOO_MODULE_SOURCES_VAR_NAMES(${module} _moo_s _moo_bs _moo_st)
80
    IF(MSVC)
81
      LIST(APPEND ${_moo_s} ${_moo_rc_file})
82
    ELSE(MSVC)
83
      ADD_CUSTOM_COMMAND(OUTPUT ${_moo_res_file}
84
        COMMAND ${WINDRES_EXECUTABLE} -i ${_moo_rc_file} --input-format=rc -o ${_moo_res_file} -O coff
85
        DEPENDS ${_moo_rc_file}
86
      )
87
      SET_SOURCE_FILES_PROPERTIES(${_moo_res_file} PROPERTIES EXTERNAL_OBJECT 1 GENERATED 1)
88
      LIST(APPEND ${_moo_s} ${_moo_res_file})
89
      LIST(APPEND ${module}_libs ${_moo_res_file})
90
      # FIXME rebuilding just doesn't work
91
    ENDIF(MSVC)
92
  ENDIF(WIN32)
93
ENDMACRO(MOO_WIN32_RESOURCE)

Up to file-list cmake/moo.cmake:

1
MACRO(MOO_DEFINE_VERSIONS name version)
2
  STRING(REGEX REPLACE "([^.]+)[.].*" "\\1" ${name}_MAJOR_VERSION ${version})
3
  STRING(REGEX REPLACE "[^.]+[.]([^.]+).*" "\\1" ${name}_MINOR_VERSION ${version})
4
  STRING(REGEX REPLACE "[^.]+[.][^.]+[.]([^.]+)" "\\1" ${name}_MICRO_VERSION ${version})
5
  SET(${name}_VERSION "\"${version}\"")
6
  SET(${name}_VERSION_UNQUOTED "${version}")
7
ENDMACRO(MOO_DEFINE_VERSIONS)
8
9
SET(MOO_CMAKE_COMMAND "${CMAKE_COMMAND}"
10
  -D "MOO_SOURCE_DIR=${MOO_SOURCE_DIR}"
11
  -D "MOO_BINARY_DIR=${MOO_BINARY_DIR}"
12
  -D "GLIB_GENMARSHAL_EXECUTABLE=${GLIB_GENMARSHAL_EXECUTABLE}"
13
  -D "GDK_PIXBUF_CSOURCE_EXECUTABLE=${GDK_PIXBUF_CSOURCE_EXECUTABLE}"
14
  -D "PKG_CONFIG_EXECUTABLE=${PKG_CONFIG_EXECUTABLE}"
15
  -D "PYTHON_EXECUTABLE=${PYTHON_EXECUTABLE}"
16
)
17
18
19
##########################################################################
20
#
21
# Code modules, automake-style
22
#
23
24
MACRO(_MOO_MODULE_SOURCES_VAR_NAMES module out_sources_var out_builtsources_var out_stamps_var)
25
  STRING(TOUPPER ${module} _moo_module_cap)
26
  SET(${out_sources_var} ${_moo_module_cap}_SOURCES)
27
  SET(${out_builtsources_var} ${_moo_module_cap}_BUILT_SOURCES)
28
  SET(${out_stamps_var} ${_moo_module_cap}_STAMPS)
29
ENDMACRO(_MOO_MODULE_SOURCES_VAR_NAMES)
30
31
MACRO(_MOO_ALL_MODULE_SOURCES module outvar)
32
  _MOO_MODULE_SOURCES_VAR_NAMES(${module} _moo_s _moo_bs _moo_st)
33
  SET(${outvar} ${${_moo_s}} ${${_moo_bs}} ${${_moo_st}})
34
ENDMACRO(_MOO_ALL_MODULE_SOURCES)
35
36
MACRO(MOO_ADD_CLEAN_FILES)
37
  GET_DIRECTORY_PROPERTY(_moo_clean_files ADDITIONAL_MAKE_CLEAN_FILES)
38
  FOREACH(_moo_f ${ARGN})
39
    LIST(APPEND _moo_clean_files ${_moo_f})
40
  ENDFOREACH(_moo_f)
41
  SET_DIRECTORY_PROPERTIES(PROPERTIES ADDITIONAL_MAKE_CLEAN_FILES "${_moo_clean_files}")
42
ENDMACRO(MOO_ADD_CLEAN_FILES)
43
44
MACRO(MOO_ADD_GENERATED_FILE module stampfile outputfiles)
45
  FOREACH(_moo_f ${stampfile} ${outputfiles})
46
    GET_FILENAME_COMPONENT(_moo_d ${_moo_f} ABSOLUTE)
47
    GET_FILENAME_COMPONENT(_moo_d ${_moo_d} PATH)
48
    FILE(MAKE_DIRECTORY ${_moo_d})
49
  ENDFOREACH(_moo_f)
50
  ADD_CUSTOM_COMMAND(OUTPUT ${stampfile} ${ARGN})
51
  _MOO_MODULE_SOURCES_VAR_NAMES(${module} _moo_s _moo_bs _moo_st)
52
  LIST(APPEND ${_moo_st} ${stampfile})
53
  SET_SOURCE_FILES_PROPERTIES(${stampfile} PROPERTIES EXTERNAL_OBJECT 1 GENERATED 1)
54
  LIST(APPEND ${_moo_bs} ${outputfiles})
55
  SET_SOURCE_FILES_PROPERTIES(${outputfiles} PROPERTIES GENERATED 1)
56
  MOO_ADD_CLEAN_FILES(${stampfile} ${outputfiles})
57
ENDMACRO(MOO_ADD_GENERATED_FILE)
58
59
# MACRO(MOO_GENERATE_SOURCE_FILE module)
60
#   MOO_COLLECT_ARGS(ARG OUTPUT _moo_output
61
#                    ARG COMMAND _moo_command
62
#                    ARG WORKING_DIRECTORY _moo_working_directory
63
#                    ARG DEPENDS _moo_depends
64
#                    ARGN ${ARGN})
65
#
66
#   SET(_moo_output_tmp ${_moo_output})
67
#   FOREACH(_moo_f IN LISTS _moo_output_tmp)
68
#   ENDFOREACH(_moo_f)
69
#   GET_FILENAME_COMPONENT(VarName FileName
70
#                          PATH|ABSOLUTE|NAME|EXT|NAME_WE|REALPATH
71
#                          [CACHE])
72
#
73
# #   FOREACH(_moo_arg ${ARGN})
74
# #     IF("${_moo_arg}" STREQUAL "OUTPUT")
75
# #       SET(_moo_what OUTPUT)
76
# #     ELSEIF("${_moo_arg}" STREQUAL "COMMAND")
77
# #       SET(_moo_what COMMAND)
78
# #     ELSEIF("${_moo_arg}" STREQUAL "COMMAND")
79
# #         
80
# #     IF(_moo_what EQUAL 0)