Commit Graph

246 Commits

Author SHA1 Message Date
Sam Edwards d3ef7bf12d CMake: Avoid using continue()
This is, sadly, not added until CMake 3.4.

This commit avoids continue() by restructuring the loops so
that the conditions previously being used for continue() are
no longer needed. The alternative would've been to encase the
loop bodies massive ifs, but I find that to be a poor choice
for readability.
2019-06-25 03:34:51 -06:00
Sam Edwards 1a237670e3 CMake: Make Interrogate macro ensure output directories exist
This was causing problems on the Xcode generator under macOS,
which wasn't automatically creating the output directories
for us.
2019-06-05 02:27:48 -06:00
Sam Edwards 81f0fb78f2 CMake: Fix Interrogate macro not working on Windows
This was broken by 2d5bdb3515,
which wrote -D flags as -D'symbol' -- this choked Windows,
so this commit turns it off in that case.

It's a shame there's no generator expression to escape quotes,
otherwise this hack wouldn't even be needed.
2019-06-03 22:02:54 -06:00
Sam Edwards 2d5bdb3515 CMake: Fix Interrogate macro's -D flag generator
This wraps everything in 'single-quotes' so that defines that
contain spaces and/or double-quotes work properly.
2019-06-02 01:37:48 -06:00
Sam Edwards 26e60fe106 CMake: Fix the ConcatenateToCXX script leaving off a null byte
This also adds a _size symbol. Who knows, maybe something will
find that useful.
2019-06-02 01:37:43 -06:00
Sam Edwards 059c78bade CMake: Restructure multi-configuration binary directory layout
This changes the structure to use paths like `build/Release/lib`
instead of `build/lib/Release`, so that the `build/Release` directory
more closely mimics the structure of `build` when in single-configuration
mode.
2019-05-01 23:44:47 -06:00
Sam Edwards 49865c103a CMake: Modify install_python_package() so it keeps the build-dir copy up-to-date too 2019-05-01 23:44:47 -06:00
Sam Edwards f744951d25 CMake: Make Interrogate invocation friendly to multi-config generators 2019-04-27 22:45:51 -06:00
Sam Edwards cfa4878955 CMake: Use the same host_ prefix for pzip as we do for interrogate
This is for better cross-compilation friendliness, so the pzip
binary used during the build doesn't have to be the same as the
pzip binary produced during the build.
2019-04-27 22:45:51 -06:00
Sam Edwards 873c6b48d6 CMake: Generate interrogate_preamble_python_native.cxx at build time
This also makes sure the file is only rebuilt if the inputs
change, saving on unnecessary rebuilds.
2019-04-16 19:44:03 -06:00
Sam Edwards b3f5c38ef3 CMake: Remove references to "panda3d" from Interrogate 2019-04-14 23:10:49 -06:00
Sam Edwards 6097d34ead CMake: Neatly format everything for readability and consistency 2019-04-14 22:37:18 -06:00
Sam Edwards ed67f98a05 CMake: Update some of the cmake/* docs 2019-04-14 20:03:18 -06:00
Sam Edwards fbde7c0b62 CMake: Fix invocation of flex
This removes the space between '-o' and the output filename,
which apparently some builds of flex (e.g. on Windows) dislike.
2019-03-18 04:18:20 -06:00
Sam Edwards b4a532f1d0 CMake: Add support for building against FCollada 2019-03-18 01:56:38 -06:00
Sam Edwards 3a9353c0ca CMake: Build 'contrib' 2019-03-18 01:56:38 -06:00
Sam Edwards 7097f5b0e1 CMake: Move "framework" to its own component
It can depend on graphics backends, so it can't go in Core.
2019-02-23 02:54:01 -07:00
Sam Edwards d961514892 CMake: Use string/list(APPEND foo ...) instead of set(foo ${foo} ...) 2019-01-19 17:01:36 -07:00
Sam Edwards 2298aba578 CMake: Correct order for {opus,vorbis}file libs 2019-01-13 14:24:35 -07:00
Sam Edwards 052004d06b CMake: Detect Opus 2019-01-13 12:04:48 -07:00
Sam Edwards 8a2375a5f1 CMake: Detect Ogg+Vorbis 2019-01-13 11:58:09 -07:00
Sam Edwards 615a1d205d CMake: Modify Find*.cmake to trust find_*()'s caching 2019-01-13 10:45:03 -07:00
Sam Edwards 986377b131 CMake: Make CompositeSources skip sources with SKIP_COMPOSITING property 2019-01-12 15:00:03 -07:00
Sam Edwards 8d94790d3a CMake: Exclude .c files from compositing 2019-01-12 15:00:03 -07:00
Sam Edwards edb9cb31a5 CMake: Exclude .c files from Interrogate 2019-01-12 15:00:01 -07:00
Sam Edwards 654abdc5eb CMake: Detect when to set OPENCV_VER_23/OPENCV_VER_3 2019-01-06 15:37:14 -07:00
Sam Edwards 30dd14c991 CMake: Fix "whitelisted property" error from CMake <3.8 2019-01-03 11:40:57 -07:00
Sam Edwards f01303a0b3 CMake: Fix exported packages on Windows 2019-01-03 06:01:57 -07:00
Sam Edwards 18d5c983de CMake: Make Python static library names use '.'
This is to be consistent with makepanda as of cedd4172c4.
2019-01-02 06:08:15 -07:00
Sam Edwards bddd7c1b4b CMake: Generate/install exported target sets 2018-12-27 17:39:22 -07:00
Sam Edwards b20c6e801c CMake: Add an export_packages() function to export PKG::*
This is needed to support install(EXPORT)
2018-12-27 17:20:25 -07:00
Sam Edwards 8b6a2cfd09 CMake: Update add_python_module to support COMPONENT 2018-12-06 17:48:03 -07:00
Sam Edwards 9fffb5605a CMake: Update Python install macros to accept COMPONENT and EXPORT 2018-12-06 17:47:19 -07:00
Sam Edwards b3e257746e CMake: Oops, fix where `panda3d` Python package goes 2018-12-05 19:51:04 -07:00
Sam Edwards 58dd889165 CMake: Simplify Interrogate.cmake's add_python_module() keyword handling 2018-12-05 18:56:29 -07:00
Sam Edwards e49306fec9 CMake: Wrap target names in $<TARGET_NAME:...>
This helps CMake's export generator understand the expression.
2018-11-28 16:13:05 -07:00
Sam Edwards 9be6b6b314 CMake: Work around bug in CMake 3.0.2
CMake versions that old insist that source files
in the binary directory be specified absolutely
or do not contain `..`, so we do the former.
2018-11-28 14:05:32 -07:00
Sam Edwards f59c6bb2bf CMake: Make FindODE link against libccd when present
This fixes building against the macOS/Homebrew version of ODE.
2018-11-15 02:24:28 -07:00
Sam Edwards 7f8d7366dc CMake: Update for upstream Interrogate changes
- "igateruntime" is no longer a thing
- interrogate_module embeds a preamble; we have to provide it
- WindowProperties now has an extension
2018-11-12 19:16:28 -07:00
Sam Edwards 1ae736f881 CMake: Detect and build support for Assimp 2018-11-12 15:49:08 -07:00
Sam Edwards 2b1554a44c CMake: Rename "config_package" function to "package_status"
The latter name is more consistent with what it does:
indicates the status/purpose/options of the package to
the user.
2018-11-08 21:15:00 -07:00
Sam Edwards 3050203e24 CMake: Update add_metalib() to support exports
This allows exporting (a stub function that forwards to) a
function that returns a value - it's particularly useful in
the graphics plugins for the "get_pipe_type_foo()" functions.

This also frees up CMake from needing to use any of the source
files in the metalibs/*/ directories.
2018-11-08 20:15:08 -07:00
Sam Edwards d43767c617 CMake: Find OpenEXR, support it in pnmimagetypes 2018-11-07 19:56:01 -07:00
Sam Edwards 16be0770e7 CMake: Fix libCgGL linkage in FindCg.cmake
This involves both fixing the capitalization of "CgGL" and only adding
libraries to CG_LIBRARIES when they're found.
2018-11-06 02:07:08 -07:00
Sam Edwards 9222bc6d31 CMake: Detect OpenCV/ARToolKit, build p3vision
For now, p3vision is only built if either OpenCV or
ARToolKit is available. It does contain some generic
webcam access code, so it might be worth building it
when that's available.
2018-11-03 22:51:14 -06:00
Sam Edwards 3a5c158b5a CMake: Fix FindVRPN so it also finds VRPN's quat library 2018-11-03 22:51:12 -06:00
Sam Edwards 15a78c55bc CMake: Detect and use HarfBuzz when available 2018-11-02 23:37:26 -06:00
Sam Edwards f701e36aa5 CMake: Detect VRPN and build support for it when present
I inadvertently rewrote FindVRPN.cmake doing this - I didn't
think to check if it already existed before overwriting.
Oh well, the new version is a bit simpler.
2018-11-02 21:08:00 -06:00
Sam Edwards 7de4b39f6e CMake: Put generated Interrogate files under the right build directory
That is, they should appear under the build directory of the
component library they're Interrogating; this is just an
organizational change to keep the cmake/panda/ directory from
accumulating Interrogate clutter.
2018-11-02 01:20:03 -06:00
Sam Edwards 5b973ed837 CMake: Add DirectX 9 support 2018-11-01 22:33:01 -06:00
Sam Edwards 7c42b75ac8 CMake: Update FindCg to discover cgD3D9
This also means renaming "CGDX9" to "CGD3D9" for consistency
with what Nvidia calls it.
2018-11-01 16:31:57 -06:00
Sam Edwards f07b713e8d CMake: Change FindOpenGLES* modules so they don't even try on Apple 2018-10-27 21:11:14 -06:00
Sam Edwards 11a75eab99 CMake: Build OpenGL ES (1&2) display modules
Also reorganizes Package.cmake a little, getting more of the
package discovery logic under the PackageConfig.cmake system.
2018-10-22 01:58:24 -06:00
Sam Edwards 56b211f902 CMake: Fix FindODE's include path finding
It needs to look for the path containing the "ode" directory,
not the "ode" directory itself.
2018-10-19 12:56:11 -06:00
Sam Edwards cefc000235 CMake: Remove PATHS from FindEigen3
Why do we need these? CMake checks the "obvious" paths for us.
2018-10-18 19:27:47 -06:00
Sam Edwards 8dd46eb736 CMake: Redo ODE find module
This defines an ODE::ODE target; it also automatically selects
the correct `dIDESINGLE`/`dIDEDOUBLE` compile-time definition.
2018-10-18 19:27:47 -06:00
Sam Edwards dd5c411e88 CMake: When building metalib components, properly flag SYSTEM include dirs 2018-10-18 13:42:12 -06:00
Sam Edwards b3f1b7d40b Merge branch 'cmake' of https://github.com/treamology/panda3d into cmake
# Conflicts:
#	.travis.yml
#	direct/src/showbase/CMakeLists.txt
#	dtool/dtool_config.h.in
#	dtool/src/prc/CMakeLists.txt
#	panda/src/cocoadisplay/CMakeLists.txt
#	panda/src/express/CMakeLists.txt
#	panda/src/osxdisplay/CMakeLists.txt
2018-10-14 02:26:56 -06:00
Sam Edwards 1e38910d9d CMake: Fix BuildMetalib's BUILDING_ symbol propagation 2018-10-13 15:07:09 -06:00
Sam Edwards 8610b2fceb CMake: Simplify Interrogate's compiler definition discovery
This uses generator expressions to make sure the definitions are
discovered transitively. The output _igate.cxx file also has its
definitions applied to it via a source file property rather than
via add_definitions(), which prevents them from leaking to other
targets.
2018-10-13 15:06:57 -06:00
Sam Edwards 32a6552af4 CMake: Make BuildMetalib's link override more like CMake 3.12 2018-10-11 17:38:30 -06:00
Sam Edwards 47b5a50688 CMake: Don't always override target_link_libraries()
Previously, we would override target_link_libraries() to support
object "linking" since this wasn't supported in versions of CMake
before 3.12. Now that 3.12 is released, we only do it for versions
of CMake before that release.
2018-10-10 20:16:33 -06:00
Sam Edwards a0d9a931e0 CMake: Simplify target_link_libraries "object" linking shim
This uses generator expressions instead, so that it's no longer
dependent on all linked component libraries existing first.
2018-10-10 20:16:32 -06:00
Sam Edwards e89621b88d CMake: "Flatten" metalibs more
By "flatten" I mean that component libraries aren't referenced by
genex anymore; instead, their include directories and libraries
are copied out of their interfaces and into the interface of
the metalib.

