mirror of
https://github.com/bulletphysics/bullet3
synced 2024-12-16 14:40:05 +00:00
ec56a978f7
Misc property fixes.
214 lines
7.3 KiB
Plaintext
214 lines
7.3 KiB
Plaintext
#============================================================================
|
|
# Rules for installation
|
|
# Copyright (C)2003 by Matze Braun <matzebraun@users.sourceforge.net>
|
|
# Copyright (C)2004 by Eric Sunshine <sunshine@sunshineco.com>
|
|
#
|
|
# This library is free software; you can redistribute it and/or modify it
|
|
# under the terms of the GNU Library General Public License as published by
|
|
# the Free Software Foundation; either version 2 of the License, or (at your
|
|
# option) any later version.
|
|
#
|
|
# This library is distributed in the hope that it will be useful, but
|
|
# WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
|
|
# or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public
|
|
# License for more details.
|
|
#
|
|
# You should have received a copy of the GNU Library General Public License
|
|
# along with this library; if not, write to the Free Software Foundation,
|
|
# Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
|
#
|
|
#============================================================================
|
|
|
|
INSTALL ?= "install" ;
|
|
INSTALL_PROGRAM ?= $(INSTALL) ;
|
|
INSTALL_DATA ?= "$(INSTALL) -m 644" ;
|
|
|
|
# set some paths
|
|
appdatadir ?= [ ConcatDirs $(datadir) $(PACKAGE_NAME) ] ;
|
|
appdocdir ?= [ ConcatDirs $(datadir) doc $(PACKAGE_NAME)-$(PACKAGE_VERSION) ] ;
|
|
appconfdir ?= [ ConcatDirs $(sysconfdir) $(PACKAGE_NAME) ] ;
|
|
appincdir ?= [ ConcatDirs $(includedir) $(PACKAGE_NAME) ] ;
|
|
plugindir ?= [ ConcatDirs $(libdir) $(PACKAGE_NAME) ] ;
|
|
|
|
rule GristInstall
|
|
{
|
|
local i, files ;
|
|
for i in $(<)
|
|
{
|
|
if $(i:G) { files += $(i) ; }
|
|
else { files += $(i:G=$(SUBDIR)) ; }
|
|
}
|
|
return $(files) ;
|
|
}
|
|
|
|
## InstallHeader headername [ : subdir ]
|
|
## DoInstall a header file into the includedir directory. A subdirectory
|
|
## relative to the includedir can be specified.
|
|
rule InstallHeader
|
|
{
|
|
local files = [ GristInstall $(<) ] ;
|
|
SEARCH on $(files) = $(SUBDIR) ;
|
|
Depends install_include : [ DoInstall $(files) : $(appincdir) $(2) ] ;
|
|
}
|
|
|
|
## InstallData files [ : subdir ]
|
|
## Installs data files
|
|
rule InstallData
|
|
{
|
|
local files = [ GristInstall $(<) ] ;
|
|
SEARCH on $(files) = $(SUBDIR) ;
|
|
Depends install_data : [ DoInstall $(files) : $(appdatadir) $(2) ] ;
|
|
}
|
|
|
|
## InstallConfig files [ : subdir ]
|
|
## Installs configuration files
|
|
rule InstallConfig
|
|
{
|
|
local files = [ GristInstall $(<) ] ;
|
|
SEARCH on $(files) = $(SUBDIR) ;
|
|
Depends install_config : [ DoInstall $(files) : $(appconfdir) $(2) ] ;
|
|
}
|
|
|
|
## InstallDoc files [ : subdir ]
|
|
## Installs documentation files
|
|
rule InstallDoc
|
|
{
|
|
local files = [ GristInstall $(<) ] ;
|
|
SEARCH on $(files) = $(SUBDIR) ;
|
|
Depends install_doc : [ DoInstall $(files) : $(appdocdir) $(2) ] ;
|
|
}
|
|
|
|
## InstallMan files
|
|
## Installs Unix manual files
|
|
rule InstallMan
|
|
{
|
|
local files = [ GristInstall $(<) ] ;
|
|
SEARCH on $(files) = $(SUBDIR) ;
|
|
|
|
local i ;
|
|
for i in $(files)
|
|
{
|
|
local dir = $(mandir) ;
|
|
switch $(i:S)
|
|
{
|
|
case .1 : dir += man1 ;
|
|
case .2 : dir += man2 ;
|
|
case .3 : dir += man3 ;
|
|
case .4 : dir += man4 ;
|
|
case .5 : dir += man5 ;
|
|
case .6 : dir += man6 ;
|
|
case .7 : dir += man7 ;
|
|
case .8 : dir += man8 ;
|
|
case .9 : dir += man9 ;
|
|
case * :
|
|
echo "WARNING: manfile has no *.[0-9] ending." ;
|
|
}
|
|
Depends install_man : [ DoInstall $(i) : $(dir) ] ;
|
|
}
|
|
}
|
|
|
|
## InstallProgram files [ : directories ]
|
|
## Installs program files (executable or shell script). This is a
|
|
## convenience wrapper for DoInstall when the resources to be installed is
|
|
## of an invocable nature. It sets SEARCH on `files', and uses
|
|
## $(INSTALL_PROGRAM) to perform the actual installation. Unlike
|
|
## SystemInstallApplication, it does not assume that all such targets should
|
|
## be installed into $(bindir); instead, you can provide `directories' to
|
|
## specify the installation location. If `directories' is not given, then
|
|
## $(bindir) is assumed. Also, unlike SystemInstallApplication, this rule
|
|
## does not have any platform-specific knowledge (such as how to install a
|
|
## Cocoa application wrapper on MacOS/X). Always use
|
|
## SystemInstallApplication for installation of full-fledged applications. A
|
|
## typical use for InstallProgram would be to install an already-existing
|
|
## shell script. This differs from the ShellScript rule which both creates a
|
|
## shell script from scratch at build time, and arranges for it to be
|
|
## installed. Like DoInstall, this rule returns the names of the installed
|
|
## targets, so it is convenient to use the results as the input for another
|
|
## rule, such as Depends.
|
|
rule InstallProgram
|
|
{
|
|
local files = [ GristInstall $(1) ] ;
|
|
local dir = $(2) ;
|
|
if ! $(dir) { dir = $(bindir) ; }
|
|
SEARCH on $(files) = $(SUBDIR) ;
|
|
return [ DoInstall $(files) : $(dir) : $(INSTALL_PROGRAM) ] ;
|
|
}
|
|
|
|
## DoInstall sourcenames : directories [ : installapp : [ postinstallrules ]]
|
|
## Creates a new install target for the given sources named by
|
|
## `sourcenames'. `directories' is a list of directory components
|
|
## indicating the installation directory for `sourcename'. `installapp' is
|
|
## the actual program to run to install the sources. If not specified, then
|
|
## $(INSTALL_DATA) is used. If the optional `postinstallrules' is provided,
|
|
## it is a list of Jam rules to invoke on the installed target after it is
|
|
## installed. Each rule is invoked with the installed target as the first
|
|
## argument, and the source target as the second. An obvious instance where
|
|
## `postinstallrules' proves useful is when the Ranlib rule should be
|
|
## invoked on just-installed static library (.a) files. The DoInstall rule
|
|
## returns the names of the installed targets, so it is convenient to use
|
|
## the results as the input for another rule. For example:
|
|
## Depends install : [ DoInstall $(docfiles) : $(installdocdir) ] ;
|
|
## (Implementation Note: We did not name this rule Install, because Jambase
|
|
## already defines an action named Install :-/)
|
|
rule DoInstall
|
|
{
|
|
local targets target i dir gdir ;
|
|
dir = [ ConcatDirs $(DESTDIR) $(2) ] ;
|
|
|
|
gdir = $(dir:G=dir) ;
|
|
MkDir $(gdir) ;
|
|
|
|
for i in $(1)
|
|
{
|
|
target = $(i:BSR=$(dir):G=install) ;
|
|
targets += $(target) ;
|
|
Depends $(target) : $(gdir) $(i) ;
|
|
Install1 $(target) : $(i) ;
|
|
|
|
if "$(3)"
|
|
{
|
|
INSTALL_APP on $(target) = $(3) ;
|
|
}
|
|
else
|
|
{
|
|
INSTALL_APP on $(target) = $(INSTALL_DATA) ;
|
|
}
|
|
|
|
if "$(4)"
|
|
{
|
|
local postrule ;
|
|
for postrule in $(4)
|
|
{
|
|
$(postrule) $(target) : $(i) ;
|
|
}
|
|
}
|
|
}
|
|
|
|
Always $(targets) ;
|
|
return $(targets) ;
|
|
}
|
|
|
|
#----------------------------------------------------------------------------
|
|
|
|
INSTALLTARGETS = install_bin install_plugin install_lib install_include
|
|
install_data install_config install_doc ;
|
|
|
|
Always install $(INSTALLTARGETS) ;
|
|
NotFile install $(INSTALLTARGETS) ;
|
|
Depends install : $(INSTALLTARGETS) ;
|
|
|
|
if ! $(PACKAGE_INSTALL_NAME) { PACKAGE_INSTALL_NAME = $(PACKAGE_LONGNAME) ; }
|
|
if ! $(PACKAGE_INSTALL_NAME) { PACKAGE_INSTALL_NAME = $(PACKAGE_NAME) ; }
|
|
if ! $(PACKAGE_INSTALL_NAME) { PACKAGE_INSTALL_NAME = "the project" ; }
|
|
Help install : "Install $(PACKAGE_INSTALL_NAME)" ;
|
|
|
|
actions Install1
|
|
{
|
|
$(INSTALL_APP) $(INSTALLFLAGS) $(>) $(<)
|
|
}
|
|
|
|
actions CopyDirs
|
|
{
|
|
$(DEEPCOPY) $(>) $(<)
|
|
}
|