cmake/FindVersion.cmake
author Tero Marttila <terom@fixme.fi>
Fri, 16 Jan 2009 01:05:34 +0200
changeset 398 306825786fba
parent 397 13fa0546ef87
permissions -rw-r--r--
more tweaking of version.c ... maybe it works now
396
e1a24791d192 build scripts autodetect project version using 91d96387b359+ tip, and version is included in window title
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
     1
#
e1a24791d192 build scripts autodetect project version using 91d96387b359+ tip, and version is included in window title
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
     2
# CMake build script to determine project version number.
e1a24791d192 build scripts autodetect project version using 91d96387b359+ tip, and version is included in window title
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
     3
#
e1a24791d192 build scripts autodetect project version using 91d96387b359+ tip, and version is included in window title
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
     4
# this will set PROJECT_VERSION to a string
e1a24791d192 build scripts autodetect project version using 91d96387b359+ tip, and version is included in window title
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
     5
#
e1a24791d192 build scripts autodetect project version using 91d96387b359+ tip, and version is included in window title
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
     6
FUNCTION (FindProjectVersion project_path)
397
13fa0546ef87 hopefully version stuff is now run properly on every make...
Tero Marttila <terom@fixme.fi>
parents: 396
diff changeset
     7
    # Mercurial
13fa0546ef87 hopefully version stuff is now run properly on every make...
Tero Marttila <terom@fixme.fi>
parents: 396
diff changeset
     8
    if (EXISTS ${project_path}/.hg)
13fa0546ef87 hopefully version stuff is now run properly on every make...
Tero Marttila <terom@fixme.fi>
parents: 396
diff changeset
     9
        # first, determine tag
396
e1a24791d192 build scripts autodetect project version using 91d96387b359+ tip, and version is included in window title
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    10
        EXECUTE_PROCESS (
397
13fa0546ef87 hopefully version stuff is now run properly on every make...
Tero Marttila <terom@fixme.fi>
parents: 396
diff changeset
    11
            COMMAND hg identify --tag
396
e1a24791d192 build scripts autodetect project version using 91d96387b359+ tip, and version is included in window title
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    12
            WORKING_DIRECTORY "${project_path}"
e1a24791d192 build scripts autodetect project version using 91d96387b359+ tip, and version is included in window title
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    13
            RESULT_VARIABLE hg_error_code 
397
13fa0546ef87 hopefully version stuff is now run properly on every make...
Tero Marttila <terom@fixme.fi>
parents: 396
diff changeset
    14
            OUTPUT_VARIABLE hg_tag
396
e1a24791d192 build scripts autodetect project version using 91d96387b359+ tip, and version is included in window title
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    15
            OUTPUT_STRIP_TRAILING_WHITESPACE
e1a24791d192 build scripts autodetect project version using 91d96387b359+ tip, and version is included in window title
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    16
        )
397
13fa0546ef87 hopefully version stuff is now run properly on every make...
Tero Marttila <terom@fixme.fi>
parents: 396
diff changeset
    17
        
396
e1a24791d192 build scripts autodetect project version using 91d96387b359+ tip, and version is included in window title
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    18
        if (hg_error_code)
397
13fa0546ef87 hopefully version stuff is now run properly on every make...
Tero Marttila <terom@fixme.fi>
parents: 396
diff changeset
    19
            MESSAGE (FATAL_ERROR "`hg identify --tag` failed")
396
e1a24791d192 build scripts autodetect project version using 91d96387b359+ tip, and version is included in window title
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    20
        endif (hg_error_code)
e1a24791d192 build scripts autodetect project version using 91d96387b359+ tip, and version is included in window title
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    21
397
13fa0546ef87 hopefully version stuff is now run properly on every make...
Tero Marttila <terom@fixme.fi>
parents: 396
diff changeset
    22
        # if tag is other than tip, use that
13fa0546ef87 hopefully version stuff is now run properly on every make...
Tero Marttila <terom@fixme.fi>
parents: 396
diff changeset
    23
        if ("${hg_tag}" STREQUAL "tip")
13fa0546ef87 hopefully version stuff is now run properly on every make...
Tero Marttila <terom@fixme.fi>
parents: 396
diff changeset
    24
            # use the revision hash
