source: trunk/dports/_resources/port1.0/group/cmake-1.0.tcl @ 135668

Last change on this file since 135668 was 135668, checked in by michaelld@…, 4 years ago

cmake 1.0 PortGroup: can use cmake or cmake-devel; default to cmake if not installed.

  • Property svn:eol-style set to native
  • Property svn:keywords set to Id
File size: 6.5 KB
Line 
1# -*- coding: utf-8; mode: tcl; c-basic-offset: 4; indent-tabs-mode: nil; tab-width: 4; truncate-lines: t -*- vim:fenc=utf-8:et:sw=4:ts=4:sts=4
2# $Id: cmake-1.0.tcl 135668 2015-04-29 13:41:29Z michaelld@macports.org $
3#
4# Copyright (c) 2009 Orville Bennett <illogical1 at gmail.com>
5# Copyright (c) 2010-2014 The MacPorts Project
6# All rights reserved.
7#
8# Redistribution and use in source and binary forms, with or without
9# modification, are permitted provided that the following conditions are
10# met:
11#
12# 1. Redistributions of source code must retain the above copyright
13#    notice, this list of conditions and the following disclaimer.
14# 2. Redistributions in binary form must reproduce the above copyright
15#    notice, this list of conditions and the following disclaimer in the
16#    documentation and/or other materials provided with the distribution.
17# 3. Neither the name of Apple Computer, Inc. nor the names of its
18#    contributors may be used to endorse or promote products derived from
19#    this software without specific prior written permission.
20#
21# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
22# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
23# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
24# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
25# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
26# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
27# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
28# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
29# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
30# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
31# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
32#
33#
34# Usage:
35# PortGroup     cmake 1.0
36
37options cmake.out_of_source cmake.build_dir
38
39default cmake.out_of_source no
40default cmake.build_dir {${workpath}/build}
41
42# standard place to install extra CMake modules
43set cmake_share_module_dir ${prefix}/share/cmake/Modules
44
45# can use cmake or cmake-devel; default to cmake if not installed
46depends_build-append path:bin/cmake:cmake
47
48proc _cmake_get_build_dir {} {
49    if {[option cmake.out_of_source]} {
50        return [option cmake.build_dir]
51    }
52    return [option worksrcpath]
53}
54
55default configure.dir {[_cmake_get_build_dir]}
56
57pre-configure {
58    file mkdir ${configure.dir}
59}
60
61#FIXME: ccache works with cmake on linux
62configure.ccache    no
63
64configure.cmd       ${prefix}/bin/cmake
65
66configure.pre_args  -DCMAKE_INSTALL_PREFIX=${prefix}
67
68configure.args      -DCMAKE_VERBOSE_MAKEFILE=ON \
69                    -DCMAKE_COLOR_MAKEFILE=ON \
70                    -DCMAKE_BUILD_TYPE=Release \
71                    -DCMAKE_BUILD_WITH_INSTALL_RPATH=ON \
72                    -DCMAKE_INSTALL_RPATH=${prefix}/lib \
73                    -DCMAKE_INSTALL_NAME_DIR=${prefix}/lib \
74                    -DCMAKE_SYSTEM_PREFIX_PATH="${prefix}\;/usr" \
75                    -DCMAKE_MODULE_PATH=${cmake_share_module_dir} \
76                    -DCMAKE_FIND_FRAMEWORK=LAST \
77                    -Wno-dev
78
79default configure.post_args {${worksrcpath}}
80
81# CMake honors set environment variables CFLAGS, CXXFLAGS, and LDFLAGS when it
82# is first run in a build directory to initialize CMAKE_C_FLAGS,
83# CMAKE_CXX_FLAGS, CMAKE_[EXE|SHARED|MODULE]_LINKER_FLAGS. However, be aware
84# that a CMake script can always override these flags when it runs, as they
85# are frequently set internally in functions of other CMake build variables!
86#
87# Attention: If you want to be sure that no compiler flags are passed via
88# configure.args, you have to manually clear configure.optflags, as it is set
89# to "-Os" by default and added to all language-specific flags. If you want to
90# turn off optimization, explicitly set configure.optflags to "-O0".
91
92# TODO: Handle configure.objcflags (cf. to CMake upstream ticket #4756
93#       "CMake needs an Objective-C equivalent of CMAKE_CXX_FLAGS"
94#       <http://public.kitware.com/Bug/view.php?id=4756>)
95
96# TODO: Handle the Fortran-specific configure.* variables:
97#       configure.fflags, configure.fcflags, configure.f90flags
98
99# TODO: Handle the Java-specific configure.classpath variable.
100
101pre-configure {
102    # The environment variable CPPFLAGS is not considered by CMake.
103    # (CMake upstream ticket #12928 "CMake silently ignores CPPFLAGS"
104    # <http://www.cmake.org/Bug/view.php?id=12928>).
105    #
106    # But adding -I${prefix}/include to CFLAGS/CXXFLAGS is a bad idea.
107    # If any other flags are needed, we need to add them.
108
109    # In addition, CMake provides build-type-specific flags for
110    # Release (-O3 -DNDEBUG), Debug (-g), MinSizeRel (-Os -DNDEBUG), and
111    # RelWithDebInfo (-O2 -g -DNDEBUG). If the configure.optflags have been
112    # set (-Os by default), we have to remove the optimization flags from the
113    # from the concerned Release build type so that configure.optflags
114    # gets honored (Debug used by the +debug variant does not set
115    # optimization flags by default).
116    if {${configure.optflags} ne ""} {
117        configure.args-append -DCMAKE_C_FLAGS_RELEASE="-DNDEBUG" \
118                              -DCMAKE_CXX_FLAGS_RELEASE="-DNDEBUG"
119    }
120
121    platform darwin {
122        if {[variant_exists universal] && [variant_isset universal]} {
123            if {[info exists universal_archs_supported]} {
124                global merger_configure_args
125                foreach arch ${universal_archs_to_use} {
126                    lappend merger_configure_args(${arch}) -DCMAKE_OSX_ARCHITECTURES=${arch}
127                }
128            } else {
129                configure.universal_args-append \
130                    -DCMAKE_OSX_ARCHITECTURES="[join ${configure.universal_archs} \;]"
131            }
132        } else {
133            configure.args-append \
134                -DCMAKE_OSX_ARCHITECTURES="${configure.build_arch}"
135        }
136
137        configure.args-append -DCMAKE_OSX_DEPLOYMENT_TARGET="${macosx_deployment_target}"
138
139        if {${configure.sdkroot} != ""} {
140            configure.args-append -DCMAKE_OSX_SYSROOT="${configure.sdkroot}"
141        } else {
142            configure.args-append -DCMAKE_OSX_SYSROOT="/"
143        }
144    }
145}
146
147configure.universal_args-delete --disable-dependency-tracking
148
149variant debug description "Enable debug binaries" {
150    configure.args-replace  -DCMAKE_BUILD_TYPE=Release -DCMAKE_BUILD_TYPE=Debug
151}
152
153# cmake doesn't like --enable-debug, so in case a portfile sets
154# --enable-debug (regardless of variant) we remove it
155if {[string first "--enable-debug" ${configure.args}] > -1} {
156    configure.args-delete     --enable-debug
157}
158
159default build.dir {${configure.dir}}
160
161default build.post_args {VERBOSE=ON}
Note: See TracBrowser for help on using the repository browser.