compile in default INSTALL_DIR

This commit is contained in:
David Rose 2004-06-04 15:16:09 +00:00
parent b65a5d1886
commit da06477f27
6 changed files with 86 additions and 48 deletions

View File

@ -76,13 +76,19 @@
#endif #endif
// What is the default install directory for all trees in the Panda // What is the default install directory for all trees in the Panda
// suite? You may also override this for a particular tree by // suite? The default value for this variable is provided by
// defining a variable name like DTOOL_INSTALL or PANDA_INSTALL. This // ppremake; on Unix machines it is the value of --prefix passed in to
// variable will have no effect when you are using the cttools to // the configure script, and on Windows machines the default is
// control your attachment to the trees; in this case, the install // hardcoded to C:\Panda3d.
// directory for each tree will by default be the root of the tree
// itself (although this may be overridden). // You may also override this for a particular tree by defining a
#define INSTALL_DIR /usr/local/panda // variable name like DTOOL_INSTALL or PANDA_INSTALL. This variable
// will have no effect when you are using the cttools to control your
// attachment to the trees; in this case, the install directory for
// each tree will by default be the root of the tree itself (although
// this may be overridden).
// #define INSTALL_DIR /usr/local/panda
// If you intend to use Panda only as a Python module, you may find // If you intend to use Panda only as a Python module, you may find
// the following define useful (but you should put in the correct path // the following define useful (but you should put in the correct path

View File

@ -80,7 +80,16 @@
#set PPREMAKE_CONFIG $[unixfilename $[PPREMAKE_CONFIG]] #set PPREMAKE_CONFIG $[unixfilename $[PPREMAKE_CONFIG]]
#print Reading $[PPREMAKE_CONFIG] #print Reading $[PPREMAKE_CONFIG]
#include $[PPREMAKE_CONFIG] #include $[PPREMAKE_CONFIG]
#elif $[wildcard $[unixfilename $[INSTALL_DIR]]/Config.pp]
// If the PPREMAKE_CONFIG variable is not, but there exists a
// Config.pp in the compiled-in INSTALL_DIR, use that one by default.
#set PPREMAKE_CONFIG $[unixfilename $[INSTALL_DIR]]/Config.pp
#print Reading $[PPREMAKE_CONFIG]
#include $[PPREMAKE_CONFIG]
#else #else
// Otherwise, just carry on without it.
#print Environment variable PPREMAKE_CONFIG not set; using defaults. #print Environment variable PPREMAKE_CONFIG not set; using defaults.
#endif #endif

View File

@ -79,9 +79,12 @@
/* Name of package */ /* Name of package */
#define PACKAGE "ppremake" #define PACKAGE "ppremake"
/* The default value of INSTALL_DIR within ppremake. */
#define INSTALL_DIR C:\\Panda3d
/**************** UPDATE VERSION NUMBER HERE **************** /**************** UPDATE VERSION NUMBER HERE ****************
** Also be sure to change the version number ** ** Also be sure to change the version number **
** at the beginning of configure.in. ** ** at the beginning of configure.in. **
**************** ****************/ **************** ****************/
#define VERSION "1.13" #define VERSION "1.14"
/**************** UPDATE VERSION NUMBER HERE ****************/ /**************** UPDATE VERSION NUMBER HERE ****************/

View File

