diff --git a/include/laser_geometry/visibility_control.hpp b/include/laser_geometry/visibility_control.hpp new file mode 100644 index 0000000..b9fe0f5 --- /dev/null +++ b/include/laser_geometry/visibility_control.hpp @@ -0,0 +1,49 @@ +// Copyright 2015 Open Source Robotics Foundation, Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +#ifndef LASER_GEOMETRY__VISIBILITY_CONTROL_HPP_ +#define LASER_GEOMETRY__VISIBILITY_CONTROL_HPP_ + +// This logic was borrowed (then namespaced) from the examples on the gcc wiki: +// https://gcc.gnu.org/wiki/Visibility + +#if defined _WIN32 || defined __CYGWIN__ + #ifdef __GNUC__ + #define LASER_GEOMETRY_EXPORT __attribute__ ((dllexport)) + #define LASER_GEOMETRY_IMPORT __attribute__ ((dllimport)) + #else + #define LASER_GEOMETRY_EXPORT __declspec(dllexport) + #define LASER_GEOMETRY_IMPORT __declspec(dllimport) + #endif + #ifdef LASER_GEOMETRY_BUILDING_LIBRARY + #define LASER_GEOMETRY_PUBLIC LASER_GEOMETRY_EXPORT + #else + #define LASER_GEOMETRY_PUBLIC LASER_GEOMETRY_IMPORT + #endif + #define LASER_GEOMETRY_PUBLIC_TYPE LASER_GEOMETRY_PUBLIC + #define LASER_GEOMETRY_LOCAL +#else + #define LASER_GEOMETRY_EXPORT __attribute__ ((visibility("default"))) + #define LASER_GEOMETRY_IMPORT + #if __GNUC__ >= 4 + #define LASER_GEOMETRY_PUBLIC __attribute__ ((visibility("default"))) + #define LASER_GEOMETRY_LOCAL __attribute__ ((visibility("hidden"))) + #else + #define LASER_GEOMETRY_PUBLIC + #define LASER_GEOMETRY_LOCAL + #endif + #define LASER_GEOMETRY_PUBLIC_TYPE +#endif + +#endif // LASER_GEOMETRY__VISIBILITY_CONTROL_HPP_