Skip to content

[add] node-gyp compatible taglib/zlib build #46

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 1 commit into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
48 changes: 33 additions & 15 deletions binding.gyp
Original file line number Diff line number Diff line change
@@ -1,25 +1,43 @@
{
'variables': {
'taglib%': 'internal'
},
"targets": [
{
"target_name": "taglib",
"sources": ["src/bufferstream.c", "src/tag.cc", "src/taglib.cc"],
"libraries": ["<!(taglib-config --libs)"],
'direct_dependent_settings': {
"include_dirs": ["deps/zlib"]
},
'conditions': [
['OS=="mac"', {
# cflags on OS X are stupid and have to be defined like this
# copied from libxmljs
'xcode_settings': {
'OTHER_CFLAGS': [
'<!@(taglib-config --cflags)'
],
'OTHER_LDFLAGS': [
'-dynamiclib'
]
}
}, {
'cflags': [
'<!@(taglib-config --cflags)'
['taglib != "internal"', {
"libraries": [
"<!(taglib-config --libs)",
"-ltag",
],
"conditions": [
['OS=="mac"', {
# cflags on OS X are stupid and have to be defined like this
# copied from libxmljs
'xcode_settings': {
'OTHER_CFLAGS': [
'<!@(taglib-config --cflags)'
],
'OTHER_LDFLAGS': [
'-dynamiclib'
]
}
}, {
'cflags': [
'<!@(taglib-config --cflags)'
],
}]
]
}, {
"dependencies": [
"deps/zlib.gyp:z",
"deps/taglib.gyp:tag"
]
}]
]
}
Expand Down
38 changes: 38 additions & 0 deletions deps/config.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
/* config.h.
DO NOT EDIT, PASS IN DEFINES VIA taglig.gyp
THIS FILE MUST BE PRESENT FOR COMPATIBILITY WITH taglib COMPILATION
*/

/* Indicates the byte order of your target system */
/* 1 if little-endian, 2 if big-endian. */
/* #define SYSTEM_BYTEORDER 1 */

/* Defined if your compiler supports some byte swap functions */
/* #undef HAVE_GCC_BYTESWAP_16 */
/* #define HAVE_GCC_BYTESWAP_32 1 */
/* #define HAVE_GCC_BYTESWAP_64 1 */
/* #undef HAVE_GLIBC_BYTESWAP */
/* #undef HAVE_MSC_BYTESWAP */
/* #define HAVE_MAC_BYTESWAP 1 */
/* #undef HAVE_OPENBSD_BYTESWAP */

/* Defined if your compiler supports codecvt */
/* #undef HAVE_STD_CODECVT */

/* Defined if your compiler supports some atomic operations */
/* #undef HAVE_STD_ATOMIC */
/* #undef HAVE_BOOST_ATOMIC */
/* #define HAVE_GCC_ATOMIC 1 */
/* #undef HAVE_MAC_ATOMIC */
/* #undef HAVE_WIN_ATOMIC */
/* #undef HAVE_IA64_ATOMIC */

/* Defined if your compiler supports some safer version of sprintf */
/* #define HAVE_SNPRINTF 1 */
/* #undef HAVE_SPRINTF_S */

/* Defined if you have libz */
/* #define HAVE_ZLIB 1 */

/* Indicates whether debug messages are shown even in release mode */
/* #undef TRACE_IN_RELEASE */
9 changes: 9 additions & 0 deletions deps/extract.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
import sys
import tarfile
import os

tarball = os.path.abspath(sys.argv[1])
dirname = os.path.abspath(sys.argv[2])
tfile = tarfile.open(tarball,'r:gz');
tfile.extractall(dirname)
sys.exit(0)
Binary file not shown.
440 changes: 440 additions & 0 deletions deps/taglib.gyp

Large diffs are not rendered by default.

7 changes: 7 additions & 0 deletions deps/taglib_config.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
/* taglib_config.h.
DO NOT EDIT, PASS IN DEFINES VIA taglig.gyp
THIS FILE MUST BE PRESENT FOR COMPATIBILITY WITH taglib COMPILATION
*/

/* #define TAGLIB_WITH_ASF 1 */
/* #define TAGLIB_WITH_MP4 1 */
Binary file not shown.
202 changes: 202 additions & 0 deletions deps/zlib.gyp
Original file line number Diff line number Diff line change
@@ -0,0 +1,202 @@
{
'variables': {
'zlib_version': '50893291621658f355bc5b4d450a8d06a563053d',
},
'target_defaults': {
'default_configuration': 'Debug',
'configurations': {
# TODO: hoist these out and put them somewhere common, because
# RuntimeLibrary MUST MATCH across the entire project
'Debug': {
'defines': [ 'DEBUG', '_DEBUG' ],
"msvs_settings": {
"VCCLCompilerTool": {
"ExceptionHandling": "0",
"AdditionalOptions": [
"/MP /EHsc"
]
},
"VCLibrarianTool": {
"AdditionalOptions": [
"/LTCG"
]
},
"VCLinkerTool": {
"LinkTimeCodeGeneration": 1,
"LinkIncremental": 1,

}
}
},
'Release': {
'conditions': [
# hack to override node's common.gypi defaults and compile with RTTI and EHsc on
# Conditions seem to be evaluated later than standard settings, so we add RTTI/EHsc to both architectures
['target_arch=="ia32"', {
'msvs_settings': {
"VCCLCompilerTool": {
"RuntimeLibrary": 0,
"Optimization": 3,
"FavorSizeOrSpeed": 1,
"InlineFunctionExpansion": 2,
"WholeProgramOptimization": "true",
"OmitFramePointers": "true",
"EnableFunctionLevelLinking": "true",
"EnableIntrinsicFunctions": "true",
"RuntimeTypeInfo": "false",
"ExceptionHandling": "0",
"AdditionalOptions": [
"/MP /EHsc"
]
},
"VCLibrarianTool": {
"AdditionalOptions": [
"/LTCG"
]
},
"VCLinkerTool": {
"LinkTimeCodeGeneration": 1,
"OptimizeReferences": 2,
"EnableCOMDATFolding": 2,
"LinkIncremental": 1,

}
},
}, {
'msvs_settings': {
"VCCLCompilerTool": {
"RuntimeLibrary": 0,
"Optimization": 3,
"FavorSizeOrSpeed": 1,
"InlineFunctionExpansion": 2,
"WholeProgramOptimization": "true",
"OmitFramePointers": "true",
"EnableFunctionLevelLinking": "true",
"EnableIntrinsicFunctions": "true",
"RuntimeTypeInfo": "false",
"ExceptionHandling": "0",
"AdditionalOptions": [
"/MP /EHsc"
]
},
"VCLibrarianTool": {
"AdditionalOptions": [
"/LTCG"
]
},
"VCLinkerTool": {
"LinkTimeCodeGeneration": 1,
"OptimizeReferences": 2,
"EnableCOMDATFolding": 2,
"LinkIncremental": 1,
}
},
},

]],
'defines': [ 'NDEBUG' ],
'msvs_settings': {
'VCCLCompilerTool': {
'RuntimeLibrary': 0, # static release,
},
},
}
},
'msvs_settings': {
'VCCLCompilerTool': {
'RuntimeTypeInfo': 'true'
},
'VCLibrarianTool': {
},
'VCLinkerTool': {
'GenerateDebugInformation': 'true',
},
},
},
'targets': [
{
'target_name': 'z_before',
'type': 'none',
'hard_dependency': 1,
'actions': [
{
'action_name': 'unpack_zlib_dep',
'inputs': [
'./zlib-<@(zlib_version).tar.gz'
],
'outputs': [
'<(SHARED_INTERMEDIATE_DIR)/zlib-<@(zlib_version)/adler32.c',
'<(SHARED_INTERMEDIATE_DIR)/zlib-<@(zlib_version)/crc32.c',
'<(SHARED_INTERMEDIATE_DIR)/zlib-<@(zlib_version)/deflate.c',
'<(SHARED_INTERMEDIATE_DIR)/zlib-<@(zlib_version)/infback.c',
'<(SHARED_INTERMEDIATE_DIR)/zlib-<@(zlib_version)/inffast.c',
'<(SHARED_INTERMEDIATE_DIR)/zlib-<@(zlib_version)/inflate.c',
'<(SHARED_INTERMEDIATE_DIR)/zlib-<@(zlib_version)/inftrees.c',
'<(SHARED_INTERMEDIATE_DIR)/zlib-<@(zlib_version)/trees.c',
'<(SHARED_INTERMEDIATE_DIR)/zlib-<@(zlib_version)/zutil.c',
'<(SHARED_INTERMEDIATE_DIR)/zlib-<@(zlib_version)/compress.c',
'<(SHARED_INTERMEDIATE_DIR)/zlib-<@(zlib_version)/uncompr.c',
'<(SHARED_INTERMEDIATE_DIR)/zlib-<@(zlib_version)/gzclose.c',
'<(SHARED_INTERMEDIATE_DIR)/zlib-<@(zlib_version)/gzlib.c',
'<(SHARED_INTERMEDIATE_DIR)/zlib-<@(zlib_version)/gzread.c',
'<(SHARED_INTERMEDIATE_DIR)/zlib-<@(zlib_version)/gzwrite.c',
],
'action': ['python','./extract.py','./zlib-<@(zlib_version).tar.gz','<(SHARED_INTERMEDIATE_DIR)']
}
],
'direct_dependent_settings': {
'include_dirs': [
'<(SHARED_INTERMEDIATE_DIR)/zlib-<@(zlib_version)/',
]
},
},
{
'variables': { 'target_arch%': 'ia32' }, # default for node v0.6.x
'target_name': 'z',
'product_prefix': 'lib',
'type': 'static_library',
'sources': [
'<(SHARED_INTERMEDIATE_DIR)/zlib-<@(zlib_version)/adler32.c',
'<(SHARED_INTERMEDIATE_DIR)/zlib-<@(zlib_version)/crc32.c',
'<(SHARED_INTERMEDIATE_DIR)/zlib-<@(zlib_version)/deflate.c',
'<(SHARED_INTERMEDIATE_DIR)/zlib-<@(zlib_version)/infback.c',
'<(SHARED_INTERMEDIATE_DIR)/zlib-<@(zlib_version)/inffast.c',
'<(SHARED_INTERMEDIATE_DIR)/zlib-<@(zlib_version)/inflate.c',
'<(SHARED_INTERMEDIATE_DIR)/zlib-<@(zlib_version)/inftrees.c',
'<(SHARED_INTERMEDIATE_DIR)/zlib-<@(zlib_version)/trees.c',
'<(SHARED_INTERMEDIATE_DIR)/zlib-<@(zlib_version)/zutil.c',
'<(SHARED_INTERMEDIATE_DIR)/zlib-<@(zlib_version)/compress.c',
'<(SHARED_INTERMEDIATE_DIR)/zlib-<@(zlib_version)/uncompr.c',
'<(SHARED_INTERMEDIATE_DIR)/zlib-<@(zlib_version)/gzclose.c',
'<(SHARED_INTERMEDIATE_DIR)/zlib-<@(zlib_version)/gzlib.c',
'<(SHARED_INTERMEDIATE_DIR)/zlib-<@(zlib_version)/gzread.c',
'<(SHARED_INTERMEDIATE_DIR)/zlib-<@(zlib_version)/gzwrite.c',
],
'export_dependent_settings': [
'z_before'
],
'dependencies': [
'z_before'
],
'defines': [
],
'include_dirs': [
'<(SHARED_INTERMEDIATE_DIR)/zlib-<@(zlib_version)',
],
'direct_dependent_settings': {
'include_dirs': [
'<(SHARED_INTERMEDIATE_DIR)/zlib-<@(zlib_version)',
],
'conditions': [
['OS=="win"', {
'defines': [
"_WIN32",
"_WINDOWS"
]
}]
],
},
},

]
}