13fa0546ef87 hopefully version stuff is now run properly on every make...
Tero Marttila <terom@fixme.fi>
parents: 396
diff changeset
    25
            EXECUTE_PROCESS (
13fa0546ef87 hopefully version stuff is now run properly on every make...
Tero Marttila <terom@fixme.fi>
parents: 396
diff changeset
    26
                COMMAND hg identify --id
13fa0546ef87 hopefully version stuff is now run properly on every make...
Tero Marttila <terom@fixme.fi>
parents: 396
diff changeset
    27
                WORKING_DIRECTORY "${project_path}"
13fa0546ef87 hopefully version stuff is now run properly on every make...
Tero Marttila <terom@fixme.fi>
parents: 396
diff changeset
    28
                RESULT_VARIABLE hg_error_code 
13fa0546ef87 hopefully version stuff is now run properly on every make...
Tero Marttila <terom@fixme.fi>
parents: 396
diff changeset
    29
                OUTPUT_VARIABLE hg_id
13fa0546ef87 hopefully version stuff is now run properly on every make...
Tero Marttila <terom@fixme.fi>
parents: 396
diff changeset
    30
                OUTPUT_STRIP_TRAILING_WHITESPACE
13fa0546ef87 hopefully version stuff is now run properly on every make...
Tero Marttila <terom@fixme.fi>
parents: 396
diff changeset
    31
            )
396
e1a24791d192 build scripts autodetect project version using 91d96387b359+ tip, and version is included in window title
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    32
397
13fa0546ef87 hopefully version stuff is now run properly on every make...
Tero Marttila <terom@fixme.fi>
parents: 396
diff changeset
    33
            if (hg_error_code)
13fa0546ef87 hopefully version stuff is now run properly on every make...
Tero Marttila <terom@fixme.fi>
parents: 396
diff changeset
    34
                MESSAGE (FATAL_ERROR "`hg identify --id` failed")
13fa0546ef87 hopefully version stuff is now run properly on every make...
Tero Marttila <terom@fixme.fi>
parents: 396
diff changeset
    35
            endif (hg_error_code)
396
e1a24791d192 build scripts autodetect project version using 91d96387b359+ tip, and version is included in window title
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    36
397
13fa0546ef87 hopefully version stuff is now run properly on every make...
Tero Marttila <terom@fixme.fi>
parents: 396
diff changeset
    37
            SET (PROJECT_VERSION "${hg_id}" PARENT_SCOPE)
13fa0546ef87 hopefully version stuff is now run properly on every make...
Tero Marttila <terom@fixme.fi>
parents: 396
diff changeset
    38
            MESSAGE (STATUS "Version: mercurial tip id: ${hg_id}")
396
e1a24791d192 build scripts autodetect project version using 91d96387b359+ tip, and version is included in window title
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    39
397
13fa0546ef87 hopefully version stuff is now run properly on every make...
Tero Marttila <terom@fixme.fi>
parents: 396
diff changeset
    40
        else ("${hg_tag}" STREQUAL "tip")
13fa0546ef87 hopefully version stuff is now run properly on every make...
Tero Marttila <terom@fixme.fi>
parents: 396
diff changeset
    41
            SET (PROJECT_VERSION "${hg_tag}" PARENT_SCOPE)
13fa0546ef87 hopefully version stuff is now run properly on every make...
Tero Marttila <terom@fixme.fi>
parents: 396
diff changeset
    42
            MESSAGE (STATUS "Version: mercurial tag: ${hg_tag}")
13fa0546ef87 hopefully version stuff is now run properly on every make...
Tero Marttila <terom@fixme.fi>
parents: 396
diff changeset
    43
13fa0546ef87 hopefully version stuff is now run properly on every make...
Tero Marttila <terom@fixme.fi>
parents: 396
diff changeset
    44
        endif ("${hg_tag}" STREQUAL "tip")
13fa0546ef87 hopefully version stuff is now run properly on every make...
Tero Marttila <terom@fixme.fi>
parents: 396
diff changeset
    45
13fa0546ef87 hopefully version stuff is now run properly on every make...
Tero Marttila <terom@fixme.fi>
parents: 396
diff changeset
    46
    else (EXISTS ${project_path}/.hg)
398
306825786fba more tweaking of version.c ... maybe it works now
Tero Marttila <terom@fixme.fi>
parents: 397
diff changeset
    47
        SET (PROJECT_VERSION "???" PARENT_SCOPE)
306825786fba more tweaking of version.c ... maybe it works now
Tero Marttila <terom@fixme.fi>
parents: 397
diff changeset
    48
        MESSAGE (STATUS "No version information available")
397
13fa0546ef87 hopefully version stuff is now run properly on every make...
Tero Marttila <terom@fixme.fi>
parents: 396
diff changeset
    49
13fa0546ef87 hopefully version stuff is now run properly on every make...
Tero Marttila <terom@fixme.fi>
parents: 396
diff changeset
    50
    endif (EXISTS ${project_path}/.hg)
396
e1a24791d192 build scripts autodetect project version using 91d96387b359+ tip, and version is included in window title
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    51
ENDFUNCTION (FindProjectVersion)