///////////////////////////////////////////////////////////////////////////////////
// Copyright (C) 2012 maintech GmbH, Otto-Hahn-Str. 15, 97204 Hoechberg, Germany //
// written by Christian Daniel                                                   //
// Copyright (C) 2015-2016, 2018-2019, 2022-2023 Edouard Griffiths, F4EXB <f4exb06@gmail.com> //
// Copyright (C) 2019 Davide Gerhard <rainbow@irh.it>                            //
// Copyright (C) 2020 Kacper Michajłow <kasper93@gmail.com>                      //
//                                                                               //
// This program is free software; you can redistribute it and/or modify          //
// it under the terms of the GNU General Public License as published by          //
// the Free Software Foundation as version 3 of the License, or                  //
// (at your option) any later version.                                           //
//                                                                               //
// This program is distributed in the hope that it will be useful,               //
// but WITHOUT ANY WARRANTY; without even the implied warranty of                //
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the                  //
// GNU General Public License V3 for more details.                               //
//                                                                               //
// You should have received a copy of the GNU General Public License             //
// along with this program. If not, see <http://www.gnu.org/licenses/>.          //
///////////////////////////////////////////////////////////////////////////////////

#ifndef __SDRANGEL_EXPORT_H
#define __SDRANGEL_EXPORT_H

#if defined (__GNUC__) && (__GNUC__ >= 4)
#  define __SDR_EXPORT   __attribute__((visibility("default")))
#  define __SDR_IMPORT   __attribute__((visibility("default")))

#elif defined (_MSC_VER)
#  define __SDR_EXPORT   __declspec(dllexport)
#  define __SDR_IMPORT   __declspec(dllimport)

#else
#  define __SDR_EXPORT
#  define __SDR_IMPORT
#endif

/* The 'SDRBASE_API' controls the import/export of 'sdrbase' symbols and classes.
 */
#if !defined(sdrangel_STATIC)
#  if defined sdrbase_EXPORTS
#    define SDRBASE_API __SDR_EXPORT
#  else
#    define SDRBASE_API __SDR_IMPORT
#  endif
#else
#  define SDRBASE_API
#endif

/* the 'SDRGUI_API' controls the import/export of 'sdrgui' symbols
 */
#if !defined(sdrangel_STATIC)
#  ifdef sdrgui_EXPORTS
#    define SDRGUI_API __SDR_EXPORT
#  else
#    define SDRGUI_API __SDR_IMPORT
#  endif
#else
#   define SDRGUI_API
#endif

/* the 'SDRSRV_API' controls the import/export of 'sdrsrv' symbols
 */
#if !defined(sdrangel_STATIC)
#  ifdef sdrsrv_EXPORTS
#    define SDRSRV_API __SDR_EXPORT
#  else
#    define SDRSRV_API __SDR_IMPORT
#  endif
#else
#   define SDRSRV_API
#endif

/* the 'DEVICES_API' controls the import/export of 'devices' symbols
 */
#if !defined(sdrangel_STATIC)
#  ifdef devices_EXPORTS
#    define DEVICES_API __SDR_EXPORT
#  else
#    define DEVICES_API __SDR_IMPORT
#  endif
#else
#  define DEVICES_API
#endif

/* the 'HTTPSERVER_API' controls the import/export of 'httpserver' symbols
 */
#if !defined(sdrangel_STATIC)
#  ifdef httpserver_EXPORTS
#    define HTTPSERVER_API __SDR_EXPORT
#  else
#    define HTTPSERVER_API __SDR_IMPORT
#  endif
#else
#  define HTTPSERVER_API
#endif

/* the 'LOGGING_API' controls the import/export of 'logging' symbols
 */
#if !defined(sdrangel_STATIC)
#  ifdef logging_EXPORTS
#    define LOGGING_API __SDR_EXPORT
#  else
#    define LOGGING_API __SDR_IMPORT
#  endif
#else
#  define LOGGING_API
#endif

/* the 'QRTPLIB_API' controls the import/export of 'qrtplib' symbols
 */
#if !defined(sdrangel_STATIC)
#  ifdef qrtplib_EXPORTS
#    define QRTPLIB_API __SDR_EXPORT
#  else
#    define QRTPLIB_API __SDR_IMPORT
#  endif
#else
#  define QRTPLIB_API
#endif

/* the 'SWG_API' controls the import/export of 'swagger' symbols
 */
#if !defined(sdrangel_STATIC)
#  ifdef swagger_EXPORTS
#    define SWG_API __SDR_EXPORT
#  else
#    define SWG_API __SDR_IMPORT
#  endif
#else
#  define SWG_API
#endif

/* the 'SDRBENCH_API' controls the import/export of 'sdrbench' symbols
 */
#if !defined(sdrangel_STATIC)
#  ifdef sdrbench_EXPORTS
#    define SDRBENCH_API __SDR_EXPORT
#  else
#    define SDRBENCH_API __SDR_IMPORT
#  endif
#else
#  define SDRBENCH_API
#endif

/* the 'MODEMM17_API' controls the import/export of 'modemm17' symbols
 */
#if !defined(sdrangel_STATIC)
#  ifdef modemm17_EXPORTS
#    define MODEMM17_API __SDR_EXPORT
#  else
#    define MODEMM17_API __SDR_IMPORT
#  endif
#else
#  define MODEMM17_API
#endif

/* the 'MODEMMESHTASTIC_API' controls the import/export of 'modemmeshtastic' symbols
 */
#if !defined(sdrangel_STATIC)
#  ifdef modemmeshtastic_EXPORTS
#    define MODEMMESHTASTIC_API __SDR_EXPORT
#  else
#    define MODEMMESHTASTIC_API __SDR_IMPORT
#  endif
#else
#  define MODEMMESHTASTIC_API
#endif

/* the 'MODEMMESHCORE_API' controls the import/export of 'modemmeshcore' symbols
 */
#if !defined(sdrangel_STATIC)
#  ifdef modemmeshcore_EXPORTS
#    define MODEMMESHCORE_API __SDR_EXPORT
#  else
#    define MODEMMESHCORE_API __SDR_IMPORT
#  endif
#else
#  define MODEMMESHCORE_API
#endif

/* the 'FT8_API' controls the import/export of 'ft8' symbols
 */
#if !defined(sdrangel_STATIC)
#  ifdef ft8_EXPORTS
#    define FT8_API __SDR_EXPORT
#  else
#    define FT8_API __SDR_IMPORT
#  endif
#else
#  define FT8_API
#endif

/* the 'WDSP_API' controls the import/export of 'wdsp' symbols
 */
#if !defined(sdrangel_STATIC)
#  ifdef wdsp_EXPORTS
#    define WDSP_API __SDR_EXPORT
#  else
#    define WDSP_API __SDR_IMPORT
#  endif
#else
#  define WDSP_API
#endif

#endif /* __SDRANGEL_EXPORT_H */
