1f07b3eaeSTyler Young/* Copyright (c) 2017 - 2021 LiteSpeed Technologies Inc.  See LICENSE. */
2f07b3eaeSTyler Young/*
3f07b3eaeSTyler Young * lsquic_shared_support.h - Support for building a shared library.
4f07b3eaeSTyler Young */
5f07b3eaeSTyler Young
6f07b3eaeSTyler Young#ifndef LSQUIC_SHARED_SUPPORT
7f07b3eaeSTyler Young#define LSQUIC_SHARED_SUPPORT 1
8f07b3eaeSTyler Young
9f07b3eaeSTyler Young#ifndef LSQUIC_EXTERN
10f07b3eaeSTyler Young
11f07b3eaeSTyler Young#  ifdef _MSC_VER /* WIN32 */
12f07b3eaeSTyler Young
13f07b3eaeSTyler Young/* MSVC (and CMake on Windows) doesn't like to export extern const symbols, they need to be forced. */
14f07b3eaeSTyler Young
15f07b3eaeSTyler Young#    ifdef LSQUIC_SHARED_LIB
16f07b3eaeSTyler Young
17f07b3eaeSTyler Young#      ifdef LSQUIC_EXPORTS
18f07b3eaeSTyler Young#        define LSQUIC_EXTERN __declspec(dllexport) extern
19f07b3eaeSTyler Young#      else /* LSQUIC_EXPORTS */
20f07b3eaeSTyler Young#        define LSQUIC_EXTERN __declspec(dllimport) extern
21f07b3eaeSTyler Young#      endif /* LSQUIC_EXPORTS */
22f07b3eaeSTyler Young
23f07b3eaeSTyler Young#    else
24f07b3eaeSTyler Young
25f07b3eaeSTyler Young#    define LSQUIC_EXTERN extern
26f07b3eaeSTyler Young
27f07b3eaeSTyler Young#    endif
28f07b3eaeSTyler Young
29f07b3eaeSTyler Young#  else /* _MSC_VER */
30f07b3eaeSTyler Young
31f07b3eaeSTyler Young#    define LSQUIC_EXTERN extern
32f07b3eaeSTyler Young
33f07b3eaeSTyler Young#  endif /* _MSC_VER */
34f07b3eaeSTyler Young
35f07b3eaeSTyler Young#endif /* LSQUIC_EXTERN */
36f07b3eaeSTyler Young
37f07b3eaeSTyler Young#endif /* LSQUIC_SHARED_SUPPORT */
38