~ubuntu-branches/ubuntu/precise/ibus-chewing/precise-updates

« back to all changes in this revision

Viewing changes to Modules/ManageEnvironment.cmake

  • Committer: Package Import Robot
  • Author(s): Osamu Aoki
  • Date: 2011-12-26 00:17:58 UTC
  • mfrom: (1.1.14) (0.1.19 sid)
  • Revision ID: package-import@ubuntu.com-20111226001758-bptr1y5r0h2uqap0
Tags: 1.3.10+clean-1
* New upstream release. 
* All Debian patcheds dropped.
* Add Osamu as uploaders.
* Repackaged upstream tar with normal tar and removing .swo

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
# - Manage build environment such as environment variables and compile flags.
 
2
# This module predefine various environment variables, cmake policies, and
 
3
# compile flags.
 
4
#
 
5
# The setting can be viewed and modified by ccmake.
 
6
#
 
7
# List of frequently used variable and compile flags:
 
8
#    + CMAKE_INSTALL_PREFIX: Compile flag whose value is ${CMAKE_INSTALL_PREFIX}.
 
9
#    + BIN_DIR: Directory for executable.
 
10
#      Default:  ${CMAKE_INSTALL_PREFIX}/bin
 
11
#    + DATA_DIR: Directory for architecture independent data files.
 
12
#      Default: ${CMAKE_INSTALL_PREFIX}/share
 
13
#    + DOC_DIR: Directory for documentation
 
14
#      Default: ${DATA_DIR}/doc
 
15
#    + SYSCONF_DIR: System wide configuration files.
 
16
#      Default: /etc
 
17
#    + LIB_DIR: System wide library path.
 
18
#      Default: ${CMAKE_INSTALL_PREFIX}/lib for 32 bit,
 
19
#               ${CMAKE_INSTALL_PREFIX}/lib64 for 64 bit.
 
20
#    + LIBEXEC_DIR: Executables that are not meant to be executed by user directly.
 
21
#      Default: ${CMAKE_INSTALL_PREFIX}/libexec
 
22
#    + PROJECT_NAME: Project name
 
23
#
 
24
# Defines following macros:
 
25
#   SET_COMPILE_ENV(var default_value [ENV_NAME env_name]
 
26
#     [DISPLAY type docstring])
 
27
#     - Add compiler environment with a variable and its value.
 
28
#       If the variable is not defined in cmake, the value is obtained from
 
29
#       following priority:
 
30
#       1. Environment variable with the same name (or specified via ENV_NAME)
 
31
#       2. Parameter default_value
 
32
#       Parameters:
 
33
#       + var: Variable to be set
 
34
#       + default_value: Default value of the var
 
35
#       + env_name: (Optional)The name of environment variable.
 
36
#         Only need if different from var.
 
37
#       + type: is used by the CMake GUI to choose a widget with
 
38
#         which the user sets a value. Valid values are:
 
39
#           PATH     = Directory chooser dialog.
 
40
#           STRING   = Arbitrary string.
 
41
#           BOOL     = Boolean ON/OFF checkbox.
 
42
#           INTERNAL = No GUI entry (used for persistent variables).
 
43
#       + docstring: Label to show ing CMAKE GUI.
 
44
#
 
45
#  SET_USUAL_COMPILE_ENVS()
 
46
#  - Set the most often used variable and compile flags.
 
47
#    It defines compile flags according to the values of corresponding variables,
 
48
#    usually under the same or similar name.
 
49
#    If a corresponding variable is not defined yet, then a default value is assigned
 
50
#    to that variable, then define the flag.
 
51
#
 
52
#    Defines following flags according to the variable with same name.
 
53
#    + CMAKE_INSTALL_PREFIX: Compile flag whose value is ${CMAKE_INSTALL_PREFIX}.
 
54
#    + BIN_DIR: Directory for executable.
 
55
#      Default:  ${CMAKE_INSTALL_PREFIX}/bin
 
56
#    + DATA_DIR: Directory for architecture independent data files.
 
57
#      Default: ${CMAKE_INSTALL_PREFIX}/share
 
58
#    + DOC_DIR: Directory for documentation
 
59
#      Default: ${DATA_DIR}/doc
 
