This file is indexed.

/usr/share/camitk-3.3/cmake/macros/CamiTKExtensionProject.cmake is in libcamitk3-dev 3.3.2-2.

This file is owned by root:root, with mode 0o644.

The actual contents of the file can be viewed below.

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
#!
#! @ingroup group_sdk_cmake
#!
#! macro add_cep creates an optional (disabled by default) CEP (CamiTK Extension Project)
#! subdirectory the build.
#!
#! Usage:
#! \code
#! camitk_extension_project(CONTACT
#!                          [ENABLED]
#!                          [NAME cepName]
#!                          [DESCRIPTION longDescription]
#!                          [DEFAULT_APPLICATION exeName]
#!                          [NEEDS_CEP cep1 cep2...]
#!                          [LICENSE licenseName]
#! )
#! \endcode
#! 
#! \param CONTACT               Mandatory, this is the person(s) to contact to get more information about the CEP
#! \param ENABLED               If used, this CEP is forced by default (otherwise the user as to tick the option
#!                              in CMake GUI or defined a -DCEP_<cepName>:BOOL=TRUE on the command line
#! \param NAME                  By default the name of a CEP is given automatically by the name of the top level source directory
#!                              If you specify a name here, the directory name will be ignored
#! \param DESCRIPTION           A (not so) small description of this CEP (objective, content, implementation information)
#! \param DEFAULT_APPLICATION   The default application to run (for MSVC launchers), default is camitk-imp
#! \param NEEDS_CEP (TODO)      Dependencies to other CEP
#! \param LICENSE               The name of the license for this CEP, default is LGPL-v3
macro(camitk_extension_project)

    get_directory_name(${CMAKE_CURRENT_SOURCE_DIR} CEP_DIR_NAME)
    
    parse_arguments(${CEP_DIR_NAME}_CMAKE
        "NEEDS_CEP;DEFAULT_APPLICATION;DESCRIPTION;CONTACT;NAME;LICENSE"  # possible lists
        "ENABLED" # possible options
        ${ARGN}
    )

    # get the proper name
    if(NOT DEFINED ${CEP_DIR_NAME}_CMAKE_NAME)
        set(CEP_NAME ${CEP_DIR_NAME})
    else()
        set(CEP_NAME ${${CEP_DIR_NAME}_CMAKE_NAME})
    endif()
    string(TOUPPER ${CEP_NAME} CEP_NAME_CMAKE)
    
    # if it is the first cmake run, create the internal variable with a correct initial value (false is default)
    if(NOT CEP_${CEP_NAME_CMAKE}_INTERNAL)
        # add option to enable/disable this CEP
        if(${CEP_DIR_NAME}_CMAKE_ENABLED)
            set(CEP_${CEP_NAME_CMAKE}_ENABLED TRUE)
        else()
            set(CEP_${CEP_NAME_CMAKE}_ENABLED FALSE)
        endif()
        set(CEP_${CEP_NAME_CMAKE} ${CEP_${CEP_NAME_CMAKE}_ENABLED} CACHE BOOL "Build CEP ${CEP_NAME}")
        set(CEP_${CEP_NAME_CMAKE}_INTERNAL TRUE CACHE INTERNAL "Is variable CAMITK_CEP_${CEP_NAME_CMAKE} already created?")
    endif()

    if(CEP_${CEP_NAME_CMAKE})        
        message(STATUS "Building CEP ${CEP_NAME}")
        
        project(${CEP_NAME})

        if(NOT DEFINED ${CEP_DIR_NAME}_CMAKE_CONTACT)
            message(FATAL_ERROR "In camitk_extension_project(...) for CEP \"${CEP_NAME}\": CONTACT argument is mandatory\n   Should give the email address of the person(s) to contact for more information about the CEP \"${CEP_NAME}\"")
        endif()

        if(NOT DEFINED ${CEP_DIR_NAME}_CMAKE_LICENSE)
            set(${CEP_NAME}_LICENSE "LGPL-v3")
        else()
            set(${CEP_NAME}_LICENSE ${${CEP_DIR_NAME}_CMAKE_LICENSE})
        endif()
        
        # update module path
        set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${CMAKE_CURRENT_SOURCE_DIR})

        # init cep sub project
        camitk_sub_project_init()
        
        # packaging macro must be called before parsing extensions CMakeList files.
        camitk_cep_packaging(NAME ${CEP_NAME}
                             CONTACT ${${CEP_DIR_NAME}_CMAKE_CONTACT}
                             DESCRIPTION ${${CEP_DIR_NAME}_CMAKE_DESCRIPTION}
                             LICENSE ${${CEP_NAME}_LICENSE}
        )

        # add all subprojects
        camitk_add_subdirectory(libraries)
        camitk_add_subdirectory(components)
        camitk_add_subdirectory(actions)
        camitk_add_subdirectory(viewers)
        camitk_add_subdirectory(applications)

        # CEP packaging (only works if this is a stand-alone CEP
        camitk_sub_project_validate()

        # For Microsoft Visual C++, sets the default application for the "ALL_BUILD" project
        # (i.e. launches imp when we you click on "Debug" or "Start Without Debugging" button on Visual)
        # In addition, but not the least, sets the environment to the debug dll directory for VTK (and ITK)
        # to solve the dll incompatibility between debug and relase version of QVTK.dll and ITKCommon.dll
        # is there a specifi application to run by default
        if(${CEP_NAME_CMAKE}_CMAKE_DEFAULT_APPLICATION)
            set(CEP_DEFAULT_APPLICATION ${${CEP_NAME_CMAKE}_CMAKE_DEFAULT_APPLICATION})
        else()
            set(CEP_DEFAULT_APPLICATION "camitk-imp")
        endif()

        # if this is a single CEP, provides the installation facilities
        # otherwise, just add include(CamiTKInstall) to get the installation facilities
        if (NOT CAMITK_EXTENSION_PROJECT_SET)
            #-- camitk_global_install == install in CAMITK_DIR
            if (CAMITK_SDK_BUILD)
                # if the SDK is currently being build => install in CMAKE_INSTALL_PREFIX
                add_custom_target(${CEP_NAME}_global_install
                    # Second cmake to install
                    COMMAND ${CMAKE_COMMAND} --build ${CMAKE_BINARY_DIR} --target install --config ${CMAKE_CFG_INTDIR}
                    COMMENT "Global Installation in ${CMAKE_INSTALL_PREFIX}"
                )

            else()
                # this is called from a normal CEP build => install in CAMITK_DIR
                add_custom_target(${CEP_NAME}_global_install
                    # First cmake to redefine install prefix
                    COMMAND ${CMAKE_COMMAND} -DCMAKE_INSTALL_PREFIX:PATH=${CAMITK_DIR} ${CMAKE_BINARY_DIR}
                    # Second cmake to install
                    COMMAND ${CMAKE_COMMAND} --build ${CMAKE_BINARY_DIR} --target install --config ${CMAKE_CFG_INTDIR}
                    COMMENT "Global Installation in ${CAMITK_DIR}"
                )
            endif()

            # camitk_local_install == install in User Config directory
            add_custom_target(${CEP_NAME}_local_install
                # First cmake to redefine install prefix
                COMMAND ${CMAKE_COMMAND} -DCMAKE_INSTALL_PREFIX:PATH=${CAMITK_USER_DIR} ${CMAKE_BINARY_DIR}
                COMMAND ${CMAKE_COMMAND} --build ${CMAKE_BINARY_DIR} --target install --config ${CMAKE_CFG_INTDIR}
                COMMENT "Local Installation in ${CAMITK_USER_DIR}"
            )
        endif()

        
    endif()
endmacro()