This prepares for exporting our targets, by making sure that the
component libraries don't have to be installed for CMake to be
able to export metalibs.
2018-10-10 20:16:32 -06:00
Sam Edwards b8fa692e2f CMake: Fix BuildMetalib on CMake 3.0.2
CMake now tests out correctly on 3.0.2 again.
2018-10-09 02:01:35 -06:00
Sam Edwards f696bfbfe2 CMake: Clean up run_pzip
This should get rid of stray directories in the build
directory on Windows.
2018-10-09 02:01:35 -06:00
Sam Edwards 9b4b83c0e1 CMake: Properly propagate INTERFACE_COMPILE_DEFINITIONS to component libs 2018-10-07 00:51:26 -06:00
Sam Edwards 0997c6b19c CMake: Don't depend on Python interpreter
This allows building against the Python libraries even when the
Python interpreter/executable is missing. The correct extensions
for the binary modules will be guessed, the tests will fail,
and the bytecode for any pure-Python modules will not be
precompiled.
2018-10-07 00:51:26 -06:00
Sam Edwards 53920e7aee CMake: Move __init__.py generation to Python.cmake
This also allows us to generate a suitable __init__.py for fixing
up PATH and/or __path__ on platforms that need it to properly
import Python extension modules.
2018-09-28 21:24:26 -06:00
Sam Edwards 73e273e782 CMake: Remove hardcoded 'panda3d.*' assumptions from Python.cmake 2018-09-28 17:28:17 -06:00
Sam Edwards 2e2a8eae98 CMake: Byte-compile all .py files when building Panda
This also involves the creation a new include: Python.cmake

