Blame cmake/CheckIfUnderscorePrefixedBesselFunctionsExist.cmake

Packit ea1746
# Ceres Solver - A fast non-linear least squares minimizer
Packit ea1746
# Copyright 2017 Google Inc. All rights reserved.
Packit ea1746
# http://ceres-solver.org/
Packit ea1746
#
Packit ea1746
# Redistribution and use in source and binary forms, with or without
Packit ea1746
# modification, are permitted provided that the following conditions are met:
Packit ea1746
#
Packit ea1746
# * Redistributions of source code must retain the above copyright notice,
Packit ea1746
#   this list of conditions and the following disclaimer.
Packit ea1746
# * Redistributions in binary form must reproduce the above copyright notice,
Packit ea1746
#   this list of conditions and the following disclaimer in the documentation
Packit ea1746
#   and/or other materials provided with the distribution.
Packit ea1746
# * Neither the name of Google Inc. nor the names of its contributors may be
Packit ea1746
#   used to endorse or promote products derived from this software without
Packit ea1746
#   specific prior written permission.
Packit ea1746
#
Packit ea1746
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
Packit ea1746
# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
Packit ea1746
# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
Packit ea1746
# ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
Packit ea1746
# LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
Packit ea1746
# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
Packit ea1746
# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
Packit ea1746
# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
Packit ea1746
# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
Packit ea1746
# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
Packit ea1746
# POSSIBILITY OF SUCH DAMAGE.
Packit ea1746
#
Packit ea1746
# Author: alexs.mac@gmail.com (Alex Stewart)
Packit ea1746
Packit ea1746
# Microsoft deprecated the POSIX Bessel functions: j[0,1,n]() in favour
Packit ea1746
# of _j[0,1,n](), it appears since at least MSVC 2005 [1].  This function
Packit ea1746
# checks if the underscore prefixed versions of the Bessel functions are
Packit ea1746
# defined, and sets ${HAVE_UNDERSCORE_PREFIXED_BESSEL_FUNCTIONS_VAR} to
Packit ea1746
# TRUE if they do.
Packit ea1746
#
Packit ea1746
# [1] https://msdn.microsoft.com/en-us/library/ms235384(v=vs.100).aspx
Packit ea1746
function(check_if_underscore_prefixed_bessel_functions_exist
Packit ea1746
    HAVE_UNDERSCORE_PREFIXED_BESSEL_FUNCTIONS_VAR)
Packit ea1746
  include(CheckCXXSourceCompiles)
Packit ea1746
  check_cxx_source_compiles(
Packit ea1746
    "#include <math.h>
Packit ea1746
     int main(int argc, char * argv[]) {
Packit ea1746
       double result;
Packit ea1746
       result = _j0(1.2345);
Packit ea1746
       result = _j1(1.2345);
Packit ea1746
       result = _jn(2, 1.2345);
Packit ea1746
       return 0;
Packit ea1746
     }"
Packit ea1746
     HAVE_UNDERSCORE_PREFIXED_BESSEL_FUNCTIONS)
Packit ea1746
   set(${HAVE_UNDERSCORE_PREFIXED_BESSEL_FUNCTIONS_VAR}
Packit ea1746
     ${HAVE_UNDERSCORE_PREFIXED_BESSEL_FUNCTIONS}
Packit ea1746
     PARENT_SCOPE)
Packit ea1746
endfunction()