60
#    + SYSCONF_DIR: System wide configuration files.
 
61
#      Default: /etc
 
62
#    + LIB_DIR: System wide library path.
 
63
#      Default: ${CMAKE_INSTALL_PREFIX}/lib for 32 bit,
 
64
#               ${CMAKE_INSTALL_PREFIX}/lib64 for 64 bit.
 
65
#    + LIBEXEC_DIR: Executables that are not meant to be executed by user directly.
 
66
#      Default: ${CMAKE_INSTALL_PREFIX}/libexec
 
67
#    + PROJECT_NAME: Project name
 
68
#    + PRJ_VER: Project version
 
69
#    + PRJ_DATA_DIR: Data directory for the project.
 
70
#      Default: ${DATA_DIR}/${PROJECT_NAME}
 
71
#    + PRJ_DOC_DIR: DocuFILEPATH = File chooser dialog.
 
72
#      Default: ${DOC_DIR}/${PROJECT_NAME}-${PRJ_VER}
 
73
 
 
74
IF(NOT DEFINED _MANAGE_ENVIRONMENT_CMAKE_)
 
75
    SET(_MANAGE_ENVIRONMENT_CMAKE_ "DEFINED")
 
76
    SET(CMAKE_ALLOW_LOOSE_LOOP_CONSTRUCTS ON)
 
77
    CMAKE_POLICY(VERSION 2.6)
 
78
 
 
79
    MACRO(SET_COMPILE_ENV var default_value)
 
80
        SET(_stage "")
 
81
        SET(_type "INTERNAL")
 
82
        SET(_docstring "${var}")
 
83
        SET(_env "${var}")
 
84
        FOREACH(_arg ${ARGN})
 
85
            IF(_arg STREQUAL "ENV_NAME")
 
86
            ELSEIF(_arg STREQUAL "DISPLAY")
 
87
                SET(_stage TYPE)
 
88
            ELSE(_arg STREQUAL "ENV_NAME")
 
89
                IF(_stage STREQUAL "ENV_NAME")
 
90
                    SET(_env "${_arg}")
 
91
                ELSEIF(_stage STREQUAL "TYPE")
 
92
                    SET(_type "${_arg}")
 
93
                    SET(_stage DOCSTRING)
 
94
                ELSEIF(_stage STREQUAL "DOCSTRING")
 
95
                    SET(_docstring "${_arg}")
 
96
                ENDIF(_stage STREQUAL "ENV_NAME")
 
97
            ENDIF(_arg STREQUAL "ENV_NAME")
 
98
        ENDFOREACH(_arg ${ARGN})
 
99
 
 
100
        # Set the variable
 
101
        IF(DEFINED ${var})
 
102
            SET(${var} "${${var}}" CACHE ${_type} "${_docstring}")
 
103
        ELSEIF(NOT "$ENV{${_env}}" STREQUAL "")
 
104
            SET(${var} "$ENV{${_env}}" CACHE ${_type} "${_docstring}")
 
105
        ELSE(DEFINED ${var})
 
106
            # Default value
 
107
            SET(${var} "${default_value}" CACHE ${_type} "${_docstring}")
 
108
        ENDIF(DEFINED ${var})
 
109
 
 
110
        # Enforce CMP0005 to new, yet pop after ADD_DEFINITION
 
111
        CMAKE_POLICY(PUSH)
 
112
        CMAKE_POLICY(SET CMP0005 NEW)
 
113
        #       ADD_DEFINITIONS(-D${_env}='"${${var}}"')
 
114
        ADD_DEFINITIONS(-D${_env}=${${var}})
 
115
        CMAKE_POLICY(POP)
 
116
    ENDMACRO(SET_COMPILE_ENV var default_value)
 
117
 
 
118
    MACRO(MANAGE_CMAKE_POLICY policyName defaultValue)
 
119
        IF(POLICY ${policyName})
 
120
            CMAKE_POLICY(GET "${policyName}" _cmake_policy_value)
 
121
            IF(_cmake_policy_value STREQUAL "")
 
122
                # Policy not defined yet
 
123
                CMAKE_POLICY(SET "${policyName}" "${defaultValue}")
 
124
            ENDIF(_cmake_policy_value STREQUAL "")
 
