Regenerated configure & VC projects.

Misc property fixes.
This commit is contained in:
res2002
2006-06-17 18:23:38 +00:00
parent 495349f97d
commit ec56a978f7
55 changed files with 12284 additions and 13570 deletions

245
configure vendored
View File

@@ -1,6 +1,6 @@
#! /bin/sh #! /bin/sh
# Guess values for system-dependent variables and create Makefiles. # Guess values for system-dependent variables and create Makefiles.
# Generated by GNU Autoconf 2.59 for bullet 1.1.2006.0319. # Generated by GNU Autoconf 2.59 for bullet 1.5.6.
# #
# Report bugs to <bullet@erwincoumans.com>. # Report bugs to <bullet@erwincoumans.com>.
# #
@@ -271,8 +271,8 @@ SHELL=${CONFIG_SHELL-/bin/sh}
# Identity of this package. # Identity of this package.
PACKAGE_NAME='bullet' PACKAGE_NAME='bullet'
PACKAGE_TARNAME='bullet' PACKAGE_TARNAME='bullet'
PACKAGE_VERSION='1.1.2006.0319' PACKAGE_VERSION='1.5.6'
PACKAGE_STRING='bullet 1.1.2006.0319' PACKAGE_STRING='bullet 1.5.6'
PACKAGE_BUGREPORT='bullet@erwincoumans.com' PACKAGE_BUGREPORT='bullet@erwincoumans.com'
ac_unique_file="mk/jam/build.jam" ac_unique_file="mk/jam/build.jam"
@@ -313,7 +313,7 @@ ac_includes_default="\
# include <unistd.h> # include <unistd.h>
#endif" #endif"
ac_subst_vars='SHELL PATH_SEPARATOR PACKAGE_NAME PACKAGE_TARNAME PACKAGE_VERSION PACKAGE_STRING PACKAGE_BUGREPORT exec_prefix prefix program_transform_name bindir sbindir libexecdir datadir sysconfdir sharedstatedir localstatedir libdir includedir oldincludedir infodir mandir build_alias host_alias target_alias DEFS ECHO_C ECHO_N ECHO_T LIBS build build_cpu build_vendor build_os host host_cpu host_vendor host_os CC CFLAGS LDFLAGS CPPFLAGS ac_ct_CC EXEEXT OBJEXT CXX CXXFLAGS ac_ct_CXX RANLIB ac_ct_RANLIB DLLTOOL ac_ct_DLLTOOL DLLWRAP ac_ct_DLLWRAP WINDRES ac_ct_WINDRES STRINGS ac_ct_STRINGS LIBTOOL_TEST ac_ct_LIBTOOL_TEST LIBTOOL_PATH LIBTOOL ac_ct_LIBTOOL CS_LT_APPLE APPLE_LIBTOOL MKDIR MKDIRS INSTALL DOXYGEN DOT ac_ct_DOT PERL TTREE CPP X_CFLAGS X_PRE_LIBS X_LIBS X_EXTRA_LIBS EGREP LIBOBJS LTLIBOBJS' ac_subst_vars='SHELL PATH_SEPARATOR PACKAGE_NAME PACKAGE_TARNAME PACKAGE_VERSION PACKAGE_STRING PACKAGE_BUGREPORT exec_prefix prefix program_transform_name bindir sbindir libexecdir datadir sysconfdir sharedstatedir localstatedir libdir includedir oldincludedir infodir mandir build_alias host_alias target_alias DEFS ECHO_C ECHO_N ECHO_T LIBS build build_cpu build_vendor build_os host host_cpu host_vendor host_os CC CFLAGS LDFLAGS CPPFLAGS ac_ct_CC EXEEXT OBJEXT CXX CXXFLAGS ac_ct_CXX RANLIB ac_ct_RANLIB DLLTOOL ac_ct_DLLTOOL DLLWRAP ac_ct_DLLWRAP WINDRES ac_ct_WINDRES STRINGS ac_ct_STRINGS OBJCOPY ac_ct_OBJCOPY LIBTOOL_TEST ac_ct_LIBTOOL_TEST LIBTOOL_PATH LIBTOOL ac_ct_LIBTOOL CS_LT_APPLE APPLE_LIBTOOL MKDIR MKDIRS INSTALL DOXYGEN DOT ac_ct_DOT PERL TTREE CPP X_CFLAGS X_PRE_LIBS X_LIBS X_EXTRA_LIBS EGREP LIBOBJS LTLIBOBJS'
ac_subst_files='' ac_subst_files=''
# Initialize some variables set by options. # Initialize some variables set by options.
@@ -790,7 +790,7 @@ if test "$ac_init_help" = "long"; then
# Omit some internal or obsolete options to make the list less imposing. # Omit some internal or obsolete options to make the list less imposing.
# This message is too long to be a string in the A/UX 3.1 sh. # This message is too long to be a string in the A/UX 3.1 sh.
cat <<_ACEOF cat <<_ACEOF
\`configure' configures bullet 1.1.2006.0319 to adapt to many kinds of systems. \`configure' configures bullet 1.5.6 to adapt to many kinds of systems.
Usage: $0 [OPTION]... [VAR=VALUE]... Usage: $0 [OPTION]... [VAR=VALUE]...
@@ -855,7 +855,7 @@ fi
if test -n "$ac_init_help"; then if test -n "$ac_init_help"; then
case $ac_init_help in case $ac_init_help in
short | recursive ) echo "Configuration of bullet 1.1.2006.0319:";; short | recursive ) echo "Configuration of bullet 1.5.6:";;
esac esac
cat <<\_ACEOF cat <<\_ACEOF
@@ -980,7 +980,7 @@ fi
test -n "$ac_init_help" && exit 0 test -n "$ac_init_help" && exit 0
if $ac_init_version; then if $ac_init_version; then
cat <<\_ACEOF cat <<\_ACEOF
bullet configure 1.1.2006.0319 bullet configure 1.5.6
generated by GNU Autoconf 2.59 generated by GNU Autoconf 2.59
Copyright (C) 2003 Free Software Foundation, Inc. Copyright (C) 2003 Free Software Foundation, Inc.
@@ -994,7 +994,7 @@ cat >&5 <<_ACEOF
This file contains any messages produced by compilers while This file contains any messages produced by compilers while
running configure, to aid debugging if configure makes a mistake. running configure, to aid debugging if configure makes a mistake.
It was created by bullet $as_me 1.1.2006.0319, which was It was created by bullet $as_me 1.5.6, which was
generated by GNU Autoconf 2.59. Invocation command line was generated by GNU Autoconf 2.59. Invocation command line was
$ $0 $@ $ $0 $@
@@ -3263,6 +3263,7 @@ echo "$as_me: error: Could not find a usable C++ compiler." >&2;}
fi fi
if test -n "$CXX"; then if test -n "$CXX"; then
cs_build_prop_val="\$(CMD.C++)" cs_build_prop_val="\$(CMD.C++)"
cs_build_prop_val=`echo x$cs_build_prop_val | sed 's/^x//;s/ */ /g;s/^ //;s/ $//'` cs_build_prop_val=`echo x$cs_build_prop_val | sed 's/^x//;s/ */ /g;s/^ //;s/ $//'`
@@ -3314,7 +3315,7 @@ ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
cs_build_ok=no cs_build_ok=no
for cs_build_item in `echo @-shared@@ | sed 'y% %#%'` for cs_build_item in `echo @-shared $cs_cv_prog_cxx_pic@@ | sed 'y% %#%'`
do do
set filler `echo "$cs_build_item" | awk 'BEGIN { FS="@" } set filler `echo "$cs_build_item" | awk 'BEGIN { FS="@" }
@@ -4305,11 +4306,11 @@ fi
set dummy $ac_tool_prefix$ac_prog; ac_word=$2 set dummy $ac_tool_prefix$ac_prog; ac_word=$2
echo "$as_me:$LINENO: checking for $ac_word" >&5 echo "$as_me:$LINENO: checking for $ac_word" >&5
echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
if test "${ac_cv_prog_STRINGS+set}" = set; then if test "${ac_cv_prog_OBJCOPY+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6 echo $ECHO_N "(cached) $ECHO_C" >&6
else else
if test -n "$STRINGS"; then if test -n "$OBJCOPY"; then
ac_cv_prog_STRINGS="$STRINGS" # Let the user override the test. ac_cv_prog_OBJCOPY="$OBJCOPY" # Let the user override the test.
else else
as_save_IFS=$IFS; IFS=$PATH_SEPARATOR as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
for as_dir in $PATH for as_dir in $PATH
@@ -4318,7 +4319,7 @@ do
test -z "$as_dir" && as_dir=. test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do for ac_exec_ext in '' $ac_executable_extensions; do
if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
ac_cv_prog_STRINGS="$ac_tool_prefix$ac_prog" ac_cv_prog_OBJCOPY="$ac_tool_prefix$ac_prog"
echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2 break 2
fi fi
@@ -4327,31 +4328,31 @@ done
fi fi
fi fi
STRINGS=$ac_cv_prog_STRINGS OBJCOPY=$ac_cv_prog_OBJCOPY
if test -n "$STRINGS"; then if test -n "$OBJCOPY"; then
echo "$as_me:$LINENO: result: $STRINGS" >&5 echo "$as_me:$LINENO: result: $OBJCOPY" >&5
echo "${ECHO_T}$STRINGS" >&6 echo "${ECHO_T}$OBJCOPY" >&6
else else
echo "$as_me:$LINENO: result: no" >&5 echo "$as_me:$LINENO: result: no" >&5
echo "${ECHO_T}no" >&6 echo "${ECHO_T}no" >&6
fi fi
test -n "$STRINGS" && break test -n "$OBJCOPY" && break
done done
fi fi
if test -z "$STRINGS"; then if test -z "$OBJCOPY"; then
ac_ct_STRINGS=$STRINGS ac_ct_OBJCOPY=$OBJCOPY
for ac_prog in objcopy for ac_prog in objcopy
do do
# Extract the first word of "$ac_prog", so it can be a program name with args. # Extract the first word of "$ac_prog", so it can be a program name with args.
set dummy $ac_prog; ac_word=$2 set dummy $ac_prog; ac_word=$2
echo "$as_me:$LINENO: checking for $ac_word" >&5 echo "$as_me:$LINENO: checking for $ac_word" >&5
echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
if test "${ac_cv_prog_ac_ct_STRINGS+set}" = set; then if test "${ac_cv_prog_ac_ct_OBJCOPY+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6 echo $ECHO_N "(cached) $ECHO_C" >&6
else else
if test -n "$ac_ct_STRINGS"; then if test -n "$ac_ct_OBJCOPY"; then
ac_cv_prog_ac_ct_STRINGS="$ac_ct_STRINGS" # Let the user override the test. ac_cv_prog_ac_ct_OBJCOPY="$ac_ct_OBJCOPY" # Let the user override the test.
else else
as_save_IFS=$IFS; IFS=$PATH_SEPARATOR as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
for as_dir in $PATH for as_dir in $PATH
@@ -4360,7 +4361,7 @@ do
test -z "$as_dir" && as_dir=. test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do for ac_exec_ext in '' $ac_executable_extensions; do
if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
ac_cv_prog_ac_ct_STRINGS="$ac_prog" ac_cv_prog_ac_ct_OBJCOPY="$ac_prog"
echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2 break 2
fi fi
@@ -4369,19 +4370,19 @@ done
fi fi
fi fi
ac_ct_STRINGS=$ac_cv_prog_ac_ct_STRINGS ac_ct_OBJCOPY=$ac_cv_prog_ac_ct_OBJCOPY
if test -n "$ac_ct_STRINGS"; then if test -n "$ac_ct_OBJCOPY"; then
echo "$as_me:$LINENO: result: $ac_ct_STRINGS" >&5 echo "$as_me:$LINENO: result: $ac_ct_OBJCOPY" >&5
echo "${ECHO_T}$ac_ct_STRINGS" >&6 echo "${ECHO_T}$ac_ct_OBJCOPY" >&6
else else
echo "$as_me:$LINENO: result: no" >&5 echo "$as_me:$LINENO: result: no" >&5
echo "${ECHO_T}no" >&6 echo "${ECHO_T}no" >&6
fi fi
test -n "$ac_ct_STRINGS" && break test -n "$ac_ct_OBJCOPY" && break
done done
STRINGS=$ac_ct_STRINGS OBJCOPY=$ac_ct_OBJCOPY
fi fi
cs_build_prop_val="$OBJCOPY" cs_build_prop_val="$OBJCOPY"
@@ -5241,6 +5242,180 @@ fi
fi fi
#----------------------------------------------------------------------------
# Check if C++ exceptions can be disabled.
#----------------------------------------------------------------------------
echo "$as_me:$LINENO: checking how to disable C++ exceptions" >&5
echo $ECHO_N "checking how to disable C++ exceptions... $ECHO_C" >&6
if test "${cs_cv_prog_cxx_disable_exceptions_ok+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
ac_ext=cc
ac_cpp='$CXXCPP $CPPFLAGS'
ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
cs_cflags_save="$CXXFLAGS"
cs_lflags_save="$LDFLAGS"
cs_libs_save="$LIBS"
cs_build_ok=no
for cs_build_item in `echo @-fno-exceptions@@ | sed 'y% %#%'`
do
set filler `echo "$cs_build_item" | awk 'BEGIN { FS="@" }
{ for (i=1; i <= NF; ++i)
{ if ($i == "") print "filler"; else print $i } }'`
shift
if test $# -eq 0; then
cs_dummy=''
else
if test "$1" = filler; then
cs_dummy=''
else
cs_dummy=$1
fi
shift
fi
if test $# -eq 0; then
cs_cflags_test=''
else
if test "$1" = filler; then
cs_cflags_test=''
else
cs_cflags_test=$1
fi
shift
fi
if test $# -eq 0; then
cs_lflags_test=''
else
if test "$1" = filler; then
cs_lflags_test=''
else
cs_lflags_test=$1
fi
shift
fi
if test $# -eq 0; then
cs_libs_test=''
else
if test "$1" = filler; then
cs_libs_test=''
else
cs_libs_test=$1
fi
shift
fi
cs_cflags_test=`echo $cs_cflags_test | sed 'y%#% %'`
cs_lflags_test=`echo $cs_lflags_test | sed 'y%#% %'`
cs_libs_test=`echo $cs_libs_test | sed 'y%#% %'`
CXXFLAGS="$cs_cflags_test $cs_cflags_save"
LDFLAGS="$cs_lflags_test $cs_lflags_save"
LIBS="$cs_libs_test $cs_libs_save"
cat >conftest.$ac_ext <<_ACEOF
/* confdefs.h. */
_ACEOF
cat confdefs.h >>conftest.$ac_ext
cat >>conftest.$ac_ext <<_ACEOF
/* end confdefs.h. */
int
main ()
{
;
return 0;
}
_ACEOF
rm -f conftest.$ac_objext conftest$ac_exeext
if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
(eval $ac_link) 2>conftest.er1
ac_status=$?
grep -v '^ *+' conftest.er1 >conftest.err
rm -f conftest.er1
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -z "$ac_cxx_werror_flag"
|| test ! -s conftest.err'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); }; } &&
{ ac_try='test -s conftest$ac_exeext'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
cs_build_ok=yes
else
echo "$as_me: failed program was:" >&5
sed 's/^/| /' conftest.$ac_ext >&5
fi
rm -f conftest.err conftest.$ac_objext \
conftest$ac_exeext conftest.$ac_ext
if test $cs_build_ok = yes; then
break
fi
done
CXXFLAGS=$cs_cflags_save
LDFLAGS=$cs_lflags_save
LIBS=$cs_libs_save
ac_ext=c
ac_cpp='$CPP $CPPFLAGS'
ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
ac_compiler_gnu=$ac_cv_c_compiler_gnu
if test $cs_build_ok = yes; then
cs_build_cflags=`echo x$cs_cflags_test | sed 's/^x//;s/ */ /g;s/^ //;s/ $//'`
cs_build_lflags=`echo x$cs_lflags_test | sed 's/^x//;s/ */ /g;s/^ //;s/ $//'`
cs_build_libs=`echo x$cs_libs_test | sed 's/^x//;s/ */ /g;s/^ //;s/ $//'`
cs_cv_prog_cxx_disable_exceptions=`echo x$cs_build_cflags $cs_build_lflags $cs_build_libs | sed 's/^x//;s/ */ /g;s/^ //;s/ $//'`
cs_cv_prog_cxx_disable_exceptions_ok="$cs_cv_prog_cxx_disable_exceptions"
else
cs_cv_prog_cxx_disable_exceptions=''
cs_cv_prog_cxx_disable_exceptions_ok=no
fi
fi
echo "$as_me:$LINENO: result: $cs_cv_prog_cxx_disable_exceptions_ok" >&5
echo "${ECHO_T}$cs_cv_prog_cxx_disable_exceptions_ok" >&6
if test "$cs_cv_prog_cxx_disable_exceptions_ok" != no; then
cs_build_prop_val="$cs_cv_prog_cxx_disable_exceptions"
cs_build_prop_val=`echo x$cs_build_prop_val | sed 's/^x//;s/ */ /g;s/^ //;s/ $//'`
if test -n "$cs_build_prop_val"; then
cs_jamconfig_text="${cs_jamconfig_text}COMPILER.C++FLAGS.EXCEPTIONS.DISABLE ?= \"$cs_build_prop_val\" ;
"
fi
cs_build_prop_val="$cs_cv_prog_cxx_disable_exceptions"
cs_build_prop_val=`echo x$cs_build_prop_val | sed 's/^x//;s/ */ /g;s/^ //;s/ $//'`
if test -n "$cs_build_prop_val"; then
cs_jamconfig_text="${cs_jamconfig_text}COMPILER.C++FLAGS += \"$cs_build_prop_val\" ;
"
fi
fi
#---------------------------------------------------------------------------- #----------------------------------------------------------------------------
# Determine system type # Determine system type
#---------------------------------------------------------------------------- #----------------------------------------------------------------------------
@@ -8855,7 +9030,7 @@ fi
# Windows? # Windows?
if test $cs_host_family = windows; then if test $cs_host_family = windows; then
cs_win32_gl=`echo @@@-lopengl32 | sed 'y% %#%'` cs_win32_glu=`echo @@@-lglu32 | sed 'y% %#%'`
fi fi
@@ -9723,7 +9898,7 @@ cs_jamconfig_text="${cs_jamconfig_text}PACKAGE_NAME ?= \"$PACKAGE_NAME\" ;
" "
cs_jamconfig_text="${cs_jamconfig_text}PACKAGE_COPYRIGHT ?= \"$PACKAGE_COPYRIGHT\" ; cs_jamconfig_text="${cs_jamconfig_text}PACKAGE_COPYRIGHT ?= \"$PACKAGE_COPYRIGHT\" ;
" "
for cs_veritem in 1 1 2006 0319; do for cs_veritem in 1 5 6; do
cs_jamconfig_text="${cs_jamconfig_text}PACKAGE_VERSION_LIST += \"$cs_veritem\" ; cs_jamconfig_text="${cs_jamconfig_text}PACKAGE_VERSION_LIST += \"$cs_veritem\" ;
" "
done done
@@ -10100,7 +10275,7 @@ _ASBOX
} >&5 } >&5
cat >&5 <<_CSEOF cat >&5 <<_CSEOF
This file was extended by bullet $as_me 1.1.2006.0319, which was This file was extended by bullet $as_me 1.5.6, which was
generated by GNU Autoconf 2.59. Invocation command line was generated by GNU Autoconf 2.59. Invocation command line was
CONFIG_FILES = $CONFIG_FILES CONFIG_FILES = $CONFIG_FILES
@@ -10163,7 +10338,7 @@ _ACEOF
cat >>$CONFIG_STATUS <<_ACEOF cat >>$CONFIG_STATUS <<_ACEOF
ac_cs_version="\\ ac_cs_version="\\
bullet config.status 1.1.2006.0319 bullet config.status 1.5.6
configured by $0, generated by GNU Autoconf 2.59, configured by $0, generated by GNU Autoconf 2.59,
with options \\"`echo "$ac_configure_args" | sed 's/[\\""\`\$]/\\\\&/g'`\\" with options \\"`echo "$ac_configure_args" | sed 's/[\\""\`\$]/\\\\&/g'`\\"
@@ -10426,6 +10601,8 @@ s,@WINDRES@,$WINDRES,;t t
s,@ac_ct_WINDRES@,$ac_ct_WINDRES,;t t s,@ac_ct_WINDRES@,$ac_ct_WINDRES,;t t
s,@STRINGS@,$STRINGS,;t t s,@STRINGS@,$STRINGS,;t t
s,@ac_ct_STRINGS@,$ac_ct_STRINGS,;t t s,@ac_ct_STRINGS@,$ac_ct_STRINGS,;t t
s,@OBJCOPY@,$OBJCOPY,;t t
s,@ac_ct_OBJCOPY@,$ac_ct_OBJCOPY,;t t
s,@LIBTOOL_TEST@,$LIBTOOL_TEST,;t t s,@LIBTOOL_TEST@,$LIBTOOL_TEST,;t t
s,@ac_ct_LIBTOOL_TEST@,$ac_ct_LIBTOOL_TEST,;t t s,@ac_ct_LIBTOOL_TEST@,$ac_ct_LIBTOOL_TEST,;t t
s,@LIBTOOL_PATH@,$LIBTOOL_PATH,;t t s,@LIBTOOL_PATH@,$LIBTOOL_PATH,;t t

2918
mk/autoconf/config.guess vendored

File diff suppressed because it is too large Load Diff

3098
mk/autoconf/config.sub vendored Normal file → Executable file

File diff suppressed because it is too large Load Diff

View File

@@ -1,164 +1,164 @@
#============================================================================ #============================================================================
# Rules for compiling applications # Rules for compiling applications
# Copyright (C)2003 by Matze Braun <matzebraun@users.sourceforge.net> # Copyright (C)2003 by Matze Braun <matzebraun@users.sourceforge.net>
# #
# This library is free software; you can redistribute it and/or modify it # 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 # 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 # the Free Software Foundation; either version 2 of the License, or (at your
# option) any later version. # option) any later version.
# #
# This library is distributed in the hope that it will be useful, but # This library is distributed in the hope that it will be useful, but
# WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY # WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
# or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public # or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public
# License for more details. # License for more details.
# #
# You should have received a copy of the GNU Library General Public License # 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, # along with this library; if not, write to the Free Software Foundation,
# Inc., 675 Mass Ave, Cambridge, MA 02139, USA. # Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
# #
#============================================================================ #============================================================================
# Use a more sensible and typical mode for executables than Jam's default. # Use a more sensible and typical mode for executables than Jam's default.
if "$(EXEMODE)" = "711" { EXEMODE = "+x" ; } if "$(EXEMODE)" = "711" { EXEMODE = "+x" ; }
## Application appname : sources [ : options ] ## Application appname : sources [ : options ]
## Build an application out of sourcefiles. All sourcefiles will be passed ## Build an application out of sourcefiles. All sourcefiles will be passed
## to the Objects rule which tries to compile them into object-files. You ## to the Objects rule which tries to compile them into object-files. You
## can create rules for your own filetypes with the UserObject rule. Header ## can create rules for your own filetypes with the UserObject rule. Header
## files will just be ignored. They are only used for MSVC projectfile ## files will just be ignored. They are only used for MSVC projectfile
## generation. ## generation.
## Possible options are "noinstall" if you don't want a default install ## Possible options are "noinstall" if you don't want a default install
## target to be created and "console" if you're building a console ## target to be created and "console" if you're building a console
## application (an application without any graphical output which is ## application (an application without any graphical output which is
## intended to be used on commandline) ## intended to be used on commandline)
## Some notes: You should not add the .exe extension to the appname - jam ## Some notes: You should not add the .exe extension to the appname - jam
## will do that on win32. ## will do that on win32.
## Options: ## Options:
## console: Create a console application ## console: Create a console application
## noinstall: Do not set up a default installation targets. ## noinstall: Do not set up a default installation targets.
## independent: The target will not be made a dependency of the apps and ## independent: The target will not be made a dependency of the apps and
## all target. ## all target.
## nohelp: Do not invoke Help for this target. ## nohelp: Do not invoke Help for this target.
## notest: Do not set up unit-testing support for this target. ## notest: Do not set up unit-testing support for this target.
## nomanifest: (Win32/MSVC) Don't generate manifest for application. ## nomanifest: (Win32/MSVC) Don't generate manifest for application.
rule Application rule Application
{ {
# check options # check options
CheckOptions noinstall console independent nohelp notest nomanifest : $(3) : $(<) ; CheckOptions noinstall console independent nohelp notest nomanifest : $(3) : $(<) ;
local target = [ ConstructApplicationTarget $(<) : $(3) ] ; local target = [ ConstructApplicationTarget $(<) : $(3) ] ;
local sources = [ DoSourceGrist $(>) ] ; local sources = [ DoSourceGrist $(>) ] ;
local objects = [ CompileObjects $(sources) ] ; local objects = [ CompileObjects $(sources) ] ;
$(<)_TYPE = application ; $(<)_TYPE = application ;
$(<)_OBJECTS = $(objects) ; $(<)_OBJECTS = $(objects) ;
$(<)_SOURCES = $(sources) ; $(<)_SOURCES = $(sources) ;
$(<)_TARGET = $(target) ; $(<)_TARGET = $(target) ;
# so 'jam foo' works when it's really foo.exe (Windows) or foo.app (MacOS/X) # so 'jam foo' works when it's really foo.exe (Windows) or foo.app (MacOS/X)
if $(target) != $(<) if $(target) != $(<)
{ {
Depends $(<) : $(target) ; Depends $(<) : $(target) ;
NotFile $(<) ; NotFile $(<) ;
} }
# make dependency on apps target # make dependency on apps target
if ! [ IsElem independent : $(3) ] if ! [ IsElem independent : $(3) ]
{ {
Depends apps : $(<) ; Depends apps : $(<) ;
} }
# construct Install target # construct Install target
if ! [ IsElem noinstall : $(3) ] if ! [ IsElem noinstall : $(3) ]
{ {
local install_opts ; local install_opts ;
if [ IsElem console : $(3) ] if [ IsElem console : $(3) ]
{ {
install_opts += console ; install_opts += console ;
} }
SystemInstallApplication $(target) : : $(install_opts) ; SystemInstallApplication $(target) : : $(install_opts) ;
} }
# Link # Link
MakeLocate $(target) : $(LOCATE.TARGETS) ; MakeLocate $(target) : $(LOCATE.TARGETS) ;
SystemLinkApplication $(<) : $(objects) : $(3) ; SystemLinkApplication $(<) : $(objects) : $(3) ;
local cleanextra ; local cleanextra ;
if $(LINK.DEBUG.INFO.SEPARATE) = "yes" if $(LINK.DEBUG.INFO.SEPARATE) = "yes"
{ {
local debugfile = [ SplitDebugInfo $(target) ] ; local debugfile = [ SplitDebugInfo $(target) ] ;
cleanextra += $(debugfile) ; cleanextra += $(debugfile) ;
if ! [ IsElem noinstall : $(3) ] if ! [ IsElem noinstall : $(3) ]
{ {
NoCare $(debugfile) ; NoCare $(debugfile) ;
Depends install_bin : [ DoInstall $(debugfile) : $(bindir) : $(INSTALL_DATA) ] ; Depends install_bin : [ DoInstall $(debugfile) : $(bindir) : $(INSTALL_DATA) ] ;
} }
} }
CFlags $(<) : $(APPLICATION.CFLAGS) ; CFlags $(<) : $(APPLICATION.CFLAGS) ;
LFlags $(<) : $(LINKLIBS) $(APPLICATION.LFLAGS) ; LFlags $(<) : $(LINKLIBS) $(APPLICATION.LFLAGS) ;
# create target clean rule # create target clean rule
Always $(<)clean ; Always $(<)clean ;
NotFile $(<)clean ; NotFile $(<)clean ;
Clean $(<)clean : $(objects) $(cleanextra) ; Clean $(<)clean : $(objects) $(cleanextra) ;
Clean clean : $(cleanextra) ; Clean clean : $(cleanextra) ;
if ! [ IsElem nohelp : $(3) ] if ! [ IsElem nohelp : $(3) ]
{ {
local desc = [ Description $(<) ] ; local desc = [ Description $(<) ] ;
if ! $(desc) { desc = "$(<) application" ; } if ! $(desc) { desc = "$(<) application" ; }
Help $(<) : "Build the $(desc)" ; Help $(<) : "Build the $(desc)" ;
} }
if ! [ IsElem notest : $(options) ] if ! [ IsElem notest : $(options) ]
{ {
# @@@ Disabled for now; see docs/todo_jam.txt # @@@ Disabled for now; see docs/todo_jam.txt
#UnitTest $(<) ; #UnitTest $(<) ;
} }
} }
## ShellScript scriptname : rule [ : options ] ## ShellScript scriptname : rule [ : options ]
## Build a shell script by invoking `rule', the script creation rule, which ## Build a shell script by invoking `rule', the script creation rule, which
## is passed `scriptname' and `options'. ## is passed `scriptname' and `options'.
## Options: ## Options:
## noinstall: Do not set up a default installation target. ## noinstall: Do not set up a default installation target.
## nohelp: Do not invoke Help for this target. ## nohelp: Do not invoke Help for this target.
rule ShellScript rule ShellScript
{ {
CheckOptions noinstall nohelp : $(3) : $(<) ; CheckOptions noinstall nohelp : $(3) : $(<) ;
Always $(<)clean ; Always $(<)clean ;
NotFile $(<)clean ; NotFile $(<)clean ;
Clean clean : $(<) ; Clean clean : $(<) ;
Clean $(<)clean : $(<) ; Clean $(<)clean : $(<) ;
Depends apps : $(<) ; Depends apps : $(<) ;
MakeLocate $(<) : $(LOCATE.TARGETS) ; MakeLocate $(<) : $(LOCATE.TARGETS) ;
if ! [ IsElem noinstall : $(3) ] if ! [ IsElem noinstall : $(3) ]
{ {
Depends install_bin : [ DoInstall $(<) : $(bindir) : $(INSTALL_PROGRAM) ] ; Depends install_bin : [ DoInstall $(<) : $(bindir) : $(INSTALL_PROGRAM) ] ;
} }
$(2) $(<) : $(3) ; $(2) $(<) : $(3) ;
MODE on $(<) = $(EXEMODE) ; MODE on $(<) = $(EXEMODE) ;
SUBDIR on $(<) = $(SUBDIR) ; SUBDIR on $(<) = $(SUBDIR) ;
Chmod $(<) ; Chmod $(<) ;
if ! [ IsElem nohelp : $(3) ] if ! [ IsElem nohelp : $(3) ]
{ {
local desc = [ Description $(<) ] ; local desc = [ Description $(<) ] ;
if ! $(desc) { desc = "$(<) script" ; } if ! $(desc) { desc = "$(<) script" ; }
Help $(<) : "Build the $(desc)" ; Help $(<) : "Build the $(desc)" ;
} }
} }
#---------------------------------------------------------------------------- #----------------------------------------------------------------------------
# private part # private part
# Construct pseudo target apps which is used instead of the pseudo target exe # Construct pseudo target apps which is used instead of the pseudo target exe
# in Jambase # in Jambase
Depends exe : apps ; Depends exe : apps ;
NotFile apps ; NotFile apps ;
Help apps : "Build all applications" ; Help apps : "Build all applications" ;

View File

@@ -1,50 +1,50 @@
#============================================================================ #============================================================================
# Rules for handling assembler files # Rules for handling assembler files
# Copyright (C)2003 by Matze Braun <matzebraun@users.sourceforge.net> # Copyright (C)2003 by Matze Braun <matzebraun@users.sourceforge.net>
# #
# This library is free software; you can redistribute it and/or modify it # 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 # 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 # the Free Software Foundation; either version 2 of the License, or (at your
# option) any later version. # option) any later version.
# #
# This library is distributed in the hope that it will be useful, but # This library is distributed in the hope that it will be useful, but
# WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY # WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
# or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public # or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public
# License for more details. # License for more details.
# #
# You should have received a copy of the GNU Library General Public License # 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, # along with this library; if not, write to the Free Software Foundation,
# Inc., 675 Mass Ave, Cambridge, MA 02139, USA. # Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
# #
#============================================================================ #============================================================================
if $(CMD.NASM) if $(CMD.NASM)
{ {
rule NasmRule rule NasmRule
{ {
local object = [ DoObjectGrist [ PrefixSuffix $(>)_ : $(<) : $(SUFOBJ) ] ] ; local object = [ DoObjectGrist [ PrefixSuffix $(>)_ : $(<) : $(SUFOBJ) ] ] ;
Nasm $(object) : $(<) ; Nasm $(object) : $(<) ;
return $(object) ; return $(object) ;
} }
RegisterFileType NasmRule : .asm ; RegisterFileType NasmRule : .asm ;
rule Nasm rule Nasm
{ {
Depends $(<) : $(>) ; Depends $(<) : $(>) ;
NASM.FLAGS on $(<) += $(NASM.FLAGS) ; NASM.FLAGS on $(<) += $(NASM.FLAGS) ;
# NASM doesn't scan for headers in current dir of the files, so add the dir of # NASM doesn't scan for headers in current dir of the files, so add the dir of
# the file to the -I flags # the file to the -I flags
local includeflags = [ FIncludes $(SEARCH_SOURCE)/$(<:D) $(SUBDIRHDRS) $(HDRS) ] ; local includeflags = [ FIncludes $(SEARCH_SOURCE)/$(<:D) $(SUBDIRHDRS) $(HDRS) ] ;
# NASM requires that -I paths have a trailing slash. # NASM requires that -I paths have a trailing slash.
INCLUDEFLAGS on $(<) = $(includeflags)$(SLASH) ; INCLUDEFLAGS on $(<) = $(includeflags)$(SLASH) ;
} }
NASM.HDRPATTERN = "^[ ]*%[ ]*include[ ]*[<\"]([^\">]*)[\">].*$" ; NASM.HDRPATTERN = "^[ ]*%[ ]*include[ ]*[<\"]([^\">]*)[\">].*$" ;
RegisterHeaderRule HeaderRule : $(NASM.HDRPATTERN) : .asm .ash ; RegisterHeaderRule HeaderRule : $(NASM.HDRPATTERN) : .asm .ash ;
actions Nasm actions Nasm
{ {
$(CMD.NASM) $(NASM.FLAGS) $(INCLUDEFLAGS) -o $(<) $(>) $(CMD.NASM) $(NASM.FLAGS) $(INCLUDEFLAGS) -o $(<) $(>)
} }
} }

View File

@@ -1,165 +1,165 @@
#============================================================================ #============================================================================
# Rules for flex and bison # Rules for flex and bison
# Copyright (C)2003 by Matze Braun <matzebraun@users.sourceforge.net> # Copyright (C)2003 by Matze Braun <matzebraun@users.sourceforge.net>
# #
# This library is free software; you can redistribute it and/or modify it # 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 # 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 # the Free Software Foundation; either version 2 of the License, or (at your
# option) any later version. # option) any later version.
# #
# This library is distributed in the hope that it will be useful, but # This library is distributed in the hope that it will be useful, but
# WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY # WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
# or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public # or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public
# License for more details. # License for more details.
# #
# You should have received a copy of the GNU Library General Public License # 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, # along with this library; if not, write to the Free Software Foundation,
# Inc., 675 Mass Ave, Cambridge, MA 02139, USA. # Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
# #
#============================================================================ #============================================================================
if $(CMD.FLEX) if $(CMD.FLEX)
{ {
# Some versions of Flex-generated files want to include <unistd.h> which is # Some versions of Flex-generated files want to include <unistd.h> which is
# not normally available on Windows, so we need to protect it. We also # not normally available on Windows, so we need to protect it. We also
# filter out CVS `Header' keywords in order to prevent CVS from thinking that # filter out CVS `Header' keywords in order to prevent CVS from thinking that
# the file has changed simply because the Header information is different. # the file has changed simply because the Header information is different.
FLEX.SED_SCRIPT = FLEX.SED_SCRIPT =
"'s/\\([ ]*#[ ]*include[ ][ ]*<unistd.h>\\)/#ifndef WIN32\\ "'s/\\([ ]*#[ ]*include[ ][ ]*<unistd.h>\\)/#ifndef WIN32\\
\\1\\ \\1\\
#endif/;/\$Header:/d'" ; #endif/;/\$Header:/d'" ;
# Compilers such as MSVC do not like #line directives. Since the generated # Compilers such as MSVC do not like #line directives. Since the generated
# file might get stored in CVS and used by MSVC users (even if generated on # file might get stored in CVS and used by MSVC users (even if generated on
# Unix, for instance), we want to suppress #line directives in all cases. # Unix, for instance), we want to suppress #line directives in all cases.
FLEX.FLAGS += -L ; FLEX.FLAGS += -L ;
rule FlexRule rule FlexRule
{ {
local object ; local object ;
local cfile = [ DoObjectGrist $(<:S=.c) ] ; local cfile = [ DoObjectGrist $(<:S=.c) ] ;
MakeLocate $(cfile) : $(LOCATE_TARGET) ; MakeLocate $(cfile) : $(LOCATE_TARGET) ;
SEARCH on $(cfile) = $(LOCATE_TARGET) ; SEARCH on $(cfile) = $(LOCATE_TARGET) ;
Flex $(cfile) : $(<) ; Flex $(cfile) : $(<) ;
object = [ CompileObjects $(cfile) : $(>) ] ; object = [ CompileObjects $(cfile) : $(>) ] ;
return $(object) ; return $(object) ;
} }
RegisterFileType FlexRule : .l ; RegisterFileType FlexRule : .l ;
rule Flex++Rule rule Flex++Rule
{ {
local object ; local object ;
local cppfile = [ DoObjectGrist $(<:S=.cpp) ] ; local cppfile = [ DoObjectGrist $(<:S=.cpp) ] ;
MakeLocate $(cppfile) : $(LOCATE_TARGET) ; MakeLocate $(cppfile) : $(LOCATE_TARGET) ;
SEARCH on $(cppfile) = $(LOCATE_TARGET) ; SEARCH on $(cppfile) = $(LOCATE_TARGET) ;
Flex $(cppfile) : $(<) ; Flex $(cppfile) : $(<) ;
object = [ CompileObjects $(cppfile) : $(>) ] ; object = [ CompileObjects $(cppfile) : $(>) ] ;
return $(object) ; return $(object) ;
} }
RegisterFileType Flex++Rule : .ll ; RegisterFileType Flex++Rule : .ll ;
rule Flex rule Flex
{ {
Depends $(<) : $(>) ; Depends $(<) : $(>) ;
FLEX.FLAGS on $(<) += $(FLEX.FLAGS) ; FLEX.FLAGS on $(<) += $(FLEX.FLAGS) ;
} }
# Use -t and output redirection to avoid flex choosing undesirable names for # Use -t and output redirection to avoid flex choosing undesirable names for
# its output files. Also apply FLEX.SED_SCRIPT. # its output files. Also apply FLEX.SED_SCRIPT.
actions Flex actions Flex
{ {
$(CMD.FLEX) -t $(FLEX.FLAGS) $(>) | $(SED) $(FLEX.SED_SCRIPT) > $(<) $(CMD.FLEX) -t $(FLEX.FLAGS) $(>) | $(SED) $(FLEX.SED_SCRIPT) > $(<)
} }
} }
if $(CMD.BISON) if $(CMD.BISON)
{ {
rule BisonRule rule BisonRule
{ {
local object ; local object ;
local cfile = [ DoObjectGrist $(<:S=.c) ] ; local cfile = [ DoObjectGrist $(<:S=.c) ] ;
local headerfile = [ DoObjectGrist $(<:S=.h) ] ; local headerfile = [ DoObjectGrist $(<:S=.h) ] ;
# Jam's header file scannning doesn't use grist so we have to workaround # Jam's header file scannning doesn't use grist so we have to workaround
# this here. # this here.
Includes $(headerfile:G=$(SOURCE_GRIST:E)!$(SUBVARIANT:J=!)) : $(headerfile) ; Includes $(headerfile:G=$(SOURCE_GRIST:E)!$(SUBVARIANT:J=!)) : $(headerfile) ;
MakeLocate $(cfile) $(headerfile) : $(LOCATE_TARGET) ; MakeLocate $(cfile) $(headerfile) : $(LOCATE_TARGET) ;
BISON.FLAGS on $(cfile) = BISON.FLAGS on $(cfile) =
[ on [ DoSourceGrist $(<:S=.c) ] GetVar BISON.FLAGS ] ; [ on [ DoSourceGrist $(<:S=.c) ] GetVar BISON.FLAGS ] ;
Bison $(cfile) : $(<) ; Bison $(cfile) : $(<) ;
# Work around for jam warning about independant target when we put both # Work around for jam warning about independant target when we put both
# headerfile and cppfile in the bison line... # headerfile and cppfile in the bison line...
Includes $(cppfile) : $(headerfile) ; Includes $(cppfile) : $(headerfile) ;
object = [ CompileObjects $(cfile) : $(>) ] ; object = [ CompileObjects $(cfile) : $(>) ] ;
SEARCH on $(cfile) = $(LOCATE_TARGET) ; SEARCH on $(cfile) = $(LOCATE_TARGET) ;
SEARCH on $(headerfile) = $(LOCATE_TARGET) ; SEARCH on $(headerfile) = $(LOCATE_TARGET) ;
return $(object) ; return $(object) ;
} }
RegisterFileType BisonRule : .y ; RegisterFileType BisonRule : .y ;
rule Bison++Rule rule Bison++Rule
{ {
local object ; local object ;
local cppfile = [ DoObjectGrist $(<:S=.cpp) ] ; local cppfile = [ DoObjectGrist $(<:S=.cpp) ] ;
local headerfile = [ DoObjectGrist $(<:S=.hpp) ] ; local headerfile = [ DoObjectGrist $(<:S=.hpp) ] ;
# Jam's header file scannning doesn't use grist so we have to workaround # Jam's header file scannning doesn't use grist so we have to workaround
# this here. # this here.
Includes $(headerfile:G=$(SOURCE_GRIST:E)!$(SUBVARIANT:J=!)) : $(headerfile) ; Includes $(headerfile:G=$(SOURCE_GRIST:E)!$(SUBVARIANT:J=!)) : $(headerfile) ;
MakeLocate $(cppfile) : $(LOCATE_TARGET) ; MakeLocate $(cppfile) : $(LOCATE_TARGET) ;
MakeLocate $(headerfile) : $(LOCATE_TARGET) ; MakeLocate $(headerfile) : $(LOCATE_TARGET) ;
BISON.FLAGS on $(cppfile) = BISON.FLAGS on $(cppfile) =
[ on [ DoSourceGrist $(<:S=.cpp) ] GetVar BISON.FLAGS ] ; [ on [ DoSourceGrist $(<:S=.cpp) ] GetVar BISON.FLAGS ] ;
Bison $(cppfile) : $(<) ; Bison $(cppfile) : $(<) ;
# Work around for jam warning about independant target when we put both # Work around for jam warning about independant target when we put both
# headerfile and cppfile in the bison line... # headerfile and cppfile in the bison line...
Includes $(cppfile) : $(headerfile) ; Includes $(cppfile) : $(headerfile) ;
object = [ CompileObjects $(cppfile) : $(>) ] ; object = [ CompileObjects $(cppfile) : $(>) ] ;
SEARCH on $(cppfile) = $(LOCATE_TARGET) ; SEARCH on $(cppfile) = $(LOCATE_TARGET) ;
SEARCH on $(headerfile) = $(LOCATE_TARGET) ; SEARCH on $(headerfile) = $(LOCATE_TARGET) ;
return $(object) ; return $(object) ;
} }
RegisterFileType Bison++Rule : .yy ; RegisterFileType Bison++Rule : .yy ;
rule Bison rule Bison
{ {
Depends $(<) : $(>) ; Depends $(<) : $(>) ;
BISON.FLAGS on $(<) += $(BISON.FLAGS) ; BISON.FLAGS on $(<) += $(BISON.FLAGS) ;
} }
rule BisonFlags rule BisonFlags
{ {
local target ; local target ;
if $(<:S) = .yy if $(<:S) = .yy
{ {
target = [ DoSourceGrist $(<:S=.cpp) $(<:S=.hpp) ] ; target = [ DoSourceGrist $(<:S=.cpp) $(<:S=.hpp) ] ;
} }
else else
{ {
target = [ DoSourceGrist $(<:S=.c) $(<:S=.h) ] ; target = [ DoSourceGrist $(<:S=.c) $(<:S=.h) ] ;
} }
BISON.FLAGS on $(target) += $(>) ; BISON.FLAGS on $(target) += $(>) ;
} }
# Compilers such as MSVC do not like #line directives. Since the generated # Compilers such as MSVC do not like #line directives. Since the generated
# file might get stored in CVS and used by MSVC users (even if generated on # file might get stored in CVS and used by MSVC users (even if generated on
# Unix, for instance), we want to suppress #line directives in all cases. # Unix, for instance), we want to suppress #line directives in all cases.
BISON.FLAGS += --no-lines ; BISON.FLAGS += --no-lines ;
actions Bison actions Bison
{ {
$(CMD.BISON) -d $(BISON.FLAGS) -o $(<[1]) $(>) $(CMD.BISON) -d $(BISON.FLAGS) -o $(<[1]) $(>)
} }
} }

View File

@@ -1,83 +1,83 @@
#============================================================================ #============================================================================
# Main rules file - Includes all important rulefiles in correct order # Main rules file - Includes all important rulefiles in correct order
# Copyright (C)2003 by Matze Braun <matzebraun@users.sourceforge.net> # Copyright (C)2003 by Matze Braun <matzebraun@users.sourceforge.net>
# #
# This library is free software; you can redistribute it and/or modify it # 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 # 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 # the Free Software Foundation; either version 2 of the License, or (at your
# option) any later version. # option) any later version.
# #
# This library is distributed in the hope that it will be useful, but # This library is distributed in the hope that it will be useful, but
# WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY # WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
# or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public # or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public
# License for more details. # License for more details.
# #
# You should have received a copy of the GNU Library General Public License # 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, # along with this library; if not, write to the Free Software Foundation,
# Inc., 675 Mass Ave, Cambridge, MA 02139, USA. # Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
# #
#============================================================================ #============================================================================
# Enable if you want debug messages. # Enable if you want debug messages.
JAM_DEBUG ?= 1 ; JAM_DEBUG ?= 1 ;
jamrulesdir = $(TOP)/mk/jam ; jamrulesdir = $(TOP)/mk/jam ;
# Utility and compatibility rules used by all other scripts. # Utility and compatibility rules used by all other scripts.
include $(jamrulesdir)/jamcompatibility.jam ; include $(jamrulesdir)/jamcompatibility.jam ;
include $(jamrulesdir)/subdir.jam ; include $(jamrulesdir)/subdir.jam ;
include $(jamrulesdir)/property.jam ; include $(jamrulesdir)/property.jam ;
# This needs to be included before _and_ after all other includes (except the # This needs to be included before _and_ after all other includes (except the
# super low-level utility files above) since it optionally overrides built-in # super low-level utility files above) since it optionally overrides built-in
# rules to glean information about targets being defined. # rules to glean information about targets being defined.
include $(jamrulesdir)/dump.jam ; include $(jamrulesdir)/dump.jam ;
include $(jamrulesdir)/options.jam ; include $(jamrulesdir)/options.jam ;
include $(jamrulesdir)/variant.jam ; include $(jamrulesdir)/variant.jam ;
include $(jamrulesdir)/resource.jam ; include $(jamrulesdir)/resource.jam ;
include $(jamrulesdir)/helper.jam ; include $(jamrulesdir)/helper.jam ;
include $(jamrulesdir)/help.jam ; include $(jamrulesdir)/help.jam ;
include $(jamrulesdir)/groups.jam ; include $(jamrulesdir)/groups.jam ;
include $(jamrulesdir)/install.jam ; include $(jamrulesdir)/install.jam ;
include $(jamrulesdir)/clean.jam ; include $(jamrulesdir)/clean.jam ;
include $(jamrulesdir)/objects.jam ; include $(jamrulesdir)/objects.jam ;
include $(jamrulesdir)/compiler.jam ; include $(jamrulesdir)/compiler.jam ;
include $(jamrulesdir)/objectivec.jam ; include $(jamrulesdir)/objectivec.jam ;
include $(jamrulesdir)/assembler.jam ; include $(jamrulesdir)/assembler.jam ;
include $(jamrulesdir)/bisonflex.jam ; include $(jamrulesdir)/bisonflex.jam ;
include $(jamrulesdir)/swig.jam ; include $(jamrulesdir)/swig.jam ;
include $(jamrulesdir)/strip.jam ; include $(jamrulesdir)/strip.jam ;
include $(jamrulesdir)/flags.jam ; include $(jamrulesdir)/flags.jam ;
include $(jamrulesdir)/library.jam ; include $(jamrulesdir)/library.jam ;
include $(jamrulesdir)/static.jam ; include $(jamrulesdir)/static.jam ;
include $(jamrulesdir)/application.jam ; include $(jamrulesdir)/application.jam ;
include $(jamrulesdir)/plugin.jam ; include $(jamrulesdir)/plugin.jam ;
include $(jamrulesdir)/docs.jam ; include $(jamrulesdir)/docs.jam ;
include $(jamrulesdir)/unittest.jam ; include $(jamrulesdir)/unittest.jam ;
# Include OS specific rules # Include OS specific rules
switch $(TARGET.OS) switch $(TARGET.OS)
{ {
case WIN32 : case WIN32 :
include $(jamrulesdir)/win32.jam ; include $(jamrulesdir)/win32.jam ;
case MACOS_X : case MACOS_X :
include $(jamrulesdir)/macosx.jam ; include $(jamrulesdir)/macosx.jam ;
case UNIX : case UNIX :
include $(jamrulesdir)/unix.jam ; include $(jamrulesdir)/unix.jam ;
case * : case * :
echo "WARNING: TARGET.OS not defined. Using unix" ; echo "WARNING: TARGET.OS not defined. Using unix" ;
include $(jamrulesdir)/unix.jam ; include $(jamrulesdir)/unix.jam ;
} }
# This needs to be included after all others because it overrides some of the # This needs to be included after all others because it overrides some of the
# earlier defined rules when enabled. It even overrides Win32 rules, so it # earlier defined rules when enabled. It even overrides Win32 rules, so it
# needs to be after platform-specific includes, as well. # needs to be after platform-specific includes, as well.
include $(jamrulesdir)/msvcgen.jam ; include $(jamrulesdir)/msvcgen.jam ;
# This needs to included be before _and_ after all other includes since it # This needs to included be before _and_ after all other includes since it
# optionally overrides rules defined earlier. # optionally overrides rules defined earlier.
include $(jamrulesdir)/dump.jam ; include $(jamrulesdir)/dump.jam ;

View File

@@ -1,37 +1,37 @@
#============================================================================ #============================================================================
# Rules for cleaning build detritus. # Rules for cleaning build detritus.
# Copyright (C)2003 by Eric Sunshine <sunshine@sunshineco.com> # Copyright (C)2003 by Eric Sunshine <sunshine@sunshineco.com>
# #
# This library is free software; you can redistribute it and/or modify it # 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 # 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 # the Free Software Foundation; either version 2 of the License, or (at your
# option) any later version. # option) any later version.
# #
# This library is distributed in the hope that it will be useful, but # This library is distributed in the hope that it will be useful, but
# WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY # WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
# or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public # or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public
# License for more details. # License for more details.
# #
# You should have received a copy of the GNU Library General Public License # 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, # along with this library; if not, write to the Free Software Foundation,
# Inc., 675 Mass Ave, Cambridge, MA 02139, USA. # Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
# #
#============================================================================ #============================================================================
# CleanDir <tag> : <dir> ... # CleanDir <tag> : <dir> ...
# Forcibly delete a set of directories, even if they are not empty. # Forcibly delete a set of directories, even if they are not empty.
# Tag is one of the standard targets used with the "Clean" rule, such as # Tag is one of the standard targets used with the "Clean" rule, such as
# "clean" or "distclean". # "clean" or "distclean".
rule CleanDir rule CleanDir
{ {
Always $(<) ; Always $(<) ;
NotFile $(<) ; NotFile $(<) ;
NoCare $(>) ; NoCare $(>) ;
} }
actions piecemeal together existing CleanDir actions piecemeal together existing CleanDir
{ {
$(DELTREE) $(>) $(DELTREE) $(>)
} }
Help clean : "Remove all built targets from project" ; Help clean : "Remove all built targets from project" ;

View File

@@ -1,76 +1,76 @@
#============================================================================ #============================================================================
# Rules for C and C++ files # Rules for C and C++ files
# Copyright (C)2003 by Matze Braun <matzebraun@users.sourceforge.net> # Copyright (C)2003 by Matze Braun <matzebraun@users.sourceforge.net>
# #
# This library is free software; you can redistribute it and/or modify it # 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 # 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 # the Free Software Foundation; either version 2 of the License, or (at your
# option) any later version. # option) any later version.
# #
# This library is distributed in the hope that it will be useful, but # This library is distributed in the hope that it will be useful, but
# WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY # WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
# or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public # or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public
# License for more details. # License for more details.
# #
# You should have received a copy of the GNU Library General Public License # 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, # along with this library; if not, write to the Free Software Foundation,
# Inc., 675 Mass Ave, Cambridge, MA 02139, USA. # Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
# #
#============================================================================ #============================================================================
if $(CMD.CC) if $(CMD.CC)
{ {
rule CcRule rule CcRule
{ {
local object = local object =
[ DoObjectGrist [ PrefixSuffix $(>)_ : $(<) : $(SUFOBJ) ] ] ; [ DoObjectGrist [ PrefixSuffix $(>)_ : $(<) : $(SUFOBJ) ] ] ;
Cc $(object) : $(<) ; Cc $(object) : $(<) ;
return $(object) ; return $(object) ;
} }
RegisterFileType CcRule : .c ; RegisterFileType CcRule : .c ;
RegisterHeaderRule HeaderRule : $(HDRPATTERN) : .c ; RegisterHeaderRule HeaderRule : $(HDRPATTERN) : .c ;
rule Cc rule Cc
{ {
Depends $(<) : $(>) ; Depends $(<) : $(>) ;
CCFLAGS on $(<) += $(CCFLAGS) $(SUBDIRCCFLAGS) ; CCFLAGS on $(<) += $(CCFLAGS) $(SUBDIRCCFLAGS) ;
CCHDRS on $(<) = [ on $(<) FIncludes $(HDRS) ] ; CCHDRS on $(<) = [ on $(<) FIncludes $(HDRS) ] ;
CCDEFS on $(<) = [ on $(<) FDefines $(DEFINES) ] ; CCDEFS on $(<) = [ on $(<) FDefines $(DEFINES) ] ;
} }
actions Cc actions Cc
{ {
$(CMD.CC) -c -o $(<) $(CCHDRS) $(CCFLAGS) $(CCDEFS) $(>) $(CMD.CC) -c -o $(<) $(CCHDRS) $(CCFLAGS) $(CCDEFS) $(>)
} }
} # end if $(CMD.CC) } # end if $(CMD.CC)
if $(CMD.C++) if $(CMD.C++)
{ {
rule C++Rule rule C++Rule
{ {
local object = local object =
[ DoObjectGrist [ PrefixSuffix $(>)_ : $(<) : $(SUFOBJ) ] ] ; [ DoObjectGrist [ PrefixSuffix $(>)_ : $(<) : $(SUFOBJ) ] ] ;
C++ $(object) : $(<) ; C++ $(object) : $(<) ;
return $(object) ; return $(object) ;
} }
RegisterFileType C++Rule : .cpp .cc .c++ ; RegisterFileType C++Rule : .cpp .cc .c++ ;
RegisterHeaderRule HeaderRule : $(HDRPATTERN) : .cpp .cc .c++ ; RegisterHeaderRule HeaderRule : $(HDRPATTERN) : .cpp .cc .c++ ;
rule C++ rule C++
{ {
Depends $(<) : $(>) ; Depends $(<) : $(>) ;
C++FLAGS on $(<) += $(C++FLAGS) $(SUBDIRC++FLAGS) ; C++FLAGS on $(<) += $(C++FLAGS) $(SUBDIRC++FLAGS) ;
CCHDRS on $(<) = [ on $(<) FIncludes $(HDRS) ] ; CCHDRS on $(<) = [ on $(<) FIncludes $(HDRS) ] ;
CCDEFS on $(<) = [ on $(<) FDefines $(DEFINES) ] ; CCDEFS on $(<) = [ on $(<) FDefines $(DEFINES) ] ;
} }
actions C++ actions C++
{ {
$(CMD.C++) -c -o $(<) $(CCHDRS) $(C++FLAGS) $(CCDEFS) $(>) $(CMD.C++) -c -o $(<) $(CCHDRS) $(C++FLAGS) $(CCDEFS) $(>)
} }
} # end if $(CMD:C++) } # end if $(CMD:C++)

File diff suppressed because it is too large Load Diff

View File

@@ -1,128 +1,128 @@
#============================================================================== #==============================================================================
# Utility functions for collecting information about the Jam environment. # Utility functions for collecting information about the Jam environment.
# Copyright (C)2004 by Eric Sunshine <sunshine@sunshineco.com> # Copyright (C)2004 by Eric Sunshine <sunshine@sunshineco.com>
# #
# This library is free software; you can redistribute it and/or modify it # 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 # 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 # the Free Software Foundation; either version 2 of the License, or (at your
# option) any later version. # option) any later version.
# #
# This library is distributed in the hope that it will be useful, but # This library is distributed in the hope that it will be useful, but
# WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY # WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
# or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public # or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public
# License for more details. # License for more details.
# #
# You should have received a copy of the GNU Library General Public License # 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, # along with this library; if not, write to the Free Software Foundation,
# Inc., 675 Mass Ave, Cambridge, MA 02139, USA. # Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
# #
#============================================================================== #==============================================================================
#------------------------------------------------------------------------------ #------------------------------------------------------------------------------
# When the target "dumptargets" is invoked, dump the top-level, user-visible # When the target "dumptargets" is invoked, dump the top-level, user-visible
# build targets as a whitespace-delimited list to the file named by the Jam # build targets as a whitespace-delimited list to the file named by the Jam
# variable DUMPTARGETS_FILE. Example: # variable DUMPTARGETS_FILE. Example:
# #
# jam -sDUMPTARGETS_FILE=targets.txt dumptargets # jam -sDUMPTARGETS_FILE=targets.txt dumptargets
# #
# This output might be useful, for instance, when composing documentation (via # This output might be useful, for instance, when composing documentation (via
# some automated mechanism) which lists the targets visible to the user. # some automated mechanism) which lists the targets visible to the user.
# #
# IMPLEMENTATION NOTES # IMPLEMENTATION NOTES
# #
# The emitted target names are collected from several locations: # The emitted target names are collected from several locations:
# #
# - All single-word arguments to NotFile composed of ._- and alphanumerics. # - All single-word arguments to NotFile composed of ._- and alphanumerics.
# #
# - Targets defined by the Application rule. Unlike other rules (Plugin, # - Targets defined by the Application rule. Unlike other rules (Plugin,
# Library, etc.) which compose a top-level pseudo-target using NotFile # Library, etc.) which compose a top-level pseudo-target using NotFile
# (which is thus caught by the above case), on Unix, the Application rule # (which is thus caught by the above case), on Unix, the Application rule
# does not invoke NotFile since the top-level target has the same name as # does not invoke NotFile since the top-level target has the same name as
# the generated executable. # the generated executable.
# #
# - Targets defined by the ShellScript rule, since the emitted shell scripts # - Targets defined by the ShellScript rule, since the emitted shell scripts
# have the same name as the top-level target. # have the same name as the top-level target.
# #
# Collection occurs in two phases. This file must be included by build.jam # Collection occurs in two phases. This file must be included by build.jam
# before any other utility *.jam files are included, and it must also be # before any other utility *.jam files are included, and it must also be
# included after all other utility *.jam files are included. In the first # included after all other utility *.jam files are included. In the first
# phase, the NotFile rule is re-defined so that we can catch pseudo-targets # phase, the NotFile rule is re-defined so that we can catch pseudo-targets
# created by the other utility *.jam files (we must re-define NotFile before # created by the other utility *.jam files (we must re-define NotFile before
# they are included), as well as any NotFile pseudo-targets created by Jamfiles # they are included), as well as any NotFile pseudo-targets created by Jamfiles
# throughout the project. In the second phase, the Application and ShellScript # throughout the project. In the second phase, the Application and ShellScript
# rules are re-defined (we must do so after application.jam has defined the # rules are re-defined (we must do so after application.jam has defined the
# implementations which we override). These overrides allow us to catch # implementations which we override). These overrides allow us to catch
# application and shell-script targets which project-wide Jamfiles define. # application and shell-script targets which project-wide Jamfiles define.
#------------------------------------------------------------------------------ #------------------------------------------------------------------------------
if $(DUMPTARGETS_FILE) if $(DUMPTARGETS_FILE)
{ {
# Jam does not support arithmetic, so we fake it with Roman numerals. # Jam does not support arithmetic, so we fake it with Roman numerals.
DUMPTARGETS_PASS ?= "" ; DUMPTARGETS_PASS ?= "" ;
DUMPTARGETS_PASS = "$(DUMPTARGETS_PASS)I" ; DUMPTARGETS_PASS = "$(DUMPTARGETS_PASS)I" ;
switch $(DUMPTARGETS_PASS) switch $(DUMPTARGETS_PASS)
{ {
case I : case I :
actions InitPseudoTargets actions InitPseudoTargets
{ {
$(RM) $(<) $(RM) $(<)
} }
rule DumpPseudoTargets rule DumpPseudoTargets
{ {
NotFile $(<) ; NotFile $(<) ;
Always $(<) ; Always $(<) ;
Depends $(<) : $(>) ; Depends $(<) : $(>) ;
Always $(>) ; Always $(>) ;
InitPseudoTargets $(>) ; InitPseudoTargets $(>) ;
} }
DumpPseudoTargets dumptargets : "$(DUMPTARGETS_FILE)" ; DumpPseudoTargets dumptargets : "$(DUMPTARGETS_FILE)" ;
actions together piecemeal EmitPseudoTarget actions together piecemeal EmitPseudoTarget
{ {
echo "$(>)" >> $(<) echo "$(>)" >> $(<)
} }
rule PossiblePseudoTarget rule PossiblePseudoTarget
{ {
# NoCare and Includes are not actually required; they are used here merely to # NoCare and Includes are not actually required; they are used here merely to
# avoid Jam's "using independent target" warning. Note, however, that Jam # avoid Jam's "using independent target" warning. Note, however, that Jam
# 2.4 and BoostJam try building the target despite the fact that we NoCare # 2.4 and BoostJam try building the target despite the fact that we NoCare
# about it. (Presumably this is because the targets have updating actions, # about it. (Presumably this is because the targets have updating actions,
# and those actions override the NoCare.) Consequently, we have to put up # and those actions override the NoCare.) Consequently, we have to put up
# with the "using independent target" warnings for these older Jam versions. # with the "using independent target" warnings for these older Jam versions.
NoCare $(<) ; NoCare $(<) ;
if $(JAMVERSION) != 2.4 { Includes dumptargets : $(<) ; } if $(JAMVERSION) != 2.4 { Includes dumptargets : $(<) ; }
local i ; local i ;
for i in $(<) for i in $(<)
{ {
local s = [ Match ^([A-Za-z0-9_.-]+)$ : $(i) ] ; local s = [ Match ^([A-Za-z0-9_.-]+)$ : $(i) ] ;
if $(s) if $(s)
{ {
EmitPseudoTarget "$(DUMPTARGETS_FILE)" : $(i) ; EmitPseudoTarget "$(DUMPTARGETS_FILE)" : $(i) ;
} }
} }
} }
rule NotFile rule NotFile
{ {
PossiblePseudoTarget $(<) ; PossiblePseudoTarget $(<) ;
} }
case II : case II :
rule Application rule Application
{ {
PossiblePseudoTarget $(<) $(<)clean ; PossiblePseudoTarget $(<) $(<)clean ;
} }
rule ShellScript rule ShellScript
{ {
PossiblePseudoTarget $(<) $(<)clean ; PossiblePseudoTarget $(<) $(<)clean ;
} }
} }
} }

View File

@@ -1,172 +1,172 @@
#============================================================================ #============================================================================
# Rules for specifying compiler and linker flags # Rules for specifying compiler and linker flags
# Copyright (C)2003 by Matze Braun <matzebraun@users.sourceforge.net> # Copyright (C)2003 by Matze Braun <matzebraun@users.sourceforge.net>
# #
# This library is free software; you can redistribute it and/or modify it # 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 # 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 # the Free Software Foundation; either version 2 of the License, or (at your
# option) any later version. # option) any later version.
# #
# This library is distributed in the hope that it will be useful, but # This library is distributed in the hope that it will be useful, but
# WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY # WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
# or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public # or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public
# License for more details. # License for more details.
# #
# You should have received a copy of the GNU Library General Public License # 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, # along with this library; if not, write to the Free Software Foundation,
# Inc., 675 Mass Ave, Cambridge, MA 02139, USA. # Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
# #
#============================================================================ #============================================================================
## LinkWith target : libs ## LinkWith target : libs
## Link an application with libraries. The specified libraries should have ## Link an application with libraries. The specified libraries should have
## build rules in the same project. For external libraries use the ## build rules in the same project. For external libraries use the
## ExternalLibs rule. Specify the library names without any extensions or ## ExternalLibs rule. Specify the library names without any extensions or
## the leading "lib". ## the leading "lib".
rule LinkWith rule LinkWith
{ {
local rawlibs = [ ResolveLibs $(>) ] ; local rawlibs = [ ResolveLibs $(>) ] ;
if ( $($(<)_TYPE) = library ) && ( "$($(<)_SHARED)" = "" ) if ( $($(<)_TYPE) = library ) && ( "$($(<)_SHARED)" = "" )
{ {
# LibDepends for shared libs invokes LinkWith, so prevent recursion # LibDepends for shared libs invokes LinkWith, so prevent recursion
LibDepends $(<) : $(rawlibs) ; LibDepends $(<) : $(rawlibs) ;
} }
local i libs ; local i libs ;
for i in $(rawlibs) for i in $(rawlibs)
{ {
libs += [ ConstructLibraryLinkTarget $(i) : $($(i)_SHARED) ] ; libs += [ ConstructLibraryLinkTarget $(i) : $($(i)_SHARED) ] ;
} }
Depends $($(<)_TARGET) : $(libs) ; Depends $($(<)_TARGET) : $(libs) ;
NEEDLIBS on $($(<)_TARGET) += $(libs) ; NEEDLIBS on $($(<)_TARGET) += $(libs) ;
$(<).NEEDLIBS += $(rawlibs) ; $(<).NEEDLIBS += $(rawlibs) ;
LFlags $(<) : $($($(rawlibs).EXTERNALLIBS).LFLAGS) ; LFlags $(<) : $($($(rawlibs).EXTERNALLIBS).LFLAGS) ;
} }
## CFlags target : flags [ : options ] ## CFlags target : flags [ : options ]
## Sets cflags on all sourcefiles of a library, plugin or application target ## Sets cflags on all sourcefiles of a library, plugin or application target
## This rule affects c++ and c compiler flags. ## This rule affects c++ and c compiler flags.
rule CFlags rule CFlags
{ {
CheckOptions nostatic : $(3) : $(<) ; CheckOptions nostatic : $(3) : $(<) ;
CCFLAGS on $($(<)_OBJECTS) += $(>) ; CCFLAGS on $($(<)_OBJECTS) += $(>) ;
C++FLAGS on $($(<)_OBJECTS) += $(>) ; C++FLAGS on $($(<)_OBJECTS) += $(>) ;
UnitTestCFlags $(<) : $(>) : $(3) ; UnitTestCFlags $(<) : $(>) : $(3) ;
} }
## MergeLFlags flags1 : flags2 ## MergeLFlags flags1 : flags2
## Merge two arrays of linker flags. Removes duplicate entries, however, ## Merge two arrays of linker flags. Removes duplicate entries, however,
## ensures that the correct relative right-to-left order of both flag arrays ## ensures that the correct relative right-to-left order of both flag arrays
## is kept. ## is kept.
rule MergeLFlags rule MergeLFlags
{ {
local result = ; local result = ;
local libs2 = $(2) ; local libs2 = $(2) ;
for l in $(1) for l in $(1)
{ {
if [ IsElem $(l) : $(libs2) ] if [ IsElem $(l) : $(libs2) ]
{ {
# If a flag from set 1 is in set 2, add all flags from start of set 2 # If a flag from set 1 is in set 2, add all flags from start of set 2
# to the occurance of the flag to result. # to the occurance of the flag to result.
while "$(libs2[1])" != "" && $(libs2[1]) != $(l) while "$(libs2[1])" != "" && $(libs2[1]) != $(l)
{ {
result += $(libs2[1]) ; result += $(libs2[1]) ;
libs2 = $(libs2[2-]) ; libs2 = $(libs2[2-]) ;
} }
result += $(libs2[1]) ; result += $(libs2[1]) ;
libs2 = $(libs2[2-]) ; libs2 = $(libs2[2-]) ;
} }
else else
{ {
# Just add the flag. # Just add the flag.
result += $(l) ; result += $(l) ;
} }
} }
result += $(libs2) ; result += $(libs2) ;
return $(result) ; return $(result) ;
} }
## LFlags target : flags [ : options ] ## LFlags target : flags [ : options ]
## Sets linker flags for a library, plugin or application target ## Sets linker flags for a library, plugin or application target
rule LFlags rule LFlags
{ {
CheckOptions nostatic : $(3) : $(<) ; CheckOptions nostatic : $(3) : $(<) ;
NotFile $(>) ; NotFile $(>) ;
NEEDLIBS on $($(<)_TARGET) += $(>) ; NEEDLIBS on $($(<)_TARGET) += $(>) ;
$(<).LFLAGS += $(>) ; $(<).LFLAGS += $(>) ;
UnitTestLFlags $(<) : $(>) : $(3) ; UnitTestLFlags $(<) : $(>) : $(3) ;
} }
## ExternalLibs target : identifiers ## ExternalLibs target : identifiers
## Specify a dependency between 'target' and the external libraries ## Specify a dependency between 'target' and the external libraries
## indicated by 'identifiers'. If 'target' is an application or plugin, ## indicated by 'identifiers'. If 'target' is an application or plugin,
## then it is linked against the indicated external libraries. If 'target' ## then it is linked against the indicated external libraries. If 'target'
## is a library, then its dependency upon 'identifiers' is noted, and ## is a library, then its dependency upon 'identifiers' is noted, and
## applications or plugins which link against 'target' will also be linked ## applications or plugins which link against 'target' will also be linked
## against the libraries indicated by 'identifiers'. 'identifiers' is a ## against the libraries indicated by 'identifiers'. 'identifiers' is a
## list of base names of a set of variables which provide build tool ## list of base names of a set of variables which provide build tool
## information about each external library. In particular, assuming that ## information about each external library. In particular, assuming that
## `ident' is one element of `identifiers', the value of $(ident).CFLAGS ## `ident' is one element of `identifiers', the value of $(ident).CFLAGS
## should provide compiler flags needed for the external library indicated ## should provide compiler flags needed for the external library indicated
## by 'ident'; and $(ident).LFLAGS should provide linker flags for the ## by 'ident'; and $(ident).LFLAGS should provide linker flags for the
## library. ## library.
rule ExternalLibs rule ExternalLibs
{ {
local extlib ; local extlib ;
for extlib in $(>) for extlib in $(>)
{ {
CFlags $(<) : $($(extlib).CFLAGS) ; CFlags $(<) : $($(extlib).CFLAGS) ;
LFlags $(<) : $($(extlib).LFLAGS) ; LFlags $(<) : $($(extlib).LFLAGS) ;
$(<).EXTERNALLIBS += $(extlib) ; $(<).EXTERNALLIBS += $(extlib) ;
} }
} }
## ExtraObjects target : objectfiles [ : options ] ## ExtraObjects target : objectfiles [ : options ]
## Link additional object files with a target. ## Link additional object files with a target.
## Options: ## Options:
## inheritcflags: The mentioned object files will inherit compiler flags ## inheritcflags: The mentioned object files will inherit compiler flags
## assigned to target's normal object files (in addition to any flags ## assigned to target's normal object files (in addition to any flags
## already set manually). ## already set manually).
rule ExtraObjects rule ExtraObjects
{ {
CheckOptions inheritcflags : $(3) : $(<) ; CheckOptions inheritcflags : $(3) : $(<) ;
if [ IsElem inheritcflags : $(3) ] if [ IsElem inheritcflags : $(3) ]
{ {
$(<)_OBJECTS += $(>) ; $(<)_OBJECTS += $(>) ;
} }
EXTRAOBJECTS on $($(<)_TARGET) += $(>) ; EXTRAOBJECTS on $($(<)_TARGET) += $(>) ;
Depends $($(<)_TARGET) : $(>) ; Depends $($(<)_TARGET) : $(>) ;
Clean $(<)clean : $(>) ; Clean $(<)clean : $(>) ;
Clean clean : $(>) ; Clean clean : $(>) ;
} }
#---------------------------------------------------------------------------- #----------------------------------------------------------------------------
# private part # private part
## ResolveLibs libs ## ResolveLibs libs
## Given a list of libraries, augment the list by adding other libraries ## Given a list of libraries, augment the list by adding other libraries
## upon which the given libraries depend. Dependencies between libraries ## upon which the given libraries depend. Dependencies between libraries
## are specified via LibDepends (or LinkWith when the target is a library). ## are specified via LibDepends (or LinkWith when the target is a library).
## The returned list is ordered such that it is suitable for Unix linkers ## The returned list is ordered such that it is suitable for Unix linkers
## which are sensitive to the order of libraries in the invocation ## which are sensitive to the order of libraries in the invocation
## statement. ## statement.
rule ResolveLibs rule ResolveLibs
{ {
local i libs ; local i libs ;
for i in $(<) for i in $(<)
{ {
libs += $(i) $($(i)_depends) ; libs += $(i) $($(i)_depends) ;
} }
# We must eliminate the duplicates in reverse order in order to ensure that # We must eliminate the duplicates in reverse order in order to ensure that
# we do not destroy the overall library ordering since Unix linkers are # we do not destroy the overall library ordering since Unix linkers are
# order-sensitive. # order-sensitive.
return [ Reverse [ RemoveDups [ Reverse $(libs) ] ] ] ; return [ Reverse [ RemoveDups [ Reverse $(libs) ] ] ] ;
} }

View File

@@ -1,61 +1,61 @@
#============================================================================ #============================================================================
# Rules for building compile groups # Rules for building compile groups
# Copyright (C)2003 by Matze Braun <matzebraun@users.sourceforge.net> # Copyright (C)2003 by Matze Braun <matzebraun@users.sourceforge.net>
# #
# This library is free software; you can redistribute it and/or modify it # 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 # 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 # the Free Software Foundation; either version 2 of the License, or (at your
# option) any later version. # option) any later version.
# #
# This library is distributed in the hope that it will be useful, but # This library is distributed in the hope that it will be useful, but
# WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY # WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
# or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public # or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public
# License for more details. # License for more details.
# #
# You should have received a copy of the GNU Library General Public License # 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, # along with this library; if not, write to the Free Software Foundation,
# Inc., 675 Mass Ave, Cambridge, MA 02139, USA. # Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
# #
#============================================================================ #============================================================================
COMPILE_GROUPS = ; COMPILE_GROUPS = ;
## CompileGroups target : groups ## CompileGroups target : groups
## Adds a target to a list of compile groups. A compile group is a virtual ## Adds a target to a list of compile groups. A compile group is a virtual
## target which combines several targets. This is useful for things like a ## target which combines several targets. This is useful for things like a
## creating a target which compiles all image loaders, all renderers, etc. ## creating a target which compiles all image loaders, all renderers, etc.
rule CompileGroups rule CompileGroups
{ {
local _i ; local _i ;
for _i in $(>) for _i in $(>)
{ {
Depends $(_i) : $(<) ; Depends $(_i) : $(<) ;
Depends $(_i)clean : $(<)clean ; Depends $(_i)clean : $(<)clean ;
if ! [ IsElem $(_i) : $(COMPILE_GROUPS) ] if ! [ IsElem $(_i) : $(COMPILE_GROUPS) ]
{ {
NotFile $(_i) ; NotFile $(_i) ;
Echo "Warning: $(_i) not registered via RegisterCompileGroups" ; Echo "Warning: $(_i) not registered via RegisterCompileGroups" ;
} }
} }
} }
## RegisterCompileGroups ## RegisterCompileGroups
## Registers compile groups. You must specify all compile groups here before ## Registers compile groups. You must specify all compile groups here before
## can use them. ## can use them.
rule RegisterCompileGroups rule RegisterCompileGroups
{ {
NotFile $(<) ; NotFile $(<) ;
COMPILE_GROUPS += $(<) ; COMPILE_GROUPS += $(<) ;
local i ; local i ;
for i in $(<) for i in $(<)
{ {
local desc = [ Description $(i) ] ; local desc = [ Description $(i) ] ;
if $(desc) if $(desc)
{ {
Help $(i) : "Build the $(desc)" ; Help $(i) : "Build the $(desc)" ;
} }
} }
} }

View File

@@ -1,85 +1,85 @@
#============================================================================ #============================================================================
# Rules for collecting and emitting descriptions about targets # Rules for collecting and emitting descriptions about targets
# Copyright (C)2003 by Matze Braun <matzebraun@users.sourceforge.net> # Copyright (C)2003 by Matze Braun <matzebraun@users.sourceforge.net>
# Copyright (C)2004 by Eric Sunshine <sunshine@sunshineco.com> # Copyright (C)2004 by Eric Sunshine <sunshine@sunshineco.com>
# #
# This library is free software; you can redistribute it and/or modify it # 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 # 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 # the Free Software Foundation; either version 2 of the License, or (at your
# option) any later version. # option) any later version.
# #
# This library is distributed in the hope that it will be useful, but # This library is distributed in the hope that it will be useful, but
# WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY # WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
# or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public # or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public
# License for more details. # License for more details.
# #
# You should have received a copy of the GNU Library General Public License # 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, # along with this library; if not, write to the Free Software Foundation,
# Inc., 675 Mass Ave, Cambridge, MA 02139, USA. # Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
# #
#============================================================================ #============================================================================
## Description target [ : description ] ## Description target [ : description ]
## Provides access to the description of 'target'. The description may be ## Provides access to the description of 'target'. The description may be
## used by other rules, such as those which generate project files, or which ## used by other rules, such as those which generate project files, or which
## present informative messages to the user regarding 'target'. If invoked ## present informative messages to the user regarding 'target'. If invoked
## with two arguments, then it sets the description of 'target'. If invoked ## with two arguments, then it sets the description of 'target'. If invoked
## with one argument, then it returns the description of 'target'. You ## with one argument, then it returns the description of 'target'. You
## should invoke this rule to set the description before invoking other ## should invoke this rule to set the description before invoking other
## rules which might need access to target's description, such as the ## rules which might need access to target's description, such as the
## Application, Library, and Plugin rules. As a convenience, several generic ## Application, Library, and Plugin rules. As a convenience, several generic
## rules, such as Application, Library, and Plugin will automatically invoke ## rules, such as Application, Library, and Plugin will automatically invoke
## the Help rule for 'target' using the provided 'description'. ## the Help rule for 'target' using the provided 'description'.
rule Description rule Description
{ {
local desc = $(>) ; local desc = $(>) ;
if $(desc) if $(desc)
{ {
$(<)_description = $(desc) ; $(<)_description = $(desc) ;
} }
else else
{ {
desc = $($(<)_description) ; desc = $($(<)_description) ;
} }
return $(desc) ; return $(desc) ;
} }
## Help target : description ## Help target : description
## Specify the 'description' to emit for 'target' when the user invokes "jam ## Specify the 'description' to emit for 'target' when the user invokes "jam
## help". ## help".
rule Help rule Help
{ {
local target = $(<) ; local target = $(<) ;
local desc = $(>) ; local desc = $(>) ;
if ! $(target) { target = "" ; } if ! $(target) { target = "" ; }
if ! $(desc) { desc = "" ; } if ! $(desc) { desc = "" ; }
# target width:20, description width:54 # target width:20, description width:54
local target_pad = " " ; local target_pad = " " ;
local target_pat = "...................." ; local target_pat = "...................." ;
local desc_pad = " " ; local desc_pad = " " ;
local desc_pat = "......................................................" ; local desc_pat = "......................................................" ;
local m = Match ; # Indirect invocation allows variables in pattern regex. local m = Match ; # Indirect invocation allows variables in pattern regex.
local target_str = [ $(m) "($(target_pat)).*" : "$(target)$(target_pad)" ] ; local target_str = [ $(m) "($(target_pat)).*" : "$(target)$(target_pad)" ] ;
local desc_str = [ $(m) "($(desc_pat)).*" : "$(desc)$(desc_pad)" ] ; local desc_str = [ $(m) "($(desc_pat)).*" : "$(desc)$(desc_pad)" ] ;
local help = "jam $(target_str) $(desc_str)" ; local help = "jam $(target_str) $(desc_str)" ;
target = $(target:G=help) ; target = $(target:G=help) ;
Depends help : $(target) ; Depends help : $(target) ;
NotFile $(help) ; NotFile $(help) ;
PrintHelp $(target) : $(help) ; PrintHelp $(target) : $(help) ;
Always $(target) ; Always $(target) ;
NotFile $(target) ; NotFile $(target) ;
} }
actions quietly PrintHelp actions quietly PrintHelp
{ {
echo "$(>)" echo "$(>)"
} }
NotFile help ; NotFile help ;
Always help ; Always help ;
Help all : "Build the entire project" ; Help all : "Build the entire project" ;

File diff suppressed because it is too large Load Diff

View File

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

View File

@@ -1,349 +1,349 @@
#============================================================================ #============================================================================
# Several hacks to make the build compatible with certain old/broken jam # Several hacks to make the build compatible with certain old/broken jam
# versions # versions
# Copyright (C)2003 by Matze Braun <matzebraun@users.sourceforge.net> # Copyright (C)2003 by Matze Braun <matzebraun@users.sourceforge.net>
# #
# This library is free software; you can redistribute it and/or modify it # 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 # 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 # the Free Software Foundation; either version 2 of the License, or (at your
# option) any later version. # option) any later version.
# #
# This library is distributed in the hope that it will be useful, but # This library is distributed in the hope that it will be useful, but
# WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY # WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
# or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public # or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public
# License for more details. # License for more details.
# #
# You should have received a copy of the GNU Library General Public License # 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, # along with this library; if not, write to the Free Software Foundation,
# Inc., 675 Mass Ave, Cambridge, MA 02139, USA. # Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
# #
#============================================================================ #============================================================================
# BoostJam is evil: It is compatible to Jam 2.4 but has a version number 3.1, # BoostJam is evil: It is compatible to Jam 2.4 but has a version number 3.1,
# we try to detect BoostJam with the ARGV extension. # we try to detect BoostJam with the ARGV extension.
if $(ARGV[0]) if $(ARGV[0])
{ {
# BoostJam hacks. # BoostJam hacks.
JAMVERSION = 2.4 ; JAMVERSION = 2.4 ;
rule FIncludes rule FIncludes
{ {
return -I$(<) ; return -I$(<) ;
} }
rule FDefines rule FDefines
{ {
return -D$(<) ; return -D$(<) ;
} }
} }
if $(JAMVERSION) < 2.4 if $(JAMVERSION) < 2.4
{ {
EXIT "Error: This buildsystem requires jam version 2.4 or later." ; EXIT "Error: This buildsystem requires jam version 2.4 or later." ;
} }
# All scripts invoked by the build system expect a Bourne or compatible shell. # All scripts invoked by the build system expect a Bourne or compatible shell.
# Reject C-shell and its variants (such as tcsh). Unfortunately, this is a bit # Reject C-shell and its variants (such as tcsh). Unfortunately, this is a bit
# of an ugly hack. It would be nicer to perform this logic at the very end of # of an ugly hack. It would be nicer to perform this logic at the very end of
# this file as a last-minute assertion. Unfortunately, however, it seems that # this file as a last-minute assertion. Unfortunately, however, it seems that
# references to $(SHELL) in any of the included files get bound at the point # references to $(SHELL) in any of the included files get bound at the point
# of reference, thus we need to perform this filtering as early as possible. # of reference, thus we need to perform this filtering as early as possible.
# Furthermore, on Windows, if the MSYS installation path contains a space (such # Furthermore, on Windows, if the MSYS installation path contains a space (such
# as "c:\Program Files\msys"), the space will cause `actions' to fail which # as "c:\Program Files\msys"), the space will cause `actions' to fail which
# employ $(SHELL) indirectly through some other variable. Therefore, handle # employ $(SHELL) indirectly through some other variable. Therefore, handle
# this case as well. # this case as well.
if [ Match (csh) : $(SHELL) ] || $(SHELL[2]) if [ Match (csh) : $(SHELL) ] || $(SHELL[2])
{ {
SHELL = "/bin/sh" ; SHELL = "/bin/sh" ;
} }
# Jam 2.4's SubDir rule had some problems and misses the useful SUBDIRRULES # Jam 2.4's SubDir rule had some problems and misses the useful SUBDIRRULES
# extension. So we override it here with a better version (from jam 2.5rc3). # extension. So we override it here with a better version (from jam 2.5rc3).
# Likewise, 2.4 is missing FReverse and FStrip, which are needed by SubDir and # Likewise, 2.4 is missing FReverse and FStrip, which are needed by SubDir and
# other custom rules we define. # other custom rules we define.
if $(JAMVERSION) = 2.4 if $(JAMVERSION) = 2.4
{ {
rule FReverse rule FReverse
{ {
# FReverse a1 a2 a3 ... ; # FReverse a1 a2 a3 ... ;
# return ... a3 a2 a1 ; # return ... a3 a2 a1 ;
if $(1) { return [ FReverse $(1[2-]) ] $(1[1]) ; } if $(1) { return [ FReverse $(1[2-]) ] $(1[1]) ; }
} }
rule FStripCommon rule FStripCommon
{ {
# FStripCommon v1 : v2 ; # FStripCommon v1 : v2 ;
# Strip common initial elements of variables v1 and v2. # Strip common initial elements of variables v1 and v2.
# Modifies the variable values themselves. # Modifies the variable values themselves.
if $($(<)[1]) && $($(<)[1]) = $($(>)[1]) if $($(<)[1]) && $($(<)[1]) = $($(>)[1])
{ {
$(<) = $($(<)[2-]) ; $(<) = $($(<)[2-]) ;
$(>) = $($(>)[2-]) ; $(>) = $($(>)[2-]) ;
FStripCommon $(<) : $(>) ; FStripCommon $(<) : $(>) ;
} }
} }
rule SubDir rule SubDir
{ {
# #
# SubDir TOP d1 d2 ... ; # SubDir TOP d1 d2 ... ;
# #
# Support for a project tree spanning multiple directories. # Support for a project tree spanning multiple directories.
# #
# SubDir declares a Jamfile's location in a project tree, setting # SubDir declares a Jamfile's location in a project tree, setting
# Jambase variables (SEARCH_SOURCE, LOCATE_TARGET) so that source # Jambase variables (SEARCH_SOURCE, LOCATE_TARGET) so that source
# files can be found. # files can be found.
# #
# TOP is a user-select variable name for root of the tree, and # TOP is a user-select variable name for root of the tree, and
# d1 d2 ... are the directory elements that lead from the root # d1 d2 ... are the directory elements that lead from the root
# of the tree to the directory of the Jamfile. # of the tree to the directory of the Jamfile.
# #
# TOP can be set externally, but normally the first SubDir call # TOP can be set externally, but normally the first SubDir call
# computes TOP as the path up from the current directory; the # computes TOP as the path up from the current directory; the
# path contains one ../ for each of d1 d2 ... # path contains one ../ for each of d1 d2 ...
# #
# SubDir reads once the project-specific rules file Jamrules # SubDir reads once the project-specific rules file Jamrules
# in the TOP directory, if present. This can be overridden # in the TOP directory, if present. This can be overridden
# with the variable TOPRULES. # with the variable TOPRULES.
# #
# SubDir supports multiple, overlaid project trees: SubDir # SubDir supports multiple, overlaid project trees: SubDir
# invocations with different TOPs can appear in the same Jamfile. # invocations with different TOPs can appear in the same Jamfile.
# The location established by the first SubDir call is used set # The location established by the first SubDir call is used set
# the TOPs for the subsequent SubDir calls. # the TOPs for the subsequent SubDir calls.
# #
# SubDir's public variables: # SubDir's public variables:
# #
# $(TOP) = path from CWD to root. # $(TOP) = path from CWD to root.
# $(SUBDIR) = path from CWD to the directory SubDir names. # $(SUBDIR) = path from CWD to the directory SubDir names.
# $(SUBDIR_TOKENS) = path from $(TOP) to $(SUBDIR) as dir names # $(SUBDIR_TOKENS) = path from $(TOP) to $(SUBDIR) as dir names
# $(SEARCH_SOURCE) = $(SUBDIR) # $(SEARCH_SOURCE) = $(SUBDIR)
# $(LOCATE_SOURCE) = $(ALL_LOCATE_TARGET) $(SUBDIR) # $(LOCATE_SOURCE) = $(ALL_LOCATE_TARGET) $(SUBDIR)
# $(LOCATE_TARGET) = $(ALL_LOCATE_TARGET) $(SUBDIR) # $(LOCATE_TARGET) = $(ALL_LOCATE_TARGET) $(SUBDIR)
# $(SOURCE_GRIST) = $(SUBDIR_TOKENS) with !'s # $(SOURCE_GRIST) = $(SUBDIR_TOKENS) with !'s
# #
local _top = $(<[1]) ; local _top = $(<[1]) ;
local _tokens = $(<[2-]) ; local _tokens = $(<[2-]) ;
# #
# First time through sets up relative root and includes Jamrules. # First time through sets up relative root and includes Jamrules.
# #
if ! $(_top) if ! $(_top)
{ {
Exit SubDir syntax error ; Exit SubDir syntax error ;
} }
if ! $($(_top)-SET) if ! $($(_top)-SET)
{ {
$(_top)-SET = true ; $(_top)-SET = true ;
# First time we've seen this TOP. # First time we've seen this TOP.
# We'll initialize a number of internal variables: # We'll initialize a number of internal variables:
# #
# $(TOP-UP) = directories from ROOT to a common point # $(TOP-UP) = directories from ROOT to a common point
# $(TOP-DOWN) = directories from common point to TOP # $(TOP-DOWN) = directories from common point to TOP
# $(TOP-ROOT) = root directory for UP/DOWN -- normally CWD # $(TOP-ROOT) = root directory for UP/DOWN -- normally CWD
# $(SUBDIR_UP) = current value of $(TOP-UP) # $(SUBDIR_UP) = current value of $(TOP-UP)
# $(SUBDIR_DOWN) = current value of $(TOP-DOWN) # $(SUBDIR_DOWN) = current value of $(TOP-DOWN)
# $(SUBDIR_ROOT) = current value of $(TOP-ROOT) # $(SUBDIR_ROOT) = current value of $(TOP-ROOT)
# #
if $($(_top)) if $($(_top))
{ {
# TOP externally set. # TOP externally set.
# We'll ignore the relative (UP/DOWN) path that # We'll ignore the relative (UP/DOWN) path that
# got us here, and instead remember the hard ROOT. # got us here, and instead remember the hard ROOT.
$(_top)-UP = ; $(_top)-UP = ;
$(_top)-DOWN = ; $(_top)-DOWN = ;
$(_top)-ROOT = $($(_top)) ; $(_top)-ROOT = $($(_top)) ;
} }
else else
{ {
# TOP not preset. # TOP not preset.
# Establishing a new TOP. In the simplest case, # Establishing a new TOP. In the simplest case,
# (SUBDIR_UP/SUBDIR_DOWN/SUBDIR_ROOT unset), it's # (SUBDIR_UP/SUBDIR_DOWN/SUBDIR_ROOT unset), it's
# merely a certain number of directories down from # merely a certain number of directories down from
# the current directory, and FSubDirPath will set # the current directory, and FSubDirPath will set
# TOP to a path consisting of ../ for each of the # TOP to a path consisting of ../ for each of the
# elements of _tokens, because that represents how # elements of _tokens, because that represents how
# far below TOP the current directory sits. # far below TOP the current directory sits.
# #
# In the more complicated case, the starting directory # In the more complicated case, the starting directory
# isn't the directory of jam's invocation but an # isn't the directory of jam's invocation but an
# location established by previous SubDir call. The # location established by previous SubDir call. The
# starting directory is SUBDIR_UP directories up from # starting directory is SUBDIR_UP directories up from
# SUBDIR_ROOT, and then SUBDIR_DOWN directories down # SUBDIR_ROOT, and then SUBDIR_DOWN directories down
# from that. If SUBDIR_ROOT is not set, that means # from that. If SUBDIR_ROOT is not set, that means
# SUBDIR_DOWN and SUBDIR_UP represent the path from # SUBDIR_DOWN and SUBDIR_UP represent the path from
# the directory of jam's invocation. # the directory of jam's invocation.
# #
# In the most complicated case, the _tokens also # In the most complicated case, the _tokens also
# represents directories down, because TOP is being # represents directories down, because TOP is being
# estalished in a directory other than TOP's root. # estalished in a directory other than TOP's root.
# Hopefully, _tokens and SUBDIR_DOWN represent the # Hopefully, _tokens and SUBDIR_DOWN represent the
# same final directory, relative to the new TOP and # same final directory, relative to the new TOP and
# the previous SubDIr's TOP. To find the new TOP, # the previous SubDIr's TOP. To find the new TOP,
# we have to chop off any common directories from # we have to chop off any common directories from
# then ends of _tokens and SUBDIR_DOWN. To do so, # then ends of _tokens and SUBDIR_DOWN. To do so,
# we reverse each of them, call FStripCommon to # we reverse each of them, call FStripCommon to
# remove the initial common elements, and then # remove the initial common elements, and then
# reverse them again. After this process, if # reverse them again. After this process, if
# both _tokens and SUBDIR_DOWN have elements, it # both _tokens and SUBDIR_DOWN have elements, it
# means the directory names estalished by the two # means the directory names estalished by the two
# SubDir calls don't match, and a warning is issued. # SubDir calls don't match, and a warning is issued.
# All hell will likely break loose at this point, # All hell will likely break loose at this point,
# since the whole SubDir scheme relies on the SubDir # since the whole SubDir scheme relies on the SubDir
# calls accurately naming the current directory. # calls accurately naming the current directory.
# Strip common trailing elements of _tokens and SUBDIR_DOWN. # Strip common trailing elements of _tokens and SUBDIR_DOWN.
_tokens = [ FReverse $(_tokens) ] ; _tokens = [ FReverse $(_tokens) ] ;
SUBDIR_DOWN = [ FReverse $(SUBDIR_DOWN) ] ; SUBDIR_DOWN = [ FReverse $(SUBDIR_DOWN) ] ;
FStripCommon _tokens : SUBDIR_DOWN ; FStripCommon _tokens : SUBDIR_DOWN ;
SUBDIR_DOWN = [ FReverse $(SUBDIR_DOWN) ] ; SUBDIR_DOWN = [ FReverse $(SUBDIR_DOWN) ] ;
_tokens = [ FReverse $(_tokens) ] ; _tokens = [ FReverse $(_tokens) ] ;
if $(SUBDIR_DOWN) && $(_tokens) if $(SUBDIR_DOWN) && $(_tokens)
{ {
Echo Warning: SubDir $(<) misplaced! ; Echo Warning: SubDir $(<) misplaced! ;
} }
# We'll remember the relative (UP/DOWN) path that # We'll remember the relative (UP/DOWN) path that
# got us here, plus any hard ROOT starting point # got us here, plus any hard ROOT starting point
# for the UP/DOWN. If TOP is never set externally, # for the UP/DOWN. If TOP is never set externally,
# ROOT will always be "" (directory of jam's invocation). # ROOT will always be "" (directory of jam's invocation).
$(_top)-UP = $(SUBDIR_UP) $(_tokens) ; $(_top)-UP = $(SUBDIR_UP) $(_tokens) ;
$(_top)-DOWN = $(SUBDIR_DOWN) ; $(_top)-DOWN = $(SUBDIR_DOWN) ;
$(_top)-ROOT = $(SUBDIR_ROOT:E="") ; $(_top)-ROOT = $(SUBDIR_ROOT:E="") ;
$(_top) = [ FSubDirPath $(_top) ] ; $(_top) = [ FSubDirPath $(_top) ] ;
} }
# Set subdir vars for the inclusion of the Jamrules, # Set subdir vars for the inclusion of the Jamrules,
# just in case they have SubDir rules of their own. # just in case they have SubDir rules of their own.
# Note that SUBDIR_DOWN is empty: it's all the way # Note that SUBDIR_DOWN is empty: it's all the way
# up where the Jamrules live. These gets overrided # up where the Jamrules live. These gets overrided
# just after the inclusion. # just after the inclusion.
SUBDIR_UP = $($(_top)-UP) ; SUBDIR_UP = $($(_top)-UP) ;
SUBDIR_DOWN = ; SUBDIR_DOWN = ;
SUBDIR_ROOT = $($(_top)-ROOT) ; SUBDIR_ROOT = $($(_top)-ROOT) ;
# Include $(TOPRULES) or $(TOP)/Jamrules. # Include $(TOPRULES) or $(TOP)/Jamrules.
# Include $(TOPRULES) if set. # Include $(TOPRULES) if set.
# Otherwise include $(TOP)/Jamrules if present. # Otherwise include $(TOP)/Jamrules if present.
if $($(_top)RULES) { if $($(_top)RULES) {
include $($(_top)RULES) ; include $($(_top)RULES) ;
} else { } else {
NoCare $(JAMRULES:R=$($(_top)):G=$(_top)) ; NoCare $(JAMRULES:R=$($(_top)):G=$(_top)) ;
include $(JAMRULES:R=$($(_top)):G=$(_top)) ; include $(JAMRULES:R=$($(_top)):G=$(_top)) ;
} }
} }
# Get path from $(TOP) to named directory. # Get path from $(TOP) to named directory.
# Save dir tokens for other potential uses. # Save dir tokens for other potential uses.
SUBDIR_UP = $($(_top)-UP) ; SUBDIR_UP = $($(_top)-UP) ;
SUBDIR_DOWN = $($(_top)-DOWN) $(_tokens) ; SUBDIR_DOWN = $($(_top)-DOWN) $(_tokens) ;
SUBDIR_ROOT = $($(_top)-ROOT) ; SUBDIR_ROOT = $($(_top)-ROOT) ;
SUBDIR_TOKENS = $(SUBDIR_DOWN) ; SUBDIR_TOKENS = $(SUBDIR_DOWN) ;
SUBDIR = [ FSubDirPath $(<) ] ; SUBDIR = [ FSubDirPath $(<) ] ;
# Now set up SEARCH_SOURCE, LOCATE_TARGET, SOURCE_GRIST # Now set up SEARCH_SOURCE, LOCATE_TARGET, SOURCE_GRIST
# These can be reset if needed. For example, if the source # These can be reset if needed. For example, if the source
# directory should not hold object files, LOCATE_TARGET can # directory should not hold object files, LOCATE_TARGET can
# subsequently be redefined. # subsequently be redefined.
SEARCH_SOURCE = $(SUBDIR) ; SEARCH_SOURCE = $(SUBDIR) ;
LOCATE_SOURCE = $(ALL_LOCATE_TARGET) $(SUBDIR) ; LOCATE_SOURCE = $(ALL_LOCATE_TARGET) $(SUBDIR) ;
LOCATE_TARGET = $(ALL_LOCATE_TARGET) $(SUBDIR) ; LOCATE_TARGET = $(ALL_LOCATE_TARGET) $(SUBDIR) ;
SOURCE_GRIST = [ FGrist $(SUBDIR_TOKENS) ] ; SOURCE_GRIST = [ FGrist $(SUBDIR_TOKENS) ] ;
# Reset per-directory ccflags, hdrs, etc, # Reset per-directory ccflags, hdrs, etc,
# listed in SUBDIRRESET. # listed in SUBDIRRESET.
# Note use of variable expanded assignment var # Note use of variable expanded assignment var
SUBDIR$(SUBDIRRESET) = ; SUBDIR$(SUBDIRRESET) = ;
# Invoke user-specific SubDir extensions, # Invoke user-specific SubDir extensions,
# rule names listed in SUBDIRRULES. # rule names listed in SUBDIRRULES.
# Note use of variable expanded rule invocation # Note use of variable expanded rule invocation
$(SUBDIRRULES) $(<) ; $(SUBDIRRULES) $(<) ;
} }
rule FSubDirPath rule FSubDirPath
{ {
# FSubDirPath TOP d1 ... ; # FSubDirPath TOP d1 ... ;
# Returns path to named directory. # Returns path to named directory.
# If jam is invoked in a subdirectory of the TOP, then we # If jam is invoked in a subdirectory of the TOP, then we
# need to prepend a ../ for every level we must climb up # need to prepend a ../ for every level we must climb up
# (TOP-UP), and then append the directory names we must # (TOP-UP), and then append the directory names we must
# climb down (TOP-DOWN), plus the named directories d1 ... # climb down (TOP-DOWN), plus the named directories d1 ...
# If TOP was set externally, or computed from another TOP # If TOP was set externally, or computed from another TOP
# that was, we'll have to reroot the whole thing at TOP-ROOT. # that was, we'll have to reroot the whole thing at TOP-ROOT.
local _r = [ FRelPath $($(<[1])-UP) : $($(<[1])-DOWN) $(<[2-]) ] ; local _r = [ FRelPath $($(<[1])-UP) : $($(<[1])-DOWN) $(<[2-]) ] ;
return $(_r:R=$($(<[1])-ROOT)) ; return $(_r:R=$($(<[1])-ROOT)) ;
} }
rule SubInclude rule SubInclude
{ {
# SubInclude TOP d1 ... ; # SubInclude TOP d1 ... ;
# #
# Include a subdirectory's Jamfile. # Include a subdirectory's Jamfile.
# We use SubDir to get there, in case the included Jamfile # We use SubDir to get there, in case the included Jamfile
# either doesn't have its own SubDir (naughty) or is a subtree # either doesn't have its own SubDir (naughty) or is a subtree
# with its own TOP. # with its own TOP.
if ! $($(<[1])) if ! $($(<[1]))
{ {
Exit SubInclude $(<[1]) without prior SubDir $(<[1]) ; Exit SubInclude $(<[1]) without prior SubDir $(<[1]) ;
} }
SubDir $(<) ; SubDir $(<) ;
include $(JAMFILE:D=$(SUBDIR)) ; include $(JAMFILE:D=$(SUBDIR)) ;
} }
rule SubRules rule SubRules
{ {
# SubRules TOP d1 ... : Other-TOP ; # SubRules TOP d1 ... : Other-TOP ;
# #
# Read another tree's Jamrules, by giving it's path according # Read another tree's Jamrules, by giving it's path according
# to this tree and it's own name. # to this tree and it's own name.
if ! $($(<[1])) if ! $($(<[1]))
{ {
Exit SubRules $(<[1]) without prior SubDir $(<[1]) ; Exit SubRules $(<[1]) without prior SubDir $(<[1]) ;
} }
SubDir $(<) ; SubDir $(<) ;
SubDir $(>) ; SubDir $(>) ;
} }
## Now we try to fix up the already messed settings ## Now we try to fix up the already messed settings
## XXX We can only hope that Jam 2.4 users don't try starting Jam from ## XXX We can only hope that Jam 2.4 users don't try starting Jam from
## subdirectories ## subdirectories
TOP-SET = true ; TOP-SET = true ;
TOP-UP = ; TOP-UP = ;
TOP-DOWN = ; TOP-DOWN = ;
TOP-ROOT = $(TOP) ; TOP-ROOT = $(TOP) ;
SUBDIR_UP = $(TOP-UP) ; SUBDIR_UP = $(TOP-UP) ;
SUBDIR_DOWN = ; SUBDIR_DOWN = ;
SUBDIR_ROOT = $(TOP-ROOT) ; SUBDIR_ROOT = $(TOP-ROOT) ;
#SubDir TOP ; #SubDir TOP ;
} # end if $(JAMVERSION) = 2.4 } # end if $(JAMVERSION) = 2.4

View File

@@ -1,323 +1,323 @@
#============================================================================ #============================================================================
# Rules for library creation # Rules for library creation
# Copyright (C)2003 by Matze Braun <matzebraun@users.sourceforge.net> # Copyright (C)2003 by Matze Braun <matzebraun@users.sourceforge.net>
# #
# This library is free software; you can redistribute it and/or modify it # 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 # 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 # the Free Software Foundation; either version 2 of the License, or (at your
# option) any later version. # option) any later version.
# #
# This library is distributed in the hope that it will be useful, but # This library is distributed in the hope that it will be useful, but
# WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY # WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
# or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public # or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public
# License for more details. # License for more details.
# #
# You should have received a copy of the GNU Library General Public License # 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, # along with this library; if not, write to the Free Software Foundation,
# Inc., 675 Mass Ave, Cambridge, MA 02139, USA. # Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
# #
#============================================================================ #============================================================================
# Suppress ar's noisy report that it created the archive we asked it to create. # Suppress ar's noisy report that it created the archive we asked it to create.
if $(AR) && $(AR[2]) = ru { AR = $(AR[1]) ruc ; } if $(AR) && $(AR[2]) = ru { AR = $(AR[1]) ruc ; }
## Library libname : sources [ : options ] ## Library libname : sources [ : options ]
## Build a library out of sourcefiles. All sourcefiles will be passed ## Build a library out of sourcefiles. All sourcefiles will be passed
## to the Objects rule which tries to compile them into object-files. You ## to the Objects rule which tries to compile them into object-files. You
## can create rules for your own filetypes with the UserObject rule. Header ## can create rules for your own filetypes with the UserObject rule. Header
## files will just be ignored. They are only used for MSVC projectfile ## files will just be ignored. They are only used for MSVC projectfile
## generation. ## generation.
## Available options are 'shared' if you want to build a shared library on ## Available options are 'shared' if you want to build a shared library on
## platforms which support that. You can specify the 'noinstall' option if ## platforms which support that. You can specify the 'noinstall' option if
## you don't want an install target generated. ## you don't want an install target generated.
## Don't specify any extensions for the library name, also leave out the ## Don't specify any extensions for the library name, also leave out the
## leading "lib". ## leading "lib".
## Options: ## Options:
## noinstall: Do not set up a default installation target. ## noinstall: Do not set up a default installation target.
## independent: The target will not be made a dependency of the libs and ## independent: The target will not be made a dependency of the libs and
## all targets. ## all targets.
## shared: Create as a shared library on supported platforms. ## shared: Create as a shared library on supported platforms.
## nohelp: Do not invoke Help for this target. ## nohelp: Do not invoke Help for this target.
## notest: Do not set up unit-testing support for this target. ## notest: Do not set up unit-testing support for this target.
## optional: Affects handling of the library in cs-config; it is only ## optional: Affects handling of the library in cs-config; it is only
## reported as available when actually built. ## reported as available when actually built.
rule Library rule Library
{ {
local options = $(3) ; local options = $(3) ;
CheckOptions noinstall independent shared nohelp notest optional : $(options) : $(<) ; CheckOptions noinstall independent shared nohelp notest optional : $(options) : $(<) ;
local target = [ ConstructLibraryTarget $(<) : $(options) ] ; local target = [ ConstructLibraryTarget $(<) : $(options) ] ;
local sources = [ DoSourceGrist $(>) ] ; local sources = [ DoSourceGrist $(>) ] ;
local objects ; local objects ;
local i ; local i ;
for i in $(sources) for i in $(sources)
{ {
if $(i:S) = $(SUFOBJ) if $(i:S) = $(SUFOBJ)
{ {
objects += $(i) ; objects += $(i) ;
} }
else else
{ {
objects += [ CompileObjects $(i) ] ; objects += [ CompileObjects $(i) ] ;
} }
} }
$(<)_TYPE = library ; $(<)_TYPE = library ;
$(<)_OBJECTS = $(objects) ; $(<)_OBJECTS = $(objects) ;
$(<)_SOURCES = $(sources) ; $(<)_SOURCES = $(sources) ;
$(<)_TARGET = $(target) ; $(<)_TARGET = $(target) ;
# so 'jam foo' works when it's really foo.exe (Windows) or foo.app (MacOS/X) # so 'jam foo' works when it's really foo.exe (Windows) or foo.app (MacOS/X)
if $(target) != $(<) if $(target) != $(<)
{ {
Depends $(<) : $(target) ; Depends $(<) : $(target) ;
NotFile $(<) ; NotFile $(<) ;
} }
# library depends on its member objects # library depends on its member objects
if ! [ IsElem independent : $(options) ] if ! [ IsElem independent : $(options) ]
{ {
if $(KEEPOBJS) if $(KEEPOBJS)
{ {
Depends obj : $(objects) ; Depends obj : $(objects) ;
} }
else else
{ {
Depends libs : $(<) ; Depends libs : $(<) ;
} }
} }
if ( ! [ IsElem shared : $(options) ] ) || ( $(BUILD_SHARED_LIBS) != "yes" ) if ( ! [ IsElem shared : $(options) ] ) || ( $(BUILD_SHARED_LIBS) != "yes" )
{ {
$(<)_SHARED = "" ; $(<)_SHARED = "" ;
LibraryStatic $(<) : $(objects) : [ Filter $(options) : shared ] : LibraryStatic $(<) : $(objects) : [ Filter $(options) : shared ] :
$(target) ; $(target) ;
} }
else else
{ {
$(<)_SHARED = "shared" ; $(<)_SHARED = "shared" ;
LibraryShared $(<) : $(objects) : $(options) : $(target) ; LibraryShared $(<) : $(objects) : $(options) : $(target) ;
} }
CFlags $(<) : $(LIBRARY.CFLAGS) ; CFlags $(<) : $(LIBRARY.CFLAGS) ;
LFlags $(<) : $(LIBRARY.LFLAGS) ; LFlags $(<) : $(LIBRARY.LFLAGS) ;
# create target clean rule # create target clean rule
Always $(<)clean ; Always $(<)clean ;
NotFile $(<)clean ; NotFile $(<)clean ;
Clean $(<)clean : $(objects) $($(<)_CLEANEXTRA) ; Clean $(<)clean : $(objects) $($(<)_CLEANEXTRA) ;
Clean clean : $($(<)_CLEANEXTRA) ; Clean clean : $($(<)_CLEANEXTRA) ;
if ! [ IsElem nohelp : $(options) ] if ! [ IsElem nohelp : $(options) ]
{ {
local desc = [ Description $(<) ] ; local desc = [ Description $(<) ] ;
if ! $(desc) { desc = "$(<) library" ; } if ! $(desc) { desc = "$(<) library" ; }
Help $(<) : "Build the $(desc)" ; Help $(<) : "Build the $(desc)" ;
} }
if ! [ IsElem notest : $(options) ] if ! [ IsElem notest : $(options) ]
{ {
UnitTest $(<) ; UnitTest $(<) ;
} }
} }
## LibDepends libname : dependant libraries ## LibDepends libname : dependant libraries
## Make Library dependant on other libraries. This will tell the build ## Make Library dependant on other libraries. This will tell the build
## system that your library uses functions from other libraries in the ## system that your library uses functions from other libraries in the
## project. Note that a library shouldn't be linked with any external ## project. Note that a library shouldn't be linked with any external
## library that should be done by the final application which uses the ## library that should be done by the final application which uses the
## library. ## library.
rule LibDepends rule LibDepends
{ {
$(<)_depends += $(>) ; $(<)_depends += $(>) ;
if "$($(<)_SHARED)" if "$($(<)_SHARED)"
{ {
LinkWith $(<) : $(>) ; LinkWith $(<) : $(>) ;
} }
UnitTestLibDepends $(<) : $(>) ; UnitTestLibDepends $(<) : $(>) ;
} }
#---------------------------------------------------------------------------- #----------------------------------------------------------------------------
# private part # private part
# LibraryStatic libname : sources : options : decoratedtarget # LibraryStatic libname : sources : options : decoratedtarget
rule LibraryStatic rule LibraryStatic
{ {
local objects = $(>) ; local objects = $(>) ;
local options = $(3) ; local options = $(3) ;
local target = $(4) ; local target = $(4) ;
# Set LOCATE for the library and its contents. The bound # Set LOCATE for the library and its contents. The bound
# value shows up as $(NEEDLIBS) on the Link actions. # value shows up as $(NEEDLIBS) on the Link actions.
# For compatibility, we only do this if the library doesn't # For compatibility, we only do this if the library doesn't
# already have a path. # already have a path.
if ! $(target:D) if ! $(target:D)
{ {
MakeLocate $(target) $(target)($(objects:BS)) : $(LOCATE.OBJECTS)/libs ; MakeLocate $(target) $(target)($(objects:BS)) : $(LOCATE.OBJECTS)/libs ;
} }
if $(NOARSCAN) if $(NOARSCAN)
{ {
# If we can't scan the library to timestamp its contents, # If we can't scan the library to timestamp its contents,
# we have to just make the library depend directly on the # we have to just make the library depend directly on the
# on-disk object files. # on-disk object files.
Depends $(target) : $(objects) ; Depends $(target) : $(objects) ;
} }
else else
{ {
# If we can scan the library, we make the library depend # If we can scan the library, we make the library depend
# on its members and each member depend on the on-disk # on its members and each member depend on the on-disk
# object file. # object file.
Depends $(target) : $(target)($(objects:BS)) ; Depends $(target) : $(target)($(objects:BS)) ;
local i ; local i ;
for i in $(objects) for i in $(objects)
{ {
Depends $(target)($(i:BS)) : $(i) ; Depends $(target)($(i:BS)) : $(i) ;
} }
} }
# Generate install rules # Generate install rules
if ! [ IsElem noinstall : $(options) ] if ! [ IsElem noinstall : $(options) ]
{ {
if "$(RANLIB)" if "$(RANLIB)"
{ {
Depends install_lib : [ DoInstall $(target) : $(libdir) : : Ranlib ] ; Depends install_lib : [ DoInstall $(target) : $(libdir) : : Ranlib ] ;
} }
else else
{ {
Depends install_lib : [ DoInstall $(target) : $(libdir) ] ; Depends install_lib : [ DoInstall $(target) : $(libdir) ] ;
} }
# Add to global library list # Add to global library list
if [ IsElem optional : $(options) ] if [ IsElem optional : $(options) ]
{ {
INSTALLEDLIBS_OPTIONAL += $(<) ; INSTALLEDLIBS_OPTIONAL += $(<) ;
} }
else else
{ {
INSTALLEDLIBS += $(<) ; INSTALLEDLIBS += $(<) ;
} }
} }
if $(CRELIB) if $(CRELIB)
{ {
CreLib $(target) : $(objects[1]) ; CreLib $(target) : $(objects[1]) ;
} }
Archive $(target) : $(objects) ; Archive $(target) : $(objects) ;
if $(RANLIB) if $(RANLIB)
{ {
Ranlib $(target) ; Ranlib $(target) ;
} }
# If we can't scan the library, we have to leave the .o's around. # If we can't scan the library, we have to leave the .o's around.
if ! ( $(NOARSCAN) || $(NOARUPDATE) || $(KEEPOBJS) ) if ! ( $(NOARSCAN) || $(NOARUPDATE) || $(KEEPOBJS) )
{ {
RmTemps $(target) : $(objects) ; RmTemps $(target) : $(objects) ;
} }
} }
# LibraryStatic libname : sources : options : decoratedtarget # LibraryStatic libname : sources : options : decoratedtarget
rule LibraryShared rule LibraryShared
{ {
local objects = $(>) ; local objects = $(>) ;
local options = $(3) ; local options = $(3) ;
local target = $(4) ; local target = $(4) ;
local linklib = [ ConstructSharedLibraryLinkLib $(<) : $(options) ] ; local linklib = [ ConstructSharedLibraryLinkLib $(<) : $(options) ] ;
local deplibs ; local deplibs ;
local i ; local i ;
for i in $(LIBDEPENDS) for i in $(LIBDEPENDS)
{ {
deplibs += [ ConstructLibraryLinkTarget $(i) : $(options) ] ; deplibs += [ ConstructLibraryLinkTarget $(i) : $(options) ] ;
} }
# Generate install rules # Generate install rules
if ! [ IsElem noinstall : $(options) ] if ! [ IsElem noinstall : $(options) ]
{ {
if $(TARGET.OS) != WIN32 if $(TARGET.OS) != WIN32
{ {
Depends install_lib : [ DoInstall $(target) : $(libdir) ] ; Depends install_lib : [ DoInstall $(target) : $(libdir) ] ;
} }
else else
{ {
Depends install_lib : [ DoInstall $(target) : $(bindir) ] ; Depends install_lib : [ DoInstall $(target) : $(bindir) ] ;
Depends install_lib : [ DoInstall $(linklib) : $(libdir) ] ; Depends install_lib : [ DoInstall $(linklib) : $(libdir) ] ;
} }
# Add to global library list # Add to global library list
if [ IsElem optional : $(options) ] if [ IsElem optional : $(options) ]
{ {
INSTALLEDLIBS_OPTIONAL += $(<) ; INSTALLEDLIBS_OPTIONAL += $(<) ;
} }
else else
{ {
INSTALLEDLIBS += $(<) ; INSTALLEDLIBS += $(<) ;
} }
} }
Depends $(<) : $(linklib) ; Depends $(<) : $(linklib) ;
if $(linklib) != $(target) if $(linklib) != $(target)
{ {
Depends $(linklib) : $(target) ; Depends $(linklib) : $(target) ;
MakeLocate $(linklib) : $(LOCATE.OBJECTS)/libs ; MakeLocate $(linklib) : $(LOCATE.OBJECTS)/libs ;
SEARCH on $(linklib) = $(LOCATE.OBJECTS)/libs ; SEARCH on $(linklib) = $(LOCATE.OBJECTS)/libs ;
} }
Depends $(target) : $(objects) ; Depends $(target) : $(objects) ;
$(<)_CLEANEXTRA += $(target) ; $(<)_CLEANEXTRA += $(target) ;
Depends $(target) : $(deplibs) ; Depends $(target) : $(deplibs) ;
CFlags $(<) : [ FDefines CS_$(<:U)_LIB ] ; CFlags $(<) : [ FDefines CS_$(<:U)_LIB ] ;
LFlags $(<) : $(LINKLIBS) ; LFlags $(<) : $(LINKLIBS) ;
SystemLinkSharedLibrary $(target) : $(objects) $(deplibs) : $(linklib) ; SystemLinkSharedLibrary $(target) : $(objects) $(deplibs) : $(linklib) ;
if $(LINK.DEBUG.INFO.SEPARATE) = "yes" if $(LINK.DEBUG.INFO.SEPARATE) = "yes"
{ {
local debugfile = [ SplitDebugInfo $(target) ] ; local debugfile = [ SplitDebugInfo $(target) ] ;
$(<)_CLEANEXTRA += $(debugfile) ; $(<)_CLEANEXTRA += $(debugfile) ;
if ! [ IsElem noinstall : $(options) ] if ! [ IsElem noinstall : $(options) ]
{ {
NoCare $(debugfile) ; NoCare $(debugfile) ;
Depends install_lib : [ DoInstall $(debugfile) : $(libdir) : $(INSTALL_DATA) ] ; Depends install_lib : [ DoInstall $(debugfile) : $(libdir) : $(INSTALL_DATA) ] ;
} }
} }
} }
rule ConstructLibraryTarget rule ConstructLibraryTarget
{ {
if ( ! [ IsElem shared : $(>) ] ) || ( $(BUILD_SHARED_LIBS) != "yes" ) if ( ! [ IsElem shared : $(>) ] ) || ( $(BUILD_SHARED_LIBS) != "yes" )
{ {
return [ ConstructStaticLibraryTarget $(<) : [ Filter $(>) : shared ] ] ; return [ ConstructStaticLibraryTarget $(<) : [ Filter $(>) : shared ] ] ;
} }
else else
{ {
return [ ConstructSharedLibraryTarget $(<) : $(>) ] ; return [ ConstructSharedLibraryTarget $(<) : $(>) ] ;
} }
} }
rule ConstructLibraryLinkTarget rule ConstructLibraryLinkTarget
{ {
if ( ! [ IsElem shared : $(>) ] ) || ( $(BUILD_SHARED_LIBS) != "yes" ) if ( ! [ IsElem shared : $(>) ] ) || ( $(BUILD_SHARED_LIBS) != "yes" )
{ {
return [ ConstructStaticLibraryTarget $(<) : [ Filter $(>) : shared ] ] ; return [ ConstructStaticLibraryTarget $(<) : [ Filter $(>) : shared ] ] ;
} }
else else
{ {
return [ ConstructSharedLibraryLinkLib $(<) : $(>) ] ; return [ ConstructSharedLibraryLinkLib $(<) : $(>) ] ;
} }
} }
actions together Ranlib actions together Ranlib
{ {
$(RANLIB) $(<) $(RANLIB) $(<)
} }
# Construct pseudo target libs which is used instead of the pseudo target lib # Construct pseudo target libs which is used instead of the pseudo target lib
# in Jambase # in Jambase
Depends lib : libs ; Depends lib : libs ;
NotFile libs ; NotFile libs ;
Help libs : "Build all link libraries" ; Help libs : "Build all link libraries" ;

View File

@@ -1,354 +1,354 @@
#============================================================================== #==============================================================================
# Jam configuration and actions for MacOS/X # Jam configuration and actions for MacOS/X
# Copyright (C) 2003-2005 by Eric Sunshine <sunshine@sunshineco.com> # Copyright (C) 2003-2005 by Eric Sunshine <sunshine@sunshineco.com>
# #
# This library is free software; you can redistribute it and/or modify it # 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 # 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 # the Free Software Foundation; either version 2 of the License, or (at your
# option) any later version. # option) any later version.
# #
# This library is distributed in the hope that it will be useful, but # This library is distributed in the hope that it will be useful, but
# WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY # WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
# or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public # or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public
# License for more details. # License for more details.
# #
# You should have received a copy of the GNU Library General Public License # 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, # along with this library; if not, write to the Free Software Foundation,
# Inc., 675 Mass Ave, Cambridge, MA 02139, USA. # Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
# #
#============================================================================== #==============================================================================
SHELL ?= "/bin/sh" ; SHELL ?= "/bin/sh" ;
MACOSX_ENVIRONMENT = "export MACOSX_DEPLOYMENT_TARGET=10.2" ; MACOSX_ENVIRONMENT = "export MACOSX_DEPLOYMENT_TARGET=10.2" ;
PLUGIN.LFLAGS += "-bundle" ; PLUGIN.LFLAGS += "-bundle" ;
# We use the ugly -Wl form, which does not contain embedded whitespace (unlike # We use the ugly -Wl form, which does not contain embedded whitespace (unlike
# "-framework AppKit"), to help external projects which use the result of # "-framework AppKit"), to help external projects which use the result of
# "cs-config --libs" in conjunction with GNU libtool, since libtool likes to # "cs-config --libs" in conjunction with GNU libtool, since libtool likes to
# re-arrange arguments, not realizing that "-framwork" and "AppKit" need to # re-arrange arguments, not realizing that "-framwork" and "AppKit" need to
# stay together. # stay together.
LINKLIBS += "-Wl,-framework,AppKit" "-Wl,-framework,Foundation" ; LINKLIBS += "-Wl,-framework,AppKit" "-Wl,-framework,Foundation" ;
# Jambase in Jam 2.4 has a bug where it incorrectly defines RANLIB as "" for # Jambase in Jam 2.4 has a bug where it incorrectly defines RANLIB as "" for
# MacOS/X, and this bogus value will override a RANLIB set via ?= in Jamconfig, # MacOS/X, and this bogus value will override a RANLIB set via ?= in Jamconfig,
# by a configure script, thus we must give RANLIB an appropriate value here if # by a configure script, thus we must give RANLIB an appropriate value here if
# we find that it has the bogus value. Jam 2.5 does not contain this bug. # we find that it has the bogus value. Jam 2.5 does not contain this bug.
# Furthermore, MacOS/X Panther expects us to use the -s option with ranlib. # Furthermore, MacOS/X Panther expects us to use the -s option with ranlib.
if ! $(RANLIB) { RANLIB = "ranlib" ; } if ! $(RANLIB) { RANLIB = "ranlib" ; }
RANLIB += "-s" ; RANLIB += "-s" ;
# Experience seems to indicate that library scanning misbehaves on MacOS/X with # Experience seems to indicate that library scanning misbehaves on MacOS/X with
# Jam 2.4, consequently we disable it. # Jam 2.4, consequently we disable it.
NOARSCAN = true ; NOARSCAN = true ;
#------------------------------------------------------------------------------ #------------------------------------------------------------------------------
# Public rules. # Public rules.
#------------------------------------------------------------------------------ #------------------------------------------------------------------------------
# ConstructApplicationTarget target : options # ConstructApplicationTarget target : options
# Constructs the application target name. # Constructs the application target name.
rule ConstructApplicationTarget rule ConstructApplicationTarget
{ {
return $(<) ; return $(<) ;
} }
# ConstructStaticLibraryTarget target : options # ConstructStaticLibraryTarget target : options
# Constructs the static library target name. # Constructs the static library target name.
rule ConstructStaticLibraryTarget rule ConstructStaticLibraryTarget
{ {
return lib$(<)$(SUFLIB) ; return lib$(<)$(SUFLIB) ;
} }
# ConstructSharedLibraryTarget target : options # ConstructSharedLibraryTarget target : options
# Constructs the shared library target name. # Constructs the shared library target name.
rule ConstructSharedLibraryTarget rule ConstructSharedLibraryTarget
{ {
return lib$(<).$(PACKAGE_VERSION).dylib ; return lib$(<).$(PACKAGE_VERSION).dylib ;
} }
# ConstructSharedLibraryLinkLib target : options # ConstructSharedLibraryLinkLib target : options
# Constructs the name of a shared library against which some other target # Constructs the name of a shared library against which some other target
# links. # links.
rule ConstructSharedLibraryLinkLib rule ConstructSharedLibraryLinkLib
{ {
return lib$(<).$(PACKAGE_VERSION).dylib ; return lib$(<).$(PACKAGE_VERSION).dylib ;
} }
# ConstructPluginTarget target : options # ConstructPluginTarget target : options
# Constructs the plugin target name. # Constructs the plugin target name.
rule ConstructPluginTarget rule ConstructPluginTarget
{ {
return $(<).csbundle ; return $(<).csbundle ;
} }
# SystemLinkApplication target : objects : options # SystemLinkApplication target : objects : options
# Apply appropriate rule to link the application based upon the options. # Apply appropriate rule to link the application based upon the options.
rule SystemLinkApplication rule SystemLinkApplication
{ {
local target = $($(<)_TARGET) ; local target = $($(<)_TARGET) ;
Depends $(target) : $(>) ; Depends $(target) : $(>) ;
if [ IsElem console : $(3) ] if [ IsElem console : $(3) ]
{ {
LinkApplicationConsole $(target) : $(>) ; LinkApplicationConsole $(target) : $(>) ;
Clean clean : $(target) ; Clean clean : $(target) ;
Clean $(<)clean : $(target) ; Clean $(<)clean : $(target) ;
} }
else else
{ {
CreateApplicationWrapper $(target) : $(>) ; CreateApplicationWrapper $(target) : $(>) ;
CleanDir clean : [ Wrapper $(<) : app ] ; CleanDir clean : [ Wrapper $(<) : app ] ;
CleanDir $(<)clean : [ Wrapper $(<) : app ] ; CleanDir $(<)clean : [ Wrapper $(<) : app ] ;
} }
} }
# SystemInstallApplication target : subdirs : options # SystemInstallApplication target : subdirs : options
# Apply appropriate rule to install the application based upon the options. # Apply appropriate rule to install the application based upon the options.
rule SystemInstallApplication rule SystemInstallApplication
{ {
if [ IsElem console : $(3) ] if [ IsElem console : $(3) ]
{ {
Depends install_bin : Depends install_bin :
[ DoInstall $(<) : $(bindir) $(2) : $(INSTALL_PROGRAM) ] ; [ DoInstall $(<) : $(bindir) $(2) : $(INSTALL_PROGRAM) ] ;
} }
else else
{ {
InstallApplicationGUI $(<) : $(bindir) $(2) ; InstallApplicationGUI $(<) : $(bindir) $(2) ;
} }
} }
# SystemInstallPlugin target : subdirs : options # SystemInstallPlugin target : subdirs : options
# Apply appropriate rule to install the plugin based upon the options. # Apply appropriate rule to install the plugin based upon the options.
rule SystemInstallPlugin rule SystemInstallPlugin
{ {
Depends install_plugin : Depends install_plugin :
[ DoInstall $(<) : $(plugindir) $(2) : $(INSTALL_PROGRAM) ] ; [ DoInstall $(<) : $(plugindir) $(2) : $(INSTALL_PROGRAM) ] ;
} }
# SystemLinkPlugin target : objects : options # SystemLinkPlugin target : objects : options
# Link a plugin module and handle meta-data appropriately. # Link a plugin module and handle meta-data appropriately.
rule SystemLinkPlugin rule SystemLinkPlugin
{ {
local target = $($(<)_TARGET) ; local target = $($(<)_TARGET) ;
Depends $(target) : $(>) ; Depends $(target) : $(>) ;
LinkPlugin $(target) : $(>) ; LinkPlugin $(target) : $(>) ;
PluginMetaData $(<) : $($(<)_METAFILE) : $(3) ; PluginMetaData $(<) : $($(<)_METAFILE) : $(3) ;
Clean clean : $(target) ; Clean clean : $(target) ;
Clean $(<)clean : $(target) ; Clean $(<)clean : $(target) ;
} }
# LinkPlugin plugin : objects # LinkPlugin plugin : objects
# Link a plugin module from a set of object files. # Link a plugin module from a set of object files.
actions LinkPlugin bind NEEDLIBS bind EXTRAOBJECTS actions LinkPlugin bind NEEDLIBS bind EXTRAOBJECTS
{ {
$(MACOSX_ENVIRONMENT) $(MACOSX_ENVIRONMENT)
$(CMD.LINK) -bundle -o $(<) $(>) $(EXTRAOBJECTS) $(NEEDLIBS) $(LINKLIBS) $(CMD.LINK) -bundle -o $(<) $(>) $(EXTRAOBJECTS) $(NEEDLIBS) $(LINKLIBS)
} }
# LinkApplicationConsole exe : objects # LinkApplicationConsole exe : objects
# Link a console (non-GUI) appliation from a set of object files. # Link a console (non-GUI) appliation from a set of object files.
actions LinkApplicationConsole bind NEEDLIBS bind EXTRAOBJECTS actions LinkApplicationConsole bind NEEDLIBS bind EXTRAOBJECTS
{ {
$(MACOSX_ENVIRONMENT) $(MACOSX_ENVIRONMENT)
$(CMD.LINK) -o $(<) $(>) $(EXTRAOBJECTS) $(NEEDLIBS) $(LINKLIBS) $(CMD.LINK) -o $(<) $(>) $(EXTRAOBJECTS) $(NEEDLIBS) $(LINKLIBS)
} }
# CreateApplicationWrapper basename : objects # CreateApplicationWrapper basename : objects
# Create a complete, though minimal, application wrapper given a set of # Create a complete, though minimal, application wrapper given a set of
# object files. The rules ApplicationIconDefault and ApplicationIcon # object files. The rules ApplicationIconDefault and ApplicationIcon
# control the icon associated with the application wrapper. # control the icon associated with the application wrapper.
rule CreateApplicationWrapper rule CreateApplicationWrapper
{ {
WrapFile $(<) : $(<) : Contents MacOS : AppExe : $(>) ; WrapFile $(<) : $(<) : Contents MacOS : AppExe : $(>) ;
WrapFile $(<) : PkgInfo : Contents : AppPkgInfo : $(>) ; WrapFile $(<) : PkgInfo : Contents : AppPkgInfo : $(>) ;
WrapFile $(<) : version.plist : Contents : AppVersionPlist : $(>) ; WrapFile $(<) : version.plist : Contents : AppVersionPlist : $(>) ;
WrapFile $(<) : Info.plist : Contents : AppInfoPlist : $(>) ; WrapFile $(<) : Info.plist : Contents : AppInfoPlist : $(>) ;
WrapFile $(<) : InfoPlist.strings : Contents Resources English.lproj : WrapFile $(<) : InfoPlist.strings : Contents Resources English.lproj :
AppInfoPlistStrings : $(>) ; AppInfoPlistStrings : $(>) ;
local icon = [ ApplicationIcon macosx : $(<) ] ; local icon = [ ApplicationIcon macosx : $(<) ] ;
if ! $(icon) if ! $(icon)
{ {
local apptype = gui ; local apptype = gui ;
if [ IsElem console : $(>) ] { apptype = console ; } if [ IsElem console : $(>) ] { apptype = console ; }
icon = [ ApplicationIconDefault macosx : $(apptype) ] ; icon = [ ApplicationIconDefault macosx : $(apptype) ] ;
} }
if $(icon) if $(icon)
{ {
$(<)_APPICON = $(icon) ; $(<)_APPICON = $(icon) ;
AppIcon $(<) : $(icon) ; AppIcon $(<) : $(icon) ;
} }
} }
# Wrapper basename : suffix [ : pathcomponents ] # Wrapper basename : suffix [ : pathcomponents ]
# Returns wrapper name in the directory specified by pathcomponents for # Returns wrapper name in the directory specified by pathcomponents for
# the given basename. If pathcomponents is omitted, LOCATE.TARGETS is # the given basename. If pathcomponents is omitted, LOCATE.TARGETS is
# used. # used.
rule Wrapper rule Wrapper
{ {
local dir ; local dir ;
if $(3) { dir = [ FDirName $(3) ] ; } if $(3) { dir = [ FDirName $(3) ] ; }
else { dir = $(LOCATE.TARGETS) ; } else { dir = $(LOCATE.TARGETS) ; }
return [ FDirName $(dir) $(1).$(2) ] ; return [ FDirName $(dir) $(1).$(2) ] ;
} }
# WrapFile basename : file : pathcomponents : rule [ : objects : [ suffix ] ] # WrapFile basename : file : pathcomponents : rule [ : objects : [ suffix ] ]
# Generate a file within a wrapper. pathcomponents is a list of names # Generate a file within a wrapper. pathcomponents is a list of names
# which compose the relative path within the wrapper where file should be # which compose the relative path within the wrapper where file should be
# placed. pathcomponents may be the empty list if the file should reside # placed. pathcomponents may be the empty list if the file should reside
# at the top-level of the wrapper. rule is rule/action which should be # at the top-level of the wrapper. rule is rule/action which should be
# invoked to generate file. rule is invoked with arguments # invoked to generate file. rule is invoked with arguments
# <basename.suffix/pathcomponents/file>, <objects>, and <basename>. # <basename.suffix/pathcomponents/file>, <objects>, and <basename>.
# objects is an optional list of files from which file should be built. It # objects is an optional list of files from which file should be built. It
# may be omitted if file does not depend upon any other files. suffix is # may be omitted if file does not depend upon any other files. suffix is
# the extension of the wrapper (not of file). If suffix is omitted, "app" # the extension of the wrapper (not of file). If suffix is omitted, "app"
# is assumed. # is assumed.
# #
# Implementation note: If basename and file are the same, then we do not # Implementation note: If basename and file are the same, then we do not
# grist file. (Obviously, we also do not want to set the file dependent # grist file. (Obviously, we also do not want to set the file dependent
# upon itself.) The reason we do not grist file in this case is that the # upon itself.) The reason we do not grist file in this case is that the
# LinkWith, and LFlags rules associate the variables NEEDLIBS and # LinkWith, and LFlags rules associate the variables NEEDLIBS and
# LINKLIBS with the ungristed name, therefore in order to get access to # LINKLIBS with the ungristed name, therefore in order to get access to
# these variables at AppExe action time, we must use the same (ungristed) # these variables at AppExe action time, we must use the same (ungristed)
# name. It is otherwise impossible to gain access to those variables. # name. It is otherwise impossible to gain access to those variables.
# This is an unfortunate hack which pollutes the otherwise general-purpose # This is an unfortunate hack which pollutes the otherwise general-purpose
# WrapFile rule. # WrapFile rule.
rule WrapFile rule WrapFile
{ {
local suffix ; local suffix ;
if $(6) { suffix = $(6) ; } else { suffix = app ; } if $(6) { suffix = $(6) ; } else { suffix = app ; }
local target = $(2) ; local target = $(2) ;
if $(target) != $(1) if $(target) != $(1)
{ {
target = $(target:G=$(1)) ; target = $(target:G=$(1)) ;
Depends $(1) : $(target) ; Depends $(1) : $(target) ;
} }
local dir = [ FDirName [ Wrapper $(1) : $(suffix) ] $(3) ] ; local dir = [ FDirName [ Wrapper $(1) : $(suffix) ] $(3) ] ;
MakeLocate $(target) : $(dir) ; MakeLocate $(target) : $(dir) ;
if $(5) { Depends $(target) : $(5) ; } if $(5) { Depends $(target) : $(5) ; }
BASENAME on $(target) = $(1) ; BASENAME on $(target) = $(1) ;
$(4) $(target) : $(5) : $(1) ; $(4) $(target) : $(5) : $(1) ;
Clean clean : [ FDirName $(dir) $(target) ] ; Clean clean : [ FDirName $(dir) $(target) ] ;
Clean $(1)clean : [ FDirName $(dir) $(target) ] ; Clean $(1)clean : [ FDirName $(dir) $(target) ] ;
} }
# LinkApplication exe : objects # LinkApplication exe : objects
actions AppExe bind NEEDLIBS bind EXTRAOBJECTS actions AppExe bind NEEDLIBS bind EXTRAOBJECTS
{ {
$(MACOSX_ENVIRONMENT) $(MACOSX_ENVIRONMENT)
$(CMD.LINK) -o $(<) $(>) $(EXTRAOBJECTS) $(NEEDLIBS) $(LINKLIBS) $(CMD.LINK) -o $(<) $(>) $(EXTRAOBJECTS) $(NEEDLIBS) $(LINKLIBS)
} }
# AppPkgInfo file # AppPkgInfo file
actions AppPkgInfo actions AppPkgInfo
{ {
echo 'APPL????' > $(<) ; echo 'APPL????' > $(<) ;
} }
# AppInfoPlistStrings file # AppInfoPlistStrings file
actions AppInfoPlistStrings actions AppInfoPlistStrings
{ {
cat << EOT > $(<) cat << EOT > $(<)
CFBundleName = "$(BASENAME)"; CFBundleName = "$(BASENAME)";
CFBundleShortVersionString = "$(PACKAGE_VERSION)"; CFBundleShortVersionString = "$(PACKAGE_VERSION)";
CFBundleGetInfoString = "$(BASENAME), $(PACKAGE_VERSION)"; CFBundleGetInfoString = "$(BASENAME), $(PACKAGE_VERSION)";
EOT EOT
} }
# AppVersionPlist file # AppVersionPlist file
actions AppVersionPlist actions AppVersionPlist
{ {
cat << EOT > $(<) cat << EOT > $(<)
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist SYSTEM "file://localhost/System/Library/DTDs/PropertyList.dtd"> <!DOCTYPE plist SYSTEM "file://localhost/System/Library/DTDs/PropertyList.dtd">
<plist version="0.9"> <plist version="0.9">
<dict> <dict>
<key>CFBundleShortVersionString</key> <key>CFBundleShortVersionString</key>
<string>$(PACKAGE_VERSION)</string> <string>$(PACKAGE_VERSION)</string>
<key>CFBundleVersion</key> <key>CFBundleVersion</key>
<string>$(PACKAGE_VERSION)</string> <string>$(PACKAGE_VERSION)</string>
<key>ProjectName</key> <key>ProjectName</key>
<string>$(BASENAME)</string> <string>$(BASENAME)</string>
</dict> </dict>
</plist> </plist>
EOT EOT
} }
# AppInfoPlist filename : placeholder : basename # AppInfoPlist filename : placeholder : basename
# Implementation Note: $(BASENAME)_APPICON might be empty in the actions of # Implementation Note: $(BASENAME)_APPICON might be empty in the actions of
# this rule, if the client did not specify a default icon or a # this rule, if the client did not specify a default icon or a
# target-specific icon, in which case we need to omit both the # target-specific icon, in which case we need to omit both the
# CFBundleIconFile key and value. To accomplish this, the key and value # CFBundleIconFile key and value. To accomplish this, the key and value
# are placed on a single line with no intervening whitespace. When Jam # are placed on a single line with no intervening whitespace. When Jam
# interpolates a variable, if the variable is empty, it removes all # interpolates a variable, if the variable is empty, it removes all
# adjacent text (the key and value, in this case) which is just what we # adjacent text (the key and value, in this case) which is just what we
# desire. # desire.
actions AppInfoPlist actions AppInfoPlist
{ {
cat << EOT > $(<) cat << EOT > $(<)
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist SYSTEM "file://localhost/System/Library/DTDs/PropertyList.dtd"> <!DOCTYPE plist SYSTEM "file://localhost/System/Library/DTDs/PropertyList.dtd">
<plist version="0.9"> <plist version="0.9">
<dict> <dict>
<key>CFBundleDevelopmentRegion</key> <key>CFBundleDevelopmentRegion</key>
<string>English</string> <string>English</string>
<key>CFBundleName</key> <key>CFBundleName</key>
<string>$(BASENAME)</string> <string>$(BASENAME)</string>
<key>CFBundleExecutable</key> <key>CFBundleExecutable</key>
<string>$(BASENAME)</string> <string>$(BASENAME)</string>
<key>CFBundleIconFile</key><string>$($(BASENAME)_APPICON)</string> <key>CFBundleIconFile</key><string>$($(BASENAME)_APPICON)</string>
<key>CFBundleInfoDictionaryVersion</key> <key>CFBundleInfoDictionaryVersion</key>
<string>6.0</string> <string>6.0</string>
<key>CFBundlePackageType</key> <key>CFBundlePackageType</key>
<string>APPL</string> <string>APPL</string>
<key>CFBundleSignature</key> <key>CFBundleSignature</key>
<string>????</string> <string>????</string>
<key>CFBundleVersion</key> <key>CFBundleVersion</key>
<string>0</string> <string>0</string>
<key>CFBundleShortVersionString</key> <key>CFBundleShortVersionString</key>
<string>$(PACKAGE_VERSION)</string> <string>$(PACKAGE_VERSION)</string>
<key>NSPrincipalClass</key> <key>NSPrincipalClass</key>
<string>NSApplication</string> <string>NSApplication</string>
</dict> </dict>
</plist> </plist>
EOT EOT
} }
# AppIcon <basename> : <icon> # AppIcon <basename> : <icon>
# Copy an icon into the wrapper. It is assumed that some other agent has # Copy an icon into the wrapper. It is assumed that some other agent has
# already set SEARCH on the icon, if necessary. # already set SEARCH on the icon, if necessary.
rule AppIcon rule AppIcon
{ {
local icon = $(>:G=$(<)) ; local icon = $(>:G=$(<)) ;
Depends $(<) : $(icon) ; Depends $(<) : $(icon) ;
Depends $(icon) : $(>) ; Depends $(icon) : $(>) ;
MakeLocate $(icon) : MakeLocate $(icon) :
[ FDirName [ Wrapper $(<) : app ] Contents Resources ] ; [ FDirName [ Wrapper $(<) : app ] Contents Resources ] ;
Copy $(icon) : $(>) ; Copy $(icon) : $(>) ;
Clean clean : $(icon) ; Clean clean : $(icon) ;
Clean $(<)clean : $(icon) ; Clean $(<)clean : $(icon) ;
} }
# InstallApplicationGUI app : installdirs # InstallApplicationGUI app : installdirs
# Install a GUI application. Unlike applications on other platforms which # Install a GUI application. Unlike applications on other platforms which
# exist as a single executable file, on MacOS/X, an application is wrapped # exist as a single executable file, on MacOS/X, an application is wrapped
# in a directory hierarchy, thus a deep copy is needed (i.e. the typical # in a directory hierarchy, thus a deep copy is needed (i.e. the typical
# Install rule does not work). # Install rule does not work).
rule InstallApplicationGUI rule InstallApplicationGUI
{ {
local wrapper = $(<).app ; local wrapper = $(<).app ;
Depends $(wrapper) : $(<) ; Depends $(wrapper) : $(<) ;
SEARCH on $(wrapper) = $(LOCATE.TARGETS) ; SEARCH on $(wrapper) = $(LOCATE.TARGETS) ;
# Yuck! Internal knowledge of how DoInstall composes 'dir' and 'target'. # Yuck! Internal knowledge of how DoInstall composes 'dir' and 'target'.
local dir = [ ConcatDirs $(DESTDIR) $(2) ] ; local dir = [ ConcatDirs $(DESTDIR) $(2) ] ;
local target = $(wrapper:BSR=$(dir):G=install) ; local target = $(wrapper:BSR=$(dir):G=install) ;
InstallApplicationWrapperPrepare $(target) ; InstallApplicationWrapperPrepare $(target) ;
Depends install_bin : Depends install_bin :
[ DoInstall $(wrapper) : $(2) : "$(DEEPCOPY)" ] ; [ DoInstall $(wrapper) : $(2) : "$(DEEPCOPY)" ] ;
} }
actions InstallApplicationWrapperPrepare actions InstallApplicationWrapperPrepare
{ {
$(DELTREE) $(<) ; $(DELTREE) $(<) ;
} }

File diff suppressed because it is too large Load Diff

View File

@@ -1,80 +1,80 @@
#============================================================================ #============================================================================
# Rules for compiling Objective-C and Objective-C++ files # Rules for compiling Objective-C and Objective-C++ files
# Copyright (C)2003 by Matze Braun <matzebraun@users.sourceforge.net> # Copyright (C)2003 by Matze Braun <matzebraun@users.sourceforge.net>
# #
# This library is free software; you can redistribute it and/or modify it # 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 # 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 # the Free Software Foundation; either version 2 of the License, or (at your
# option) any later version. # option) any later version.
# #
# This library is distributed in the hope that it will be useful, but # This library is distributed in the hope that it will be useful, but
# WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY # WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
# or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public # or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public
# License for more details. # License for more details.
# #
# You should have received a copy of the GNU Library General Public License # 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, # along with this library; if not, write to the Free Software Foundation,
# Inc., 675 Mass Ave, Cambridge, MA 02139, USA. # Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
# #
#============================================================================ #============================================================================
if $(CMD.OBJC) if $(CMD.OBJC)
{ {
rule ObjCRule rule ObjCRule
{ {
local object = [ DoObjectGrist [ PrefixSuffix $(>)_ : $(<) : $(SUFOBJ) ] ] ; local object = [ DoObjectGrist [ PrefixSuffix $(>)_ : $(<) : $(SUFOBJ) ] ] ;
ObjC $(object) : $(<) ; ObjC $(object) : $(<) ;
return $(object) ; return $(object) ;
} }
RegisterFileType ObjCRule : .m ; RegisterFileType ObjCRule : .m ;
RegisterHeaderRule HeaderRule : $(HDRPATTERN) : .m ; RegisterHeaderRule HeaderRule : $(HDRPATTERN) : .m ;
rule ObjC rule ObjC
{ {
Depends $(<) : $(>) ; Depends $(<) : $(>) ;
CCFLAGS on $(<) += $(CCFLAGS) $(SUBDIRCCFLAGS) ; CCFLAGS on $(<) += $(CCFLAGS) $(SUBDIRCCFLAGS) ;
OBJCFLAGS on $(<) += $(OBJCFLAGS) ; OBJCFLAGS on $(<) += $(OBJCFLAGS) ;
CCHDRS on $(<) = [ on $(<) FIncludes $(HDRS) ] ; CCHDRS on $(<) = [ on $(<) FIncludes $(HDRS) ] ;
CCDEFS on $(<) = [ on $(<) FDefines $(DEFINES) ] ; CCDEFS on $(<) = [ on $(<) FDefines $(DEFINES) ] ;
} }
actions ObjC actions ObjC
{ {
$(CMD.OBJC) -c -o $(<) $(CCHDRS) $(CCFLAGS) $(OBJCFLAGS) $(CCDEFS) $(>) $(CMD.OBJC) -c -o $(<) $(CCHDRS) $(CCFLAGS) $(OBJCFLAGS) $(CCDEFS) $(>)
} }
} }
if $(CMD.OBJC++) if $(CMD.OBJC++)
{ {
rule ObjC++Rule rule ObjC++Rule
{ {
local object = [ DoObjectGrist [ PrefixSuffix $(>)_ : $(<) : $(SUFOBJ) ] ] ; local object = [ DoObjectGrist [ PrefixSuffix $(>)_ : $(<) : $(SUFOBJ) ] ] ;
ObjC++ $(object) : $(<) ; ObjC++ $(object) : $(<) ;
return $(object) ; return $(object) ;
} }
RegisterFileType ObjC++Rule : .mm .M ; RegisterFileType ObjC++Rule : .mm .M ;
RegisterHeaderRule HeaderRule : $(HDRPATTERN) : .mm .M ; RegisterHeaderRule HeaderRule : $(HDRPATTERN) : .mm .M ;
rule ObjC++ rule ObjC++
{ {
Depends $(<) : $(>) ; Depends $(<) : $(>) ;
# Ugly hack: Apple's gcc4 does not accept -fvisibility-inlines-hidden in # Ugly hack: Apple's gcc4 does not accept -fvisibility-inlines-hidden in
# Objective-C++ mode. Ideally, this issue should be resolved by the # Objective-C++ mode. Ideally, this issue should be resolved by the
# configure script, but it does not currently distinguish between flags # configure script, but it does not currently distinguish between flags
# intended for the C++ compiler and those intended for the Objective-C++ # intended for the C++ compiler and those intended for the Objective-C++
# compiler. # compiler.
local rejects = -fvisibility-inlines-hidden ; local rejects = -fvisibility-inlines-hidden ;
C++FLAGS on $(<) += [ Filter $(C++FLAGS) $(SUBDIRC++FLAGS) : $(rejects) ] ; C++FLAGS on $(<) += [ Filter $(C++FLAGS) $(SUBDIRC++FLAGS) : $(rejects) ] ;
OBJC++FLAGS on $(<) += [ Filter $(OBJC++FLAGS) : $(rejects) ] ; OBJC++FLAGS on $(<) += [ Filter $(OBJC++FLAGS) : $(rejects) ] ;
CCHDRS on $(<) = [ on $(<) FIncludes $(HDRS) ] ; CCHDRS on $(<) = [ on $(<) FIncludes $(HDRS) ] ;
CCDEFS on $(<) = [ on $(<) FDefines $(DEFINES) ] ; CCDEFS on $(<) = [ on $(<) FDefines $(DEFINES) ] ;
} }
actions ObjC++ actions ObjC++
{ {
$(CMD.OBJC++) -c -o $(<) $(CCHDRS) $(C++FLAGS) $(OBJC++FLAGS) $(CCDEFS) $(>) $(CMD.OBJC++) -c -o $(<) $(CCHDRS) $(C++FLAGS) $(OBJC++FLAGS) $(CCDEFS) $(>)
} }
} }

View File

@@ -1,250 +1,250 @@
#============================================================================ #============================================================================
# Rules for compiling a set of sources to object files # Rules for compiling a set of sources to object files
# Copyright (C)2003 by Matze Braun <matzebraun@users.sourceforge.net> # Copyright (C)2003 by Matze Braun <matzebraun@users.sourceforge.net>
# #
# This library is free software; you can redistribute it and/or modify it # 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 # 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 # the Free Software Foundation; either version 2 of the License, or (at your
# option) any later version. # option) any later version.
# #
# This library is distributed in the hope that it will be useful, but # This library is distributed in the hope that it will be useful, but
# WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY # WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
# or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public # or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public
# License for more details. # License for more details.
# #
# You should have received a copy of the GNU Library General Public License # 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, # along with this library; if not, write to the Free Software Foundation,
# Inc., 675 Mass Ave, Cambridge, MA 02139, USA. # Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
# #
#============================================================================ #============================================================================
# These are slightly modified versions of the Object and Objects rules from # These are slightly modified versions of the Object and Objects rules from
# jam. The problem with the original rules in Jambase is the handling of # jam. The problem with the original rules in Jambase is the handling of
# custom file types. The solution with the UserObject rule is monolithic, you # custom file types. The solution with the UserObject rule is monolithic, you
# can only have 1 such rule. Thus we construct a more flexible toolkit here # can only have 1 such rule. Thus we construct a more flexible toolkit here
# which let's you register rules for certain filetypes. # which let's you register rules for certain filetypes.
## RegisterFileType Rulename : extensions ## RegisterFileType Rulename : extensions
## Register a rule which is used to compile a filetype into object ## Register a rule which is used to compile a filetype into object
## files. The registered rule is called with the name of the ## files. The registered rule is called with the name of the
## sourcefile as argument and should return a list of objectfiles which are ## sourcefile as argument and should return a list of objectfiles which are
## created. You should set the grist of the object files by using the ## created. You should set the grist of the object files by using the
## DoObjectGrist function. ## DoObjectGrist function.
rule RegisterFileType rule RegisterFileType
{ {
local suffix ; local suffix ;
for suffix in $(>) for suffix in $(>)
{ {
FILETYPE_$(suffix) = $(<) ; FILETYPE_$(suffix) = $(<) ;
} }
} }
## RegisterHeaderRule rulename : regexpattern : extensions ## RegisterHeaderRule rulename : regexpattern : extensions
## Registers a rule and a regular expression which will be used for header ## Registers a rule and a regular expression which will be used for header
## file scanning of the specified extensions. ## file scanning of the specified extensions.
rule RegisterHeaderRule rule RegisterHeaderRule
{ {
local suffix ; local suffix ;
for suffix in $(3) for suffix in $(3)
{ {
HDRRULE_$(suffix) = $(<) ; HDRRULE_$(suffix) = $(<) ;
HDRPATTERN_$(suffix) = $(>) ; HDRPATTERN_$(suffix) = $(>) ;
} }
} }
## CompileObjects sources [: objectfileprefix] ## CompileObjects sources [: objectfileprefix]
## Compile a set of sourcefiles into objectfiles (extension: SUFOBJ, ## Compile a set of sourcefiles into objectfiles (extension: SUFOBJ,
## usually .o). This rule takes care of setting the SEARCH and LOCATE ## usually .o). This rule takes care of setting the SEARCH and LOCATE
## variables to the values of $(SEARCH_SOURCE) and $(LOCATE_TARGET). ## variables to the values of $(SEARCH_SOURCE) and $(LOCATE_TARGET).
## The Application, Plugin and Library rules already use this rule ## The Application, Plugin and Library rules already use this rule
## internally. You should only use this rule if you have to avoid the ## internally. You should only use this rule if you have to avoid the
## Application, Plugin or Library rules. ## Application, Plugin or Library rules.
rule CompileObjects rule CompileObjects
{ {
local source ; local source ;
local targets ; local targets ;
# Search the source # Search the source
SEARCH on $(<) = $(SEARCH_SOURCE) ; SEARCH on $(<) = $(SEARCH_SOURCE) ;
for source in $(<) for source in $(<)
{ {
# compile the sourcefile to targetfile # compile the sourcefile to targetfile
targets += [ CompileObject $(source) : $(>) ] ; targets += [ CompileObject $(source) : $(>) ] ;
} }
# locate the targets # locate the targets
MakeLocate $(targets) : $(LOCATE_TARGET) ; MakeLocate $(targets) : $(LOCATE_TARGET) ;
return $(targets) ; return $(targets) ;
} }
## PrefixSuffix [prefix] : filename : suffix ## PrefixSuffix [prefix] : filename : suffix
## Replaces the suffix of 'filename' with 'suffix' and prepends 'prefix' to ## Replaces the suffix of 'filename' with 'suffix' and prepends 'prefix' to
## it. ## it.
rule PrefixSuffix rule PrefixSuffix
{ {
local prefix = $(1) ; local prefix = $(1) ;
local name = $(2) ; local name = $(2) ;
local suffix = $(3) ; local suffix = $(3) ;
if ! $(prefix) { prefix = "" ; } if ! $(prefix) { prefix = "" ; }
return $(name:B=$(prefix)$(name:B):S=$(suffix)) ; return $(name:B=$(prefix)$(name:B):S=$(suffix)) ;
} }
#---------------------------------------------------------------------------- #----------------------------------------------------------------------------
# private part # private part
# helper rule: Compiles a source file to an object file. Does header file # helper rule: Compiles a source file to an object file. Does header file
# scanning, sets LOCATE and SEARCH for source and target, grists the files # scanning, sets LOCATE and SEARCH for source and target, grists the files
# with the current subdir and searches for the correct registered rule. # with the current subdir and searches for the correct registered rule.
rule CompileObject rule CompileObject
{ {
# handle #includes for source: Jam scans for headers with # handle #includes for source: Jam scans for headers with
# the regexp pattern $(HDRSCAN) and then invokes $(HDRRULE) # the regexp pattern $(HDRSCAN) and then invokes $(HDRRULE)
# with the scanned file as the target and the found headers # with the scanned file as the target and the found headers
# as the sources. HDRSEARCH is the value of SEARCH used for # as the sources. HDRSEARCH is the value of SEARCH used for
# the found header files. Finally, if jam must deal with # the found header files. Finally, if jam must deal with
# header files of the same name in different directories, # header files of the same name in different directories,
# they can be distinguished with HDRGRIST. # they can be distinguished with HDRGRIST.
# $(SEARCH_SOURCE:E) is where cc first looks for #include # $(SEARCH_SOURCE:E) is where cc first looks for #include
# "foo.h" files. If the source file is in a distant directory, # "foo.h" files. If the source file is in a distant directory,
# look there. Else, look in "" (the current directory). # look there. Else, look in "" (the current directory).
if $(HDRRULE_$(<:S)) if $(HDRRULE_$(<:S))
{ {
HDRSEARCH on $(<) = HDRSEARCH on $(<) =
$(SEARCH_SOURCE:E) $(SUBDIRHDRS) $(HDRS) $(STDHDRS) ; $(SEARCH_SOURCE:E) $(SUBDIRHDRS) $(HDRS) $(STDHDRS) ;
HDRGRIST on $(<) = $(HDRGRIST) ; HDRGRIST on $(<) = $(HDRGRIST) ;
HDRRULE on $(<) = $(HDRRULE_$(<:S)) ; HDRRULE on $(<) = $(HDRRULE_$(<:S)) ;
HDRSCAN on $(<) = $(HDRPATTERN_$(<:S)) ; HDRSCAN on $(<) = $(HDRPATTERN_$(<:S)) ;
} }
local targets ; local targets ;
# Invoke filetype specific rule # Invoke filetype specific rule
if $(FILETYPE_$(<:S)) if $(FILETYPE_$(<:S))
{ {
targets = [ $(FILETYPE_$(<:S)) $(<) : $(>) ] ; targets = [ $(FILETYPE_$(<:S)) $(<) : $(>) ] ;
} }
else else
{ {
echo Warning: no rules for file type $(<:S) defined (at file $(<)). ; echo Warning: no rules for file type $(<:S) defined (at file $(<)). ;
} }
if $(targets) if $(targets)
{ {
# construct clean target # construct clean target
Clean clean : $(targets) ; Clean clean : $(targets) ;
# Save HDRS for -I$(HDRS) on compile. # Save HDRS for -I$(HDRS) on compile.
# We shouldn't need -I$(SEARCH_SOURCE) as cc can find headers # We shouldn't need -I$(SEARCH_SOURCE) as cc can find headers
# in the .c file's directory, but generated .c files (from # in the .c file's directory, but generated .c files (from
# yacc, lex, etc) are located in $(LOCATE_TARGET), possibly # yacc, lex, etc) are located in $(LOCATE_TARGET), possibly
# different from $(SEARCH_SOURCE). # different from $(SEARCH_SOURCE).
HDRS on $(<) = $(SEARCH_SOURCE) $(SUBDIRHDRS) $(HDRS) ; HDRS on $(<) = $(SEARCH_SOURCE) $(SUBDIRHDRS) $(HDRS) ;
# propagate target specific-defines # propagate target specific-defines
DEFINES on $(<) += $(DEFINES) ; DEFINES on $(<) += $(DEFINES) ;
} }
return $(targets) ; return $(targets) ;
} }
## HeaderRule source : headers ## HeaderRule source : headers
## This rule is the default header rule used by the objects rules. You ## This rule is the default header rule used by the objects rules. You
## might register custom rules with the RegisterHeaderRule rule. ## might register custom rules with the RegisterHeaderRule rule.
rule HeaderRule rule HeaderRule
{ {
# N.B. This rule is called during binding, potentially after # N.B. This rule is called during binding, potentially after
# the fate of many targets has been determined, and must be # the fate of many targets has been determined, and must be
# used with caution: don't add dependencies to unrelated # used with caution: don't add dependencies to unrelated
# targets, and don't set variables on $(<). # targets, and don't set variables on $(<).
# Tell Jam that anything depending on $(<) also depends on $(>), # Tell Jam that anything depending on $(<) also depends on $(>),
# set SEARCH so Jam can find the headers, but then say we don't # set SEARCH so Jam can find the headers, but then say we don't
# care if we can't actually find the headers (they may have been # care if we can't actually find the headers (they may have been
# within ifdefs), # within ifdefs),
local s = $(>:G=$(HDRGRIST:E)) ; local s = $(>:G=$(HDRGRIST:E)) ;
Includes $(<) : $(s) ; Includes $(<) : $(s) ;
SEARCH on $(s) = $(HDRSEARCH) ; SEARCH on $(s) = $(HDRSEARCH) ;
NoCare $(s) ; NoCare $(s) ;
local i ; local i ;
for i in $(s) for i in $(s)
{ {
HDRGRIST on $(i) = $(HDRGRIST) ; HDRGRIST on $(i) = $(HDRGRIST) ;
HDRSEARCH on $(i) = $(HDRSEARCH) ; HDRSEARCH on $(i) = $(HDRSEARCH) ;
HDRRULE on $(i) = [ on $(<) GetVar HDRRULE ] ; HDRRULE on $(i) = [ on $(<) GetVar HDRRULE ] ;
HDRSCAN on $(i) = [ on $(<) GetVar HDRPATTERN ] ; HDRSCAN on $(i) = [ on $(<) GetVar HDRPATTERN ] ;
} }
} }
if $(JAMVERSION) < 2.5 if $(JAMVERSION) < 2.5
{ {
## XXX XXX XXX a bug in jam 2.4 let's the version above fail. I'll let this ## XXX XXX XXX a bug in jam 2.4 let's the version above fail. I'll let this
## non-optimal version in here until jam 2.5 is out. ## non-optimal version in here until jam 2.5 is out.
rule HeaderRule rule HeaderRule
{ {
local s = $(>:G=$(HDRGRIST:E)) ; local s = $(>:G=$(HDRGRIST:E)) ;
Includes $(<) : $(s) ; Includes $(<) : $(s) ;
SEARCH on $(s) = $(HDRSEARCH) ; SEARCH on $(s) = $(HDRSEARCH) ;
NoCare $(s) ; NoCare $(s) ;
local i ; local i ;
for i in $(s) for i in $(s)
{ {
if $(HDRRULE_$(i:S)) if $(HDRRULE_$(i:S))
{ {
HDRGRIST on $(i) = $(HDRGRIST) ; HDRGRIST on $(i) = $(HDRGRIST) ;
HDRSEARCH on $(i) = $(HDRSEARCH) ; HDRSEARCH on $(i) = $(HDRSEARCH) ;
HDRRULE on $(i) = $(HDRRULE_$(i:S)) ; HDRRULE on $(i) = $(HDRRULE_$(i:S)) ;
HDRSCAN on $(i) = $(HDRPATTERN_$(i:S)) ; HDRSCAN on $(i) = $(HDRPATTERN_$(i:S)) ;
} }
else if $(JAM_DEBUG) else if $(JAM_DEBUG)
{ {
#echo "No Header rule for $(i:S) file $(i) " ; #echo "No Header rule for $(i:S) file $(i) " ;
} }
} }
} }
} # end of if $(JAMVERSION) < 1.5 } # end of if $(JAMVERSION) < 1.5
# Dummy rule: .o files are used as is. # Dummy rule: .o files are used as is.
rule UseObjectFile rule UseObjectFile
{ {
return $(<) ; return $(<) ;
} }
RegisterFileType UseObjectFile : .o ; RegisterFileType UseObjectFile : .o ;
# Ignore header files. # Ignore header files.
rule UseHeaderFile rule UseHeaderFile
{ {
return ; return ;
} }
RegisterFileType UseHeaderFile : .h .hpp ; RegisterFileType UseHeaderFile : .h .hpp ;
RegisterHeaderRule HeaderRule : $(HDRPATTERN) : .h .hpp .inc ; RegisterHeaderRule HeaderRule : $(HDRPATTERN) : .h .hpp .inc ;
# Generates a grist suitable for output objects based on # Generates a grist suitable for output objects based on
# SUBVARIANT and SUBDIR variable. # SUBVARIANT and SUBDIR variable.
rule DoObjectGrist rule DoObjectGrist
{ {
return $(<:G=$(SOURCE_GRIST:E)!$(SUBVARIANT:J=!)) ; return $(<:G=$(SOURCE_GRIST:E)!$(SUBVARIANT:J=!)) ;
} }
# Generates a grist suitable for source files based on SUBDIR variable. # Generates a grist suitable for source files based on SUBDIR variable.
# Doesn't change an existing grist. # Doesn't change an existing grist.
rule DoSourceGrist rule DoSourceGrist
{ {
local gristed ; local gristed ;
for g in $(<) for g in $(<)
{ {
local grist ; local grist ;
if $(g:G) if $(g:G)
{ {
grist = $(g:G) ; grist = $(g:G) ;
} }
gristed += $(g:G=$(grist:E=$(SOURCE_GRIST:E))) ; gristed += $(g:G=$(grist:E=$(SOURCE_GRIST:E))) ;
} }
return $(gristed) ; return $(gristed) ;
} }

View File

@@ -1,38 +1,38 @@
#============================================================================ #============================================================================
# Rule for setting options at targets # Rule for setting options at targets
# Copyright (C)2003 by Matze Braun <matzebraun@users.sourceforge.net> # Copyright (C)2003 by Matze Braun <matzebraun@users.sourceforge.net>
# #
# This library is free software; you can redistribute it and/or modify it # 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 # 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 # the Free Software Foundation; either version 2 of the License, or (at your
# option) any later version. # option) any later version.
# #
# This library is distributed in the hope that it will be useful, but # This library is distributed in the hope that it will be useful, but
# WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY # WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
# or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public # or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public
# License for more details. # License for more details.
# #
# You should have received a copy of the GNU Library General Public License # 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, # along with this library; if not, write to the Free Software Foundation,
# Inc., 675 Mass Ave, Cambridge, MA 02139, USA. # Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
# #
#============================================================================ #============================================================================
#---------------------------------------------------------------------------- #----------------------------------------------------------------------------
# private rule - please specify the options in Application, Plugin or Library # private rule - please specify the options in Application, Plugin or Library
# rule and don't use this rule here directly. # rule and don't use this rule here directly.
## CheckOptions candidates : Options : target ## CheckOptions candidates : Options : target
rule CheckOptions rule CheckOptions
{ {
local i ; local i ;
for i in $(>) for i in $(>)
{ {
if ! [ IsElem $(i) : $(<) ] if ! [ IsElem $(i) : $(<) ]
{ {
echo "WARNING: Unknown option $(i) specified at $(3)." ; echo "WARNING: Unknown option $(i) specified at $(3)." ;
} }
} }
} }

View File

@@ -1,179 +1,179 @@
#============================================================================ #============================================================================
# Rules for plugin creation # Rules for plugin creation
# Copyright (C)2003 by Matze Braun <matzebraun@users.sourceforge.net> # Copyright (C)2003 by Matze Braun <matzebraun@users.sourceforge.net>
# #
# This library is free software; you can redistribute it and/or modify it # 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 # 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 # the Free Software Foundation; either version 2 of the License, or (at your
# option) any later version. # option) any later version.
# #
# This library is distributed in the hope that it will be useful, but # This library is distributed in the hope that it will be useful, but
# WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY # WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
# or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public # or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public
# License for more details. # License for more details.
# #
# You should have received a copy of the GNU Library General Public License # 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, # along with this library; if not, write to the Free Software Foundation,
# Inc., 675 Mass Ave, Cambridge, MA 02139, USA. # Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
# #
#============================================================================ #============================================================================
SUFMETA ?= .csplugin ; SUFMETA ?= .csplugin ;
GRISTMETA ?= pluginmeta ; GRISTMETA ?= pluginmeta ;
## Plugin pluginname : sources [ : options ] ## Plugin pluginname : sources [ : options ]
## Build a plugin out of sourcefiles. All sourcefiles will be passed ## Build a plugin out of sourcefiles. All sourcefiles will be passed
## to the Objects rule which tries to compile them into object-files. You ## to the Objects rule which tries to compile them into object-files. You
## can create rules for your own filetypes with the UserObject rule. Header ## can create rules for your own filetypes with the UserObject rule. Header
## files will just be ignored. They are only used for MSVC projectfile ## files will just be ignored. They are only used for MSVC projectfile
## generator. ## generator.
## You can specify the noinstall option if you don't want that an install ## You can specify the noinstall option if you don't want that an install
## target is created. ## target is created.
## Options: ## Options:
## noinstall: Don't setup a default installation target. ## noinstall: Don't setup a default installation target.
## independent: The target will not be made a dependency of the plugins ## independent: The target will not be made a dependency of the plugins
## and all target. ## and all target.
## nohelp: Do not invoke Help for this target. ## nohelp: Do not invoke Help for this target.
## notest: Do not set up unit-testing support for this target. ## notest: Do not set up unit-testing support for this target.
rule Plugin rule Plugin
{ {
# check options # check options
CheckOptions noinstall independent nohelp notest : $(3) : $(<) ; CheckOptions noinstall independent nohelp notest : $(3) : $(<) ;
local metafile ; local metafile ;
metafile = [ FAppendSuffix $(<) : $(SUFMETA) ] ; metafile = [ FAppendSuffix $(<) : $(SUFMETA) ] ;
SEARCH on $(metafile) = $(SEARCH_SOURCE) ; SEARCH on $(metafile) = $(SEARCH_SOURCE) ;
local target = [ ConstructPluginTarget $(<) : $(3) ] ; local target = [ ConstructPluginTarget $(<) : $(3) ] ;
local sources = [ DoSourceGrist $(>) ] ; local sources = [ DoSourceGrist $(>) ] ;
local objects = [ CompileObjects $(sources) ] ; local objects = [ CompileObjects $(sources) ] ;
$(<)_TYPE = plugin ; $(<)_TYPE = plugin ;
$(<)_OBJECTS = $(objects) ; $(<)_OBJECTS = $(objects) ;
$(<)_SOURCES = $(sources) ; $(<)_SOURCES = $(sources) ;
$(<)_TARGET = $(target) ; $(<)_TARGET = $(target) ;
$(<)_METAFILE = $(metafile) ; $(<)_METAFILE = $(metafile) ;
# Create a target for eventual static linking # Create a target for eventual static linking
if ! $(NO_STATIC_LINKING) if ! $(NO_STATIC_LINKING)
{ {
SubVariant static ; SubVariant static ;
local staticreginfoobject = [ BuildStaticRegFile $(<) : $(statictarget) ] ; local staticreginfoobject = [ BuildStaticRegFile $(<) : $(statictarget) ] ;
# Add objects to the list of candidates for potential inclusion in a # Add objects to the list of candidates for potential inclusion in a
# monolithic static library containing objects for all plugins (useful for # monolithic static library containing objects for all plugins (useful for
# statically linking the plugins into an application if the client so # statically linking the plugins into an application if the client so
# desires). # desires).
local staticobjects = [ CompileObjects $(sources) : $(<) ] ; local staticobjects = [ CompileObjects $(sources) : $(<) ] ;
local obj_remain = $(objects) ; local obj_remain = $(objects) ;
local staticobj_remain = $(staticobjects) ; local staticobj_remain = $(staticobjects) ;
while $(obj_remain) while $(obj_remain)
{ {
local obj = $(obj_remain[1]) ; local obj = $(obj_remain[1]) ;
local staticobj = $(staticobj_remain[1]) ; local staticobj = $(staticobj_remain[1]) ;
STATICPLUGINS.OBJECTS.$(staticobj) = $(obj) ; STATICPLUGINS.OBJECTS.$(staticobj) = $(obj) ;
obj_remain = $(obj_remain[2-]) ; obj_remain = $(obj_remain[2-]) ;
staticobj_remain = $(staticobj_remain[2-]) ; staticobj_remain = $(staticobj_remain[2-]) ;
} }
MakeLocate $(staticobjects) : $(LOCATE_TARGET) ; MakeLocate $(staticobjects) : $(LOCATE_TARGET) ;
STATICPLUGINS.OBJECTS.$(<) += $(staticreginfoobject) ; STATICPLUGINS.OBJECTS.$(<) += $(staticreginfoobject) ;
STATICPLUGINS.OBJECTS.$(<) += $(staticobjects) ; STATICPLUGINS.OBJECTS.$(<) += $(staticobjects) ;
STATICPLUGINS.SUBTARGETS += $(<) ; STATICPLUGINS.SUBTARGETS += $(<) ;
SubVariant ; SubVariant ;
} }
# so 'jam foo' works when it's really foo.dll (Windows) or foo.csbundle # so 'jam foo' works when it's really foo.dll (Windows) or foo.csbundle
# (MacOS/X) # (MacOS/X)
if $(target) != $(<) if $(target) != $(<)
{ {
Depends $(<) : $(target) ; Depends $(<) : $(target) ;
NotFile $(<) ; NotFile $(<) ;
} }
if ! [ IsElem independent : $(3) ] if ! [ IsElem independent : $(3) ]
{ {
Depends plugins : $(<) ; Depends plugins : $(<) ;
} }
# construct install target # construct install target
if ! [ IsElem noinstall : $(3) ] if ! [ IsElem noinstall : $(3) ]
{ {
SystemInstallPlugin $(target) ; SystemInstallPlugin $(target) ;
} }
# Link # Link
MakeLocate $(target) : $(LOCATE.TARGETS) ; MakeLocate $(target) : $(LOCATE.TARGETS) ;
SystemLinkPlugin $(<) : $(objects) : $(3) ; SystemLinkPlugin $(<) : $(objects) : $(3) ;
local cleanextra ; local cleanextra ;
if $(LINK.DEBUG.INFO.SEPARATE) = "yes" if $(LINK.DEBUG.INFO.SEPARATE) = "yes"
{ {
local debugfile = [ SplitDebugInfo $(target) ] ; local debugfile = [ SplitDebugInfo $(target) ] ;
cleanextra += $(debugfile) ; cleanextra += $(debugfile) ;
if ! [ IsElem noinstall : $(3) ] if ! [ IsElem noinstall : $(3) ]
{ {
NoCare $(debugfile) ; NoCare $(debugfile) ;
Depends install_plugin : [ DoInstall $(debugfile) : $(plugindir) : $(INSTALL_DATA) ] ; Depends install_plugin : [ DoInstall $(debugfile) : $(plugindir) : $(INSTALL_DATA) ] ;
} }
} }
CFlags $(<) : $(PLUGIN.CFLAGS) : nostatic ; CFlags $(<) : $(PLUGIN.CFLAGS) : nostatic ;
LFlags $(<) : $(LINKLIBS) $(PLUGIN.LFLAGS) : nostatic ; LFlags $(<) : $(LINKLIBS) $(PLUGIN.LFLAGS) : nostatic ;
# create target clean rule # create target clean rule
Always $(<)clean ; Always $(<)clean ;
NotFile $(<)clean ; NotFile $(<)clean ;
Clean $(<)clean : $(objects) $(cleanextra) ; Clean $(<)clean : $(objects) $(cleanextra) ;
Clean clean : $(cleanextra) ; Clean clean : $(cleanextra) ;
if ! [ IsElem nohelp : $(3) ] if ! [ IsElem nohelp : $(3) ]
{ {
local desc = [ Description $(<) ] ; local desc = [ Description $(<) ] ;
if ! $(desc) { desc = "$(<) plugin" ; } if ! $(desc) { desc = "$(<) plugin" ; }
Help $(<) : "Build the $(desc)" ; Help $(<) : "Build the $(desc)" ;
} }
if ! [ IsElem notest : $(options) ] if ! [ IsElem notest : $(options) ]
{ {
# @@@ Disabled for now; see docs/todo_jam.txt # @@@ Disabled for now; see docs/todo_jam.txt
#UnitTest $(<) ; #UnitTest $(<) ;
} }
} }
#---------------------------------------------------------------------------- #----------------------------------------------------------------------------
# private rules # private rules
# PluginMetaData pluginname : metafile [ : options ] # PluginMetaData pluginname : metafile [ : options ]
# Copy a plugin's meta file so that it resides alongside the generated # Copy a plugin's meta file so that it resides alongside the generated
# plugin module. This utility rule may be used by SystemLinkPlugin rules # plugin module. This utility rule may be used by SystemLinkPlugin rules
# which employ the default behavior of having a plugin's meta-data file # which employ the default behavior of having a plugin's meta-data file
# reside alongside the plugin executable (as opposed to bundling the # reside alongside the plugin executable (as opposed to bundling the
# metadata directly into the plugin). # metadata directly into the plugin).
# Options: # Options:
# noinstall: Don't setup a default installation target. # noinstall: Don't setup a default installation target.
rule PluginMetaData rule PluginMetaData
{ {
local target = $(>:G=$(GRISTMETA)) ; local target = $(>:G=$(GRISTMETA)) ;
Depends $(<) : $(target) ; Depends $(<) : $(target) ;
Depends $(target) : $(>) ; Depends $(target) : $(>) ;
MakeLocate $(target) : $(LOCATE.TARGETS) ; MakeLocate $(target) : $(LOCATE.TARGETS) ;
Copy $(target) : $(>) ; Copy $(target) : $(>) ;
Clean clean : $(target) ; Clean clean : $(target) ;
Clean $(<)clean : $(target) ; Clean $(<)clean : $(target) ;
if ! [ IsElem noinstall : $(3) ] if ! [ IsElem noinstall : $(3) ]
{ {
Depends install_plugin : [ DoInstall $(target) : $(plugindir) ] ; Depends install_plugin : [ DoInstall $(target) : $(plugindir) ] ;
} }
} }
# Construct pseudo target plugins # Construct pseudo target plugins
Depends exe : plugins ; Depends exe : plugins ;
NotFile plugins ; NotFile plugins ;
Help plugins : "Build all plugin modules" ; Help plugins : "Build all plugin modules" ;

View File

@@ -1,58 +1,58 @@
#============================================================================== #==============================================================================
# Generic property-bag mechanism. # Generic property-bag mechanism.
# Copyright (C) 2004 by Eric Sunshine <sunshine@sunshineco.com> # Copyright (C) 2004 by Eric Sunshine <sunshine@sunshineco.com>
# #
# This library is free software; you can redistribute it and/or modify it # 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 # 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 # the Free Software Foundation; either version 2 of the License, or (at your
# option) any later version. # option) any later version.
# #
# This library is distributed in the hope that it will be useful, but # This library is distributed in the hope that it will be useful, but
# WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY # WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
# or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public # or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public
# License for more details. # License for more details.
# #
# You should have received a copy of the GNU Library General Public License # 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, # along with this library; if not, write to the Free Software Foundation,
# Inc., 675 Mass Ave, Cambridge, MA 02139, USA. # Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
# #
#============================================================================== #==============================================================================
# Property bag : name # Property bag : name
# Returns the value of property 'name' in container 'bag' if present, else # Returns the value of property 'name' in container 'bag' if present, else
# returns a null value. 'bag' and 'name' should be simple identifiers # returns a null value. 'bag' and 'name' should be simple identifiers
# composed of alphanumeric characters and underscore, and with an alphabetic # composed of alphanumeric characters and underscore, and with an alphabetic
# or an underscore as the first character. # or an underscore as the first character.
rule Property rule Property
{ {
local p = [ _PropertyName $(<) : $(>) ] ; local p = [ _PropertyName $(<) : $(>) ] ;
return $($(p)) ; return $($(p)) ;
} }
# SetProperty bag : name [ : value ] # SetProperty bag : name [ : value ]
# Add property 'name' to container 'bag'. If 'value' is not provided, sets # Add property 'name' to container 'bag'. If 'value' is not provided, sets
# the property to "true". # the property to "true".
rule SetProperty rule SetProperty
{ {
local p = [ _PropertyName $(<) : $(>) ] ; local p = [ _PropertyName $(<) : $(>) ] ;
local v = $(3) ; local v = $(3) ;
if ! $(v) { v = "true" ; } if ! $(v) { v = "true" ; }
$(p) = $(v) ; $(p) = $(v) ;
} }
# ClearProperty bag : name # ClearProperty bag : name
# Remove property 'name' from container 'bag'. # Remove property 'name' from container 'bag'.
rule ClearProperty rule ClearProperty
{ {
local p = [ _PropertyName $(<) : $(>) ] ; local p = [ _PropertyName $(<) : $(>) ] ;
$(p) = "" ; $(p) = "" ;
} }
#------------------------------------------------------------------------------ #------------------------------------------------------------------------------
# Private utilitiy rules. # Private utilitiy rules.
#------------------------------------------------------------------------------ #------------------------------------------------------------------------------
rule _PropertyName rule _PropertyName
{ {
return "__property_$(<)_$(>)" ; return "__property_$(<)_$(>)" ;
} }

View File

@@ -1,109 +1,109 @@
#============================================================================ #============================================================================
# Rules for handling additional resources. # Rules for handling additional resources.
# Platform-specific Jam files may override these if needed. # Platform-specific Jam files may override these if needed.
# #
# Copyright (C)2004 by Eric Sunshine <sunshine@sunshineco.com> # Copyright (C)2004 by Eric Sunshine <sunshine@sunshineco.com>
# #
# This library is free software; you can redistribute it and/or modify it # 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 # 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 # the Free Software Foundation; either version 2 of the License, or (at your
# option) any later version. # option) any later version.
# #
# This library is distributed in the hope that it will be useful, but # This library is distributed in the hope that it will be useful, but
# WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY # WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
# or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public # or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public
# License for more details. # License for more details.
# #
# You should have received a copy of the GNU Library General Public License # 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, # along with this library; if not, write to the Free Software Foundation,
# Inc., 675 Mass Ave, Cambridge, MA 02139, USA. # Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
# #
#============================================================================ #============================================================================
## ApplicationIconDefault platform : type [ : icon [ : pathcomponents ]] ## ApplicationIconDefault platform : type [ : icon [ : pathcomponents ]]
## If invoked with three or more arguments, specifies the default icon for ## If invoked with three or more arguments, specifies the default icon for
## applications of the specified type for the given platform, which may be ## applications of the specified type for the given platform, which may be
## 'macosx', 'win32', or 'unix'. Type should be 'all', 'gui', or 'console'. ## 'macosx', 'win32', or 'unix'. Type should be 'all', 'gui', or 'console'.
## If pathcomponents is omitted, SEARCH_SOURCE is used. This setting can be ## If pathcomponents is omitted, SEARCH_SOURCE is used. This setting can be
## overriden for an individual application with the ApplicationIcon rule. ## overriden for an individual application with the ApplicationIcon rule.
## This rule must be invoked before invoking any Application rules if it is ## This rule must be invoked before invoking any Application rules if it is
## to have any effect. If invoked with two arguments, returns the default ## to have any effect. If invoked with two arguments, returns the default
## icon (if any) for the given platform and type. ## icon (if any) for the given platform and type.
rule ApplicationIconDefault rule ApplicationIconDefault
{ {
local platform = $(1) ; local platform = $(1) ;
local type = $(2) ; local type = $(2) ;
local icon = $(3) ; local icon = $(3) ;
local iconpath = $(4) ; local iconpath = $(4) ;
local key = default_$(platform)_$(type) ; local key = default_$(platform)_$(type) ;
if $(icon) if $(icon)
{ {
SetProperty appicon : $(key) : $(icon) ; SetProperty appicon : $(key) : $(icon) ;
if $(iconpath) if $(iconpath)
{ {
SEARCH on $(icon) = [ ConcatDirs $(iconpath) ] ; SEARCH on $(icon) = [ ConcatDirs $(iconpath) ] ;
} }
else else
{ {
SEARCH on $(icon) = $(SEARCH_SOURCE) ; SEARCH on $(icon) = $(SEARCH_SOURCE) ;
} }
} }
local result = [ Property appicon : $(key) ] ; local result = [ Property appicon : $(key) ] ;
if ! $(result) && $(type) != all if ! $(result) && $(type) != all
{ {
result = [ Property appicon : default_$(platform)_all ] ; result = [ Property appicon : default_$(platform)_all ] ;
} }
return $(result) ; return $(result) ;
} }
## ApplicationIcon platform : basename [ : icon [ : pathcomponents ]] ## ApplicationIcon platform : basename [ : icon [ : pathcomponents ]]
## If invoked with three or more arguments, specifies the icon for the ## If invoked with three or more arguments, specifies the icon for the
## application given by basename for the indicated platform, which may be ## application given by basename for the indicated platform, which may be
## 'macosx', 'win32', or 'unix'. If pathcomponents is omitted, ## 'macosx', 'win32', or 'unix'. If pathcomponents is omitted,
## SEARCH_SOURCE is used. If this rule is not invoked, then the icon ## SEARCH_SOURCE is used. If this rule is not invoked, then the icon
## specified via ApplicationIconDefault is used, if any. This rule must be ## specified via ApplicationIconDefault is used, if any. This rule must be
## invoked before the Application rule to which this icon will apply. If ## invoked before the Application rule to which this icon will apply. If
## invoked with two arguments, returns the icon (if any) explicitly ## invoked with two arguments, returns the icon (if any) explicitly
## registered for basename for the given platform. ## registered for basename for the given platform.
rule ApplicationIcon rule ApplicationIcon
{ {
local platform = $(1) ; local platform = $(1) ;
local target = $(2) ; local target = $(2) ;
local icon = $(3) ; local icon = $(3) ;
local iconpath = $(4) ; local iconpath = $(4) ;
local key = app_$(platform)_$(target) ; local key = app_$(platform)_$(target) ;
if $(icon) if $(icon)
{ {
SetProperty appicon : $(key) : $(icon) ; SetProperty appicon : $(key) : $(icon) ;
if $(iconpath) if $(iconpath)
{ {
SEARCH on $(icon) = [ ConcatDirs $(iconpath) ] ; SEARCH on $(icon) = [ ConcatDirs $(iconpath) ] ;
} }
else else
{ {
SEARCH on $(icon) = $(SEARCH_SOURCE) ; SEARCH on $(icon) = $(SEARCH_SOURCE) ;
} }
# An ugly but effective way to detect incorrect usage. # An ugly but effective way to detect incorrect usage.
if $($(target)_TARGET) if $($(target)_TARGET)
{ {
Echo "Warning: `ApplicationIcon:$(target):$(icon)' incorrectly invoked" Echo "Warning: `ApplicationIcon:$(target):$(icon)' incorrectly invoked"
"after Application rule." ; "after Application rule." ;
} }
} }
return [ Property appicon : $(key) ] ; return [ Property appicon : $(key) ] ;
} }
## Win32Resource basename : rcfiles ## Win32Resource basename : rcfiles
## Specify .rc files for the target known as basename. The .rc files should ## Specify .rc files for the target known as basename. The .rc files should
## already have SEARCH set appropriately. ## already have SEARCH set appropriately.
rule Win32Resource { } rule Win32Resource { }
## Win32RcFlags basename : rcfiles ## Win32RcFlags basename : rcfiles
## Specify flags passed to the resource compiler when compiling resources ## Specify flags passed to the resource compiler when compiling resources
## for the target known as basename. ## for the target known as basename.
rule Win32RcFlags { } rule Win32RcFlags { }

View File

@@ -1,353 +1,353 @@
#============================================================================ #============================================================================
# Utility rules for static builds without plugins # Utility rules for static builds without plugins
# Copyright (C)2003 by Matze Braun <matzebraun@users.sourceforge.net> # Copyright (C)2003 by Matze Braun <matzebraun@users.sourceforge.net>
# #
# This library is free software; you can redistribute it and/or modify it # 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 # 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 # the Free Software Foundation; either version 2 of the License, or (at your
# option) any later version. # option) any later version.
# #
# This library is distributed in the hope that it will be useful, but # This library is distributed in the hope that it will be useful, but
# WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY # WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
# or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public # or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public
# License for more details. # License for more details.
# #
# You should have received a copy of the GNU Library General Public License # 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, # along with this library; if not, write to the Free Software Foundation,
# Inc., 675 Mass Ave, Cambridge, MA 02139, USA. # Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
# #
#============================================================================ #============================================================================
# all private # all private
rule GenerateStaticPluginBoilerplate rule GenerateStaticPluginBoilerplate
{ {
ResponseFile $(<) : ResponseFile $(<) :
"// This file is automatically generated." "// This file is automatically generated."
"#include \"cssysdef.h\"" "#include \"cssysdef.h\""
"#include \"csutil/scf.h\"" "#include \"csutil/scf.h\""
"" ""
"// Put static linking stuff into own section." "// Put static linking stuff into own section."
"// The idea is that this allows the section to be swapped out but not" "// The idea is that this allows the section to be swapped out but not"
"// swapped in again b/c something else in it was needed." "// swapped in again b/c something else in it was needed."
"#if !defined(CS_DEBUG) && defined(CS_COMPILER_MSVC)" "#if !defined(CS_DEBUG) && defined(CS_COMPILER_MSVC)"
"#pragma const_seg(\".CSmetai\")" "#pragma const_seg(\".CSmetai\")"
"#pragma comment(linker, \"/section:.CSmetai,r\")" "#pragma comment(linker, \"/section:.CSmetai,r\")"
"#pragma code_seg(\".CSmeta\")" "#pragma code_seg(\".CSmeta\")"
"#pragma comment(linker, \"/section:.CSmeta,er\")" "#pragma comment(linker, \"/section:.CSmeta,er\")"
"#pragma comment(linker, \"/merge:.CSmetai=.CSmeta\")" "#pragma comment(linker, \"/merge:.CSmetai=.CSmeta\")"
"#endif" "#endif"
: notfile ; : notfile ;
} }
rule GenerateStaticPluginInstantiation rule GenerateStaticPluginInstantiation
{ {
GenerateStaticPluginBoilerplate $(<) ; GenerateStaticPluginBoilerplate $(<) ;
ResponseFile $(<) : "SCF_USE_STATIC_PLUGIN($(>:B))" : notfile ; ResponseFile $(<) : "SCF_USE_STATIC_PLUGIN($(>:B))" : notfile ;
} }
rule GenerateStaticPluginRegistration rule GenerateStaticPluginRegistration
{ {
GenerateStaticPluginBoilerplate $(<) ; GenerateStaticPluginBoilerplate $(<) ;
GenerateStaticPluginRegistration1 $(<) : $(>) ; GenerateStaticPluginRegistration1 $(<) : $(>) ;
} }
rule BuildStaticRegFile rule BuildStaticRegFile
{ {
local statictarget = $(>) ; local statictarget = $(>) ;
# prepare source files # prepare source files
local sources = [ DoObjectGrist _$(<)_static_reg.cpp ] ; local sources = [ DoObjectGrist _$(<)_static_reg.cpp ] ;
local object = [ CompileObject $(sources) ] ; local object = [ CompileObject $(sources) ] ;
MakeLocate $(sources) : $(LOCATE_TARGET) ; MakeLocate $(sources) : $(LOCATE_TARGET) ;
MakeLocate $(object) : $(LOCATE_TARGET) ; MakeLocate $(object) : $(LOCATE_TARGET) ;
local metalist metafile i ; local metalist metafile i ;
for i in $(<) for i in $(<)
{ {
metafile = $($(i)_METAFILE) ; metafile = $($(i)_METAFILE) ;
metalist += $(metafile) ; metalist += $(metafile) ;
Depends $(sources) : $(metafile) ; Depends $(sources) : $(metafile) ;
} }
GenerateStaticPluginRegistration $(sources) : $(metalist) ; GenerateStaticPluginRegistration $(sources) : $(metalist) ;
Clean $(statictarget)clean : $(sources) ; Clean $(statictarget)clean : $(sources) ;
Clean $(statictarget)clean : $(object) ; Clean $(statictarget)clean : $(object) ;
return $(object) ; return $(object) ;
} }
rule BuildStaticUseFile rule BuildStaticUseFile
{ {
local statictarget = $(2) ; local statictarget = $(2) ;
local package = $(3) ; local package = $(3) ;
# prepare source files # prepare source files
local sources ; local sources ;
if $(3) if $(3)
{ {
sources = [ DoObjectGrist _cs_static_use_$(package).cpp ] ; sources = [ DoObjectGrist _cs_static_use_$(package).cpp ] ;
} }
else else
{ {
sources = [ DoObjectGrist _cs_static_use.cpp ] ; sources = [ DoObjectGrist _cs_static_use.cpp ] ;
} }
local object = [ CompileObject $(sources) ] ; local object = [ CompileObject $(sources) ] ;
MakeLocate $(sources) : $(LOCATE_TARGET) ; MakeLocate $(sources) : $(LOCATE_TARGET) ;
SEARCH on $(sources) = $(LOCATE_TARGET) ; SEARCH on $(sources) = $(LOCATE_TARGET) ;
MakeLocate $(object) : $(LOCATE_TARGET) ; MakeLocate $(object) : $(LOCATE_TARGET) ;
C++FLAGS on $(object) += $($($(>).EXTERNALLIBS).CFLAGS) ; C++FLAGS on $(object) += $($($(>).EXTERNALLIBS).CFLAGS) ;
GenerateStaticPluginInstantiation $(sources) : $(<) ; GenerateStaticPluginInstantiation $(sources) : $(<) ;
Clean $(statictarget)clean : $(sources) ; Clean $(statictarget)clean : $(sources) ;
Clean $(statictarget)clean : $(object) ; Clean $(statictarget)clean : $(object) ;
return $(object) ; return $(object) ;
} }
## LinkStaticPlugins target : plugins [: optionalplugins] [: package] ## LinkStaticPlugins target : plugins [: optionalplugins] [: package]
## Builds the plugins in 'plugins' (and 'optionalplugins') statically into ## Builds the plugins in 'plugins' (and 'optionalplugins') statically into
## 'target'. Can be used both for static plugins from the local project or ## 'target'. Can be used both for static plugins from the local project or
## an external project. In the latter case, the project's static plugin ## an external project. In the latter case, the project's static plugin
## library has to have been built, also, the "<package>.STATICDEPS" ## library has to have been built, also, the "<package>.STATICDEPS"
## variable must contain a path to a specially generated Jamfile that ## variable must contain a path to a specially generated Jamfile that
## contains information about the plugins provided by as well as external ## contains information about the plugins provided by as well as external
## dependencies. The static plugins library for both local and external ## dependencies. The static plugins library for both local and external
## package must be explicitly linked into 'target'. ## package must be explicitly linked into 'target'.
rule LinkStaticPlugins rule LinkStaticPlugins
{ {
local package target plugins optplugins ; local package target plugins optplugins ;
# Fetch the parameters # Fetch the parameters
target = $(1) ; target = $(1) ;
plugins = $(2) ; plugins = $(2) ;
optplugins = $(3) ; optplugins = $(3) ;
package = $(4) ; package = $(4) ;
if $(package) if $(package)
{ {
# External static plugins. # External static plugins.
# First include static plugin info # First include static plugin info
if ! $(HAVE_STATICDEPS.$(package)) if ! $(HAVE_STATICDEPS.$(package))
{ {
include $($(package).STATICDEPS) ; include $($(package).STATICDEPS) ;
HAVE_STATICDEPS.$(package) = yes ; HAVE_STATICDEPS.$(package) = yes ;
} }
local lflags p ; local lflags p ;
# Collect optional plugins # Collect optional plugins
for p in $(optplugins) for p in $(optplugins)
{ {
if [ IsElem $(p) : $(STATICPLUGINS.AVAILABLE) ] if [ IsElem $(p) : $(STATICPLUGINS.AVAILABLE) ]
{ {
plugins += $(p) ; plugins += $(p) ;
} }
} }
# Grab flags # Grab flags
for p in $(plugins) for p in $(plugins)
{ {
NotFile $(p) ; NotFile $(p) ;
CFlags $(target) : $(STATICPLUGIN.$(p).CFLAGS) ; CFlags $(target) : $(STATICPLUGIN.$(p).CFLAGS) ;
lflags = [ MergeLFlags $(lflags) : $(STATICPLUGIN.$(p).LFLAGS) ] ; lflags = [ MergeLFlags $(lflags) : $(STATICPLUGIN.$(p).LFLAGS) ] ;
} }
LFlags $(target) : $(lflags) ; LFlags $(target) : $(lflags) ;
} }
else else
{ {
# Local static plugins # Local static plugins
local lflags libs p ; local lflags libs p ;
# Collect optional plugins # Collect optional plugins
for p in $(optplugins) for p in $(optplugins)
{ {
if $($(p)_TARGET) if $($(p)_TARGET)
{ {
plugins += $(p) ; plugins += $(p) ;
} }
} }
# Grab flags # Grab flags
for p in $(plugins) for p in $(plugins)
{ {
lflags += [ Filter $($(p).LFLAGS) : $(LINKLIBS) $(PLUGIN.LFLAGS) ] ; lflags += [ Filter $($(p).LFLAGS) : $(LINKLIBS) $(PLUGIN.LFLAGS) ] ;
libs += $($(p).NEEDLIBS) ; libs += $($(p).NEEDLIBS) ;
} }
LFlags $(target) : [ Reverse [ RemoveDups [ Reverse $(lflags) ] ] ] ; LFlags $(target) : [ Reverse [ RemoveDups [ Reverse $(lflags) ] ] ] ;
LinkWith $(target) : [ Reverse [ RemoveDups [ Reverse $(libs) ] ] ] ; LinkWith $(target) : [ Reverse [ RemoveDups [ Reverse $(libs) ] ] ] ;
} }
# construct initialization sourcefile # construct initialization sourcefile
local staticobject = [ BuildStaticUseFile $(plugins) : $(target) : $(package) ] ; local staticobject = [ BuildStaticUseFile $(plugins) : $(target) : $(package) ] ;
ExtraObjects $(target) : $(staticobject) : inheritcflags ; ExtraObjects $(target) : $(staticobject) : inheritcflags ;
} }
## StaticPluginLibrary name [: rejects] ## StaticPluginLibrary name [: rejects]
## Create a library that monolithically contains statically linkable ## Create a library that monolithically contains statically linkable
## versions of all plugins, and also provides a target to install this ## versions of all plugins, and also provides a target to install this
## library ("install_staticplugins") as well as resources to facilitate the ## library ("install_staticplugins") as well as resources to facilitate the
## use of that library from external projects. Also, most plugins will ## use of that library from external projects. Also, most plugins will
## probably themselves depend on other libraries; while those are correctly ## probably themselves depend on other libraries; while those are correctly
## linked in with the static plugins, they are not built or installed when ## linked in with the static plugins, they are not built or installed when
## the static plugin library is. ## the static plugin library is.
## This library is intended to be used together with the ## This library is intended to be used together with the
## "LinkStaticPlugins" rule. ## "LinkStaticPlugins" rule.
rule StaticPluginLibrary rule StaticPluginLibrary
{ {
local name = $(<) ; local name = $(<) ;
local rejects = $(>) ; local rejects = $(>) ;
local t ; local t ;
local targets = $(STATICPLUGINS.SUBTARGETS) ; local targets = $(STATICPLUGINS.SUBTARGETS) ;
if $(rejects) if $(rejects)
{ {
targets = [ Filter $(targets) : $(rejects) ] ; targets = [ Filter $(targets) : $(rejects) ] ;
} }
local objects ; local objects ;
for t in $(targets) for t in $(targets)
{ {
objects += $(STATICPLUGINS.OBJECTS.$(t)) ; objects += $(STATICPLUGINS.OBJECTS.$(t)) ;
} }
# Set up library # Set up library
Library $(name) : $(objects) : noinstall notest independent nohelp ; Library $(name) : $(objects) : noinstall notest independent nohelp ;
SEARCH on $(name) += $(LOCATE_TARGET) ; SEARCH on $(name) += $(LOCATE_TARGET) ;
MsvcDefine $(name) : $(STATICPLUGINS.MSVC_DEFINES) ; MsvcDefine $(name) : $(STATICPLUGINS.MSVC_DEFINES) ;
CFlags $(name) : CFlags $(name) :
[ FDefines CS_STATIC_LINKED ] [ FDefines CS_STATIC_LINKED ]
: nostatic ; : nostatic ;
# Copy a variety of flags # Copy a variety of flags
local o ; local o ;
for o in $(objects) for o in $(objects)
{ {
local sourceobj = $(STATICPLUGINS.OBJECTS.$(o)) ; local sourceobj = $(STATICPLUGINS.OBJECTS.$(o)) ;
if $(sourceobj) if $(sourceobj)
{ {
CCFLAGS on $(o) += [ on $(sourceobj) GetVar CCFLAGS ] ; CCFLAGS on $(o) += [ on $(sourceobj) GetVar CCFLAGS ] ;
C++FLAGS on $(o) += [ on $(sourceobj) GetVar C++FLAGS ] ; C++FLAGS on $(o) += [ on $(sourceobj) GetVar C++FLAGS ] ;
} }
} }
# Write out needed CFLAGS, LFLAGS # Write out needed CFLAGS, LFLAGS
STATICPLUGINS.DEPENDENCIES = $(name).jam ; STATICPLUGINS.DEPENDENCIES = $(name).jam ;
MakeLocate $(STATICPLUGINS.DEPENDENCIES) : $(LOCATE.OBJECTS)/libs ; MakeLocate $(STATICPLUGINS.DEPENDENCIES) : $(LOCATE.OBJECTS)/libs ;
for t in $(targets) for t in $(targets)
{ {
WriteDependencies $(STATICPLUGINS.DEPENDENCIES) : $(t) : $(name) ; WriteDependencies $(STATICPLUGINS.DEPENDENCIES) : $(t) : $(name) ;
} }
Depends $(name) : $(STATICPLUGINS.DEPENDENCIES) ; Depends $(name) : $(STATICPLUGINS.DEPENDENCIES) ;
Clean $(name)clean : $(STATICPLUGINS.DEPENDENCIES) ; Clean $(name)clean : $(STATICPLUGINS.DEPENDENCIES) ;
# Install targets # Install targets
Depends install_staticplugins : Depends install_staticplugins :
[ DoInstall [ ConstructLibraryTarget $(name) ] : $(libdir) ] ; [ DoInstall [ ConstructLibraryTarget $(name) ] : $(libdir) ] ;
Depends install_staticplugins : $(STATICPLUGINS.DEPENDENCIES) ; Depends install_staticplugins : $(STATICPLUGINS.DEPENDENCIES) ;
Depends install_staticplugins : Depends install_staticplugins :
[ DoInstall $(STATICPLUGINS.DEPENDENCIES) : $(libdir) ] ; [ DoInstall $(STATICPLUGINS.DEPENDENCIES) : $(libdir) ] ;
Depends install_staticplugins : install_libs ; Depends install_staticplugins : install_libs ;
INSTALLEDLIBS_OPTIONAL += $(name) ; INSTALLEDLIBS_OPTIONAL += $(name) ;
# Collect library dependencies. The idea is to built all libs needed by the # Collect library dependencies. The idea is to built all libs needed by the
# static plugins when "jam staticplugins" is invoked. # static plugins when "jam staticplugins" is invoked.
for t in $(targets) for t in $(targets)
{ {
local deplibs ; local deplibs ;
if $($(t).NEEDLIBS) if $($(t).NEEDLIBS)
{ {
deplibs += $($(t).NEEDLIBS) ; deplibs += $($(t).NEEDLIBS) ;
} }
deplibs = [ RemoveDups $(deplibs) ] ; deplibs = [ RemoveDups $(deplibs) ] ;
Depends staticplugins : $(deplibs) ; Depends staticplugins : $(deplibs) ;
} }
Help staticplugins : Help staticplugins :
"Build the library with static versions of all plugins" ; "Build the library with static versions of all plugins" ;
Depends staticplugins : libs $(name) ; Depends staticplugins : libs $(name) ;
} }
#---------------------------------------------------------------------------- #----------------------------------------------------------------------------
# Write out CFLAGS, LFLAGS needed by a plugin # Write out CFLAGS, LFLAGS needed by a plugin
rule WriteDependencies rule WriteDependencies
{ {
local cflags ; local cflags ;
local lflags ; local lflags ;
local depfile = $(<) ; local depfile = $(<) ;
local plugin = $(>) ; local plugin = $(>) ;
local name = $(3) ; local name = $(3) ;
local depfile_gristed = $(depfile:G=$(plugin)) ; local depfile_gristed = $(depfile:G=$(plugin)) ;
MakeLocate $(depfile_gristed) : [ on $(depfile) GetVar LOCATE ] ; MakeLocate $(depfile_gristed) : [ on $(depfile) GetVar LOCATE ] ;
# Collect flags # Collect flags
lflags += -l$(name) ; lflags += -l$(name) ;
local libs = [ ResolveLibs $($(plugin).NEEDLIBS) ] ; local libs = [ ResolveLibs $($(plugin).NEEDLIBS) ] ;
lflags += -l$(libs) ; lflags += -l$(libs) ;
local l ; local l ;
for l in $($(plugin).EXTERNALLIBS) for l in $($(plugin).EXTERNALLIBS)
{ {
cflags += $($(l).CFLAGS) ; cflags += $($(l).CFLAGS) ;
lflags += [ Filter $($(l).LFLAGS) : $(LINKLIBS) $(PLUGIN.LFLAGS) ] ; lflags += [ Filter $($(l).LFLAGS) : $(LINKLIBS) $(PLUGIN.LFLAGS) ] ;
} }
lflags += [ Filter $($(plugin).LFLAGS) : $(LINKLIBS) $(PLUGIN.LFLAGS) ] ; lflags += [ Filter $($(plugin).LFLAGS) : $(LINKLIBS) $(PLUGIN.LFLAGS) ] ;
CFLAGS on $(depfile_gristed) = "$(cflags)" ; CFLAGS on $(depfile_gristed) = "$(cflags)" ;
LFLAGS on $(depfile_gristed) = "$(lflags)" ; LFLAGS on $(depfile_gristed) = "$(lflags)" ;
if $($(depfile).FIRSTTIME) != "yes" if $($(depfile).FIRSTTIME) != "yes"
{ {
WriteDepFlags1 $(depfile_gristed) : $(plugin) ; WriteDepFlags1 $(depfile_gristed) : $(plugin) ;
$(depfile).FIRSTTIME = "yes" ; $(depfile).FIRSTTIME = "yes" ;
} }
else else
{ {
WriteDepFlags2 $(depfile_gristed) : $(plugin) ; WriteDepFlags2 $(depfile_gristed) : $(plugin) ;
} }
Depends $(depfile) : $(depfile_gristed) ; Depends $(depfile) : $(depfile_gristed) ;
} }
actions WriteDepFlags1 actions WriteDepFlags1
{ {
cat << EOT > $(<) cat << EOT > $(<)
STATICPLUGINS.AVAILABLE += $(>) ; STATICPLUGINS.AVAILABLE += $(>) ;
STATICPLUGIN.$(>).CFLAGS = $(CFLAGS) ; STATICPLUGIN.$(>).CFLAGS = $(CFLAGS) ;
STATICPLUGIN.$(>).LFLAGS = $(LFLAGS) ; STATICPLUGIN.$(>).LFLAGS = $(LFLAGS) ;
EOT EOT
} }
actions WriteDepFlags2 actions WriteDepFlags2
{ {
cat << EOT >> $(<) cat << EOT >> $(<)
STATICPLUGINS.AVAILABLE += $(>) ; STATICPLUGINS.AVAILABLE += $(>) ;
STATICPLUGIN.$(>).CFLAGS = $(CFLAGS) ; STATICPLUGIN.$(>).CFLAGS = $(CFLAGS) ;
STATICPLUGIN.$(>).LFLAGS = $(LFLAGS) ; STATICPLUGIN.$(>).LFLAGS = $(LFLAGS) ;
EOT EOT
} }
actions piecemeal GenerateStaticPluginRegistration1 actions piecemeal GenerateStaticPluginRegistration1
{ {
echo 'namespace csStaticPluginInit' >> $(<) echo 'namespace csStaticPluginInit' >> $(<)
echo '{' >> $(<) echo '{' >> $(<)
for x in $(>) for x in $(>)
do do
n=`basename $x $(SUFMETA)` n=`basename $x $(SUFMETA)`
echo "static char const metainfo_${n}[] =" >> $(<) echo "static char const metainfo_${n}[] =" >> $(<)
$(SED) 's:\\:\\\\:g;s:":\\":g;s:\(.*\):"\1":' < $x >>$(<) $(SED) 's:\\:\\\\:g;s:":\\":g;s:\(.*\):"\1":' < $x >>$(<)
echo ";" >> $(<) echo ";" >> $(<)
$(SED) '/<implementation>/!d;s:[ ]*<implementation>\(..*\)</implementation>: #ifndef \1_FACTORY_REGISTER_DEFINED \ $(SED) '/<implementation>/!d;s:[ ]*<implementation>\(..*\)</implementation>: #ifndef \1_FACTORY_REGISTER_DEFINED \
#define \1_FACTORY_REGISTER_DEFINED \ #define \1_FACTORY_REGISTER_DEFINED \
SCF_DEFINE_FACTORY_FUNC_REGISTRATION(\1) \ SCF_DEFINE_FACTORY_FUNC_REGISTRATION(\1) \
#endif:g' < $x >> $(<) #endif:g' < $x >> $(<)
done done
echo '' >> $(<) echo '' >> $(<)
for x in $(>) for x in $(>)
do do
n=`basename $x $(SUFMETA)` n=`basename $x $(SUFMETA)`
echo "class ${n}" >> $(<) echo "class ${n}" >> $(<)
echo "{" >> $(<) echo "{" >> $(<)
echo "SCF_REGISTER_STATIC_LIBRARY($n,metainfo_${n})" >>$(<) echo "SCF_REGISTER_STATIC_LIBRARY($n,metainfo_${n})" >>$(<)
$(SED) '/<implementation>/!d;s:[ ]*<implementation>\(..*\)</implementation>: #ifndef \1_FACTORY_REGISTERED \ $(SED) '/<implementation>/!d;s:[ ]*<implementation>\(..*\)</implementation>: #ifndef \1_FACTORY_REGISTERED \
#define \1_FACTORY_REGISTERED \ #define \1_FACTORY_REGISTERED \
\1_StaticInit \1_static_init__; \ \1_StaticInit \1_static_init__; \
#endif:g' < $x >> $(<) #endif:g' < $x >> $(<)
echo "public:" >> $(<) echo "public:" >> $(<)
echo " ${n}();" >> $(<) echo " ${n}();" >> $(<)
echo "};" >> $(<) echo "};" >> $(<)
echo "$n::$n() {}" >> $(<) echo "$n::$n() {}" >> $(<)
echo "" >> $(<) echo "" >> $(<)
done done
echo '}' >> $(<) echo '}' >> $(<)
} }

View File

@@ -1,36 +1,36 @@
#============================================================================ #============================================================================
# Rules for stripping binaries # Rules for stripping binaries
# Copyright (C)2006 by Frank Richter # Copyright (C)2006 by Frank Richter
# #
# This library is free software; you can redistribute it and/or modify it # 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 # 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 # the Free Software Foundation; either version 2 of the License, or (at your
# option) any later version. # option) any later version.
# #
# This library is distributed in the hope that it will be useful, but # This library is distributed in the hope that it will be useful, but
# WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY # WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
# or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public # or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public
# License for more details. # License for more details.
# #
# You should have received a copy of the GNU Library General Public License # 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, # along with this library; if not, write to the Free Software Foundation,
# Inc., 675 Mass Ave, Cambridge, MA 02139, USA. # Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
# #
#============================================================================ #============================================================================
## SplitDebugInfo binary ## SplitDebugInfo binary
## Strips the debugging information into a separate external file. ## Strips the debugging information into a separate external file.
rule SplitDebugInfo rule SplitDebugInfo
{ {
local binary = $(1) ; local binary = $(1) ;
DoSplitDebugInfo $(binary) ; DoSplitDebugInfo $(binary) ;
return $(binary).dbg ; return $(binary).dbg ;
} }
actions DoSplitDebugInfo actions DoSplitDebugInfo
{ {
$(CMD.OBJCOPY) --only-keep-debug $(<) $(<).dbg $(CMD.OBJCOPY) --only-keep-debug $(<) $(<).dbg
$(CMD.OBJCOPY) --strip-unneeded $(<) $(CMD.OBJCOPY) --strip-unneeded $(<)
$(CMD.OBJCOPY) --add-gnu-debuglink=$(<).dbg $(<) $(CMD.OBJCOPY) --add-gnu-debuglink=$(<).dbg $(<)
if [ "$(CHMOD)" ] ; then $(CHMOD) a-x $(<).dbg ; fi if [ "$(CHMOD)" ] ; then $(CHMOD) a-x $(<).dbg ; fi
} }

View File

@@ -1,109 +1,109 @@
#============================================================================ #============================================================================
# Work around problems the SubDir rule of Jambase # Work around problems the SubDir rule of Jambase
# (until jampeople accept my patches :-/ ) # (until jampeople accept my patches :-/ )
# Copyright (C)2003 by Matze Braun <matzebraun@users.sourceforge.net> # Copyright (C)2003 by Matze Braun <matzebraun@users.sourceforge.net>
# #
# This library is free software; you can redistribute it and/or modify it # 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 # 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 # the Free Software Foundation; either version 2 of the License, or (at your
# option) any later version. # option) any later version.
# #
# This library is distributed in the hope that it will be useful, but # This library is distributed in the hope that it will be useful, but
# WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY # WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
# or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public # or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public
# License for more details. # License for more details.
# #
# You should have received a copy of the GNU Library General Public License # 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, # along with this library; if not, write to the Free Software Foundation,
# Inc., 675 Mass Ave, Cambridge, MA 02139, USA. # Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
# #
#============================================================================ #============================================================================
LOCATE.OBJECTS ?= $(BUILDTOP)/out/$(OSFULL[1]:L) ; LOCATE.OBJECTS ?= $(BUILDTOP)/out/$(OSFULL[1]:L) ;
LOCATE.TARGETS ?= $(BUILDTOP) ; LOCATE.TARGETS ?= $(BUILDTOP) ;
LOCATE.DOCS ?= $(BUILDTOP)/out/docs ; LOCATE.DOCS ?= $(BUILDTOP)/out/docs ;
SUBDIRRULES += FixSubDirPath ; SUBDIRRULES += FixSubDirPath ;
CMD.MKDIR ?= mkdir ; CMD.MKDIR ?= mkdir ;
CMD.MKDIRS ?= "$(CMD.MKDIR) -p" ; CMD.MKDIRS ?= "$(CMD.MKDIR) -p" ;
rule FixSubDirPath rule FixSubDirPath
{ {
LOCATE_SOURCE = [ FDirName $(LOCATE.OBJECTS) $(SUBDIR_TOKENS) ] ; LOCATE_SOURCE = [ FDirName $(LOCATE.OBJECTS) $(SUBDIR_TOKENS) ] ;
LOCATE_TARGET = [ FDirName $(LOCATE.OBJECTS) $(SUBDIR_TOKENS) ] ; LOCATE_TARGET = [ FDirName $(LOCATE.OBJECTS) $(SUBDIR_TOKENS) ] ;
} }
# Fix bug in Jambase where SubInclude in the middle of a Jamfile made it break. # Fix bug in Jambase where SubInclude in the middle of a Jamfile made it break.
rule SubInclude rule SubInclude
{ {
if ! $($(<[1])) if ! $($(<[1]))
{ {
Exit SubInclude $(<[1]) without prior SubDir $(<[1]) ; Exit SubInclude $(<[1]) without prior SubDir $(<[1]) ;
} }
local save_SUBDIR_TOKENS = $(SUBDIR_TOKENS) ; local save_SUBDIR_TOKENS = $(SUBDIR_TOKENS) ;
SubDir $(<) ; SubDir $(<) ;
include $(JAMFILE:D=$(SUBDIR)) ; include $(JAMFILE:D=$(SUBDIR)) ;
SubDir $(<[1]) $(save_SUBDIR_TOKENS) ; SubDir $(<[1]) $(save_SUBDIR_TOKENS) ;
} }
# This MakeLocate rule differs from the Jambase one in that it also works with # This MakeLocate rule differs from the Jambase one in that it also works with
# files being in subdirectories. # files being in subdirectories.
rule MakeLocate rule MakeLocate
{ {
# MakeLocate targets : directory ; # MakeLocate targets : directory ;
# Sets special variable LOCATE on targets, and arranges # Sets special variable LOCATE on targets, and arranges
# with MkDir to create target directory. # with MkDir to create target directory.
# Note we grist the directory name with 'dir', # Note we grist the directory name with 'dir',
# so that directory path components and other # so that directory path components and other
# targets don't conflict. # targets don't conflict.
if $(>) && $(>) != "" if $(>) && $(>) != ""
{ {
local i ; local i ;
for i in $(<) for i in $(<)
{ {
LOCATE on $(i) = $(>) ; LOCATE on $(i) = $(>) ;
local targetfile = $(i:R=$(>)) ; local targetfile = $(i:R=$(>)) ;
local targetdir = $(targetfile:D) ; local targetdir = $(targetfile:D) ;
if ! $(targetdir) { targetdir = "." ; } if ! $(targetdir) { targetdir = "." ; }
targetdir = $(targetdir:G=dir) ; targetdir = $(targetdir:G=dir) ;
Depends $(i) : $(targetdir) ; Depends $(i) : $(targetdir) ;
MkDir $(targetdir) ; MkDir $(targetdir) ;
} }
} }
} }
# The default MkDir rule in Jambase has problems when paths contains a sequence # The default MkDir rule in Jambase has problems when paths contains a sequence
# of multiple slashes (ie. bla////fup). We solve these problems and greatly # of multiple slashes (ie. bla////fup). We solve these problems and greatly
# simply this rule by using the "mkdir -p" or mkdirs command. # simply this rule by using the "mkdir -p" or mkdirs command.
rule MkDir rule MkDir
{ {
# MkDir directory ; # MkDir directory ;
# Make a directory and all its parent directories. # Make a directory and all its parent directories.
# Ignore timestamps on directories: we only care if they # Ignore timestamps on directories: we only care if they
# exist. # exist.
NoUpdate $(<) ; NoUpdate $(<) ;
# don't create the dir multiple times # don't create the dir multiple times
if ! $($(<)-mkdir) if ! $($(<)-mkdir)
{ {
$(<)-mkdir = true ; $(<)-mkdir = true ;
MkDir1 $(<) ; MkDir1 $(<) ;
} }
} }
actions MkDir1 actions MkDir1
{ {
$(CMD.MKDIRS) "$(<)" $(CMD.MKDIRS) "$(<)"
} }

View File

@@ -1,225 +1,225 @@
#============================================================================ #============================================================================
# Rules for swig # Rules for swig
# Copyright (C)2004 by Eric Sunshine <sunshine@sunshineco.com> # Copyright (C)2004 by Eric Sunshine <sunshine@sunshineco.com>
# Copyright (C)2003 by Matze Braun <matzebraun@users.sourceforge.net> # Copyright (C)2003 by Matze Braun <matzebraun@users.sourceforge.net>
# #
# This library is free software; you can redistribute it and/or modify it # 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 # 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 # the Free Software Foundation; either version 2 of the License, or (at your
# option) any later version. # option) any later version.
# #
# This library is distributed in the hope that it will be useful, but # This library is distributed in the hope that it will be useful, but
# WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY # WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
# or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public # or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public
# License for more details. # License for more details.
# #
# You should have received a copy of the GNU Library General Public License # 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, # along with this library; if not, write to the Free Software Foundation,
# Inc., 675 Mass Ave, Cambridge, MA 02139, USA. # Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
# #
#============================================================================ #============================================================================
if $(CMD.SWIG) if $(CMD.SWIG)
{ {
# Post-processing of the Swig-generated C++ file. # Post-processing of the Swig-generated C++ file.
# #
# (1) We need to ensure that <stdint.h> defines INT64_C() and cousins, which # (1) We need to ensure that <stdint.h> defines INT64_C() and cousins, which
# means that the __STDC_CONSTANT_MACROS and __STDC_LIMIT_MACROS macros must # means that the __STDC_CONSTANT_MACROS and __STDC_LIMIT_MACROS macros must
# be defined before <stdint.h> is included. In some Python installations, # be defined before <stdint.h> is included. In some Python installations,
# Python.h includes <stdint.h>, and Swig-generated output includes Python.h # Python.h includes <stdint.h>, and Swig-generated output includes Python.h
# before we ever have a chance to define the __STDC_* macros. There is no # before we ever have a chance to define the __STDC_* macros. There is no
# Swig-supported mechanism allowing us to insert these #defines before # Swig-supported mechanism allowing us to insert these #defines before
# Python.h is included, so we post-process the output file. # Python.h is included, so we post-process the output file.
# #
# (2) We #undefine _DEBUG, to ensure that python23.lib is used by MSVC # (2) We #undefine _DEBUG, to ensure that python23.lib is used by MSVC
# instead of python23_d.lib. # instead of python23_d.lib.
# #
# (3) Delete any lines containing the CVS `Header' keyword to ensure that CVS # (3) Delete any lines containing the CVS `Header' keyword to ensure that CVS
# does not consider the file changed simply because `Header' expansion # does not consider the file changed simply because `Header' expansion
# differs. # differs.
# #
# (4) Swig 1.3.22 for Perl emits illegal expressions `new (sometype)[n]' # (4) Swig 1.3.22 for Perl emits illegal expressions `new (sometype)[n]'
# rather than `new sometype[n]' (at least gcc considers it illegal), # rather than `new sometype[n]' (at least gcc considers it illegal),
# therefore, we transform the expression by dropping the parentheses. # therefore, we transform the expression by dropping the parentheses.
# #
# (5) cs_pyth.cpp contains a macro "#define SWIG_init init_cspace". However, # (5) cs_pyth.cpp contains a macro "#define SWIG_init init_cspace". However,
# cs_pyth.cpp may reside in a shared lib, so we rather want the name # cs_pyth.cpp may reside in a shared lib, so we rather want the name
# SWIG_init and define init_cspace as a simple forwared ourselves. # SWIG_init and define init_cspace as a simple forwared ourselves.
# #
# (6) perl.h includes dirent.h on some configurations which conflicts with # (6) perl.h includes dirent.h on some configurations which conflicts with
# the CS definitions of dirent, opendir, etc. So define _DIRENT_H_ to # the CS definitions of dirent, opendir, etc. So define _DIRENT_H_ to
# make dirent.h skip its body. This is hackish but no better solution # make dirent.h skip its body. This is hackish but no better solution
# has been found. # has been found.
# #
# (Despite the fact that these customizations might seem project-specific, # (Despite the fact that these customizations might seem project-specific,
# they should be safe for all projects.) # they should be safe for all projects.)
SWIG.SED_SCRIPT = SWIG.SED_SCRIPT =
"'s/\\([ ]*#[ ]*include[ ][ ]*[<\"]Python.h[>\"]\\)/\\ "'s/\\([ ]*#[ ]*include[ ][ ]*[<\"]Python.h[>\"]\\)/\\
#ifndef __STDC_CONSTANT_MACROS\\ #ifndef __STDC_CONSTANT_MACROS\\
#define __STDC_CONSTANT_MACROS\\ #define __STDC_CONSTANT_MACROS\\
#endif\\ #endif\\
#ifndef __STDC_LIMIT_MACROS\\ #ifndef __STDC_LIMIT_MACROS\\
#define __STDC_LIMIT_MACROS\\ #define __STDC_LIMIT_MACROS\\
#endif\\ #endif\\
#ifndef DEBUG_PYTHON\\ #ifndef DEBUG_PYTHON\\
#undef _DEBUG\\ #undef _DEBUG\\
#endif\\ #endif\\
\\1/g \\1/g
/\$Header:/d /\$Header:/d
s/new[ ][ ]*(\\([^)][^)]*\\))[ ]*\\[/new \\1 [/g s/new[ ][ ]*(\\([^)][^)]*\\))[ ]*\\[/new \\1 [/g
s/[ ]*#[ ]*define[ ][ ]*SWIG_init[ ]*init_\\(.*\\)/#define SWIG_init SWIG_init_\\1/g s/[ ]*#[ ]*define[ ][ ]*SWIG_init[ ]*init_\\(.*\\)/#define SWIG_init SWIG_init_\\1/g
s/\\([ ]*#[ ]*include[ ][ ]*[<\"]perl.h[>\"]\\)/\\ s/\\([ ]*#[ ]*include[ ][ ]*[<\"]perl.h[>\"]\\)/\\
#ifndef _DIRENT_H_\\ #ifndef _DIRENT_H_\\
#define _DIRENT_H_\\ #define _DIRENT_H_\\
#endif\\ #endif\\
\\1/g'" ; \\1/g'" ;
## Swig targets : swigfile : language [ : swigflags [ : swigincdirs ## Swig targets : swigfile : language [ : swigflags [ : swigincdirs
## [ : swigfiledir [ : frozendirs [ : tag [ : outdir ]]]]]] ## [ : swigfiledir [ : frozendirs [ : tag [ : outdir ]]]]]]
## Given a Swig input file `swigfile', generate `targets' for scripting ## Given a Swig input file `swigfile', generate `targets' for scripting
## language `language'. The first element of `targets' should name the ## language `language'. The first element of `targets' should name the
## generated C or C++ file, and the remaining optional elements should name ## generated C or C++ file, and the remaining optional elements should name
## any other language-specific scripting files which Swig will generate. ## any other language-specific scripting files which Swig will generate.
## For instance, the files widgets.cpp and widgets.py might be emitted by ## For instance, the files widgets.cpp and widgets.py might be emitted by
## Swig for the input file widgets.i. The generated files are placed in ## Swig for the input file widgets.i. The generated files are placed in
## $(LOCATE_TARGET). `swigflags' specifies additional flags to pass to ## $(LOCATE_TARGET). `swigflags' specifies additional flags to pass to
## Swig. `swigincdirs' is a list of additional directories which Swig ## Swig. `swigincdirs' is a list of additional directories which Swig
## should search for files which it includes. `swigfiledir' specifies the ## should search for files which it includes. `swigfiledir' specifies the
## location of `swigfile' if it does not reside in the present source ## location of `swigfile' if it does not reside in the present source
## directory. This rule defines top-level targets named "$(tag)swig", ## directory. This rule defines top-level targets named "$(tag)swig",
## which generates `targets' on-demand; and "$(tag)swigclean", which ## which generates `targets' on-demand; and "$(tag)swigclean", which
## deletes the generated files. `tag' is a simple identifier out of which ## deletes the generated files. `tag' is a simple identifier out of which
## top-level pseudo-targets names are constructed. If `tag' is not ## top-level pseudo-targets names are constructed. If `tag' is not
## provided, then `language' is used instead. If `frozentargdirs' is ## provided, then `language' is used instead. If `frozentargdirs' is
## provided, then an additional top-level target named "$(tag)freeze" is ## provided, then an additional top-level target named "$(tag)freeze" is
## defined, which copies the generated files to the specified directories. ## defined, which copies the generated files to the specified directories.
## If `frozentargdirs' contains only one element, then all generated files ## If `frozentargdirs' contains only one element, then all generated files
## are copied to that directory. If it contains two elements, then the ## are copied to that directory. If it contains two elements, then the
## first element of `targets' is copied to the first element of ## first element of `targets' is copied to the first element of
## `frozentargdirs', and all remaining elements of `targets' are copied to ## `frozentargdirs', and all remaining elements of `targets' are copied to
## the second element of `frozentargdirs'. `outdir', if provided, is a list ## the second element of `frozentargdirs'. `outdir', if provided, is a list
## of path components which specify a subdirectory in which Swig should ## of path components which specify a subdirectory in which Swig should
## place the language-specific support files, rather than placing them in ## place the language-specific support files, rather than placing them in
## $(LOCATE_TARGET). This might be useful, for instance, when Swig is in ## $(LOCATE_TARGET). This might be useful, for instance, when Swig is in
## Java mode, and the .java files must be placed in a directory hierarchy ## Java mode, and the .java files must be placed in a directory hierarchy
## which reflects the full package name. ## which reflects the full package name.
rule Swig rule Swig
{ {
local target = $(1[1]) ; local target = $(1[1]) ;
local othertargets = $(1[2-]) ; local othertargets = $(1[2-]) ;
local swigfile = $(2) ; local swigfile = $(2) ;
local language = $(3) ; local language = $(3) ;
local swigflags = $(4) ; local swigflags = $(4) ;
local swigincdirs = $(5) ; local swigincdirs = $(5) ;
local swigfiledir = $(6) ; local swigfiledir = $(6) ;
local frozentargetdir = $(7[1]) ; local frozentargetdir = $(7[1]) ;
local frozenotherdir = $(7[2-]) ; local frozenotherdir = $(7[2-]) ;
local tag = $(8) ; local tag = $(8) ;
local outdir = $(9) ; local outdir = $(9) ;
if ! $(frozenotherdir) { frozenotherdir = $(frozentargetdir) ; } if ! $(frozenotherdir) { frozenotherdir = $(frozentargetdir) ; }
if ! $(tag) { tag = $(language) ; } if ! $(tag) { tag = $(language) ; }
if ! $(outdir) { outdir = $(LOCATE_TARGET) ; } if ! $(outdir) { outdir = $(LOCATE_TARGET) ; }
Depends $(target) : $(swigfile) ; Depends $(target) : $(swigfile) ;
MakeLocate $(target) : $(LOCATE_TARGET) ; MakeLocate $(target) : $(LOCATE_TARGET) ;
if $(othertargets) if $(othertargets)
{ {
MakeLocate $(othertargets) : $(outdir) ; MakeLocate $(othertargets) : $(outdir) ;
# If any target, such as an install target, depends upon the other files, # If any target, such as an install target, depends upon the other files,
# we force them to be built with a dependency upon the target. # we force them to be built with a dependency upon the target.
Depends $(othertargets) : $(target) ; Depends $(othertargets) : $(target) ;
} }
SWIG.FLAGS on $(target) += SWIG.FLAGS on $(target) +=
$(SWIG.FLAGS) -$(language) $(swigflags) -I$(swigincdirs) $(SWIG.FLAGS) -$(language) $(swigflags) -I$(swigincdirs)
-outdir [ ConcatDirs $(outdir) ] ; -outdir [ ConcatDirs $(outdir) ] ;
# Allow Swig input file to reside at location other than $(SEARCH_SOURCE). # Allow Swig input file to reside at location other than $(SEARCH_SOURCE).
if $(swigfiledir) if $(swigfiledir)
{ {
SEARCH on $(swigfile) = $(swigfiledir) ; SEARCH on $(swigfile) = $(swigfiledir) ;
} }
else else
{ {
SEARCH on $(swigfile) = $(SEARCH_SOURCE) ; SEARCH on $(swigfile) = $(SEARCH_SOURCE) ;
} }
# Scan for special Swig includes. # Scan for special Swig includes.
HDRGRIST on $(swigfile) = $(HDRGRIST) ; HDRGRIST on $(swigfile) = $(HDRGRIST) ;
HDRSEARCH on $(swigfile) = HDRSEARCH on $(swigfile) =
$(SEARCH_SOURCE:E) $(SUBDIRHDRS) $(HDRS) $(STDHDRS) ; $(SEARCH_SOURCE:E) $(SUBDIRHDRS) $(HDRS) $(STDHDRS) ;
HDRRULE on $(swigfile) = HeaderRule ; HDRRULE on $(swigfile) = HeaderRule ;
HDRSCAN on $(swigfile) = $(SWIG.HDRPATTERN) ; HDRSCAN on $(swigfile) = $(SWIG.HDRPATTERN) ;
RunSwig $(target) : $(swigfile) ; RunSwig $(target) : $(swigfile) ;
Depends $(tag)swig : $(target) ; Depends $(tag)swig : $(target) ;
NotFile $(tag)swig ; NotFile $(tag)swig ;
Always $(tag)swig ; Always $(tag)swig ;
Help $(tag)swig : "Generate Swig files for $(tag)" ; Help $(tag)swig : "Generate Swig files for $(tag)" ;
Clean $(tag)swigclean : $(target) $(othertargets) ; Clean $(tag)swigclean : $(target) $(othertargets) ;
Depends clean : $(tag)swigclean ; Depends clean : $(tag)swigclean ;
if $(frozentargetdir) if $(frozentargetdir)
{ {
local frozen_target = $(target:G=$(tag)freeze) ; local frozen_target = $(target:G=$(tag)freeze) ;
MakeLocate $(frozen_target) : $(frozentargetdir) ; MakeLocate $(frozen_target) : $(frozentargetdir) ;
Depends $(frozen_target) : $(target) ; Depends $(frozen_target) : $(target) ;
Copy $(frozen_target) : $(target) ; Copy $(frozen_target) : $(target) ;
Depends $(tag)freeze : $(frozen_target) ; Depends $(tag)freeze : $(frozen_target) ;
if $(othertargets) if $(othertargets)
{ {
local frozen_other = $(othertargets:G=$(tag)freeze) ; local frozen_other = $(othertargets:G=$(tag)freeze) ;
MakeLocate $(frozen_other) : $(frozenotherdir) ; MakeLocate $(frozen_other) : $(frozenotherdir) ;
Depends $(frozen_other) : $(othertargets) ; Depends $(frozen_other) : $(othertargets) ;
Copy $(frozen_other) : $(othertargets) ; Copy $(frozen_other) : $(othertargets) ;
Depends $(tag)freeze : $(frozen_other) ; Depends $(tag)freeze : $(frozen_other) ;
} }
NotFile $(tag)freeze ; NotFile $(tag)freeze ;
Help $(tag)freeze : "Copy generated Swig files to source directory" ; Help $(tag)freeze : "Copy generated Swig files to source directory" ;
} }
} }
actions RunSwig actions RunSwig
{ {
$(CMD.SWIG) $(SWIG.FLAGS) -o $(<) $(>) $(CMD.SWIG) $(SWIG.FLAGS) -o $(<) $(>)
$(SED) $(SWIG.SED_SCRIPT) < $(<) > $(<).sed $(SED) $(SWIG.SED_SCRIPT) < $(<) > $(<).sed
$(RM) $(<) $(RM) $(<)
$(MV) $(<).sed $(<) $(MV) $(<).sed $(<)
} }
SWIG.SIMPLE.LANGUAGE ?= python ; SWIG.SIMPLE.LANGUAGE ?= python ;
SWIG.SIMPLE.EXT ?= py ; SWIG.SIMPLE.EXT ?= py ;
SWIG.SIMPLE.FLAGS ?= -c++ -shadow ; SWIG.SIMPLE.FLAGS ?= -c++ -shadow ;
## SimpleSwig swigfile ## SimpleSwig swigfile
## Given a Swig input file (.i), invokes Swig to generate a .cpp file with ## Given a Swig input file (.i), invokes Swig to generate a .cpp file with
## the same basename, and a script file with the same basename. ## the same basename, and a script file with the same basename.
## SWIG.SIMPLE.LANGUAGE specifies the language for which Swig should emit a ## SWIG.SIMPLE.LANGUAGE specifies the language for which Swig should emit a
## binding; SWIG.SIMPLE.EXT indicates the file extension of the generated ## binding; SWIG.SIMPLE.EXT indicates the file extension of the generated
## script file; SWIG.SIMPLE.FLAGS specifies additional flags for Swig. ## script file; SWIG.SIMPLE.FLAGS specifies additional flags for Swig.
rule SimpleSwig rule SimpleSwig
{ {
local object = [ DoObjectGrist $(<:S=$(SUFOBJ)) ] ; local object = [ DoObjectGrist $(<:S=$(SUFOBJ)) ] ;
local cppfile = $(<:S=.cpp) ; local cppfile = $(<:S=.cpp) ;
local script = $(<:S=.$(SWIG.SIMPLE.EXT)) ; local script = $(<:S=.$(SWIG.SIMPLE.EXT)) ;
C++ $(object) : $(cppfile) ; C++ $(object) : $(cppfile) ;
Swig $(cppfile) $(script) : $(<) : $(SWIG.SIMPLE.LANGUAGE) : Swig $(cppfile) $(script) : $(<) : $(SWIG.SIMPLE.LANGUAGE) :
$(SWIG.SIMPLE.FLAGS) ; $(SWIG.SIMPLE.FLAGS) ;
return $(object) ; return $(object) ;
} }
RegisterFileType SimpleSwig : .i ; RegisterFileType SimpleSwig : .i ;
if ! $(NO_SWIG_HEADER_SCANNING) if ! $(NO_SWIG_HEADER_SCANNING)
{ {
SWIG.HDRPATTERN = SWIG.HDRPATTERN =
"^[ ]*[%#][ ]*include[ ]*[<\"]([^\">]*)[\">].*$" ; "^[ ]*[%#][ ]*include[ ]*[<\"]([^\">]*)[\">].*$" ;
RegisterHeaderRule HeaderRule : $(SWIG.HDRPATTERN) : .i ; RegisterHeaderRule HeaderRule : $(SWIG.HDRPATTERN) : .i ;
} }
} }

File diff suppressed because it is too large Load Diff

View File

@@ -1,159 +1,159 @@
#============================================================================ #============================================================================
# Jam configuration and actions for Unix (GNU/Linux, BSD, Darwin, etc.) # Jam configuration and actions for Unix (GNU/Linux, BSD, Darwin, etc.)
# Copyright (C)2003 by Matze Braun <matzebraun@users.sourceforge.net> # Copyright (C)2003 by Matze Braun <matzebraun@users.sourceforge.net>
# #
# This library is free software; you can redistribute it and/or modify it # 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 # 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 # the Free Software Foundation; either version 2 of the License, or (at your
# option) any later version. # option) any later version.
# #
# This library is distributed in the hope that it will be useful, but # This library is distributed in the hope that it will be useful, but
# WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY # WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
# or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public # or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public
# License for more details. # License for more details.
# #
# You should have received a copy of the GNU Library General Public License # 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, # along with this library; if not, write to the Free Software Foundation,
# Inc., 675 Mass Ave, Cambridge, MA 02139, USA. # Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
# #
#============================================================================ #============================================================================
SHELL ?= "/bin/sh" ; SHELL ?= "/bin/sh" ;
# Only use nasm on x86 for now... # Only use nasm on x86 for now...
NASM.FLAGS += -f elf ; NASM.FLAGS += -f elf ;
PLUGIN.CFLAGS += $(COMPILER.C++FLAGS.PIC) ; PLUGIN.CFLAGS += $(COMPILER.C++FLAGS.PIC) ;
LIBRARY.CFLAGS += $(COMPILER.C++FLAGS.PIC) ; LIBRARY.CFLAGS += $(COMPILER.C++FLAGS.PIC) ;
# The BFD tag name under which to embed meta-information into a plugin module. # The BFD tag name under which to embed meta-information into a plugin module.
# This much match the name expected by csGetPluginMetadata() (bfdplugins.cpp). # This much match the name expected by csGetPluginMetadata() (bfdplugins.cpp).
SECTION_TAG_NAME ?= .crystalspace ; SECTION_TAG_NAME ?= .crystalspace ;
#---------------------------------------------------------------------------- #----------------------------------------------------------------------------
# platform specific rules # platform specific rules
## ConstructApplicationTarget target : options ## ConstructApplicationTarget target : options
## Constructs the application target name (ie. foo.exe for foo) ## Constructs the application target name (ie. foo.exe for foo)
rule ConstructApplicationTarget rule ConstructApplicationTarget
{ {
return $(<) ; return $(<) ;
} }
rule ConstructStaticLibraryTarget rule ConstructStaticLibraryTarget
{ {
return lib$(<)$(SUFLIB) ; return lib$(<)$(SUFLIB) ;
} }
rule ConstructSharedLibraryTarget rule ConstructSharedLibraryTarget
{ {
return lib$(<).so.$(PACKAGE_VERSION) ; return lib$(<).so.$(PACKAGE_VERSION) ;
} }
rule ConstructSharedLibraryLinkLib rule ConstructSharedLibraryLinkLib
{ {
return lib$(<).so.$(PACKAGE_VERSION) ; return lib$(<).so.$(PACKAGE_VERSION) ;
} }
rule ConstructPluginTarget rule ConstructPluginTarget
{ {
return $(<).so ; return $(<).so ;
} }
# SystemLinkApplication target : objects : options # SystemLinkApplication target : objects : options
# do system specific actions needed for linking the application and construct # do system specific actions needed for linking the application and construct
# correct clean targets. # correct clean targets.
rule SystemLinkApplication rule SystemLinkApplication
{ {
local target = $($(<)_TARGET) ; local target = $($(<)_TARGET) ;
Depends $(target) : $(>) ; Depends $(target) : $(>) ;
LinkApplication $(target) : $(>) ; LinkApplication $(target) : $(>) ;
# setup clean rules # setup clean rules
Clean clean : $(target) ; Clean clean : $(target) ;
Clean $(<)clean : $(target) ; Clean $(<)clean : $(target) ;
} }
rule SystemInstallApplication rule SystemInstallApplication
{ {
Depends install_bin : Depends install_bin :
[ DoInstall $(<) : $(bindir) $(2) : $(INSTALL_PROGRAM) ] ; [ DoInstall $(<) : $(bindir) $(2) : $(INSTALL_PROGRAM) ] ;
} }
rule SystemInstallPlugin rule SystemInstallPlugin
{ {
Depends install_plugin : [ DoInstall $(<) : $(plugindir) $(2) : Depends install_plugin : [ DoInstall $(<) : $(plugindir) $(2) :
$(INSTALL_PROGRAM) ] ; $(INSTALL_PROGRAM) ] ;
} }
# Put the meta data into the object file headers # Put the meta data into the object file headers
rule ObjTagMetaData rule ObjTagMetaData
{ {
Depends $(<) : $(>) ; Depends $(<) : $(>) ;
} }
actions ObjTagMetaData actions ObjTagMetaData
{ {
$(CMD.OBJCOPY) --add-section $(SECTION_TAG_NAME)=$(>) $(<) $(CMD.OBJCOPY) --add-section $(SECTION_TAG_NAME)=$(>) $(<)
} }
# SystemLinkPlugin target : objects : options # SystemLinkPlugin target : objects : options
# do system specific actions needed for linking the plugin and construct # do system specific actions needed for linking the plugin and construct
# correct clean targets. # correct clean targets.
rule SystemLinkPlugin rule SystemLinkPlugin
{ {
local target = $($(<)_TARGET) ; local target = $($(<)_TARGET) ;
Depends $(target) : $(>) ; Depends $(target) : $(>) ;
LinkPlugin $(target) : $(>) ; LinkPlugin $(target) : $(>) ;
if $(EMBED_META) = "yes" && $(OBJCOPY.AVAILABLE) = "yes" if $(EMBED_META) = "yes" && $(OBJCOPY.AVAILABLE) = "yes"
{ {
ObjTagMetaData $(target) : $($(<)_METAFILE) ; ObjTagMetaData $(target) : $($(<)_METAFILE) ;
} }
else else
{ {
PluginMetaData $(<) : $($(<)_METAFILE) : $(3) ; PluginMetaData $(<) : $($(<)_METAFILE) : $(3) ;
} }
# setup clean rules # setup clean rules
Clean clean : $(target) ; Clean clean : $(target) ;
Clean $(<)clean : $(target) ; Clean $(<)clean : $(target) ;
} }
rule SystemLinkSharedLibrary rule SystemLinkSharedLibrary
{ {
LFlags $(<) : $(LINKLIBS) ; LFlags $(<) : $(LINKLIBS) ;
Depends $(<) : $(>) ; Depends $(<) : $(>) ;
local response = $(<).resp ; local response = $(<).resp ;
MakeLocate $(response) : $(LOCATE.OBJECTS)/libs ; MakeLocate $(response) : $(LOCATE.OBJECTS)/libs ;
ResponseFile $(response) : $(>) ; ResponseFile $(response) : $(>) ;
# @@@ FIXME: response files are only supported on newer binutils # @@@ FIXME: response files are only supported on newer binutils
# But quite useful to avoid blowing jam's 10240 max action length. # But quite useful to avoid blowing jam's 10240 max action length.
#Depends $(response) : $(>) ; #Depends $(response) : $(>) ;
#Depends $(<) : $(response) ; #Depends $(<) : $(response) ;
#LinkSharedLibrary $(<) : $(response) ; #LinkSharedLibrary $(<) : $(response) ;
LinkSharedLibrary $(<) : $(>) ; LinkSharedLibrary $(<) : $(>) ;
Clean clean : $(<) ; Clean clean : $(<) ;
Clean $(<)clean : $(<) ; Clean $(<)clean : $(<) ;
} }
actions LinkApplication bind NEEDLIBS bind EXTRAOBJECTS actions LinkApplication bind NEEDLIBS bind EXTRAOBJECTS
{ {
$(CMD.LINK) -o $(<) $(>) $(EXTRAOBJECTS) $(NEEDLIBS) $(LINKLIBS) $(CMD.LINK) -o $(<) $(>) $(EXTRAOBJECTS) $(NEEDLIBS) $(LINKLIBS)
} }
if $(PLUGIN.LFLAGS.USE_SONAME) = "yes" if $(PLUGIN.LFLAGS.USE_SONAME) = "yes"
{ {
actions LinkPlugin bind NEEDLIBS bind EXTRAOBJECTS actions LinkPlugin bind NEEDLIBS bind EXTRAOBJECTS
{ {
$(CMD.LINK) -o $(<) $(>) $(EXTRAOBJECTS) $(NEEDLIBS) $(LINKLIBS) \ $(CMD.LINK) -o $(<) $(>) $(EXTRAOBJECTS) $(NEEDLIBS) $(LINKLIBS) \
-Wl,-soname,$(<:BS) -Wl,-soname,$(<:BS)
} }
} }
else else
{ {
actions LinkPlugin bind NEEDLIBS bind EXTRAOBJECTS actions LinkPlugin bind NEEDLIBS bind EXTRAOBJECTS
{ {
$(CMD.LINK) -o $(<) $(>) $(EXTRAOBJECTS) $(NEEDLIBS) $(LINKLIBS) $(CMD.LINK) -o $(<) $(>) $(EXTRAOBJECTS) $(NEEDLIBS) $(LINKLIBS)
} }
} }
actions LinkSharedLibrary bind NEEDLIBS bind EXTRAOBJECTS actions LinkSharedLibrary bind NEEDLIBS bind EXTRAOBJECTS
{ {
$(CMD.LINK) -shared -o $(<) $(>) $(EXTRAOBJECTS) $(NEEDLIBS) $(LINKLIBS) \ $(CMD.LINK) -shared -o $(<) $(>) $(EXTRAOBJECTS) $(NEEDLIBS) $(LINKLIBS) \
-Wl,-soname,$(<:BS) -Wl,-soname,$(<:BS)
} }

View File

@@ -1,58 +1,58 @@
#============================================================================ #============================================================================
# Setup of compiler/linker flags for debug/optimize mode # Setup of compiler/linker flags for debug/optimize mode
# Copyright (C)2003 by Matze Braun <matzebraun@users.sourceforge.net> # Copyright (C)2003 by Matze Braun <matzebraun@users.sourceforge.net>
# #
# This library is free software; you can redistribute it and/or modify it # 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 # 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 # the Free Software Foundation; either version 2 of the License, or (at your
# option) any later version. # option) any later version.
# #
# This library is distributed in the hope that it will be useful, but # This library is distributed in the hope that it will be useful, but
# WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY # WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
# or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public # or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public
# License for more details. # License for more details.
# #
# You should have received a copy of the GNU Library General Public License # 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, # along with this library; if not, write to the Free Software Foundation,
# Inc., 675 Mass Ave, Cambridge, MA 02139, USA. # Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
# #
#============================================================================ #============================================================================
if ! $(VARIANT) if ! $(VARIANT)
{ {
VARIANT = $(MODE) ; VARIANT = $(MODE) ;
} }
if $(VARIANT) != "debug" && $(VARIANT) != "optimize" && $(VARIANT) != "profile" if $(VARIANT) != "debug" && $(VARIANT) != "optimize" && $(VARIANT) != "profile"
{ {
exit "Invalid modus set, please set VARIANT to debug, profile or optimize" ; exit "Invalid modus set, please set VARIANT to debug, profile or optimize" ;
} }
# Set modus related flags # Set modus related flags
CCFLAGS += $(COMPILER.CFLAGS) $(COMPILER.CFLAGS.$(VARIANT)) ; CCFLAGS += $(COMPILER.CFLAGS) $(COMPILER.CFLAGS.$(VARIANT)) ;
C++FLAGS += $(COMPILER.CFLAGS) $(COMPILER.C++FLAGS) C++FLAGS += $(COMPILER.CFLAGS) $(COMPILER.C++FLAGS)
$(COMPILER.CFLAGS.$(VARIANT)) $(COMPILER.C++FLAGS.$(VARIANT)) ; $(COMPILER.CFLAGS.$(VARIANT)) $(COMPILER.C++FLAGS.$(VARIANT)) ;
LINKLIBS += $(COMPILER.LFLAGS) $(COMPILER.LFLAGS.$(VARIANT)) ; LINKLIBS += $(COMPILER.LFLAGS) $(COMPILER.LFLAGS.$(VARIANT)) ;
LOCATE.OBJECTS = $(LOCATE.OBJECTS)/$(VARIANT) ; LOCATE.OBJECTS = $(LOCATE.OBJECTS)/$(VARIANT) ;
## SubVariant variantname ## SubVariant variantname
## Specify subvariant which are placed in separate compilation directories. ## Specify subvariant which are placed in separate compilation directories.
SUBVARIANT ?= "" ; SUBVARIANT ?= "" ;
SAVED_LOCATE_TARGET = "" ; SAVED_LOCATE_TARGET = "" ;
rule SubVariant rule SubVariant
{ {
if ! $(<) if ! $(<)
{ {
SUBVARIANT = $(SUBVARIANT[2]) ; SUBVARIANT = $(SUBVARIANT[2]) ;
SUBVARIANT ?= "" ; SUBVARIANT ?= "" ;
LOCATE_TARGET = $(SAVED_LOCATE_TARGET[1]) ; LOCATE_TARGET = $(SAVED_LOCATE_TARGET[1]) ;
SAVED_LOCATE_TARGET = $(SAVED_LOCATE_TARGET[2-]) ; SAVED_LOCATE_TARGET = $(SAVED_LOCATE_TARGET[2-]) ;
} }
else else
{ {
SUBVARIANT = $(<) $(SUBVARIANT) ; SUBVARIANT = $(<) $(SUBVARIANT) ;
SAVED_LOCATE_TARGET = $(LOCATE_TARGET) $(SAVED_LOCATE_TARGET) ; SAVED_LOCATE_TARGET = $(LOCATE_TARGET) $(SAVED_LOCATE_TARGET) ;
LOCATE_TARGET = $(LOCATE_TARGET)/$(<) ; LOCATE_TARGET = $(LOCATE_TARGET)/$(<) ;
} }
} }

File diff suppressed because it is too large Load Diff

View File

@@ -108,6 +108,10 @@ SOURCE=..\..\BulletDynamics\ConstraintSolver\ContactConstraint.cpp
# End Source File # End Source File
# Begin Source File # Begin Source File
SOURCE=..\..\BulletDynamics\ConstraintSolver\Generic6DofConstraint.cpp
# End Source File
# Begin Source File
SOURCE=..\..\BulletDynamics\ConstraintSolver\HingeConstraint.cpp SOURCE=..\..\BulletDynamics\ConstraintSolver\HingeConstraint.cpp
# End Source File # End Source File
# Begin Source File # Begin Source File
@@ -164,6 +168,10 @@ SOURCE=..\..\BulletDynamics\ConstraintSolver\ContactSolverInfo.h
# End Source File # End Source File
# Begin Source File # Begin Source File
SOURCE=..\..\BulletDynamics\ConstraintSolver\Generic6DofConstraint.h
# End Source File
# Begin Source File
SOURCE=..\..\BulletDynamics\ConstraintSolver\HingeConstraint.h SOURCE=..\..\BulletDynamics\ConstraintSolver\HingeConstraint.h
# End Source File # End Source File
# Begin Source File # Begin Source File

View File

@@ -162,6 +162,9 @@
<File <File
RelativePath="..\..\BulletDynamics\ConstraintSolver\ContactConstraint.cpp"> RelativePath="..\..\BulletDynamics\ConstraintSolver\ContactConstraint.cpp">
</File> </File>
<File
RelativePath="..\..\BulletDynamics\ConstraintSolver\Generic6DofConstraint.cpp">
</File>
<File <File
RelativePath="..\..\BulletDynamics\ConstraintSolver\HingeConstraint.cpp"> RelativePath="..\..\BulletDynamics\ConstraintSolver\HingeConstraint.cpp">
</File> </File>
@@ -205,6 +208,9 @@
<File <File
RelativePath="..\..\BulletDynamics\ConstraintSolver\ContactSolverInfo.h"> RelativePath="..\..\BulletDynamics\ConstraintSolver\ContactSolverInfo.h">
</File> </File>
<File
RelativePath="..\..\BulletDynamics\ConstraintSolver\Generic6DofConstraint.h">
</File>
<File <File
RelativePath="..\..\BulletDynamics\ConstraintSolver\HingeConstraint.h"> RelativePath="..\..\BulletDynamics\ConstraintSolver\HingeConstraint.h">
</File> </File>

View File

@@ -1,4 +1,4 @@
<?xml version="1.0" encoding="Windows-1252"?> <?xml version="1.0" encoding = "Windows-1252"?>
<VisualStudioProject <VisualStudioProject
ProjectType="Visual C++" ProjectType="Visual C++"
Version="7.10" Version="7.10"
@@ -16,23 +16,23 @@
OutputDirectory="..\..\out\release71\build\appColladaDemo\" OutputDirectory="..\..\out\release71\build\appColladaDemo\"
IntermediateDirectory="..\..\out\release71\build\appColladaDemo\" IntermediateDirectory="..\..\out\release71\build\appColladaDemo\"
ConfigurationType="1" ConfigurationType="1"
UseOfMFC="0"
ATLMinimizesCRunTimeLibraryUsage="FALSE"
CharacterSet="2" CharacterSet="2"
WholeProgramOptimization="TRUE"> WholeProgramOptimization="1"
UseOfMFC="0"
ATLMinimizesCRunTimeLibraryUsage="FALSE">
<Tool <Tool
Name="VCCLCompilerTool" Name="VCCLCompilerTool"
AdditionalOptions=" "
Optimization="2" Optimization="2"
OptimizeForProcessor="1"
AdditionalIncludeDirectories=".;..\..;..\..\Bullet;..\..\BulletDynamics;..\..\LinearMath;..\..\Extras\PhysicsInterface\Common;..\..\Extras\ConvexDecomposition;..\..\Glut;..\..\Demos\OpenGL;..\..\Extras\PhysicsInterface\CcdPhysics;..\..\Extras\FCollada;..\..\Extras\FCollada\LibXML\include"
PreprocessorDefinitions="NDEBUG;_CONSOLE;WIN32"
StringPooling="TRUE" StringPooling="TRUE"
ExceptionHandling="FALSE"
RuntimeLibrary="2"
BufferSecurityCheck="FALSE"
EnableFunctionLevelLinking="TRUE" EnableFunctionLevelLinking="TRUE"
TreatWChar_tAsBuiltInType="FALSE" RuntimeLibrary="2"
DebugInformationFormat="3"
BufferSecurityCheck="FALSE"
PreprocessorDefinitions="NDEBUG;_CONSOLE;WIN32"
OptimizeForProcessor="1"
ExceptionHandling="0"
AdditionalOptions=" "
AdditionalIncludeDirectories=".;..\..;..\..\Bullet;..\..\BulletDynamics;..\..\LinearMath;..\..\Extras\PhysicsInterface\Common;..\..\Extras\ConvexDecomposition;..\..\Glut;..\..\Demos\OpenGL;..\..\Extras\PhysicsInterface\CcdPhysics"
PrecompiledHeaderFile="..\..\out\release71\build\appColladaDemo\appColladaDemo.pch" PrecompiledHeaderFile="..\..\out\release71\build\appColladaDemo\appColladaDemo.pch"
AssemblerListingLocation="..\..\out\release71\build\appColladaDemo\" AssemblerListingLocation="..\..\out\release71\build\appColladaDemo\"
ObjectFile="..\..\out\release71\build\appColladaDemo\" ObjectFile="..\..\out\release71\build\appColladaDemo\"
@@ -40,26 +40,29 @@
WarningLevel="3" WarningLevel="3"
SuppressStartupBanner="TRUE" SuppressStartupBanner="TRUE"
Detect64BitPortabilityProblems="TRUE" Detect64BitPortabilityProblems="TRUE"
DebugInformationFormat="3" TreatWChar_tAsBuiltInType="false"
CompileAs="0"/> CompileAs="0"/>
<Tool <Tool
Name="VCCustomBuildTool"/> Name="VCCustomBuildTool"/>
<Tool <Tool
Name="VCLinkerTool" Name="VCLinkerTool"
IgnoreImportLibrary="TRUE"
AdditionalOptions=" "
AdditionalDependencies="glut32.lib"
OutputFile="..\..\ColladaDemo.exe"
LinkIncremental="1" LinkIncremental="1"
SuppressStartupBanner="TRUE"
AdditionalLibraryDirectories="..\..\Glut"
IgnoreDefaultLibraryNames="LIBC,LIBCD,LIBCMT,LIBCMTD"
GenerateDebugInformation="TRUE"
ProgramDatabaseFile="..\..\out\release71\build\appColladaDemo\ColladaDemo.pdb"
SubSystem="1"
OptimizeReferences="2" OptimizeReferences="2"
EnableCOMDATFolding="2" EnableCOMDATFolding="2"
GenerateDebugInformation="TRUE"
IgnoreDefaultLibraryNames="LIBC,LIBCD,LIBCMT,LIBCMTD"
OutputFile="..\..\ColladaDemo.exe"
SubSystem="1"
AdditionalOptions=" "
AdditionalDependencies="glut32.lib"
IgnoreImportLibrary="TRUE"
SuppressStartupBanner="TRUE"
AdditionalLibraryDirectories="..\..\Glut"
ProgramDatabaseFile="..\..\out\release71\build\appColladaDemo\ColladaDemo.pdb"
TargetMachine="1"/> TargetMachine="1"/>
<Tool
Name="VCLibrarianTool"
SuppressStartupBanner="TRUE"/>
<Tool <Tool
Name="VCMIDLTool" Name="VCMIDLTool"
PreprocessorDefinitions="NDEBUG;_CONSOLE" PreprocessorDefinitions="NDEBUG;_CONSOLE"
@@ -68,7 +71,8 @@
TargetEnvironment="1" TargetEnvironment="1"
TypeLibraryName="..\..\out\release71\build\appColladaDemo\appColladaDemo.tlb"/> TypeLibraryName="..\..\out\release71\build\appColladaDemo\appColladaDemo.tlb"/>
<Tool <Tool
Name="VCPostBuildEventTool"/> Name="VCPostBuildEventTool"
/>
<Tool <Tool
Name="VCPreBuildEventTool"/> Name="VCPreBuildEventTool"/>
<Tool <Tool
@@ -76,39 +80,33 @@
<Tool <Tool
Name="VCResourceCompilerTool" Name="VCResourceCompilerTool"
PreprocessorDefinitions="NDEBUG;_CONSOLE;PROJECTGEN_VERSION=71" PreprocessorDefinitions="NDEBUG;_CONSOLE;PROJECTGEN_VERSION=71"
Culture="1033" AdditionalIncludeDirectories=".;..\..;..\..\Bullet;..\..\BulletDynamics;..\..\LinearMath;..\..\Extras\PhysicsInterface\Common;..\..\Extras\ConvexDecomposition;..\..\Glut;..\..\Demos\OpenGL;..\..\Extras\PhysicsInterface\CcdPhysics"
AdditionalIncludeDirectories=".;..\..;..\..\Bullet;..\..\BulletDynamics;..\..\LinearMath;..\..\Extras\PhysicsInterface\Common;..\..\Extras\ConvexDecomposition;..\..\Glut;..\..\Demos\OpenGL;..\..\Extras\PhysicsInterface\CcdPhysics"/> Culture="1033"/>
<Tool <Tool
Name="VCWebServiceProxyGeneratorTool"/> Name="VCWebServiceProxyGeneratorTool"/>
<Tool
Name="VCXMLDataGeneratorTool"/>
<Tool <Tool
Name="VCWebDeploymentTool"/> Name="VCWebDeploymentTool"/>
<Tool
Name="VCManagedWrapperGeneratorTool"/>
<Tool
Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
</Configuration> </Configuration>
<Configuration <Configuration
Name="Debug|Win32" Name="Debug|Win32"
OutputDirectory="..\..\out\debug71\build\appColladaDemo\" OutputDirectory="..\..\out\debug71\build\appColladaDemo\"
IntermediateDirectory="..\..\out\debug71\build\appColladaDemo\" IntermediateDirectory="..\..\out\debug71\build\appColladaDemo\"
ConfigurationType="1" ConfigurationType="1"
CharacterSet="2"
UseOfMFC="0" UseOfMFC="0"
ATLMinimizesCRunTimeLibraryUsage="FALSE" ATLMinimizesCRunTimeLibraryUsage="FALSE">
CharacterSet="2">
<Tool <Tool
Name="VCCLCompilerTool" Name="VCCLCompilerTool"
AdditionalOptions=" "
Optimization="0" Optimization="0"
OptimizeForProcessor="1"
AdditionalIncludeDirectories=".;..\..;..\..\Bullet;..\..\BulletDynamics;..\..\LinearMath;..\..\Extras\PhysicsInterface\Common;..\..\Extras\ConvexDecomposition;..\..\Glut;..\..\Demos\OpenGL;..\..\Extras\PhysicsInterface\CcdPhysics;..\..\Extras\FCollada;..\..\Extras\FCollada\LibXML\include"
PreprocessorDefinitions="_DEBUG;_CONSOLE;WIN32"
MinimalRebuild="TRUE" MinimalRebuild="TRUE"
ExceptionHandling="FALSE" DebugInformationFormat="4"
RuntimeLibrary="3"
TreatWChar_tAsBuiltInType="FALSE"
RuntimeTypeInfo="TRUE" RuntimeTypeInfo="TRUE"
RuntimeLibrary="3"
PreprocessorDefinitions="_DEBUG;_CONSOLE;WIN32"
OptimizeForProcessor="1"
ExceptionHandling="0"
AdditionalOptions=" "
AdditionalIncludeDirectories=".;..\..;..\..\Bullet;..\..\BulletDynamics;..\..\LinearMath;..\..\Extras\PhysicsInterface\Common;..\..\Extras\ConvexDecomposition;..\..\Glut;..\..\Demos\OpenGL;..\..\Extras\PhysicsInterface\CcdPhysics"
PrecompiledHeaderFile="..\..\out\debug71\build\appColladaDemo\appColladaDemo.pch" PrecompiledHeaderFile="..\..\out\debug71\build\appColladaDemo\appColladaDemo.pch"
AssemblerListingLocation="..\..\out\debug71\build\appColladaDemo\" AssemblerListingLocation="..\..\out\debug71\build\appColladaDemo\"
ObjectFile="..\..\out\debug71\build\appColladaDemo\" ObjectFile="..\..\out\debug71\build\appColladaDemo\"
@@ -116,24 +114,27 @@
WarningLevel="3" WarningLevel="3"
SuppressStartupBanner="TRUE" SuppressStartupBanner="TRUE"
Detect64BitPortabilityProblems="TRUE" Detect64BitPortabilityProblems="TRUE"
DebugInformationFormat="4" TreatWChar_tAsBuiltInType="false"
CompileAs="0"/> CompileAs="0"/>
<Tool <Tool
Name="VCCustomBuildTool"/> Name="VCCustomBuildTool"/>
<Tool <Tool
Name="VCLinkerTool" Name="VCLinkerTool"
IgnoreImportLibrary="TRUE" LinkIncremental="2"
GenerateDebugInformation="TRUE"
IgnoreDefaultLibraryNames="LIBC,LIBCD,LIBCMT,LIBCMTD,MSVCRT"
OutputFile="..\..\ColladaDemo.exe"
SubSystem="1"
AdditionalOptions=" " AdditionalOptions=" "
AdditionalDependencies="glut32.lib" AdditionalDependencies="glut32.lib"
OutputFile="..\..\ColladaDemo.exe" IgnoreImportLibrary="TRUE"
LinkIncremental="2"
SuppressStartupBanner="TRUE" SuppressStartupBanner="TRUE"
AdditionalLibraryDirectories="..\..\Glut" AdditionalLibraryDirectories="..\..\Glut"
IgnoreDefaultLibraryNames="LIBC,LIBCD,LIBCMT,LIBCMTD,MSVCRT"
GenerateDebugInformation="TRUE"
ProgramDatabaseFile="..\..\out\debug71\build\appColladaDemo\ColladaDemo.pdb" ProgramDatabaseFile="..\..\out\debug71\build\appColladaDemo\ColladaDemo.pdb"
SubSystem="1"
TargetMachine="1"/> TargetMachine="1"/>
<Tool
Name="VCLibrarianTool"
SuppressStartupBanner="TRUE"/>
<Tool <Tool
Name="VCMIDLTool" Name="VCMIDLTool"
PreprocessorDefinitions="_DEBUG;_CONSOLE" PreprocessorDefinitions="_DEBUG;_CONSOLE"
@@ -142,7 +143,8 @@
TargetEnvironment="1" TargetEnvironment="1"
TypeLibraryName="..\..\out\debug71\build\appColladaDemo\appColladaDemo.tlb"/> TypeLibraryName="..\..\out\debug71\build\appColladaDemo\appColladaDemo.tlb"/>
<Tool <Tool
Name="VCPostBuildEventTool"/> Name="VCPostBuildEventTool"
/>
<Tool <Tool
Name="VCPreBuildEventTool"/> Name="VCPreBuildEventTool"/>
<Tool <Tool
@@ -150,22 +152,14 @@
<Tool <Tool
Name="VCResourceCompilerTool" Name="VCResourceCompilerTool"
PreprocessorDefinitions="_DEBUG;_CONSOLE;PROJECTGEN_VERSION=71" PreprocessorDefinitions="_DEBUG;_CONSOLE;PROJECTGEN_VERSION=71"
Culture="1033" AdditionalIncludeDirectories=".;..\..;..\..\Bullet;..\..\BulletDynamics;..\..\LinearMath;..\..\Extras\PhysicsInterface\Common;..\..\Extras\ConvexDecomposition;..\..\Glut;..\..\Demos\OpenGL;..\..\Extras\PhysicsInterface\CcdPhysics"
AdditionalIncludeDirectories=".;..\..;..\..\Bullet;..\..\BulletDynamics;..\..\LinearMath;..\..\Extras\PhysicsInterface\Common;..\..\Extras\ConvexDecomposition;..\..\Glut;..\..\Demos\OpenGL;..\..\Extras\PhysicsInterface\CcdPhysics"/> Culture="1033"/>
<Tool <Tool
Name="VCWebServiceProxyGeneratorTool"/> Name="VCWebServiceProxyGeneratorTool"/>
<Tool
Name="VCXMLDataGeneratorTool"/>
<Tool <Tool
Name="VCWebDeploymentTool"/> Name="VCWebDeploymentTool"/>
<Tool
Name="VCManagedWrapperGeneratorTool"/>
<Tool
Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
</Configuration> </Configuration>
</Configurations> </Configurations>
<References>
</References>
<Files> <Files>
<Filter <Filter
Name="Source Files" Name="Source Files"

View File

@@ -1,4 +1,4 @@
<?xml version="1.0" encoding="Windows-1252"?> <?xml version="1.0" encoding = "Windows-1252"?>
<VisualStudioProject <VisualStudioProject
ProjectType="Visual C++" ProjectType="Visual C++"
Version="7.10" Version="7.10"
@@ -20,17 +20,17 @@
ATLMinimizesCRunTimeLibraryUsage="FALSE"> ATLMinimizesCRunTimeLibraryUsage="FALSE">
<Tool <Tool
Name="VCCLCompilerTool" Name="VCCLCompilerTool"
AdditionalOptions=" "
Optimization="2" Optimization="2"
OptimizeForProcessor="1"
AdditionalIncludeDirectories=".;..\..;..\..\Bullet;..\..\BulletDynamics;..\..\LinearMath"
PreprocessorDefinitions="NDEBUG;_LIB;_WINDOWS;WIN32"
StringPooling="TRUE" StringPooling="TRUE"
ExceptionHandling="FALSE"
RuntimeLibrary="2"
BufferSecurityCheck="FALSE"
EnableFunctionLevelLinking="TRUE" EnableFunctionLevelLinking="TRUE"
TreatWChar_tAsBuiltInType="FALSE" RuntimeLibrary="2"
DebugInformationFormat="3"
BufferSecurityCheck="FALSE"
PreprocessorDefinitions="NDEBUG;_LIB;_WINDOWS;WIN32"
OptimizeForProcessor="1"
ExceptionHandling="0"
AdditionalOptions=" "
AdditionalIncludeDirectories=".;..\..;..\..\Bullet;..\..\BulletDynamics;..\..\LinearMath"
PrecompiledHeaderFile="..\..\out\release71\build\libbulletdynamics\libbulletdynamics.pch" PrecompiledHeaderFile="..\..\out\release71\build\libbulletdynamics\libbulletdynamics.pch"
AssemblerListingLocation="..\..\out\release71\build\libbulletdynamics\" AssemblerListingLocation="..\..\out\release71\build\libbulletdynamics\"
ObjectFile="..\..\out\release71\build\libbulletdynamics\" ObjectFile="..\..\out\release71\build\libbulletdynamics\"
@@ -38,10 +38,24 @@
WarningLevel="3" WarningLevel="3"
SuppressStartupBanner="TRUE" SuppressStartupBanner="TRUE"
Detect64BitPortabilityProblems="TRUE" Detect64BitPortabilityProblems="TRUE"
DebugInformationFormat="3" TreatWChar_tAsBuiltInType="false"
CompileAs="0"/> CompileAs="0"/>
<Tool <Tool
Name="VCCustomBuildTool"/> Name="VCCustomBuildTool"/>
<Tool
Name="VCLinkerTool"
LinkIncremental="1"
OptimizeReferences="2"
EnableCOMDATFolding="2"
GenerateDebugInformation="TRUE"
IgnoreDefaultLibraryNames="LIBC,LIBCD,LIBCMT,LIBCMTD"
AdditionalOptions=" "
AdditionalDependencies=""
IgnoreImportLibrary="TRUE"
SuppressStartupBanner="TRUE"
AdditionalLibraryDirectories=""
ProgramDatabaseFile="..\..\out\release71\build\libbulletdynamics\bulletdynamics.pdb"
TargetMachine="1"/>
<Tool <Tool
Name="VCLibrarianTool" Name="VCLibrarianTool"
OutputFile="..\..\out\release71\libs\libbulletdynamics.lib" OutputFile="..\..\out\release71\libs\libbulletdynamics.lib"
@@ -54,7 +68,8 @@
TargetEnvironment="1" TargetEnvironment="1"
TypeLibraryName="..\..\out\release71\build\libbulletdynamics\libbulletdynamics.tlb"/> TypeLibraryName="..\..\out\release71\build\libbulletdynamics\libbulletdynamics.tlb"/>
<Tool <Tool
Name="VCPostBuildEventTool"/> Name="VCPostBuildEventTool"
/>
<Tool <Tool
Name="VCPreBuildEventTool"/> Name="VCPreBuildEventTool"/>
<Tool <Tool
@@ -62,16 +77,12 @@
<Tool <Tool
Name="VCResourceCompilerTool" Name="VCResourceCompilerTool"
PreprocessorDefinitions="NDEBUG;_LIB;_WINDOWS;PROJECTGEN_VERSION=71" PreprocessorDefinitions="NDEBUG;_LIB;_WINDOWS;PROJECTGEN_VERSION=71"
Culture="1033" AdditionalIncludeDirectories=".;..\..;..\..\Bullet;..\..\BulletDynamics;..\..\LinearMath"
AdditionalIncludeDirectories=".;..\..;..\..\Bullet;..\..\BulletDynamics;..\..\LinearMath"/> Culture="1033"/>
<Tool <Tool
Name="VCWebServiceProxyGeneratorTool"/> Name="VCWebServiceProxyGeneratorTool"/>
<Tool <Tool
Name="VCXMLDataGeneratorTool"/> Name="VCWebDeploymentTool"/>
<Tool
Name="VCManagedWrapperGeneratorTool"/>
<Tool
Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
</Configuration> </Configuration>
<Configuration <Configuration
Name="Debug|Win32" Name="Debug|Win32"
@@ -82,16 +93,16 @@
ATLMinimizesCRunTimeLibraryUsage="FALSE"> ATLMinimizesCRunTimeLibraryUsage="FALSE">
<Tool <Tool
Name="VCCLCompilerTool" Name="VCCLCompilerTool"
AdditionalOptions=" "
Optimization="0" Optimization="0"
OptimizeForProcessor="1"
AdditionalIncludeDirectories=".;..\..;..\..\Bullet;..\..\BulletDynamics;..\..\LinearMath"
PreprocessorDefinitions="_DEBUG;_LIB;_WINDOWS;WIN32"
MinimalRebuild="TRUE" MinimalRebuild="TRUE"
ExceptionHandling="FALSE" DebugInformationFormat="4"
RuntimeLibrary="3"
TreatWChar_tAsBuiltInType="FALSE"
RuntimeTypeInfo="TRUE" RuntimeTypeInfo="TRUE"
RuntimeLibrary="3"
PreprocessorDefinitions="_DEBUG;_LIB;_WINDOWS;WIN32"
OptimizeForProcessor="1"
ExceptionHandling="0"
AdditionalOptions=" "
AdditionalIncludeDirectories=".;..\..;..\..\Bullet;..\..\BulletDynamics;..\..\LinearMath"
PrecompiledHeaderFile="..\..\out\debug71\build\libbulletdynamics\libbulletdynamics.pch" PrecompiledHeaderFile="..\..\out\debug71\build\libbulletdynamics\libbulletdynamics.pch"
AssemblerListingLocation="..\..\out\debug71\build\libbulletdynamics\" AssemblerListingLocation="..\..\out\debug71\build\libbulletdynamics\"
ObjectFile="..\..\out\debug71\build\libbulletdynamics\" ObjectFile="..\..\out\debug71\build\libbulletdynamics\"
@@ -99,10 +110,22 @@
WarningLevel="3" WarningLevel="3"
SuppressStartupBanner="TRUE" SuppressStartupBanner="TRUE"
Detect64BitPortabilityProblems="TRUE" Detect64BitPortabilityProblems="TRUE"
DebugInformationFormat="4" TreatWChar_tAsBuiltInType="false"
CompileAs="0"/> CompileAs="0"/>
<Tool <Tool
Name="VCCustomBuildTool"/> Name="VCCustomBuildTool"/>
<Tool
Name="VCLinkerTool"
LinkIncremental="2"
GenerateDebugInformation="TRUE"
IgnoreDefaultLibraryNames="LIBC,LIBCD,LIBCMT,LIBCMTD,MSVCRT"
AdditionalOptions=" "
AdditionalDependencies=""
IgnoreImportLibrary="TRUE"
SuppressStartupBanner="TRUE"
AdditionalLibraryDirectories=""
ProgramDatabaseFile="..\..\out\debug71\build\libbulletdynamics\bulletdynamics.pdb"
TargetMachine="1"/>
<Tool <Tool
Name="VCLibrarianTool" Name="VCLibrarianTool"
OutputFile="..\..\out\debug71\libs\libbulletdynamics_d.lib" OutputFile="..\..\out\debug71\libs\libbulletdynamics_d.lib"
@@ -115,7 +138,8 @@
TargetEnvironment="1" TargetEnvironment="1"
TypeLibraryName="..\..\out\debug71\build\libbulletdynamics\libbulletdynamics.tlb"/> TypeLibraryName="..\..\out\debug71\build\libbulletdynamics\libbulletdynamics.tlb"/>
<Tool <Tool
Name="VCPostBuildEventTool"/> Name="VCPostBuildEventTool"
/>
<Tool <Tool
Name="VCPreBuildEventTool"/> Name="VCPreBuildEventTool"/>
<Tool <Tool
@@ -123,32 +147,23 @@
<Tool <Tool
Name="VCResourceCompilerTool" Name="VCResourceCompilerTool"
PreprocessorDefinitions="_DEBUG;_LIB;_WINDOWS;PROJECTGEN_VERSION=71" PreprocessorDefinitions="_DEBUG;_LIB;_WINDOWS;PROJECTGEN_VERSION=71"
Culture="1033" AdditionalIncludeDirectories=".;..\..;..\..\Bullet;..\..\BulletDynamics;..\..\LinearMath"
AdditionalIncludeDirectories=".;..\..;..\..\Bullet;..\..\BulletDynamics;..\..\LinearMath"/> Culture="1033"/>
<Tool <Tool
Name="VCWebServiceProxyGeneratorTool"/> Name="VCWebServiceProxyGeneratorTool"/>
<Tool <Tool
Name="VCXMLDataGeneratorTool"/> Name="VCWebDeploymentTool"/>
<Tool
Name="VCManagedWrapperGeneratorTool"/>
<Tool
Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
</Configuration> </Configuration>
</Configurations> </Configurations>
<References>
</References>
<Files> <Files>
<Filter <Filter
Name="Source Files" Name="Source Files"
Filter=""> Filter="">
<File
RelativePath="..\..\BulletDynamics\Dynamics\BU_Joint.cpp">
</File>
<File <File
RelativePath="..\..\BulletDynamics\ConstraintSolver\ContactConstraint.cpp"> RelativePath="..\..\BulletDynamics\ConstraintSolver\ContactConstraint.cpp">
</File> </File>
<File <File
RelativePath="..\..\BulletDynamics\Dynamics\ContactJoint.cpp"> RelativePath="..\..\BulletDynamics\ConstraintSolver\Generic6DofConstraint.cpp">
</File> </File>
<File <File
RelativePath="..\..\BulletDynamics\ConstraintSolver\HingeConstraint.cpp"> RelativePath="..\..\BulletDynamics\ConstraintSolver\HingeConstraint.cpp">
@@ -159,9 +174,6 @@
<File <File
RelativePath="..\..\BulletDynamics\ConstraintSolver\Point2PointConstraint.cpp"> RelativePath="..\..\BulletDynamics\ConstraintSolver\Point2PointConstraint.cpp">
</File> </File>
<File
RelativePath="..\..\BulletDynamics\Dynamics\RigidBody.cpp">
</File>
<File <File
RelativePath="..\..\BulletDynamics\ConstraintSolver\SimpleConstraintSolver.cpp"> RelativePath="..\..\BulletDynamics\ConstraintSolver\SimpleConstraintSolver.cpp">
</File> </File>
@@ -174,13 +186,19 @@
<File <File
RelativePath="..\..\BulletDynamics\ConstraintSolver\TypedConstraint.cpp"> RelativePath="..\..\BulletDynamics\ConstraintSolver\TypedConstraint.cpp">
</File> </File>
<File
RelativePath="..\..\BulletDynamics\Dynamics\BU_Joint.cpp">
</File>
<File
RelativePath="..\..\BulletDynamics\Dynamics\ContactJoint.cpp">
</File>
<File
RelativePath="..\..\BulletDynamics\Dynamics\RigidBody.cpp">
</File>
</Filter> </Filter>
<Filter <Filter
Name="Header Files" Name="Header Files"
Filter=""> Filter="">
<File
RelativePath="..\..\BulletDynamics\Dynamics\BU_Joint.h">
</File>
<File <File
RelativePath="..\..\BulletDynamics\ConstraintSolver\ConstraintSolver.h"> RelativePath="..\..\BulletDynamics\ConstraintSolver\ConstraintSolver.h">
</File> </File>
@@ -188,10 +206,10 @@
RelativePath="..\..\BulletDynamics\ConstraintSolver\ContactConstraint.h"> RelativePath="..\..\BulletDynamics\ConstraintSolver\ContactConstraint.h">
</File> </File>
<File <File
RelativePath="..\..\BulletDynamics\Dynamics\ContactJoint.h"> RelativePath="..\..\BulletDynamics\ConstraintSolver\ContactSolverInfo.h">
</File> </File>
<File <File
RelativePath="..\..\BulletDynamics\ConstraintSolver\ContactSolverInfo.h"> RelativePath="..\..\BulletDynamics\ConstraintSolver\Generic6DofConstraint.h">
</File> </File>
<File <File
RelativePath="..\..\BulletDynamics\ConstraintSolver\HingeConstraint.h"> RelativePath="..\..\BulletDynamics\ConstraintSolver\HingeConstraint.h">
@@ -199,18 +217,12 @@
<File <File
RelativePath="..\..\BulletDynamics\ConstraintSolver\JacobianEntry.h"> RelativePath="..\..\BulletDynamics\ConstraintSolver\JacobianEntry.h">
</File> </File>
<File
RelativePath="..\..\BulletDynamics\Dynamics\MassProps.h">
</File>
<File <File
RelativePath="..\..\BulletDynamics\ConstraintSolver\OdeConstraintSolver.h"> RelativePath="..\..\BulletDynamics\ConstraintSolver\OdeConstraintSolver.h">
</File> </File>
<File <File
RelativePath="..\..\BulletDynamics\ConstraintSolver\Point2PointConstraint.h"> RelativePath="..\..\BulletDynamics\ConstraintSolver\Point2PointConstraint.h">
</File> </File>
<File
RelativePath="..\..\BulletDynamics\Dynamics\RigidBody.h">
</File>
<File <File
RelativePath="..\..\BulletDynamics\ConstraintSolver\SimpleConstraintSolver.h"> RelativePath="..\..\BulletDynamics\ConstraintSolver\SimpleConstraintSolver.h">
</File> </File>
@@ -223,13 +235,19 @@
<File <File
RelativePath="..\..\BulletDynamics\ConstraintSolver\TypedConstraint.h"> RelativePath="..\..\BulletDynamics\ConstraintSolver\TypedConstraint.h">
</File> </File>
<File
RelativePath="..\..\BulletDynamics\Dynamics\BU_Joint.h">
</File>
<File
RelativePath="..\..\BulletDynamics\Dynamics\ContactJoint.h">
</File>
<File
RelativePath="..\..\BulletDynamics\Dynamics\MassProps.h">
</File>
<File
RelativePath="..\..\BulletDynamics\Dynamics\RigidBody.h">
</File>
</Filter> </Filter>
<File
RelativePath="..\..\BulletDynamics\ConstraintSolver\Generic6DofConstraint.cpp">
</File>
<File
RelativePath="..\..\BulletDynamics\ConstraintSolver\Generic6DofConstraint.h">
</File>
</Files> </Files>
<Globals> <Globals>
</Globals> </Globals>

File diff suppressed because it is too large Load Diff

View File

@@ -1,244 +1,178 @@
<?xml version="1.0" encoding="Windows-1252"?> <?xml version="1.0" encoding = "Windows-1252"?>
<VisualStudioProject <VisualStudioProject
ProjectType="Visual C++" ProjectType="Visual C++"
Version="8.00" Version="8.00"
Name="appColladaDemo" Name="appColladaDemo"
ProjectGUID="{D7BF5DDA-C097-9E8B-5EC1-40DE45FB46BF}" ProjectGUID="{D7BF5DDA-C097-9E8B-5EC1-40DE45FB46BF}"
> SccProjectName=""
SccLocalPath="">
<Platforms> <Platforms>
<Platform <Platform
Name="Win32" Name="Win32"/>
/>
</Platforms> </Platforms>
<ToolFiles>
</ToolFiles>
<Configurations> <Configurations>
<Configuration <Configuration
Name="Release|Win32" Name="Release|Win32"
OutputDirectory="..\..\out\release8\build\appColladaDemo\" OutputDirectory="..\..\out\release8\build\appColladaDemo\"
IntermediateDirectory="..\..\out\release8\build\appColladaDemo\" IntermediateDirectory="..\..\out\release8\build\appColladaDemo\"
ConfigurationType="1" ConfigurationType="1"
UseOfMFC="0"
ATLMinimizesCRunTimeLibraryUsage="false"
CharacterSet="2" CharacterSet="2"
WholeProgramOptimization="1" WholeProgramOptimization="1"
> UseOfMFC="0"
<Tool ATLMinimizesCRunTimeLibraryUsage="FALSE">
Name="VCPreBuildEventTool"
/>
<Tool
Name="VCCustomBuildTool"
/>
<Tool
Name="VCXMLDataGeneratorTool"
/>
<Tool
Name="VCWebServiceProxyGeneratorTool"
/>
<Tool
Name="VCMIDLTool"
PreprocessorDefinitions="NDEBUG;_CONSOLE"
MkTypLibCompatible="true"
SuppressStartupBanner="true"
TargetEnvironment="1"
TypeLibraryName="..\..\out\release8\build\appColladaDemo\appColladaDemo.tlb"
/>
<Tool <Tool
Name="VCCLCompilerTool" Name="VCCLCompilerTool"
AdditionalOptions=" "
Optimization="2" Optimization="2"
AdditionalIncludeDirectories=".;..\..;..\..\Bullet;..\..\BulletDynamics;..\..\LinearMath;..\..\Extras\PhysicsInterface\Common;..\..\Extras\ConvexDecomposition;..\..\Glut;..\..\Demos\OpenGL;..\..\Extras\PhysicsInterface\CcdPhysics;..\..\Extras\FCollada;..\..\Extras\FCollada\LibXML\include;..\..\Extras\COLLADA_DOM\include;..\..\Extras\COLLADA_DOM\include\1.4" StringPooling="TRUE"
PreprocessorDefinitions="NDEBUG;_CONSOLE;WIN32" EnableFunctionLevelLinking="TRUE"
StringPooling="true"
ExceptionHandling="0"
RuntimeLibrary="2" RuntimeLibrary="2"
BufferSecurityCheck="false" DebugInformationFormat="3"
EnableFunctionLevelLinking="true" BufferSecurityCheck="FALSE"
TreatWChar_tAsBuiltInType="false" PreprocessorDefinitions="NDEBUG;_CONSOLE;WIN32"
OptimizeForProcessor="1"
ExceptionHandling="0"
AdditionalOptions=" "
AdditionalIncludeDirectories=".;..\..;..\..\Bullet;..\..\BulletDynamics;..\..\LinearMath;..\..\Extras\PhysicsInterface\Common;..\..\Extras\ConvexDecomposition;..\..\Glut;..\..\Demos\OpenGL;..\..\Extras\PhysicsInterface\CcdPhysics"
PrecompiledHeaderFile="..\..\out\release8\build\appColladaDemo\appColladaDemo.pch" PrecompiledHeaderFile="..\..\out\release8\build\appColladaDemo\appColladaDemo.pch"
AssemblerListingLocation="..\..\out\release8\build\appColladaDemo\" AssemblerListingLocation="..\..\out\release8\build\appColladaDemo\"
ObjectFile="..\..\out\release8\build\appColladaDemo\" ObjectFile="..\..\out\release8\build\appColladaDemo\"
ProgramDataBaseFileName="..\..\out\release8\build\appColladaDemo\ColladaDemo.pdb" ProgramDataBaseFileName="..\..\out\release8\build\appColladaDemo\ColladaDemo.pdb"
WarningLevel="3" WarningLevel="3"
SuppressStartupBanner="true" SuppressStartupBanner="TRUE"
Detect64BitPortabilityProblems="true" Detect64BitPortabilityProblems="TRUE"
DebugInformationFormat="3" TreatWChar_tAsBuiltInType="false"
CompileAs="0" CompileAs="0"/>
/>
<Tool <Tool
Name="VCManagedResourceCompilerTool" Name="VCCustomBuildTool"/>
/> <Tool
Name="VCLinkerTool"
LinkIncremental="1"
OptimizeReferences="2"
EnableCOMDATFolding="2"
GenerateDebugInformation="TRUE"
IgnoreDefaultLibraryNames="LIBC,LIBCD,LIBCMT,LIBCMTD"
OutputFile="..\..\ColladaDemo.exe"
SubSystem="1"
AdditionalOptions=" "
AdditionalDependencies="glut32.lib"
IgnoreImportLibrary="TRUE"
SuppressStartupBanner="TRUE"
AdditionalLibraryDirectories="..\..\Glut"
ProgramDatabaseFile="..\..\out\release8\build\appColladaDemo\ColladaDemo.pdb"
TargetMachine="1"/>
<Tool
Name="VCLibrarianTool"
SuppressStartupBanner="TRUE"/>
<Tool
Name="VCMIDLTool"
PreprocessorDefinitions="NDEBUG;_CONSOLE"
MkTypLibCompatible="TRUE"
SuppressStartupBanner="TRUE"
TargetEnvironment="1"
TypeLibraryName="..\..\out\release8\build\appColladaDemo\appColladaDemo.tlb"/>
<Tool
Name="VCPostBuildEventTool"
/>
<Tool
Name="VCPreBuildEventTool"/>
<Tool
Name="VCPreLinkEventTool"/>
<Tool <Tool
Name="VCResourceCompilerTool" Name="VCResourceCompilerTool"
PreprocessorDefinitions="NDEBUG;_CONSOLE;PROJECTGEN_VERSION=8" PreprocessorDefinitions="NDEBUG;_CONSOLE;PROJECTGEN_VERSION=8"
Culture="1033"
AdditionalIncludeDirectories=".;..\..;..\..\Bullet;..\..\BulletDynamics;..\..\LinearMath;..\..\Extras\PhysicsInterface\Common;..\..\Extras\ConvexDecomposition;..\..\Glut;..\..\Demos\OpenGL;..\..\Extras\PhysicsInterface\CcdPhysics" AdditionalIncludeDirectories=".;..\..;..\..\Bullet;..\..\BulletDynamics;..\..\LinearMath;..\..\Extras\PhysicsInterface\Common;..\..\Extras\ConvexDecomposition;..\..\Glut;..\..\Demos\OpenGL;..\..\Extras\PhysicsInterface\CcdPhysics"
/> Culture="1033"/>
<Tool <Tool
Name="VCPreLinkEventTool" Name="VCWebServiceProxyGeneratorTool"/>
/>
<Tool <Tool
Name="VCLinkerTool" Name="VCWebDeploymentTool"/>
IgnoreImportLibrary="true"
AdditionalOptions=" "
AdditionalDependencies="glut32.lib"
OutputFile="..\..\ColladaDemo.exe"
LinkIncremental="1"
SuppressStartupBanner="true"
AdditionalLibraryDirectories="..\..\Glut"
IgnoreDefaultLibraryNames="LIBC,LIBCD,LIBCMT,LIBCMTD"
GenerateDebugInformation="true"
ProgramDatabaseFile="..\..\out\release8\build\appColladaDemo\ColladaDemo.pdb"
SubSystem="1"
OptimizeReferences="2"
EnableCOMDATFolding="2"
TargetMachine="1"
/>
<Tool
Name="VCALinkTool"
/>
<Tool
Name="VCManifestTool"
/>
<Tool
Name="VCXDCMakeTool"
/>
<Tool
Name="VCBscMakeTool"
/>
<Tool
Name="VCFxCopTool"
/>
<Tool
Name="VCAppVerifierTool"
/>
<Tool
Name="VCWebDeploymentTool"
/>
<Tool
Name="VCPostBuildEventTool"
/>
</Configuration> </Configuration>
<Configuration <Configuration
Name="Debug|Win32" Name="Debug|Win32"
OutputDirectory="..\..\out\debug8\build\appColladaDemo\" OutputDirectory="..\..\out\debug8\build\appColladaDemo\"
IntermediateDirectory="..\..\out\debug8\build\appColladaDemo\" IntermediateDirectory="..\..\out\debug8\build\appColladaDemo\"
ConfigurationType="1" ConfigurationType="1"
UseOfMFC="0"
ATLMinimizesCRunTimeLibraryUsage="false"
CharacterSet="2" CharacterSet="2"
> UseOfMFC="0"
<Tool ATLMinimizesCRunTimeLibraryUsage="FALSE">
Name="VCPreBuildEventTool"
/>
<Tool
Name="VCCustomBuildTool"
/>
<Tool
Name="VCXMLDataGeneratorTool"
/>
<Tool
Name="VCWebServiceProxyGeneratorTool"
/>
<Tool
Name="VCMIDLTool"
PreprocessorDefinitions="_DEBUG;_CONSOLE"
MkTypLibCompatible="true"
SuppressStartupBanner="true"
TargetEnvironment="1"
TypeLibraryName="..\..\out\debug8\build\appColladaDemo\appColladaDemo.tlb"
/>
<Tool <Tool
Name="VCCLCompilerTool" Name="VCCLCompilerTool"
AdditionalOptions=" "
Optimization="0" Optimization="0"
AdditionalIncludeDirectories=".;..\..;..\..\Bullet;..\..\BulletDynamics;..\..\LinearMath;..\..\Extras\PhysicsInterface\Common;..\..\Extras\ConvexDecomposition;..\..\Glut;..\..\Demos\OpenGL;..\..\Extras\PhysicsInterface\CcdPhysics;..\..\Extras\FCollada;..\..\Extras\FCollada\LibXML\include;..\..\Extras\COLLADA_DOM\include;..\..\Extras\COLLADA_DOM\include\1.4" MinimalRebuild="TRUE"
PreprocessorDefinitions="_DEBUG;_CONSOLE;WIN32" DebugInformationFormat="4"
MinimalRebuild="true" RuntimeTypeInfo="TRUE"
ExceptionHandling="0"
RuntimeLibrary="3" RuntimeLibrary="3"
TreatWChar_tAsBuiltInType="false" PreprocessorDefinitions="_DEBUG;_CONSOLE;WIN32"
RuntimeTypeInfo="true" OptimizeForProcessor="1"
ExceptionHandling="0"
AdditionalOptions=" "
AdditionalIncludeDirectories=".;..\..;..\..\Bullet;..\..\BulletDynamics;..\..\LinearMath;..\..\Extras\PhysicsInterface\Common;..\..\Extras\ConvexDecomposition;..\..\Glut;..\..\Demos\OpenGL;..\..\Extras\PhysicsInterface\CcdPhysics"
PrecompiledHeaderFile="..\..\out\debug8\build\appColladaDemo\appColladaDemo.pch" PrecompiledHeaderFile="..\..\out\debug8\build\appColladaDemo\appColladaDemo.pch"
AssemblerListingLocation="..\..\out\debug8\build\appColladaDemo\" AssemblerListingLocation="..\..\out\debug8\build\appColladaDemo\"
ObjectFile="..\..\out\debug8\build\appColladaDemo\" ObjectFile="..\..\out\debug8\build\appColladaDemo\"
ProgramDataBaseFileName="..\..\out\debug8\build\appColladaDemo\ColladaDemo.pdb" ProgramDataBaseFileName="..\..\out\debug8\build\appColladaDemo\ColladaDemo.pdb"
WarningLevel="3" WarningLevel="3"
SuppressStartupBanner="true" SuppressStartupBanner="TRUE"
Detect64BitPortabilityProblems="true" Detect64BitPortabilityProblems="TRUE"
DebugInformationFormat="4" TreatWChar_tAsBuiltInType="false"
CompileAs="0" CompileAs="0"/>
/>
<Tool <Tool
Name="VCManagedResourceCompilerTool" Name="VCCustomBuildTool"/>
/> <Tool
Name="VCLinkerTool"
LinkIncremental="2"
GenerateDebugInformation="TRUE"
IgnoreDefaultLibraryNames="LIBC,LIBCD,LIBCMT,LIBCMTD,MSVCRT"
OutputFile="..\..\ColladaDemo.exe"
SubSystem="1"
AdditionalOptions=" "
AdditionalDependencies="glut32.lib"
IgnoreImportLibrary="TRUE"
SuppressStartupBanner="TRUE"
AdditionalLibraryDirectories="..\..\Glut"
ProgramDatabaseFile="..\..\out\debug8\build\appColladaDemo\ColladaDemo.pdb"
TargetMachine="1"/>
<Tool
Name="VCLibrarianTool"
SuppressStartupBanner="TRUE"/>
<Tool
Name="VCMIDLTool"
PreprocessorDefinitions="_DEBUG;_CONSOLE"
MkTypLibCompatible="TRUE"
SuppressStartupBanner="TRUE"
TargetEnvironment="1"
TypeLibraryName="..\..\out\debug8\build\appColladaDemo\appColladaDemo.tlb"/>
<Tool
Name="VCPostBuildEventTool"
/>
<Tool
Name="VCPreBuildEventTool"/>
<Tool
Name="VCPreLinkEventTool"/>
<Tool <Tool
Name="VCResourceCompilerTool" Name="VCResourceCompilerTool"
PreprocessorDefinitions="_DEBUG;_CONSOLE;PROJECTGEN_VERSION=8" PreprocessorDefinitions="_DEBUG;_CONSOLE;PROJECTGEN_VERSION=8"
Culture="1033"
AdditionalIncludeDirectories=".;..\..;..\..\Bullet;..\..\BulletDynamics;..\..\LinearMath;..\..\Extras\PhysicsInterface\Common;..\..\Extras\ConvexDecomposition;..\..\Glut;..\..\Demos\OpenGL;..\..\Extras\PhysicsInterface\CcdPhysics" AdditionalIncludeDirectories=".;..\..;..\..\Bullet;..\..\BulletDynamics;..\..\LinearMath;..\..\Extras\PhysicsInterface\Common;..\..\Extras\ConvexDecomposition;..\..\Glut;..\..\Demos\OpenGL;..\..\Extras\PhysicsInterface\CcdPhysics"
/> Culture="1033"/>
<Tool <Tool
Name="VCPreLinkEventTool" Name="VCWebServiceProxyGeneratorTool"/>
/>
<Tool <Tool
Name="VCLinkerTool" Name="VCWebDeploymentTool"/>
IgnoreImportLibrary="true"
AdditionalOptions=" "
AdditionalDependencies="glut32.lib"
OutputFile="..\..\ColladaDemo.exe"
LinkIncremental="2"
SuppressStartupBanner="true"
AdditionalLibraryDirectories="..\..\Glut"
IgnoreDefaultLibraryNames="LIBC,LIBCD,LIBCMT,LIBCMTD,MSVCRT"
GenerateDebugInformation="true"
ProgramDatabaseFile="..\..\out\debug8\build\appColladaDemo\ColladaDemo.pdb"
SubSystem="1"
TargetMachine="1"
/>
<Tool
Name="VCALinkTool"
/>
<Tool
Name="VCManifestTool"
/>
<Tool
Name="VCXDCMakeTool"
/>
<Tool
Name="VCBscMakeTool"
/>
<Tool
Name="VCFxCopTool"
/>
<Tool
Name="VCAppVerifierTool"
/>
<Tool
Name="VCWebDeploymentTool"
/>
<Tool
Name="VCPostBuildEventTool"
/>
</Configuration> </Configuration>
</Configurations> </Configurations>
<References>
</References>
<Files> <Files>
<Filter <Filter
Name="Source Files" Name="Source Files"
> Filter="">
<File <File
RelativePath="..\..\Demos\ColladaDemo\ColladaDemo.cpp" RelativePath="..\..\Demos\ColladaDemo\ColladaDemo.cpp">
>
</File> </File>
</Filter> </Filter>
<Filter <Filter
Name="Resource Files" Name="Resource Files"
> Filter="">
<File <File
RelativePath="..\..\msvc\appColladaDemo.rc" RelativePath="..\..\msvc\appColladaDemo.rc">
>
</File> </File>
</Filter> </Filter>
</Files> </Files>

View File

@@ -1,18 +1,15 @@
<?xml version="1.0" encoding="Windows-1252"?> <?xml version="1.0" encoding = "Windows-1252"?>
<VisualStudioProject <VisualStudioProject
ProjectType="Visual C++" ProjectType="Visual C++"
Version="8.00" Version="8.00"
Name="libbulletdynamics" Name="libbulletdynamics"
ProjectGUID="{61BD1097-CF2E-B296-DAA9-73A6FE135319}" ProjectGUID="{61BD1097-CF2E-B296-DAA9-73A6FE135319}"
RootNamespace="libbulletdynamics" SccProjectName=""
> SccLocalPath="">
<Platforms> <Platforms>
<Platform <Platform
Name="Win32" Name="Win32"/>
/>
</Platforms> </Platforms>
<ToolFiles>
</ToolFiles>
<Configurations> <Configurations>
<Configuration <Configuration
Name="Release|Win32" Name="Release|Win32"
@@ -20,82 +17,72 @@
IntermediateDirectory="..\..\out\release8\build\libbulletdynamics\" IntermediateDirectory="..\..\out\release8\build\libbulletdynamics\"
ConfigurationType="4" ConfigurationType="4"
UseOfMFC="0" UseOfMFC="0"
ATLMinimizesCRunTimeLibraryUsage="false" ATLMinimizesCRunTimeLibraryUsage="FALSE">
>
<Tool
Name="VCPreBuildEventTool"
/>
<Tool
Name="VCCustomBuildTool"
/>
<Tool
Name="VCXMLDataGeneratorTool"
/>
<Tool
Name="VCWebServiceProxyGeneratorTool"
/>
<Tool
Name="VCMIDLTool"
PreprocessorDefinitions="NDEBUG;_LIB;_WINDOWS"
MkTypLibCompatible="true"
SuppressStartupBanner="true"
TargetEnvironment="1"
TypeLibraryName="..\..\out\release8\build\libbulletdynamics\libbulletdynamics.tlb"
/>
<Tool <Tool
Name="VCCLCompilerTool" Name="VCCLCompilerTool"
AdditionalOptions=" "
Optimization="2" Optimization="2"
AdditionalIncludeDirectories=".;..\..;..\..\Bullet;..\..\BulletDynamics;..\..\LinearMath" StringPooling="TRUE"
PreprocessorDefinitions="NDEBUG;_LIB;_WINDOWS;WIN32" EnableFunctionLevelLinking="TRUE"
StringPooling="true"
ExceptionHandling="0"
RuntimeLibrary="2" RuntimeLibrary="2"
BufferSecurityCheck="false" DebugInformationFormat="3"
EnableFunctionLevelLinking="true" BufferSecurityCheck="FALSE"
TreatWChar_tAsBuiltInType="false" PreprocessorDefinitions="NDEBUG;_LIB;_WINDOWS;WIN32"
OptimizeForProcessor="1"
ExceptionHandling="0"
AdditionalOptions=" "
AdditionalIncludeDirectories=".;..\..;..\..\Bullet;..\..\BulletDynamics;..\..\LinearMath"
PrecompiledHeaderFile="..\..\out\release8\build\libbulletdynamics\libbulletdynamics.pch" PrecompiledHeaderFile="..\..\out\release8\build\libbulletdynamics\libbulletdynamics.pch"
AssemblerListingLocation="..\..\out\release8\build\libbulletdynamics\" AssemblerListingLocation="..\..\out\release8\build\libbulletdynamics\"
ObjectFile="..\..\out\release8\build\libbulletdynamics\" ObjectFile="..\..\out\release8\build\libbulletdynamics\"
ProgramDataBaseFileName="..\..\out\release8\build\libbulletdynamics\bulletdynamics.pdb" ProgramDataBaseFileName="..\..\out\release8\build\libbulletdynamics\bulletdynamics.pdb"
WarningLevel="3" WarningLevel="3"
SuppressStartupBanner="true" SuppressStartupBanner="TRUE"
Detect64BitPortabilityProblems="true" Detect64BitPortabilityProblems="TRUE"
DebugInformationFormat="3" TreatWChar_tAsBuiltInType="false"
CompileAs="0" CompileAs="0"/>
/>
<Tool <Tool
Name="VCManagedResourceCompilerTool" Name="VCCustomBuildTool"/>
/>
<Tool <Tool
Name="VCResourceCompilerTool" Name="VCLinkerTool"
PreprocessorDefinitions="NDEBUG;_LIB;_WINDOWS;PROJECTGEN_VERSION=8" LinkIncremental="1"
Culture="1033" OptimizeReferences="2"
AdditionalIncludeDirectories=".;..\..;..\..\Bullet;..\..\BulletDynamics;..\..\LinearMath" EnableCOMDATFolding="2"
/> GenerateDebugInformation="TRUE"
<Tool IgnoreDefaultLibraryNames="LIBC,LIBCD,LIBCMT,LIBCMTD"
Name="VCPreLinkEventTool" AdditionalOptions=" "
/> AdditionalDependencies=""
IgnoreImportLibrary="TRUE"
SuppressStartupBanner="TRUE"
AdditionalLibraryDirectories=""
ProgramDatabaseFile="..\..\out\release8\build\libbulletdynamics\bulletdynamics.pdb"
TargetMachine="1"/>
<Tool <Tool
Name="VCLibrarianTool" Name="VCLibrarianTool"
OutputFile="..\..\out\release8\libs\libbulletdynamics.lib" OutputFile="..\..\out\release8\libs\libbulletdynamics.lib"
SuppressStartupBanner="true" SuppressStartupBanner="TRUE"/>
/>
<Tool <Tool
Name="VCALinkTool" Name="VCMIDLTool"
/> PreprocessorDefinitions="NDEBUG;_LIB;_WINDOWS"
<Tool MkTypLibCompatible="TRUE"
Name="VCXDCMakeTool" SuppressStartupBanner="TRUE"
/> TargetEnvironment="1"
<Tool TypeLibraryName="..\..\out\release8\build\libbulletdynamics\libbulletdynamics.tlb"/>
Name="VCBscMakeTool"
/>
<Tool
Name="VCFxCopTool"
/>
<Tool <Tool
Name="VCPostBuildEventTool" Name="VCPostBuildEventTool"
/> />
<Tool
Name="VCPreBuildEventTool"/>
<Tool
Name="VCPreLinkEventTool"/>
<Tool
Name="VCResourceCompilerTool"
PreprocessorDefinitions="NDEBUG;_LIB;_WINDOWS;PROJECTGEN_VERSION=8"
AdditionalIncludeDirectories=".;..\..;..\..\Bullet;..\..\BulletDynamics;..\..\LinearMath"
Culture="1033"/>
<Tool
Name="VCWebServiceProxyGeneratorTool"/>
<Tool
Name="VCWebDeploymentTool"/>
</Configuration> </Configuration>
<Configuration <Configuration
Name="Debug|Win32" Name="Debug|Win32"
@@ -103,204 +90,162 @@
IntermediateDirectory="..\..\out\debug8\build\libbulletdynamics\" IntermediateDirectory="..\..\out\debug8\build\libbulletdynamics\"
ConfigurationType="4" ConfigurationType="4"
UseOfMFC="0" UseOfMFC="0"
ATLMinimizesCRunTimeLibraryUsage="false" ATLMinimizesCRunTimeLibraryUsage="FALSE">
>
<Tool
Name="VCPreBuildEventTool"
/>
<Tool
Name="VCCustomBuildTool"
/>
<Tool
Name="VCXMLDataGeneratorTool"
/>
<Tool
Name="VCWebServiceProxyGeneratorTool"
/>
<Tool
Name="VCMIDLTool"
PreprocessorDefinitions="_DEBUG;_LIB;_WINDOWS"
MkTypLibCompatible="true"
SuppressStartupBanner="true"
TargetEnvironment="1"
TypeLibraryName="..\..\out\debug8\build\libbulletdynamics\libbulletdynamics.tlb"
/>
<Tool <Tool
Name="VCCLCompilerTool" Name="VCCLCompilerTool"
AdditionalOptions=" "
Optimization="0" Optimization="0"
AdditionalIncludeDirectories=".;..\..;..\..\Bullet;..\..\BulletDynamics;..\..\LinearMath" MinimalRebuild="TRUE"
PreprocessorDefinitions="_DEBUG;_LIB;_WINDOWS;WIN32" DebugInformationFormat="4"
MinimalRebuild="true" RuntimeTypeInfo="TRUE"
ExceptionHandling="0"
RuntimeLibrary="3" RuntimeLibrary="3"
TreatWChar_tAsBuiltInType="false" PreprocessorDefinitions="_DEBUG;_LIB;_WINDOWS;WIN32"
RuntimeTypeInfo="true" OptimizeForProcessor="1"
ExceptionHandling="0"
AdditionalOptions=" "
AdditionalIncludeDirectories=".;..\..;..\..\Bullet;..\..\BulletDynamics;..\..\LinearMath"
PrecompiledHeaderFile="..\..\out\debug8\build\libbulletdynamics\libbulletdynamics.pch" PrecompiledHeaderFile="..\..\out\debug8\build\libbulletdynamics\libbulletdynamics.pch"
AssemblerListingLocation="..\..\out\debug8\build\libbulletdynamics\" AssemblerListingLocation="..\..\out\debug8\build\libbulletdynamics\"
ObjectFile="..\..\out\debug8\build\libbulletdynamics\" ObjectFile="..\..\out\debug8\build\libbulletdynamics\"
ProgramDataBaseFileName="..\..\out\debug8\build\libbulletdynamics\bulletdynamics.pdb" ProgramDataBaseFileName="..\..\out\debug8\build\libbulletdynamics\bulletdynamics.pdb"
WarningLevel="3" WarningLevel="3"
SuppressStartupBanner="true" SuppressStartupBanner="TRUE"
Detect64BitPortabilityProblems="true" Detect64BitPortabilityProblems="TRUE"
DebugInformationFormat="4" TreatWChar_tAsBuiltInType="false"
CompileAs="0" CompileAs="0"/>
/>
<Tool <Tool
Name="VCManagedResourceCompilerTool" Name="VCCustomBuildTool"/>
/>
<Tool <Tool
Name="VCResourceCompilerTool" Name="VCLinkerTool"
PreprocessorDefinitions="_DEBUG;_LIB;_WINDOWS;PROJECTGEN_VERSION=8" LinkIncremental="2"
Culture="1033" GenerateDebugInformation="TRUE"
AdditionalIncludeDirectories=".;..\..;..\..\Bullet;..\..\BulletDynamics;..\..\LinearMath" IgnoreDefaultLibraryNames="LIBC,LIBCD,LIBCMT,LIBCMTD,MSVCRT"
/> AdditionalOptions=" "
<Tool AdditionalDependencies=""
Name="VCPreLinkEventTool" IgnoreImportLibrary="TRUE"
/> SuppressStartupBanner="TRUE"
AdditionalLibraryDirectories=""
ProgramDatabaseFile="..\..\out\debug8\build\libbulletdynamics\bulletdynamics.pdb"
TargetMachine="1"/>
<Tool <Tool
Name="VCLibrarianTool" Name="VCLibrarianTool"
OutputFile="..\..\out\debug8\libs\libbulletdynamics_d.lib" OutputFile="..\..\out\debug8\libs\libbulletdynamics_d.lib"
SuppressStartupBanner="true" SuppressStartupBanner="TRUE"/>
/>
<Tool <Tool
Name="VCALinkTool" Name="VCMIDLTool"
/> PreprocessorDefinitions="_DEBUG;_LIB;_WINDOWS"
<Tool MkTypLibCompatible="TRUE"
Name="VCXDCMakeTool" SuppressStartupBanner="TRUE"
/> TargetEnvironment="1"
<Tool TypeLibraryName="..\..\out\debug8\build\libbulletdynamics\libbulletdynamics.tlb"/>
Name="VCBscMakeTool"
/>
<Tool
Name="VCFxCopTool"
/>
<Tool <Tool
Name="VCPostBuildEventTool" Name="VCPostBuildEventTool"
/> />
<Tool
Name="VCPreBuildEventTool"/>
<Tool
Name="VCPreLinkEventTool"/>
<Tool
Name="VCResourceCompilerTool"
PreprocessorDefinitions="_DEBUG;_LIB;_WINDOWS;PROJECTGEN_VERSION=8"
AdditionalIncludeDirectories=".;..\..;..\..\Bullet;..\..\BulletDynamics;..\..\LinearMath"
Culture="1033"/>
<Tool
Name="VCWebServiceProxyGeneratorTool"/>
<Tool
Name="VCWebDeploymentTool"/>
</Configuration> </Configuration>
</Configurations> </Configurations>
<References>
</References>
<Files> <Files>
<Filter <Filter
Name="Source Files" Name="Source Files"
> Filter="">
<File <File
RelativePath="..\..\BulletDynamics\Dynamics\BU_Joint.cpp" RelativePath="..\..\BulletDynamics\ConstraintSolver\ContactConstraint.cpp">
>
</File> </File>
<File <File
RelativePath="..\..\BulletDynamics\ConstraintSolver\ContactConstraint.cpp" RelativePath="..\..\BulletDynamics\ConstraintSolver\Generic6DofConstraint.cpp">
>
</File> </File>
<File <File
RelativePath="..\..\BulletDynamics\Dynamics\ContactJoint.cpp" RelativePath="..\..\BulletDynamics\ConstraintSolver\HingeConstraint.cpp">
>
</File> </File>
<File <File
RelativePath="..\..\BulletDynamics\ConstraintSolver\Generic6DofConstraint.cpp" RelativePath="..\..\BulletDynamics\ConstraintSolver\OdeConstraintSolver.cpp">
>
</File> </File>
<File <File
RelativePath="..\..\BulletDynamics\ConstraintSolver\HingeConstraint.cpp" RelativePath="..\..\BulletDynamics\ConstraintSolver\Point2PointConstraint.cpp">
>
</File> </File>
<File <File
RelativePath="..\..\BulletDynamics\ConstraintSolver\OdeConstraintSolver.cpp" RelativePath="..\..\BulletDynamics\ConstraintSolver\SimpleConstraintSolver.cpp">
>
</File> </File>
<File <File
RelativePath="..\..\BulletDynamics\ConstraintSolver\Point2PointConstraint.cpp" RelativePath="..\..\BulletDynamics\ConstraintSolver\Solve2LinearConstraint.cpp">
>
</File> </File>
<File <File
RelativePath="..\..\BulletDynamics\Dynamics\RigidBody.cpp" RelativePath="..\..\BulletDynamics\ConstraintSolver\SorLcp.cpp">
>
</File> </File>
<File <File
RelativePath="..\..\BulletDynamics\ConstraintSolver\SimpleConstraintSolver.cpp" RelativePath="..\..\BulletDynamics\ConstraintSolver\TypedConstraint.cpp">
>
</File> </File>
<File <File
RelativePath="..\..\BulletDynamics\ConstraintSolver\Solve2LinearConstraint.cpp" RelativePath="..\..\BulletDynamics\Dynamics\BU_Joint.cpp">
>
</File> </File>
<File <File
RelativePath="..\..\BulletDynamics\ConstraintSolver\SorLcp.cpp" RelativePath="..\..\BulletDynamics\Dynamics\ContactJoint.cpp">
>
</File> </File>
<File <File
RelativePath="..\..\BulletDynamics\ConstraintSolver\TypedConstraint.cpp" RelativePath="..\..\BulletDynamics\Dynamics\RigidBody.cpp">
>
</File> </File>
</Filter> </Filter>
<Filter <Filter
Name="Header Files" Name="Header Files"
> Filter="">
<File <File
RelativePath="..\..\BulletDynamics\Dynamics\BU_Joint.h" RelativePath="..\..\BulletDynamics\ConstraintSolver\ConstraintSolver.h">
>
</File> </File>
<File <File
RelativePath="..\..\BulletDynamics\ConstraintSolver\ConstraintSolver.h" RelativePath="..\..\BulletDynamics\ConstraintSolver\ContactConstraint.h">
>
</File> </File>
<File <File
RelativePath="..\..\BulletDynamics\ConstraintSolver\ContactConstraint.h" RelativePath="..\..\BulletDynamics\ConstraintSolver\ContactSolverInfo.h">
>
</File> </File>
<File <File
RelativePath="..\..\BulletDynamics\Dynamics\ContactJoint.h" RelativePath="..\..\BulletDynamics\ConstraintSolver\Generic6DofConstraint.h">
>
</File> </File>
<File <File
RelativePath="..\..\BulletDynamics\ConstraintSolver\ContactSolverInfo.h" RelativePath="..\..\BulletDynamics\ConstraintSolver\HingeConstraint.h">
>
</File> </File>
<File <File
RelativePath="..\..\BulletDynamics\ConstraintSolver\Generic6DofConstraint.h" RelativePath="..\..\BulletDynamics\ConstraintSolver\JacobianEntry.h">
>
</File> </File>
<File <File
RelativePath="..\..\BulletDynamics\ConstraintSolver\HingeConstraint.h" RelativePath="..\..\BulletDynamics\ConstraintSolver\OdeConstraintSolver.h">
>
</File> </File>
<File <File
RelativePath="..\..\BulletDynamics\ConstraintSolver\JacobianEntry.h" RelativePath="..\..\BulletDynamics\ConstraintSolver\Point2PointConstraint.h">
>
</File> </File>
<File <File
RelativePath="..\..\BulletDynamics\Dynamics\MassProps.h" RelativePath="..\..\BulletDynamics\ConstraintSolver\SimpleConstraintSolver.h">
>
</File> </File>
<File <File
RelativePath="..\..\BulletDynamics\ConstraintSolver\OdeConstraintSolver.h" RelativePath="..\..\BulletDynamics\ConstraintSolver\Solve2LinearConstraint.h">
>
</File> </File>
<File <File
RelativePath="..\..\BulletDynamics\ConstraintSolver\Point2PointConstraint.h" RelativePath="..\..\BulletDynamics\ConstraintSolver\SorLcp.h">
>
</File> </File>
<File <File
RelativePath="..\..\BulletDynamics\Dynamics\RigidBody.h" RelativePath="..\..\BulletDynamics\ConstraintSolver\TypedConstraint.h">
>
</File> </File>
<File <File
RelativePath="..\..\BulletDynamics\ConstraintSolver\SimpleConstraintSolver.h" RelativePath="..\..\BulletDynamics\Dynamics\BU_Joint.h">
>
</File> </File>
<File <File
RelativePath="..\..\BulletDynamics\ConstraintSolver\Solve2LinearConstraint.h" RelativePath="..\..\BulletDynamics\Dynamics\ContactJoint.h">
>
</File> </File>
<File <File
RelativePath="..\..\BulletDynamics\ConstraintSolver\SorLcp.h" RelativePath="..\..\BulletDynamics\Dynamics\MassProps.h">
>
</File> </File>
<File <File
RelativePath="..\..\BulletDynamics\ConstraintSolver\TypedConstraint.h" RelativePath="..\..\BulletDynamics\Dynamics\RigidBody.h">
>
</File> </File>
</Filter> </Filter>
</Files> </Files>

File diff suppressed because it is too large Load Diff

View File

@@ -1,29 +1,30 @@
// This file is generated automatically. // This file is generated automatically.
1 VERSIONINFO 1 VERSIONINFO
FILEVERSION 1, 1, 2006, 0319 FILEVERSION 1, 5, 6, 0
PRODUCTVERSION 1, 1, 2006, 0319 PRODUCTVERSION 1, 5, 6, 0
#ifdef CS_DEBUG #ifdef CS_DEBUG
FILEFLAGS 0x1 FILEFLAGS 0x1
#else #else
FILEFLAGS 0x0 FILEFLAGS 0x0
#endif #endif
{ {
BLOCK "StringFileInfo" BLOCK "StringFileInfo"
{ {
BLOCK "040904E4" BLOCK "040904E4"
{ {
VALUE "ProductName", "Bullet Continuous Collision Detection and Physics Library" VALUE "ProductName", "Bullet Continuous Collision Detection and Physics Library"
VALUE "ProductVersion", "1.1.2006.0319" VALUE "ProductVersion", "1.5.6"
VALUE "FileVersion", "1.1.2006.0319" VALUE "FileVersion", "1.5.6"
VALUE "LegalCopyright", "Copyright (c) 2005-2006 Erwin Coumans" VALUE "LegalCopyright", "Copyright (c) 2005-2006 Erwin Coumans"
VALUE "FileDescription", "BasicSample" VALUE "FileDescription", "BasicSample"
#ifdef CS_DEBUG #ifdef CS_DEBUG
VALUE "Comments", "Debug build" VALUE "Comments", "Debug build"
#else #else
VALUE "Comments", "Release build" VALUE "Comments", "Release build"
#endif #endif
VALUE "WWW", "http://www.continuousphysics.com/Bullet/" VALUE "WWW", "http://www.continuousphysics.com/Bullet/"
} }
} }
} }
1 ICON "../msvc/bullet_ico.ico"

View File

@@ -1,31 +1,30 @@
// This file is generated automatically. // This file is generated automatically.
1 VERSIONINFO 1 VERSIONINFO
FILEVERSION 1, 1, 2006, 0319 FILEVERSION 1, 5, 6, 0
PRODUCTVERSION 1, 1, 2006, 0319 PRODUCTVERSION 1, 5, 6, 0
#ifdef CS_DEBUG #ifdef CS_DEBUG
FILEFLAGS 0x1 FILEFLAGS 0x1
#else #else
FILEFLAGS 0x0 FILEFLAGS 0x0
#endif #endif
{ {
BLOCK "StringFileInfo" BLOCK "StringFileInfo"
{ {
BLOCK "040904E4" BLOCK "040904E4"
{ {
VALUE "ProductName", "Bullet Continuous Collision Detection and Physics Library" VALUE "ProductName", "Bullet Continuous Collision Detection and Physics Library"
VALUE "ProductVersion", "1.1.2006.0319" VALUE "ProductVersion", "1.5.6"
VALUE "FileVersion", "1.1.2006.0319" VALUE "FileVersion", "1.5.6"
VALUE "LegalCopyright", "Copyright (c) 2005-2006 Erwin Coumans" VALUE "LegalCopyright", "Copyright (c) 2005-2006 Erwin Coumans"
VALUE "FileDescription", "CcdPhysicsDemo" VALUE "FileDescription", "CcdPhysicsDemo"
#ifdef CS_DEBUG #ifdef CS_DEBUG
VALUE "Comments", "Debug build" VALUE "Comments", "Debug build"
#else #else
VALUE "Comments", "Release build" VALUE "Comments", "Release build"
#endif #endif
VALUE "WWW", "http://www.continuousphysics.com/Bullet/" VALUE "WWW", "http://www.continuousphysics.com/Bullet/"
} }
} }
} }
APPICON ICON "bullet_ico.ico" 1 ICON "../msvc/bullet_ico.ico"

View File

@@ -1,31 +1,30 @@
// This file is generated automatically. // This file is generated automatically.
1 VERSIONINFO 1 VERSIONINFO
FILEVERSION 1, 1, 2006, 0319 FILEVERSION 1, 5, 6, 0
PRODUCTVERSION 1, 1, 2006, 0319 PRODUCTVERSION 1, 5, 6, 0
#ifdef CS_DEBUG #ifdef CS_DEBUG
FILEFLAGS 0x1 FILEFLAGS 0x1
#else #else
FILEFLAGS 0x0 FILEFLAGS 0x0
#endif #endif
{ {
BLOCK "StringFileInfo" BLOCK "StringFileInfo"
{ {
BLOCK "040904E4" BLOCK "040904E4"
{ {
VALUE "ProductName", "Bullet Continuous Collision Detection and Physics Library" VALUE "ProductName", "Bullet Continuous Collision Detection and Physics Library"
VALUE "ProductVersion", "1.1.2006.0319" VALUE "ProductVersion", "1.5.6"
VALUE "FileVersion", "1.1.2006.0319" VALUE "FileVersion", "1.5.6"
VALUE "LegalCopyright", "Copyright (c) 2005-2006 Erwin Coumans" VALUE "LegalCopyright", "Copyright (c) 2005-2006 Erwin Coumans"
VALUE "FileDescription", "ColladaDemo" VALUE "FileDescription", "ColladaDemo"
#ifdef CS_DEBUG #ifdef CS_DEBUG
VALUE "Comments", "Debug build" VALUE "Comments", "Debug build"
#else #else
VALUE "Comments", "Release build" VALUE "Comments", "Release build"
#endif #endif
VALUE "WWW", "http://www.continuousphysics.com/Bullet/" VALUE "WWW", "http://www.continuousphysics.com/Bullet/"
} }
} }
} }
1 ICON "../msvc/bullet_ico.ico"
APPICON ICON "bullet_ico.ico"

View File

@@ -1,29 +1,30 @@
// This file is generated automatically. // This file is generated automatically.
1 VERSIONINFO 1 VERSIONINFO
FILEVERSION 1, 1, 2006, 0319 FILEVERSION 1, 5, 6, 0
PRODUCTVERSION 1, 1, 2006, 0319 PRODUCTVERSION 1, 5, 6, 0
#ifdef CS_DEBUG #ifdef CS_DEBUG
FILEFLAGS 0x1 FILEFLAGS 0x1
#else #else
FILEFLAGS 0x0 FILEFLAGS 0x0
#endif #endif
{ {
BLOCK "StringFileInfo" BLOCK "StringFileInfo"
{ {
BLOCK "040904E4" BLOCK "040904E4"
{ {
VALUE "ProductName", "Bullet Continuous Collision Detection and Physics Library" VALUE "ProductName", "Bullet Continuous Collision Detection and Physics Library"
VALUE "ProductVersion", "1.1.2006.0319" VALUE "ProductVersion", "1.5.6"
VALUE "FileVersion", "1.1.2006.0319" VALUE "FileVersion", "1.5.6"
VALUE "LegalCopyright", "Copyright (c) 2005-2006 Erwin Coumans" VALUE "LegalCopyright", "Copyright (c) 2005-2006 Erwin Coumans"
VALUE "FileDescription", "CollisionDemo" VALUE "FileDescription", "CollisionDemo"
#ifdef CS_DEBUG #ifdef CS_DEBUG
VALUE "Comments", "Debug build" VALUE "Comments", "Debug build"
#else #else
VALUE "Comments", "Release build" VALUE "Comments", "Release build"
#endif #endif
VALUE "WWW", "http://www.continuousphysics.com/Bullet/" VALUE "WWW", "http://www.continuousphysics.com/Bullet/"
} }
} }
} }
1 ICON "../msvc/bullet_ico.ico"

View File

@@ -1,29 +1,30 @@
// This file is generated automatically. // This file is generated automatically.
1 VERSIONINFO 1 VERSIONINFO
FILEVERSION 1, 1, 2006, 0319 FILEVERSION 1, 5, 6, 0
PRODUCTVERSION 1, 1, 2006, 0319 PRODUCTVERSION 1, 5, 6, 0
#ifdef CS_DEBUG #ifdef CS_DEBUG
FILEFLAGS 0x1 FILEFLAGS 0x1
#else #else
FILEFLAGS 0x0 FILEFLAGS 0x0
#endif #endif
{ {
BLOCK "StringFileInfo" BLOCK "StringFileInfo"
{ {
BLOCK "040904E4" BLOCK "040904E4"
{ {
VALUE "ProductName", "Bullet Continuous Collision Detection and Physics Library" VALUE "ProductName", "Bullet Continuous Collision Detection and Physics Library"
VALUE "ProductVersion", "1.1.2006.0319" VALUE "ProductVersion", "1.5.6"
VALUE "FileVersion", "1.1.2006.0319" VALUE "FileVersion", "1.5.6"
VALUE "LegalCopyright", "Copyright (c) 2005-2006 Erwin Coumans" VALUE "LegalCopyright", "Copyright (c) 2005-2006 Erwin Coumans"
VALUE "FileDescription", "CollisionInterfaceDemo" VALUE "FileDescription", "CollisionInterfaceDemo"
#ifdef CS_DEBUG #ifdef CS_DEBUG
VALUE "Comments", "Debug build" VALUE "Comments", "Debug build"
#else #else
VALUE "Comments", "Release build" VALUE "Comments", "Release build"
#endif #endif
VALUE "WWW", "http://www.continuousphysics.com/Bullet/" VALUE "WWW", "http://www.continuousphysics.com/Bullet/"
} }
} }
} }
1 ICON "../msvc/bullet_ico.ico"

View File

@@ -1,29 +1,30 @@
// This file is generated automatically. // This file is generated automatically.
1 VERSIONINFO 1 VERSIONINFO
FILEVERSION 1, 1, 2006, 0319 FILEVERSION 1, 5, 6, 0
PRODUCTVERSION 1, 1, 2006, 0319 PRODUCTVERSION 1, 5, 6, 0
#ifdef CS_DEBUG #ifdef CS_DEBUG
FILEFLAGS 0x1 FILEFLAGS 0x1
#else #else
FILEFLAGS 0x0 FILEFLAGS 0x0
#endif #endif
{ {
BLOCK "StringFileInfo" BLOCK "StringFileInfo"
{ {
BLOCK "040904E4" BLOCK "040904E4"
{ {
VALUE "ProductName", "Bullet Continuous Collision Detection and Physics Library" VALUE "ProductName", "Bullet Continuous Collision Detection and Physics Library"
VALUE "ProductVersion", "1.1.2006.0319" VALUE "ProductVersion", "1.5.6"
VALUE "FileVersion", "1.1.2006.0319" VALUE "FileVersion", "1.5.6"
VALUE "LegalCopyright", "Copyright (c) 2005-2006 Erwin Coumans" VALUE "LegalCopyright", "Copyright (c) 2005-2006 Erwin Coumans"
VALUE "FileDescription", "ConcaveDemo" VALUE "FileDescription", "ConcaveDemo"
#ifdef CS_DEBUG #ifdef CS_DEBUG
VALUE "Comments", "Debug build" VALUE "Comments", "Debug build"
#else #else
VALUE "Comments", "Release build" VALUE "Comments", "Release build"
#endif #endif
VALUE "WWW", "http://www.continuousphysics.com/Bullet/" VALUE "WWW", "http://www.continuousphysics.com/Bullet/"
} }
} }
} }
1 ICON "../msvc/bullet_ico.ico"

View File

@@ -1,29 +1,30 @@
// This file is generated automatically. // This file is generated automatically.
1 VERSIONINFO 1 VERSIONINFO
FILEVERSION 1, 1, 2006, 0319 FILEVERSION 1, 5, 6, 0
PRODUCTVERSION 1, 1, 2006, 0319 PRODUCTVERSION 1, 5, 6, 0
#ifdef CS_DEBUG #ifdef CS_DEBUG
FILEFLAGS 0x1 FILEFLAGS 0x1
#else #else
FILEFLAGS 0x0 FILEFLAGS 0x0
#endif #endif
{ {
BLOCK "StringFileInfo" BLOCK "StringFileInfo"
{ {
BLOCK "040904E4" BLOCK "040904E4"
{ {
VALUE "ProductName", "Bullet Continuous Collision Detection and Physics Library" VALUE "ProductName", "Bullet Continuous Collision Detection and Physics Library"
VALUE "ProductVersion", "1.1.2006.0319" VALUE "ProductVersion", "1.5.6"
VALUE "FileVersion", "1.1.2006.0319" VALUE "FileVersion", "1.5.6"
VALUE "LegalCopyright", "Copyright (c) 2005-2006 Erwin Coumans" VALUE "LegalCopyright", "Copyright (c) 2005-2006 Erwin Coumans"
VALUE "FileDescription", "ConstraintDemo" VALUE "FileDescription", "ConstraintDemo"
#ifdef CS_DEBUG #ifdef CS_DEBUG
VALUE "Comments", "Debug build" VALUE "Comments", "Debug build"
#else #else
VALUE "Comments", "Release build" VALUE "Comments", "Release build"
#endif #endif
VALUE "WWW", "http://www.continuousphysics.com/Bullet/" VALUE "WWW", "http://www.continuousphysics.com/Bullet/"
} }
} }
} }
1 ICON "../msvc/bullet_ico.ico"

View File

@@ -1,29 +1,30 @@
// This file is generated automatically. // This file is generated automatically.
1 VERSIONINFO 1 VERSIONINFO
FILEVERSION 1, 1, 2006, 0319 FILEVERSION 1, 5, 6, 0
PRODUCTVERSION 1, 1, 2006, 0319 PRODUCTVERSION 1, 5, 6, 0
#ifdef CS_DEBUG #ifdef CS_DEBUG
FILEFLAGS 0x1 FILEFLAGS 0x1
#else #else
FILEFLAGS 0x0 FILEFLAGS 0x0
#endif #endif
{ {
BLOCK "StringFileInfo" BLOCK "StringFileInfo"
{ {
BLOCK "040904E4" BLOCK "040904E4"
{ {
VALUE "ProductName", "Bullet Continuous Collision Detection and Physics Library" VALUE "ProductName", "Bullet Continuous Collision Detection and Physics Library"
VALUE "ProductVersion", "1.1.2006.0319" VALUE "ProductVersion", "1.5.6"
VALUE "FileVersion", "1.1.2006.0319" VALUE "FileVersion", "1.5.6"
VALUE "LegalCopyright", "Copyright (c) 2005-2006 Erwin Coumans" VALUE "LegalCopyright", "Copyright (c) 2005-2006 Erwin Coumans"
VALUE "FileDescription", "ContinuousConvexCollision" VALUE "FileDescription", "ContinuousConvexCollision"
#ifdef CS_DEBUG #ifdef CS_DEBUG
VALUE "Comments", "Debug build" VALUE "Comments", "Debug build"
#else #else
VALUE "Comments", "Release build" VALUE "Comments", "Release build"
#endif #endif
VALUE "WWW", "http://www.continuousphysics.com/Bullet/" VALUE "WWW", "http://www.continuousphysics.com/Bullet/"
} }
} }
} }
1 ICON "../msvc/bullet_ico.ico"

View File

@@ -1,31 +1,30 @@
// This file is generated automatically. // This file is generated automatically.
1 VERSIONINFO 1 VERSIONINFO
FILEVERSION 1, 1, 2006, 0319 FILEVERSION 1, 5, 6, 0
PRODUCTVERSION 1, 1, 2006, 0319 PRODUCTVERSION 1, 5, 6, 0
#ifdef CS_DEBUG #ifdef CS_DEBUG
FILEFLAGS 0x1 FILEFLAGS 0x1
#else #else
FILEFLAGS 0x0 FILEFLAGS 0x0
#endif #endif
{ {
BLOCK "StringFileInfo" BLOCK "StringFileInfo"
{ {
BLOCK "040904E4" BLOCK "040904E4"
{ {
VALUE "ProductName", "Bullet Continuous Collision Detection and Physics Library" VALUE "ProductName", "Bullet Continuous Collision Detection and Physics Library"
VALUE "ProductVersion", "1.1.2006.0319" VALUE "ProductVersion", "1.5.6"
VALUE "FileVersion", "1.1.2006.0319" VALUE "FileVersion", "1.5.6"
VALUE "LegalCopyright", "Copyright (c) 2005-2006 Erwin Coumans" VALUE "LegalCopyright", "Copyright (c) 2005-2006 Erwin Coumans"
VALUE "FileDescription", "ConvexDecompositionDemo" VALUE "FileDescription", "ConvexDecompositionDemo"
#ifdef CS_DEBUG #ifdef CS_DEBUG
VALUE "Comments", "Debug build" VALUE "Comments", "Debug build"
#else #else
VALUE "Comments", "Release build" VALUE "Comments", "Release build"
#endif #endif
VALUE "WWW", "http://www.continuousphysics.com/Bullet/" VALUE "WWW", "http://www.continuousphysics.com/Bullet/"
} }
} }
} }
APPICON ICON "bullet_ico.ico" 1 ICON "../msvc/bullet_ico.ico"

View File

@@ -1,29 +1,30 @@
// This file is generated automatically. // This file is generated automatically.
1 VERSIONINFO 1 VERSIONINFO
FILEVERSION 1, 1, 2006, 0319 FILEVERSION 1, 5, 6, 0
PRODUCTVERSION 1, 1, 2006, 0319 PRODUCTVERSION 1, 5, 6, 0
#ifdef CS_DEBUG #ifdef CS_DEBUG
FILEFLAGS 0x1 FILEFLAGS 0x1
#else #else
FILEFLAGS 0x0 FILEFLAGS 0x0
#endif #endif
{ {
BLOCK "StringFileInfo" BLOCK "StringFileInfo"
{ {
BLOCK "040904E4" BLOCK "040904E4"
{ {
VALUE "ProductName", "Bullet Continuous Collision Detection and Physics Library" VALUE "ProductName", "Bullet Continuous Collision Detection and Physics Library"
VALUE "ProductVersion", "1.1.2006.0319" VALUE "ProductVersion", "1.5.6"
VALUE "FileVersion", "1.1.2006.0319" VALUE "FileVersion", "1.5.6"
VALUE "LegalCopyright", "Copyright (c) 2005-2006 Erwin Coumans" VALUE "LegalCopyright", "Copyright (c) 2005-2006 Erwin Coumans"
VALUE "FileDescription", "EPAPenDepthDemo" VALUE "FileDescription", "EPAPenDepthDemo"
#ifdef CS_DEBUG #ifdef CS_DEBUG
VALUE "Comments", "Debug build" VALUE "Comments", "Debug build"
#else #else
VALUE "Comments", "Release build" VALUE "Comments", "Release build"
#endif #endif
VALUE "WWW", "http://www.continuousphysics.com/Bullet/" VALUE "WWW", "http://www.continuousphysics.com/Bullet/"
} }
} }
} }
1 ICON "../msvc/bullet_ico.ico"

View File

@@ -1,29 +1,30 @@
// This file is generated automatically. // This file is generated automatically.
1 VERSIONINFO 1 VERSIONINFO
FILEVERSION 1, 1, 2006, 0319 FILEVERSION 1, 5, 6, 0
PRODUCTVERSION 1, 1, 2006, 0319 PRODUCTVERSION 1, 5, 6, 0
#ifdef CS_DEBUG #ifdef CS_DEBUG
FILEFLAGS 0x1 FILEFLAGS 0x1
#else #else
FILEFLAGS 0x0 FILEFLAGS 0x0
#endif #endif
{ {
BLOCK "StringFileInfo" BLOCK "StringFileInfo"
{ {
BLOCK "040904E4" BLOCK "040904E4"
{ {
VALUE "ProductName", "Bullet Continuous Collision Detection and Physics Library" VALUE "ProductName", "Bullet Continuous Collision Detection and Physics Library"
VALUE "ProductVersion", "1.1.2006.0319" VALUE "ProductVersion", "1.5.6"
VALUE "FileVersion", "1.1.2006.0319" VALUE "FileVersion", "1.5.6"
VALUE "LegalCopyright", "Copyright (c) 2005-2006 Erwin Coumans" VALUE "LegalCopyright", "Copyright (c) 2005-2006 Erwin Coumans"
VALUE "FileDescription", "GjkConvexCastDemo" VALUE "FileDescription", "GjkConvexCastDemo"
#ifdef CS_DEBUG #ifdef CS_DEBUG
VALUE "Comments", "Debug build" VALUE "Comments", "Debug build"
#else #else
VALUE "Comments", "Release build" VALUE "Comments", "Release build"
#endif #endif
VALUE "WWW", "http://www.continuousphysics.com/Bullet/" VALUE "WWW", "http://www.continuousphysics.com/Bullet/"
} }
} }
} }
1 ICON "../msvc/bullet_ico.ico"

View File

@@ -1,29 +1,30 @@
// This file is generated automatically. // This file is generated automatically.
1 VERSIONINFO 1 VERSIONINFO
FILEVERSION 1, 1, 2006, 0319 FILEVERSION 1, 5, 6, 0
PRODUCTVERSION 1, 1, 2006, 0319 PRODUCTVERSION 1, 5, 6, 0
#ifdef CS_DEBUG #ifdef CS_DEBUG
FILEFLAGS 0x1 FILEFLAGS 0x1
#else #else
FILEFLAGS 0x0 FILEFLAGS 0x0
#endif #endif
{ {
BLOCK "StringFileInfo" BLOCK "StringFileInfo"
{ {
BLOCK "040904E4" BLOCK "040904E4"
{ {
VALUE "ProductName", "Bullet Continuous Collision Detection and Physics Library" VALUE "ProductName", "Bullet Continuous Collision Detection and Physics Library"
VALUE "ProductVersion", "1.1.2006.0319" VALUE "ProductVersion", "1.5.6"
VALUE "FileVersion", "1.1.2006.0319" VALUE "FileVersion", "1.5.6"
VALUE "LegalCopyright", "Copyright (c) 2005-2006 Erwin Coumans" VALUE "LegalCopyright", "Copyright (c) 2005-2006 Erwin Coumans"
VALUE "FileDescription", "Raytracer" VALUE "FileDescription", "Raytracer"
#ifdef CS_DEBUG #ifdef CS_DEBUG
VALUE "Comments", "Debug build" VALUE "Comments", "Debug build"
#else #else
VALUE "Comments", "Release build" VALUE "Comments", "Release build"
#endif #endif
VALUE "WWW", "http://www.continuousphysics.com/Bullet/" VALUE "WWW", "http://www.continuousphysics.com/Bullet/"
} }
} }
} }
1 ICON "../msvc/bullet_ico.ico"

View File

@@ -1,29 +1,30 @@
// This file is generated automatically. // This file is generated automatically.
1 VERSIONINFO 1 VERSIONINFO
FILEVERSION 1, 1, 2006, 0319 FILEVERSION 1, 5, 6, 0
PRODUCTVERSION 1, 1, 2006, 0319 PRODUCTVERSION 1, 5, 6, 0
#ifdef CS_DEBUG #ifdef CS_DEBUG
FILEFLAGS 0x1 FILEFLAGS 0x1
#else #else
FILEFLAGS 0x0 FILEFLAGS 0x0
#endif #endif
{ {
BLOCK "StringFileInfo" BLOCK "StringFileInfo"
{ {
BLOCK "040904E4" BLOCK "040904E4"
{ {
VALUE "ProductName", "Bullet Continuous Collision Detection and Physics Library" VALUE "ProductName", "Bullet Continuous Collision Detection and Physics Library"
VALUE "ProductVersion", "1.1.2006.0319" VALUE "ProductVersion", "1.5.6"
VALUE "FileVersion", "1.1.2006.0319" VALUE "FileVersion", "1.5.6"
VALUE "LegalCopyright", "Copyright (c) 2005-2006 Erwin Coumans" VALUE "LegalCopyright", "Copyright (c) 2005-2006 Erwin Coumans"
VALUE "FileDescription", "SimplexDemo" VALUE "FileDescription", "SimplexDemo"
#ifdef CS_DEBUG #ifdef CS_DEBUG
VALUE "Comments", "Debug build" VALUE "Comments", "Debug build"
#else #else
VALUE "Comments", "Release build" VALUE "Comments", "Release build"
#endif #endif
VALUE "WWW", "http://www.continuousphysics.com/Bullet/" VALUE "WWW", "http://www.continuousphysics.com/Bullet/"
} }
} }
} }
1 ICON "../msvc/bullet_ico.ico"