Commit Graph

131 Commits

Author SHA1 Message Date
Sam Edwards 6cb62d1d18 CMake: When zlib isn't available, run_pzip() should copy at build-time
This prevents copying to configurations that the user isn't going
to build, and also plays nice with multi-configuration generators
where the configuration isn't known until build-time.
2019-08-22 14:58:43 -06:00
Donny Lawrence 10abe6e216 CMake: Remove usages of string(APPEND ...) 2019-06-27 17:38:18 -06:00
Donny Lawrence 89bc83c48f CMake: Suppress $(EFFECTIVE_PLATFORM_NAME). 2019-06-27 17:38:18 -06:00
Donny Lawrence f0b4d7637b CMake: Separate composite files by extension. 2019-06-27 17:38:18 -06:00
Donny Lawrence 3eb1895811 CMake: Use a generator expression to mitigate make's warning spam on the Xcode generator. 2019-06-27 17:38:18 -06:00
Donny Lawrence cb0def4eb3 CMake: Defer pzip's directory creation to build-time. 2019-06-27 17:38:18 -06:00
Sam Edwards 24ba0d0e72 CMake: Fix Interrogate macro not working on CMake 3.0.2 2019-06-25 03:34:51 -06:00
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 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 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 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 d961514892 CMake: Use string/list(APPEND foo ...) instead of set(foo ${foo} ...) 2019-01-19 17:01:36 -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 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 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 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 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 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