@ -5,7 +5,7 @@ dnl **************** UPDATE VERSION NUMBER HERE ****************
dnl ** Also be sure to change the version number ** dnl ** Also be sure to change the version number **
dnl ** at the end of config_msvc.h. ** dnl ** at the end of config_msvc.h. **
dnl **************** **************** dnl **************** ****************
AM_INIT_AUTOMAKE(ppremake, 1.13) AM_INIT_AUTOMAKE(ppremake, 1.14)
dnl **************** UPDATE VERSION NUMBER HERE **************** dnl **************** UPDATE VERSION NUMBER HERE ****************
AM_CONFIG_HEADER(config.h) AM_CONFIG_HEADER(config.h)
@ -20,6 +20,7 @@ AC_CANONICAL_HOST
if test "${CXXFLAGS+set}" != set -a "${CFLAGS+set}" = set; then if test "${CXXFLAGS+set}" != set -a "${CFLAGS+set}" = set; then
CXXFLAGS=$CFLAGS CXXFLAGS=$CFLAGS
fi fi
CPPFLAGS="${CPPFLAGS} -DINSTALL_DIR="'$(prefix)'
# Save these variables for later, so we can easily append to them or # Save these variables for later, so we can easily append to them or
# change them. # change them.
@ -84,5 +85,4 @@ AC_DEFINE_UNQUOTED(PLATFORM, "$PLATFORM",
[The platform ppremake is compiled for. This primarily controls the [The platform ppremake is compiled for. This primarily controls the
initial setting of the PLATFORM ppremake variable.]) initial setting of the PLATFORM ppremake variable.])
AC_OUTPUT(Makefile) AC_OUTPUT(Makefile)

View File