125
        ENDIF(POLICY ${policyName})
 
126
    ENDMACRO(MANAGE_CMAKE_POLICY policyName defaultValue)
 
127
 
 
128
    ####################################################################
 
129
    # Recommended policy setting
 
130
    #
 
131
    # CMP0005: Preprocessor definition values are now escaped automatically.
 
132
    # OLD:Preprocessor definition values are not escaped.
 
133
    MANAGE_CMAKE_POLICY(CMP0005 NEW)
 
134
 
 
135
    # CMP0009: FILE GLOB_RECURSE calls should not follow symlinks by default.
 
136
    # OLD: FILE GLOB_RECURSE calls follow symlinks
 
137
    MANAGE_CMAKE_POLICY(CMP0009 NEW)
 
138
 
 
139
    # CMP0017: Prefer files from the CMake module directory when including from there.
 
140
    # OLD: Prefer files from CMAKE_MODULE_PATH regardless
 
141
    MANAGE_CMAKE_POLICY(CMP0017 OLD)
 
142
 
 
143
    ####################################################################
 
144
    # CMake Variables
 
145
    #
 
146
    SET_COMPILE_ENV(CMAKE_INSTALL_PREFIX "/usr"
 
147
        DISPLAY PATH "Install dir prefix")
 
148
    SET_COMPILE_ENV(BIN_DIR  "${CMAKE_INSTALL_PREFIX}/bin"
 
149
        DISPLAY PATH "Binary dir")
 
150
    SET_COMPILE_ENV(DATA_DIR "${CMAKE_INSTALL_PREFIX}/share"
 
151
        DISPLAY PATH "Data dir")
 
152
    SET_COMPILE_ENV(DOC_DIR  "${DATA_DIR}/doc"
 
153
        DISPLAY PATH "Documentation dir")
 
154
    SET_COMPILE_ENV(SYSCONF_DIR "/etc"
 
155
        DISPLAY PATH "System configuration dir")
 
156
    SET_COMPILE_ENV(LIBEXEC_DIR "${CMAKE_INSTALL_PREFIX}/libexec"
 
157
        DISPLAY PATH "LIBEXEC dir")
 
158
 
 
159
    IF(CMAKE_SYSTEM_PROCESSOR MATCHES "64")
 
160
        SET_COMPILE_ENV(IS_64 "64" DISPLAY STRING "IS_64")
 
161
    ENDIF(CMAKE_SYSTEM_PROCESSOR MATCHES "64")
 
162
 
 
163
    IF(NOT DEFINED LIB_DIR)
 
164
        SET_COMPILE_ENV(LIB_DIR "${CMAKE_INSTALL_PREFIX}/lib${IS_64}")
 
165
    ENDIF(NOT DEFINED LIB_DIR)
 
166
 
 
167
    IF(DEFINED PROJECT_NAME)
 
168
        SET_COMPILE_ENV(PROJECT_NAME "${PROJECT_NAME}")
 
169
        SET_COMPILE_ENV(PRJ_DATA_DIR "${DATA_DIR}/${PROJECT_NAME}")
 
170
 
 
171
        IF(DEFINED PRJ_VER)
 
172
            SET_COMPILE_ENV(PRJ_VER "${PRJ_VER}")
 
173
        ENDIF(DEFINED PRJ_VER)
 
174
    ENDIF(DEFINED PROJECT_NAME)
 
175
 
 
176
    # Directory to store cmake-fedora specific temporary files.
 
177
    IF(NOT CMAKE_FEDORA_TMP_DIR)
 
178
        SET(CMAKE_FEDORA_TMP_DIR "${CMAKE_BINARY_DIR}/NO_PACK")
 
179
    ENDIF(NOT CMAKE_FEDORA_TMP_DIR)
 
180
 
 
181
    ADD_CUSTOM_COMMAND(OUTPUT ${CMAKE_FEDORA_TMP_DIR}
 
182
        COMMAND cmake -E make_directory ${CMAKE_FEDORA_TMP_DIR}
 
183
        COMMENT "Create CMAKE_FEDORA_TMP_DIR"
 
184
        )
 
185
ENDIF(NOT DEFINED _MANAGE_ENVIRONMENT_CMAKE_)