Build: Add static icsneo40 target

pull/64/head
Yasser Yassine 2024-03-19 20:59:33 +00:00 committed by Kyle Schwarz
parent 16b60d5ca0
commit 85178368d7
3 changed files with 32 additions and 0 deletions

View File

@ -12,6 +12,7 @@ option(LIBICSNEO_BUILD_EXAMPLES "Build examples." ON)
option(LIBICSNEO_BUILD_ICSNEOC "Build dynamic C library" ON) option(LIBICSNEO_BUILD_ICSNEOC "Build dynamic C library" ON)
option(LIBICSNEO_BUILD_ICSNEOC_STATIC "Build static C library" ON) option(LIBICSNEO_BUILD_ICSNEOC_STATIC "Build static C library" ON)
option(LIBICSNEO_BUILD_ICSNEOLEGACY "Build icsnVC40 compatibility library" ON) option(LIBICSNEO_BUILD_ICSNEOLEGACY "Build icsnVC40 compatibility library" ON)
option(LIBICSNEO_BUILD_ICSNEOLEGACY_STATIC "Build static icsnVC40 compatibility library" ON)
set(LIBICSNEO_NPCAP_INCLUDE_DIR "" CACHE STRING "Npcap include directory; set to build with Npcap") set(LIBICSNEO_NPCAP_INCLUDE_DIR "" CACHE STRING "Npcap include directory; set to build with Npcap")
# Device Drivers # Device Drivers
@ -448,6 +449,7 @@ if(LIBICSNEO_BUILD_ICSNEOC_STATIC)
) )
target_link_libraries(icsneoc-static PUBLIC icsneocpp) target_link_libraries(icsneoc-static PUBLIC icsneocpp)
target_compile_features(icsneoc-static PUBLIC cxx_auto_type cxx_constexpr cxx_lambdas cxx_nullptr cxx_range_for cxx_rvalue_references cxx_sizeof_member cxx_strong_enums) target_compile_features(icsneoc-static PUBLIC cxx_auto_type cxx_constexpr cxx_lambdas cxx_nullptr cxx_range_for cxx_rvalue_references cxx_sizeof_member cxx_strong_enums)
target_compile_definitions(icsneoc-static PUBLIC ICSNEOC_BUILD_STATIC)
endif() endif()
if(LIBICSNEO_BUILD_ICSNEOLEGACY) if(LIBICSNEO_BUILD_ICSNEOLEGACY)
@ -468,6 +470,25 @@ if(LIBICSNEO_BUILD_ICSNEOLEGACY)
target_compile_features(icsneolegacy PRIVATE cxx_auto_type cxx_constexpr cxx_lambdas cxx_nullptr cxx_range_for cxx_rvalue_references cxx_sizeof_member cxx_strong_enums) target_compile_features(icsneolegacy PRIVATE cxx_auto_type cxx_constexpr cxx_lambdas cxx_nullptr cxx_range_for cxx_rvalue_references cxx_sizeof_member cxx_strong_enums)
endif() endif()
if(LIBICSNEO_BUILD_ICSNEOLEGACY_STATIC)
add_library(icsneolegacy-static STATIC
api/icsneolegacy/icsneolegacy.cpp
api/icsneolegacy/icsneolegacyextra.cpp
api/icsneoc/icsneoc.cpp
)
target_include_directories(icsneolegacy-static
PUBLIC
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>
$<INSTALL_INTERFACE:>
PRIVATE
${CMAKE_CURRENT_SOURCE_DIR}/include
)
target_link_libraries(icsneolegacy-static PUBLIC icsneocpp)
target_compile_features(icsneolegacy-static PUBLIC cxx_auto_type cxx_constexpr cxx_lambdas cxx_nullptr cxx_range_for cxx_rvalue_references cxx_sizeof_member cxx_strong_enums)
target_compile_definitions(icsneolegacy-static PUBLIC ICSNEOC_BUILD_STATIC)
endif()
# googletest # googletest
if(LIBICSNEO_BUILD_TESTS) if(LIBICSNEO_BUILD_TESTS)
if(WIN32) if(WIN32)

View File

@ -9,7 +9,12 @@
#include "icsneo/platform/posix/linux/dynamiclib.h" #include "icsneo/platform/posix/linux/dynamiclib.h"
#endif #endif
#ifndef ICSNEOC_BUILD_STATIC
#define DLLExport __attribute__((visibility("default"))) #define DLLExport __attribute__((visibility("default")))
#else
#define DLLExport
#endif
#define LegacyDLLExport DLLExport #define LegacyDLLExport DLLExport
// #ifndef ICSNEO_NO_AUTO_DESTRUCT // #ifndef ICSNEO_NO_AUTO_DESTRUCT

View File

@ -3,11 +3,17 @@
#include "icsneo/platform/windows.h" #include "icsneo/platform/windows.h"
#ifndef ICSNEOC_BUILD_STATIC
#ifdef ICSNEOC_MAKEDLL #ifdef ICSNEOC_MAKEDLL
#define DLLExport __declspec(dllexport) #define DLLExport __declspec(dllexport)
#else #else
#define DLLExport __declspec(dllimport) #define DLLExport __declspec(dllimport)
#endif #endif
#else
#define DLLExport
#endif
#define LegacyDLLExport DLLExport _stdcall #define LegacyDLLExport DLLExport _stdcall
// MSVC does not have the ability to specify a destructor // MSVC does not have the ability to specify a destructor