  Quantum computing vendors are beginning to open up application programming
interfaces for direct pulse-level quantum control. With this, programmers can
begin to describe quantum kernels of execution via sequences of arbitrary pulse
shapes. This opens new avenues of research and development with regards to
smart quantum compilation routines that enable direct translation of
higher-level digital assembly representations to these native pulse
instructions. In this work, we present an extension to the XACC system-level
quantum-classical software framework that directly enables this compilation
lowering phase via user-specified quantum optimal control techniques. This
extension enables the translation of digital quantum circuit representations to
equivalent pulse sequences that are optimal with respect to the backend system
dynamics. Our work is modular and extensible, enabling third party optimal
control techniques and strategies in both C++ and Python. We demonstrate this
extension with familiar gradient-based methods like gradient ascent pulse
engineering (GRAPE), gradient optimization of analytic controls (GOAT), and
Krotov's method. Our work serves as a foundational component of future
quantum-classical compiler designs that lower high-level programmatic
representations to low-level machine instructions.