This file will contain utility functions for building Python
modules and installing Python packages.
2018-09-28 17:15:56 -06:00
Sam Edwards bd187643f3 CMake: Look for packages by CONFIG first
This requires a macro to override find_package,
as the default behavior in CMake is to fall back
from MODULE onto CONFIG.

Note that Bullet is given a specific override
not to look for a CONFIG, since Bullet tends to
use weird paths in its CONFIG script.
2018-09-21 19:22:59 -06:00
Sam Edwards 968ca123d4 CMake: Use packages by imported target where available
This is preferable because imported targets generally include
all of the relevant information specific to the particular
installation of each package, and without needing to hunt down
a bunch of variables to do it.

To do this, package_option() (which is starting to grow in scope
a little beyond just providing the package option, come to think
of it) is given a new IMPORTED_AS option, which tells the package
configuration system to look for one or more imported targets and
link against them instead.
2018-09-21 16:24:48 -06:00
Sam Edwards 1520d712d4 CMake: Remove target_use_packages
Instead, let's use a PKG::PKGNAME interface library, which simplifies
the linking and also allows us to use imported libraries from
find_package in the future.
2018-09-21 10:17:05 -06:00
Sam Edwards cf26888672 CMake: Stop using include_directories()
Setting this directly on the target is cleaner,
and in most cases, the INTERFACE_INCLUDE_DIRECTORIES
mechanism takes care of it for us.
2018-09-18 18:17:43 -06:00
Sam Edwards 193cf71233 CMake: Pass Python extension files to Interrogate with relative paths
This makes sure absolute paths don't show up in #include,
since Interrogate doesn't (currently) use the proper representation
for this. (See #386)
2018-09-07 00:34:02 -06:00
Sam Edwards 9f55b9e77e CMake: Don't Interrogate with deprecated -longlong on Windows 2018-09-07 00:33:52 -06:00
Sam Edwards e501d20927 CMake: Don't compile Interrogate runtime code into interrogatedb
This should obviate the need for pystub as well.

Note that it's currently a little bit hacky; the source will
have to be moved to make the CMake dependencies work better.
2018-09-06 23:57:53 -06:00
Sam Edwards 0c889db928 CMake: Don't conflict with find_package internal variables 2018-09-05 19:19:36 -06:00
Sam Edwards 1970751c8a CMake: Do something sensible with static Python modules
These *do* make sense and there are Panda3D users that use
this kind of configuration, so we should try to be accommodating.
2018-09-03 21:04:40 -06:00
Sam Edwards 77018c5383 CMake: Name Python targets more distinctively
Python targets are now prefixed with "panda3d." in
e.g. "panda3d.core"
2018-09-03 21:01:54 -06:00
Sam Edwards 76378c8990 CMake: Ask Python for preferred binary extension suffix 2018-08-19 23:10:20 -06:00
Sam Edwards 29bc62bf9b CMake: Alias Interrogate
This allows us to have a different name for Interrogate
on the host vs. Interrogate on the target platform, which
facilitates cross-compiling.
2018-06-13 21:07:56 -06:00
Sam Edwards 21a30a8429 CMake: Make INTERROGATE_PYTHON_INTERFACE option dependent
This also makes it sufficient for turning on Interrogate.
2018-06-13 21:07:56 -06:00
Sam Edwards 2e98b68e3b CMake: Make directbase/pandabase INTERFACE libraries
They export no code, and are really only used to contain several
preprocessor macros relevant to their respective packages. On
Windows, they're a problem: MSVC doesn't generate a .lib when
compiling a .dll that exports nothing.
2018-06-10 02:29:49 -06:00
Sam Edwards a088e6aba5 CMake: Autogenerate metalib init files 2018-06-10 02:29:35 -06:00
Donny Lawrence cddd553d1e Add COMPOSITE_SOURCE_EXCLUSIONS option
It specifies a list of targets to exclude during the compositing stage.
2018-06-06 09:16:26 -05:00
Sam Edwards f54b4b61dd CMake: Don't use pzip when not built 2018-06-01 02:56:43 -06:00
Sam Edwards 4c4c17cac2 CMake: Flag composite files as generated
No idea why this was commented out.
2018-05-26 18:01:05 -06:00
Sam Edwards 538c615abe CMake: Light tidying in Interrogate.cmake 2018-05-14 19:07:27 -06:00
Sam Edwards 8e230495a1 CMake: Consolidate "module or static" library logic 2018-05-14 19:07:27 -06:00
Sam Edwards 5b3ca1bb05 CMake: Fix up the "transitive library" metalib logic
This fixes some cases where transitive libraries, as nominated
by a component library, were not being absorbed into a metalib,
due to the library actually not being defined yet. This makes the
logic a little more robust, first by explicitly requiring a metalib
definition to come after all component library definitions, and second
to assume a library "linked" to a component library is a non-component
if it isn't defined (yet).
2018-04-20 00:20:14 -06:00
Sam Edwards 218d0e8ade CMake: Build dtool metalibs as metalibs 2018-04-19 00:07:08 -06:00
Sam Edwards 5a31844e11 CMake: Slightly tweak component-library -D inheritance rules
This only inherits -D flags from another component library. The private
-D flags should not be inherited from regular libraries.
2018-04-19 00:07:08 -06:00
Sam Edwards 4cec331722 CMake: Add support for building metalibs as metalibs 2018-04-18 14:42:56 -06:00
Sam Edwards 7590c37f0c CMake: Have Interrogate respect INTERFACE_COMPILE_DEFINITIONS
This commit isn't technically quite right, since Interrogate should
use the definitions from COMPILE_DEFINITIONS but the module should
be built with INTERFACE_COMPILE_DEFINITIONS, but whatever. That can
be changed if it becomes a nuisance later on.

The rationale here is it's consistent with how CMake treats these
two properties.
2018-04-18 12:23:18 -06:00
Sam Edwards c0b8b3c542 CMake: Interrogate bugfix for LINK and IMPORT keywords together 2018-04-15 00:35:49 -06:00
Sam Edwards 1401a1cc48 CMake: Don't use (SO)VERSION for modules 2018-04-05 16:11:59 -06:00
Sam Edwards cfd603bb8d CMake: Build Python binary modules as MODULE, never SHARED 2018-04-05 16:11:59 -06:00
Sam Edwards 411e0ee93f CMake: Use interrogate's -import instead of linking directly 2018-04-05 16:11:59 -06:00