Skip to content

Commit

Permalink
Merge pull request #346 from TimelordUK/elec32
Browse files Browse the repository at this point in the history
Elec32
  • Loading branch information
TimelordUK authored Oct 13, 2024
2 parents cb758cf + b1fff0d commit 6e9af43
Show file tree
Hide file tree
Showing 6 changed files with 292 additions and 57 deletions.
Binary file added .binding.gyp.un~
Binary file not shown.
Binary file added .package.json.un~
Binary file not shown.
6 changes: 3 additions & 3 deletions binding.gyp
Original file line number Diff line number Diff line change
Expand Up @@ -4,18 +4,18 @@
'OS=="mac"', {
'variables': {
'arch%': '<!(uname -m)',
"cflags_cpp" : "gnu++17",
"cflags_cpp" : "gnu++20",
}
},
'OS=="linux"', {
'variables': {
"cflags_cpp" : "-std=c++17",
"cflags_cpp" : "-std=c++20",
'arch%': '<!(uname -m)',
}
},
'OS=="win"', {
'variables': {
"cflags_cpp" : "-std:=c++17",
"cflags_cpp" : "std:c++20",
'arch%': '<!(echo %PROCESSOR_ARCHITECTURE%)'
}
}
Expand Down
190 changes: 190 additions & 0 deletions binding.gyp~
Original file line number Diff line number Diff line change
@@ -0,0 +1,190 @@
{
'conditions': [
[
'OS=="mac"', {
'variables': {
'arch%': '<!(uname -m)',
"cflags_cpp" : "gnu++17",
}
},
'OS=="linux"', {
'variables': {
"cflags_cpp" : "-std=c++17",
'arch%': '<!(uname -m)',
}
},
'OS=="win"', {
'variables': {
"cflags_cpp" : "/std:c++20",
'arch%': '<!(echo %PROCESSOR_ARCHITECTURE%)'
}
}
]
],
'variables': {
'openssl_fips' : '0',
# look for include files for these versions - taking top first priority
'msodbsver%': [
'msodbcsql18',
'msodbcsql17'
],
'ext%': '.cpp',
'homebrew%': '/opt/homebrew/lib/libodbc.a',
'unixlocalodbc%': '-l/usr/local/odbc',
'linuxodbc%': '-lodbc',
'winodbc%': 'odbc32',
# pick up libodbc from somwhere - note the ms driver is loaded dynamicaly via odbc, no
# link dependency is added
'linkdir%': '/usr/local/lib /usr/local/ssl/lib64/ /opt/homebrew/lib /home/linuxbrew/.linuxbrew/lib/ /usr/lib /usr/lib64 .'
},

'targets': [
{
'target_name': 'sqlserverv8',

'variables': {
# Set the target variable only if it is not passed in by prebuild
'target%': '<!(node -e "console.log(process.versions.node)")',
# which folders are available for include eg.
# /opt/microsoft/msodbcsql18/include/ /opt/microsoft/msodbcsql17/include/
'msodbc_include_folders%': [
"<!@(node -p \""
"'<(msodbsver)'"
".split(' ')"
".map(x => ["
"'/opt/microsoft/' + x +'/include/'"
" ,"
"'/usr/local/opt/' + x + '/include/'"
" ,"
"'/usr/local/opt/' + x + '/include/' + x + '/'"
" ,"
"'/opt/homebrew/include/' + x + '/'"
" ,"
"'/home/linuxbrew/.linuxbrew/include/'"
"])"
".flatMap(y => y)"
".filter(z => require('fs').existsSync(z))"
".join(' ')"
"\")"
],
# set fo
# the link folders available -L/usr/local/lib -L/usr/lib -L.
'link_path%': [
"<!@(node -p \""
"'<(linkdir)'"
".split(' ')"
".filter(x => require('fs')"
".existsSync(x))"
".map(x => '-L'+ x)"
".join(' ')"
"\")"
], # set for macos based on silicon

# enumerate the cpp src files rather than name them.
'fileset%': [
"<!@(node -p \""
"require('fs')"
".readdirSync('./src')"
".filter(x => x.endsWith('<(ext)'))"
".map(f => 'src/'+f)"
".join(' ')"
"\")"
]
},

'sources' : [
"<!@(node -p \"'<(fileset)'"
".split(' ')"
".join(' ')\")"
],

'include_dirs': [
"<!(node -e \"require('nan')\")",
'src',
],

'defines': [ 'NODE_GYP_V4' ],
'actions': [
{
'action_name': 'print_variables',
'action': ['echo', 'cflags_cpp <(cflags_cpp) | arch: <(arch) | link_path: <(link_path) | msodbc_include_folders <(msodbc_include_folders) | fileset <(fileset)'],
'inputs': [],
'outputs': [
"<!@(node -p \"'<(fileset)'.split(' ')[0]\")"
],
#'outputs': ['src/ConnectionHandles.cpp']
}
],
#
# currently for electron v20+ manually set the package.json
# for node_modules/prebuild dependencies (else code will not
# compile) - need to raise PR for prebuild
# cat .\package.json | grep gyp
# "node-gyp": "^9.1.0",
# "nw-gyp": "^3.6.3",
#
# also patch nan with https://github.com/VerteDinde/nan/tree/deprecate_accessor_signature
# whilst the PR is pending - this is only needed for electron v20 and
# above
#
'conditions': [
['target < "13.0"', {
'defines': [
'PRE_V13',
],
}],

[ 'OS=="win"', {
'link_settings': {
'libraries': [
'<(winodbc)'
],
},
'defines': [
'UNICODE=1',
'WINDOWS_BUILD',
],
}
],
['OS=="linux"', {
'link_settings': {
'libraries': [
"<!@(node -p \"'<(link_path)'.split(' ').join(' ')\")",
'<(linuxodbc)',
],
},
'defines': [
'LINUX_BUILD',
'UNICODE'
],
'cflags_cc': ['<(cflags_cpp)'],
'include_dirs': [
"<!@(node -p \"'<(msodbc_include_folders)'.split(' ').join(' ')\")",
'/usr/include/'
],
}],
['OS=="mac"', {
'link_settings': {
'libraries': [
'<(link_path)',
'<(linuxodbc)'
#'-lodbc'
],
},
'defines': [
'LINUX_BUILD',
'UNICODE'
],
'xcode_settings': {
'CLANG_CXX_LANGUAGE_STANDARD': '<(cflags_cpp)'
},
'include_dirs': [
"<!@(node -p \"'<(msodbc_include_folders)'.split(' ').join(' ')\")",
'/opt/homebrew/include',
'/usr/local/include/',
],
}],
]
}
]
}
Loading

0 comments on commit 6e9af43

Please sign in to comment.