msnodesqlv8
Version:
Microsoft Driver for Node.js SQL Server compatible with all versions of Node.
71 lines (62 loc) • 1.79 kB
Plain Text
cmake_minimum_required(VERSION 3.14)
project(msnodesqlv8 CXX)
# Set C++ standard
set(CMAKE_CXX_STANDARD 20)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_POSITION_INDEPENDENT_CODE ON)
# Platform-specific settings
if(WIN32)
# Windows-specific settings
add_definitions(-DWINDOWS_BUILD -DUNICODE -DBUILDING_NODE_EXTENSION -DNOMINMAX)
set(ODBC_LIBRARIES odbc32)
else()
# Linux/Mac settings
add_definitions(-DLINUX_BUILD -DUNICODE -DBUILDING_NODE_EXTENSION)
# Find ODBC libraries
find_package(ODBC REQUIRED)
# Link pthread and other system libraries
set(SYSTEM_LIBRARIES pthread dl rt)
endif()
# Include directories
include_directories(
${CMAKE_SOURCE_DIR}/include
${CMAKE_SOURCE_DIR}/include/common
${CMAKE_SOURCE_DIR}/include/core
${CMAKE_SOURCE_DIR}/include/js
${CMAKE_SOURCE_DIR}/include/odbc
${CMAKE_SOURCE_DIR}/include/utils
)
# Source files
file(GLOB_RECURSE COMMON_SOURCES "src/common/*.cpp")
file(GLOB_RECURSE CORE_SOURCES "src/core/*.cpp")
file(GLOB_RECURSE JS_SOURCES "src/js/*.cpp")
file(GLOB_RECURSE ODBC_SOURCES "src/odbc/*.cpp")
file(GLOB_RECURSE UTILS_SOURCES "src/utils/*.cpp")
# Main target
add_library(sqlserver MODULE
binding.cpp
${COMMON_SOURCES}
${CORE_SOURCES}
${JS_SOURCES}
${ODBC_SOURCES}
${UTILS_SOURCES}
)
# Link libraries
if(WIN32)
target_link_libraries(sqlserver ${ODBC_LIBRARIES})
else()
target_link_libraries(sqlserver ${ODBC_LIBRARIES} ${SYSTEM_LIBRARIES})
endif()
# Set output name based on platform
if(WIN32)
set_target_properties(sqlserver PROPERTIES
OUTPUT_NAME "sqlserver"
SUFFIX ".node"
)
else()
set_target_properties(sqlserver PROPERTIES
OUTPUT_NAME "sqlserver"
PREFIX ""
SUFFIX ".node"
)
endif()