UNPKG

sack-gui

Version:
338 lines (276 loc) 11.5 kB
cmake_minimum_required(VERSION 3.0) project (sack_vfs) ADD_DEFINITIONS( -DBUILD_NODE_ADDON ) if( MSVC ) #add_definitions( -D_CRT_SECURE_NO_WARNINGS -wd4995 -wd4996 ) #add_definitions( -wd4996 ) SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /MP8") SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} /MP8") SET( CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} /GS-" ) SET( CMAKE_CXX_FLAGS_RELWITHDEBINFO "${CMAKE_CXX_FLAGS_RELWITHDEBINFO} /GS-" ) SET( CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} /GS-" ) SET( CMAKE_C_FLAGS_RELWITHDEBINFO "${CMAKE_C_FLAGS_RELWITHDEBINFO} /GS-" ) string( REPLACE "/Ob1" "/Ob2" CMAKE_CXX_FLAGS_RELWITHDEBINFO ${CMAKE_CXX_FLAGS_RELWITHDEBINFO} ) string( REPLACE "/Ob1" "/Ob2" CMAKE_C_FLAGS_RELWITHDEBINFO ${CMAKE_C_FLAGS_RELWITHDEBINFO} ) endif( MSVC ) #if( GNUC ) # SET( CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -D_DEBUG" ) # SET( CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -D_DEBUG" ) # SET( CMAKE_CXX_FLAGS_RELWITHDEBINFO "${CMAKE_CXX_FLAGS_RELWITHDEBINFO} -D_DEBUG" ) # SET( CMAKE_C_FLAGS_RELWITHDEBINFO "${CMAKE_C_FLAGS_RELWITHDEBINFO} -D_DEBUG" ) #endif( GNUC ) #include_directories( "../node_modules/nan" ) if( NOT WIN32 ) ADD_DEFINITIONS( -D__LINUX__ ) ADD_DEFINITIONS( -D__MANUAL_PRELOAD__ ) else( NOT WIN32 ) ADD_DEFINITIONS( -D_CRT_NONSTDC_NO_DEPRECATE ) endif( NOT WIN32 ) #if( CMAKE_SIZEOF_VOID_P EQUAL 8 ) # ADD_DEFINITIONS( -D__64__ ) #endif( CMAKE_SIZEOF_VOID_P EQUAL 8 ) ADD_DEFINITIONS( -DNO_OPEN_MACRO ) if( ${CMAKE_BUILD_TYPE} MATCHES "[dD][eE][bB][uU][gG]" OR ${CMAKE_BUILD_TYPE} MATCHES "[rR][eE][lL][wW][iI].*" ) ADD_DEFINITIONS( -D_DEBUG ) endif( ${CMAKE_BUILD_TYPE} MATCHES "[dD][eE][bB][uU][gG]" OR ${CMAKE_BUILD_TYPE} MATCHES "[rR][eE][lL][wW][iI].*" ) if( WIN32 ) set( SACK_BASE M:/sack ) else( WIN32 ) set( SACK_BASE ${CMAKE_SOURCE_DIR}/../../sack ) endif( WIN32 ) # __NO_OPTIONS__ __NO_INTERFACE_SUPPORT__ __NO_ODBC__ set( DEFINITIONS __STATIC__ USE_SQLITE USE_SQLITE_INTERFACE FORCE_COLOR_MACROS NO_FILEOP_ALIAS _CRT_SECURE_NO_WARNINGS NEED_SHLAPI NEED_SHLOBJ JSON_PARSER_MAIN_SOURCE "SQLITE_ENABLE_LOCKING_STYLE=0" MINIMAL_JSON_PARSE_ALLOCATE ) if( APPLE ) set( DEFINITIONS ${DEFINITIONS} __MAC__ ) endif( APPLE ) if( EXISTS ${SACK_BASE} ) set( INCLUDES -I${SACK_BASE}/include -I${SACK_BASE}/src/contrib/sha1lib -I${SACK_BASE}/src/contrib/K12/lib -I${SACK_BASE}/src/contrib/sqlite/3.23.0-MySqlite ) FILE( WRITE ${CMAKE_BINARY_DIR}/config.ppc "/*CMake Option defined*/\n" ) foreach( DEF ${DEFINITIONS} ) ADD_DEFINITIONS( -D${DEF} ) #FILE( APPEND ${CMAKE_BINARY_DIR}/config.ppc "#define ${DEF}\n" ) ENDFOREACH() FILE( APPEND ${CMAKE_BINARY_DIR}/config.ppc "#define NO_AUTO_VECTLIB_NAMES\n" ) SET( EXTRA_HEADERS ${SACK_BASE}/include/stdhdrs.h ${SACK_BASE}/include/network.h ${SACK_BASE}/include/pssql.h ${SACK_BASE}/include/sqlgetoption.h ${SACK_BASE}/include/idle.h ${SACK_BASE}/include/filesys.h ${SACK_BASE}/include/sack_vfs.h ${SACK_BASE}/include/json_emitter.h ${SACK_BASE}/include/vesl_emitter.h ${SACK_BASE}/include/jsox_parser.h ${SACK_BASE}/include/html5.websocket.client.h ${SACK_BASE}/include/html5.websocket.h ${SACK_BASE}/include/http.h ${SACK_BASE}/include/procreg.h ${SACK_BASE}/include/configscript.h ${SACK_BASE}/include/salty_generator.h ${SACK_BASE}/include/sackcomm.h ${SACK_BASE}/include/translation.h ) SET( EXTRA_SOURCES ${SACK_BASE}/src/utils/virtual_file_system/vfs.c ${SACK_BASE}/src/utils/virtual_file_system/vfs_fs.c ${SACK_BASE}/src/utils/virtual_file_system/vfs_os.c ${SACK_BASE}/src/deadstart/deadstart_core.c ${SACK_BASE}/src/sysloglib/syslog.c ${SACK_BASE}/src/systemlib/system.c ${SACK_BASE}/src/systemlib/spawntask.c ${SACK_BASE}/src/systemlib/args.c ${SACK_BASE}/src/systemlib/oswin.c ${SACK_BASE}/src/systemlib/taskinfo.h ${SACK_BASE}/src/timerlib/timers.c ${SACK_BASE}/src/idlelib/idle.c ${SACK_BASE}/src/procreglib/names.c ${SACK_BASE}/src/procreglib/registry.h ${SACK_BASE}/src/memlib/sharemem.c ${SACK_BASE}/src/memlib/memory_operations.c ${SACK_BASE}/src/memlib/sharestruc.h ${SACK_BASE}/src/filesyslib/winfiles.c ${SACK_BASE}/src/filesyslib/filescan.c ${SACK_BASE}/src/filesyslib/pathops.c ${SACK_BASE}/src/filesyslib/filesys_local.h ${SACK_BASE}/src/typelib/typecode.c ${SACK_BASE}/src/typelib/text.c ${SACK_BASE}/src/typelib/binarylist.c ${SACK_BASE}/src/typelib/familytree.c ${SACK_BASE}/src/typelib/sets.c ${SACK_BASE}/src/typelib/http.c ${SACK_BASE}/src/typelib/url.c ${SACK_BASE}/src/commlib/sackcomm.c ${SACK_BASE}/src/netlib/html5.websocket/html5.websocket.common.c ${SACK_BASE}/src/netlib/html5.websocket/client/html5.websocket.client.c ${SACK_BASE}/src/netlib/html5.websocket/server/html5.websocket.c ${SACK_BASE}/src/netlib/html5.websocket/json/json_parser.c ${SACK_BASE}/src/netlib/html5.websocket/json/json6_parser.c ${SACK_BASE}/src/netlib/html5.websocket/json/jsox_parser.c ${SACK_BASE}/src/netlib/html5.websocket/json/json_emitter.c ${SACK_BASE}/src/netlib/html5.websocket/json/vesl_parser.c ${SACK_BASE}/src/netlib/network.c ${SACK_BASE}/src/netlib/tcpnetwork.c ${SACK_BASE}/src/netlib/udpnetwork.c ${SACK_BASE}/src/netlib/net_winsock2.c ${SACK_BASE}/src/netlib/ssl_layer.c ${SACK_BASE}/src/salty_random_generator/salty_generator.c ${SACK_BASE}/src/salty_random_generator/crypt_util.c ${SACK_BASE}/src/salty_random_generator/block_shuffle.c ${SACK_BASE}/src/contrib/md5lib/md5c.c ${SACK_BASE}/src/contrib/sha1lib/sha1.c ${SACK_BASE}/src/contrib/sha2lib/sha2.c ${SACK_BASE}/src/contrib/sha3lib/sha3.c ${SACK_BASE}/src/contrib/K12/lib/KangarooTwelve.c ${SACK_BASE}/src/contrib/sqlite/sqlite_interface.c ${SACK_BASE}/src/SQLlib/sqlstruc.h ${SACK_BASE}/src/configlib/configscript.c ${SACK_BASE}/src/SQLlib/sqlstub.c ${SACK_BASE}/src/SQLlib/sqlwrap.c ${SACK_BASE}/src/SQLlib/sqlutil.c ${SACK_BASE}/src/SQLlib/guid.c ${SACK_BASE}/src/SQLlib/sqlparse3.c ${SACK_BASE}/src/SQLlib/optlib/getoption.c ${SACK_BASE}/src/SQLlib/optlib/getoption_v4.c ${SACK_BASE}/src/SQLlib/optlib/optionutil.c ${SACK_BASE}/src/SQLlib/optlib/optionutil_v4.c ${SACK_BASE}/src/windows_hardware_library/listhids.c ${SACK_BASE}/src/translationlib/translate.c ${SACK_BASE}/src/deadstart/deadstart_lib.c ) # android has to force this off.... if( ON ) set( EXTRA_SOURCES ${EXTRA_SOURCES} #${SACK_BASE}/src/msgsvr/client/global.h ${SACK_BASE}/src/typelib/msgqueue.c ${SACK_BASE}/src/msgsvr/client/client_common.c ${SACK_BASE}/src/msgsvr/client/client_client.c ${SACK_BASE}/src/msgsvr/client/client_events.c ${SACK_BASE}/src/msgsvr/client/client_input.c ${SACK_BASE}/src/msgsvr/client/client_local.c ${SACK_BASE}/src/msgsvr/client/client_output.c ${SACK_BASE}/src/msgsvr/client/client_service.c ${SACK_BASE}/src/msgsvr/summoner/construct.c ) endif( ON ) if( __ANDROID__ ) set( EXTRA_SOURCES ${EXTRA_SOURCES} ${SACK_BASE}/src/netlib/android_ifaddrs.h ${SACK_BASE}/src/netlib/android_ifaddrs.c ) endif( __ANDROID__ ) set( NEED_UUID OFF ) set( UUID_SOURCES ${SACK_BASE}/src/contrib/uuid-1.6.2/uuid.c ${SACK_BASE}/src/contrib/uuid-1.6.2/uuid_md5.c ${SACK_BASE}/src/contrib/uuid-1.6.2/uuid_sha1.c ${SACK_BASE}/src/contrib/uuid-1.6.2/uuid_dce.c ${SACK_BASE}/src/contrib/uuid-1.6.2/uuid_mac.c ${SACK_BASE}/src/contrib/uuid-1.6.2/uuid_prng.c ${SACK_BASE}/src/contrib/uuid-1.6.2/uuid_str.c ${SACK_BASE}/src/contrib/uuid-1.6.2/uuid_time.c ${SACK_BASE}/src/contrib/uuid-1.6.2/uuid_ui128.c ${SACK_BASE}/src/contrib/uuid-1.6.2/uuid_ui64.c ) if( NEED_UUID ) set( EXTRA_SOURCES ${EXTRA_SOURCES} ${UUID_SOURCES} ) if( MAKING_SACK_CORE ) add_definitions( -D__INTERNAL_UUID__ ) endif( MAKING_SACK_CORE ) add_definitions( -DUUID_SOURCE ) endif( NEED_UUID ) SET( BUILD_AMALGAM on ) set( C_SOURCES ${SACK_BASE}/src/contrib/sqlite/3.23.0-MySqlite/sqlite3.c ) add_custom_command( OUTPUT ${CMAKE_CURRENT_SOURCE_DIR}/src/sack COMMAND ${CMAKE_COMMAND} -E make_directory ${CMAKE_CURRENT_SOURCE_DIR}/src/sack ) add_custom_command( OUTPUT ${CMAKE_CURRENT_SOURCE_DIR}/src/sack/sqlite3.c COMMAND ${CMAKE_COMMAND} -E copy_if_different ${C_SOURCES} ${CMAKE_CURRENT_SOURCE_DIR}/src/sack/ WORKING_DIRECTORY ${CMAKE_BINARY_DIR} DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/src/sack ) if( WIN32 ) set( PPCTOOL c:/tools/ppc.exe ) elseif( APPLE ) set( PPCTOOL /usr/local/bin/ppc ) else() set( PPCTOOL /usr/bin/ppc ) if( NOT EXISTS ${PPCTOOL} ) set( PPCTOOL /usr/local/bin/ppc ) endif( NOT EXISTS ${PPCTOOL} ) endif( WIN32 ) if( EXISTS ${PPCTOOL} ) set( AMALG_COMMAND ${PPCTOOL} -c -K -once -ssio -sd ${INCLUDES} -p -o${CMAKE_CURRENT_SOURCE_DIR}/src/sack/sack.cc ${EXTRA_SOURCES} ) set( AMALG_COMMAND2 ${PPCTOOL} -c -K -once -ssio -sd ${INCLUDES} -p -o${CMAKE_CURRENT_SOURCE_DIR}/src/sack/sack.h ${EXTRA_HEADERS} ) add_custom_command( OUTPUT ${CMAKE_CURRENT_SOURCE_DIR}/src/sack/sack.cc #COMMAND cmake -E echo ${AMALG_COMMAND} COMMAND ${AMALG_COMMAND} #COMMAND cmake -E echo ${AMALG_COMMAND2} COMMAND ${AMALG_COMMAND2} DEPENDS ${EXTRA_SOURCES} ${EXTRA_HEADERS} WORKING_DIRECTORY ${CMAKE_BINARY_DIR} ) add_custom_target( doit DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/src/sack/sack.cc ) endif( EXISTS ${PPCTOOL} ) else( EXISTS ${SACK_BASE} ) foreach( DEF ${DEFINITIONS} ) ADD_DEFINITIONS( -D${DEF} ) ENDFOREACH() endif( EXISTS ${SACK_BASE} ) include_directories(${CMAKE_JS_INC} ${INCLUDES} src/sack ) if( WIN32 ) set( MORE_MODULE_SOURCES src/reg_access.cc src/hid_module.cc # src/fixup_windows_executable.cc ) endif( WIN32 ) add_library(${PROJECT_NAME} SHARED src/vfs_module.cc src/objStore_module.cc src/thread_module.cc src/sql_module.cc src/com_interface.cc src/jsonParse.cc src/jsoxParse.cc src/tls_interface.cc src/srg_module.cc src/websocket_module.cc src/network_module.cc src/config_module.cc src/task_module.cc ${MORE_MODULE_SOURCES} ${CMAKE_CURRENT_SOURCE_DIR}/src/sack/sqlite3.c ${CMAKE_CURRENT_SOURCE_DIR}/src/sack/sack.cc ) set( MOREDEFS "DEFAULT_OUTPUT_STDERR=1" ) set_source_files_properties( ${CMAKE_CURRENT_SOURCE_DIR}/src/sack/sqlite3.c PROPERTIES COMPILE_DEFINITIONS "SQLITE_ENABLE_LOCKING_STYLE=0;SQLITE_THREADSAFE=0;SQLITE_OMIT_UTF16;SQLITE_ENABLE_COLUMN_METADATA;SQLITE_ENABLE_STAT4" ) set_target_properties(${PROJECT_NAME} PROPERTIES PREFIX "" SUFFIX ".node") if( CMAKE_COMPILER_IS_GNUCC ) set_target_properties(${PROJECT_NAME} PROPERTIES COMPILE_FLAGS "-Wno-unused-result") endif( CMAKE_COMPILER_IS_GNUCC ) set_target_properties(${PROJECT_NAME} PROPERTIES COMPILE_DEFINITIONS "BUILDING_NODE_EXTENSION;TARGETNAME=\"${PROJECT_NAME}.node\";${MOREDEFS}" ) target_link_libraries(${PROJECT_NAME} ${CMAKE_JS_LIB}) if( WIN32 ) target_link_libraries(${PROJECT_NAME} winmm ws2_32 rpcrt4 iphlpapi odbc32 psapi ntdll crypt32 cryptui ) endif( WIN32 ) if( UNIX ) target_link_libraries( ${PROJECT_NAME} odbc ) if( NOT APPLE ) target_link_libraries( ${PROJECT_NAME} uuid ) endif( NOT APPLE ) endif( UNIX ) #add_library( ntdll SHARED ntdll.c ) #add_library( kernel32 SHARED kernel32.c )