mirror of
https://github.com/panda3d/panda3d.git
synced 2025-10-04 10:54:24 -04:00
forgot to add this long ago
This commit is contained in:
parent
209cf4b59b
commit
35dac69d04
66
panda/src/doc/howto.use_ppremake.txt
Normal file
66
panda/src/doc/howto.use_ppremake.txt
Normal file
@ -0,0 +1,66 @@
|
||||
This document tries to describe how the various Sources.pp files
|
||||
should be set up within the Panda tree (or a related tree like Direct
|
||||
or Pandatool), to add new directories, for instance, or modify the
|
||||
build rules for an existing directory. For a general treatise on the
|
||||
full syntax and semantics of the ppremake scripting language, see the
|
||||
ppremake-*.txt files in this directory.
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
TARGET specifies the name of the output file that will be generated,
|
||||
not a directory name. The target may be a dll, lib, or executable
|
||||
depending on the type of target (lib_target, static_lib_target, or
|
||||
bin_target). For instance, in vrpn/Sources.pp, the target name is
|
||||
pvrpn; this means that "make" within the directory will in principle
|
||||
generate a file called libpvrpn.dll.
|
||||
|
||||
The TARGET name is particularly confusing for people who only see the
|
||||
Windows build, however, because on Windows we don't actually generate
|
||||
a libpvrpn.dll file, or for that matter any other dll file that's
|
||||
named in the COMPONENT_LIBS of some metalib, like
|
||||
panda/metalibs/panda/Sources.pp. This is because of our limitation
|
||||
with STL and DLL's (and also because the per-DLL overhead is fairly
|
||||
high in Windows).
|
||||
|
||||
The build design is that each subdirectory under panda/src should
|
||||
generate its own shared library, a .dll file (or .so file on Unix).
|
||||
Then the user would reference just the particular dll's that his
|
||||
client application requires, e.g. libpgraph.dll to use the scene
|
||||
graph, libdisplay.dll to actually do rendering, and libpvrpn.dll to
|
||||
interface to VRPN. On Windows, however, we can't actually do that for
|
||||
various reasons, so instead we provide one big metalib called
|
||||
libpanda.dll which contains all of those pieces, and clients must link
|
||||
with all of libpanda.dll even if they just want to use a subset of it.
|
||||
|
||||
The fact that we don't actually generate a physical dll file for each
|
||||
subdirectory on Windows is unimportant to the rest of the build
|
||||
scripts, which act as if we do. For instance, the COMPONENT_LIBS line
|
||||
in the panda/Sources.pp file names "pvrpn", as if there were a
|
||||
libpvrpn.dll; this means that all of the files that are part of the
|
||||
"pvrpn" target are added to libpanda.dll. (On Unix platforms, it
|
||||
means we add libpvrpn.so to the list of libraries that are referenced
|
||||
by libpanda.so.)
|
||||
|
||||
The original intention of SOURCES is to list all of the source files
|
||||
within this directory that go into the dll. This generally includes
|
||||
.h files, .I files, and .cxx files. However, at some point one of our
|
||||
programmers introduced COMBINED_SOURCES and INCLUDED_SOURCES, and he
|
||||
removed those source files from the SOURCES list, which I think
|
||||
confuses the whole thing; and I intend to clean this up at some point.
|
||||
In the vrpn/Sources.pp directory, however, we only have the SOURCES
|
||||
list, nice and clean. I don't know what you mean about hierarchy;
|
||||
these files are all in the same directory, so there's just a linear
|
||||
list of filenames. By convention, these should be kept in
|
||||
alphabetical order, although it doesn't really matter that much.
|
||||
|
||||
INSTALL_HEADERS names the header files that should be copied into the
|
||||
public include directory for third-party packages (or other Panda
|
||||
trees, like Direct) to reference. This makes a C++ public interface.
|
||||
|
||||
IGATESCAN names the source files that are to be scanned by
|
||||
interrogate. This makes a Python public interface. Most of the time,
|
||||
we just say "IGATESCAN all" which means to scan all of the source
|
||||
files in the directory.
|
||||
|
Loading…
x
Reference in New Issue
Block a user