@ -1159,7 +1159,42 @@ find_on_searchpath(const DSearchPath &searchpath) {
//////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////
bool Filename:: bool Filename::
scan_directory(vector_string &contents) const { scan_directory(vector_string &contents) const {
#if defined(HAVE_GLOB_H) #if defined(WIN32_VC)
// Use FindFirstFile()/FindNextFile() to walk through the list of
// files in a directory.
size_t orig_size = contents.size();
string match;
if (empty()) {
match = "*.*";
} else {
match = to_os_specific() + "\\*.*";
}
WIN32_FIND_DATA find_data;
HANDLE handle = FindFirstFile(match.c_str(), &find_data);
if (handle == INVALID_HANDLE_VALUE) {
if (GetLastError() == ERROR_NO_MORE_FILES) {
// No matching files is not an error.
return true;
}
return false;
}
do {
string filename = find_data.cFileName;
if (filename != "." && filename != "..") {
contents.push_back(filename);
}
} while (FindNextFile(handle, &find_data));
bool scan_ok = (GetLastError() == ERROR_NO_MORE_FILES);
FindClose(handle);
sort(contents.begin() + orig_size, contents.end());
return scan_ok;
#elif defined(HAVE_GLOB_H)
// In some cases, particularly with NFS, it seems that opendir() // In some cases, particularly with NFS, it seems that opendir()
// .. readdir() fails to properly read the entire directory ("Value // .. readdir() fails to properly read the entire directory ("Value
// too large for defined data type"), but glob() succeeds. // too large for defined data type"), but glob() succeeds.
@ -1175,10 +1210,12 @@ scan_directory(vector_string &contents) const {
glob_t globbuf; glob_t globbuf;
int r = glob(dirname.c_str(), GLOB_ERR, NULL, &globbuf); int r = glob(dirname.c_str(), GLOB_ERR, NULL, &globbuf);
#ifdef GLOB_NOMATCH
if (r != 0 && r != GLOB_NOMATCH) { if (r != 0 && r != GLOB_NOMATCH) {
perror(dirname.c_str()); perror(dirname.c_str());
return false; return false;
} }
#endif
size_t offset = dirname.size() - 1; size_t offset = dirname.size() - 1;
for (int i = 0; globbuf.gl_pathv[i] != NULL; i++) { for (int i = 0; globbuf.gl_pathv[i] != NULL; i++) {
@ -1222,41 +1259,6 @@ scan_directory(vector_string &contents) const {
sort(contents.begin() + orig_size, contents.end()); sort(contents.begin() + orig_size, contents.end());
return true; return true;
#elif defined(WIN32_VC)
// Use FindFirstFile()/FindNextFile() to walk through the list of
// files in a directory.
size_t orig_size = contents.size();
string match;
if (empty()) {
match = "*.*";
} else {
match = to_os_specific() + "\\*.*";
}
WIN32_FIND_DATA find_data;
HANDLE handle = FindFirstFile(match.c_str(), &find_data);
if (handle == INVALID_HANDLE_VALUE) {
if (GetLastError() == ERROR_NO_MORE_FILES) {
// No matching files is not an error.
return true;
}
return false;
}
do {
string filename = find_data.cFileName;
if (filename != "." && filename != "..") {
contents.push_back(filename);
}
} while (FindNextFile(handle, &find_data));
bool scan_ok = (GetLastError() == ERROR_NO_MORE_FILES);
FindClose(handle);
sort(contents.begin() + orig_size, contents.end());
return scan_ok;
#else #else
// Don't know how to scan directories! // Don't know how to scan directories!
return false; return false;

View File

@ -28,6 +28,8 @@
#include <sys/stat.h> #include <sys/stat.h>
#include <assert.h> #include <assert.h>
#define STRINGIZE(x) #x
bool unix_platform = false; bool unix_platform = false;
bool windows_platform = false; bool windows_platform = false;
bool dry_run = false; bool dry_run = false;
@ -71,6 +73,7 @@ usage() {
" -h Display this page.\n" " -h Display this page.\n"
" -V Report the version of ppremake, and exit.\n" " -V Report the version of ppremake, and exit.\n"
" -I Report the compiled-in default for INSTALL_DIR, and exit.\n"
" -v Turn on verbose output (may help in debugging .pp files).\n" " -v Turn on verbose output (may help in debugging .pp files).\n"
" -vv Be very verbose (if you're getting desperate).\n" " -vv Be very verbose (if you're getting desperate).\n"
" -P Report the current platform name, and exit.\n\n" " -P Report the current platform name, and exit.\n\n"
@ -103,6 +106,12 @@ report_version() {
<< ".\n"; << ".\n";
} }
static void
report_install_dir() {
cerr << "Default value for INSTALL_DIR is "
<< STRINGIZE(INSTALL_DIR) << ".\n";
}
static void static void
report_platform() { report_platform() {
cerr << "ppremake built for default platform " << PLATFORM << ".\n"; cerr << "ppremake built for default platform " << PLATFORM << ".\n";
@ -223,7 +232,7 @@ main(int argc, char *argv[]) {
string progname = argv[0]; string progname = argv[0];
extern char *optarg; extern char *optarg;
extern int optind; extern int optind;
const char *optstr = "hVvPD:drnNp:c:s:"; const char *optstr = "hVIvPD:drnNp:c:s:";
bool any_d = false; bool any_d = false;
bool dependencies_stale = false; bool dependencies_stale = false;
@ -253,6 +262,11 @@ main(int argc, char *argv[]) {
exit(0); exit(0);
break; break;
case 'I':
report_install_dir();
exit(0);
break;
case 'v': case 'v':
++verbose; ++verbose;
break; break;
@ -339,6 +353,7 @@ main(int argc, char *argv[]) {
global_scope.define_variable("PLATFORM", platform); global_scope.define_variable("PLATFORM", platform);
global_scope.define_variable("PACKAGE_FILENAME", PACKAGE_FILENAME); global_scope.define_variable("PACKAGE_FILENAME", PACKAGE_FILENAME);
global_scope.define_variable("SOURCE_FILENAME", SOURCE_FILENAME); global_scope.define_variable("SOURCE_FILENAME", SOURCE_FILENAME);
global_scope.define_variable("INSTALL_DIR", STRINGIZE(INSTALL_DIR));
if (got_ppremake_config) { if (got_ppremake_config) {
// If this came in on the command line, define a variable as such. // If this came in on the command line, define a variable as such.
@ -349,8 +364,11 @@ main(int argc, char *argv[]) {
// Also, it's convenient to have a way to represent the literal tab // Also, it's convenient to have a way to represent the literal tab
// character, without actually putting a literal tab character in // character, without actually putting a literal tab character in
// the source file. // the source file. Similarly with some other special characters.
global_scope.define_variable("TAB", "\t"); global_scope.define_variable("TAB", "\t");
global_scope.define_variable("SPACE", " ");
global_scope.define_variable("DOLLAR", "$");
global_scope.define_variable("HASH", "#");
PPMain ppmain(&global_scope); PPMain ppmain(&global_scope);
if (!ppmain.read_source(".")) { if (!ppmain.read_source(".")) {