UNPKG

@d3x0r/sack-gui

Version:

SACK abstraction library exposed to JS to provide low level system services.

335 lines (260 loc) 11.4 kB
set_property(GLOBAL PROPERTY USE_FOLDERS On) #cmake_minimum_required(VERSION 3.20) # limited by ubuntu 10 to 3.10 cmake_minimum_required(VERSION 3.10) project (sack_gui) if( CMAKE_HOST_SYSTEM_NAME STREQUAL "Android" ) SET( __ANDROID__ ON ) endif( CMAKE_HOST_SYSTEM_NAME STREQUAL "Android" ) ## Compute node version... string(REPLACE "." ";" VERSION_LIST ${NODE_RUNTIMEVERSION}) list(GET VERSION_LIST 0 NODE_VERSION_MAJOR) list(GET VERSION_LIST 1 NODE_VERSION_MINOR) list(GET VERSION_LIST 2 NODE_VERSION_PATCH) ######## if( CMAKE_CXX_COMPILER_ID STREQUAL "Clang" ) add_definitions( -Wno-unused-result -Wno-address-of-packed-member -Wno-parentheses -Wno-empty-body -Wno-switch -Wno-null-conversion -Wno-unused-parameter ) add_definitions( -Wno-deprecated-volatile) endif (CMAKE_CXX_COMPILER_ID STREQUAL "Clang") include( GNUInstallDirs ) ADD_DEFINITIONS( -DBUILD_NODE_ADDON ) if( WIN32 AND (MSVC OR ( CMAKE_CXX_COMPILER_ID STREQUAL "Clang" ) ) ) #message( "----------------------------------------") #add_definitions( -D_CRT_SECURE_NO_WARNINGS -wd4995 -wd4996 ) #add_definitions( -wd4996 ) SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /MP8") if( ${NODE_VERSION_MAJOR} GREATER_EQUAL 22 ) SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /std:c++20") elseif( ${NODE_VERSION_MAJOR} GREATER_EQUAL 19 ) SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /std:c++17") else( ) SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /std:c++14") endif( ) SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} /MP8") SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_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 "/RTC1" "" CMAKE_C_FLAGS_RELWITHDEBINFO ${CMAKE_C_FLAGS_RELWITHDEBINFO} ) string( REPLACE "/RTC1" "" CMAKE_CXX_FLAGS_RELWITHDEBINFO ${CMAKE_CXX_FLAGS_RELWITHDEBINFO} ) string( REPLACE "/Ob1" "/Ob2" CMAKE_CXX_FLAGS_RELWITHDEBINFO ${CMAKE_CXX_FLAGS_RELWITHDEBINFO} ) string( REPLACE "/Ob1" "/Ob2" CMAKE_C_FLAGS_RELWITHDEBINFO ${CMAKE_C_FLAGS_RELWITHDEBINFO} ) #message( "DEBUG: ${CMAKE_C_FLAGS_DEBUG} RELEASE:${CMAKE_C_FLAGS_RELEASE} RELWITH:${CMAKE_C_FLAGS_RELWITHDEBINFO}" ) endif( ) if( CMAKE_COMPILER_IS_GNUCC ) if( ${NODE_VERSION_MAJOR} GREATER_EQUAL 19 ) SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++17") else() SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++14") endif( ${NODE_VERSION_MAJOR} GREATER_EQUAL 19 ) endif( CMAKE_COMPILER_IS_GNUCC ) if( NOT WIN32 ) ADD_DEFINITIONS( -D__LINUX__ ) else( NOT WIN32 ) ADD_DEFINITIONS( -D_CRT_NONSTDC_NO_DEPRECATE ) endif( NOT WIN32 ) if( CMAKE_SIZEOF_VOID_P EQUAL 8 ) SET( __64__ 1 ) ADD_DEFINITIONS( -D__64__ ) endif( CMAKE_SIZEOF_VOID_P EQUAL 8 ) SET(CMAKE_SKIP_BUILD_RPATH TRUE) SET(CMAKE_BUILD_WITH_INSTALL_RPATH TRUE) SET(CMAKE_INSTALL_RPATH "\$ORIGIN/lib") if( CMAKE_COMPILER_IS_GNUCC ) SET( CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -Wl,-Bsymbolic -Wl,--warn-unresolved-symbols" ) SET( CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -Wl,-Bsymbolic -Wl,--warn-unresolved-symbols" ) endif( CMAKE_COMPILER_IS_GNUCC ) #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].*" ) # visual studio headers change with _DEBUG defined... so it can't be release with _DEBUG defined if( NOT CMAKE_CXX_FLAGS_RELWITHDEBINFO MATCHES "-D_DEBUG_INFO" ) set( CMAKE_CXX_FLAGS_RELWITHDEBINFO "${CMAKE_CXX_FLAGS_DEBUG} -D_DEBUG_INFO" ) endif( NOT CMAKE_CXX_FLAGS_RELWITHDEBINFO MATCHES "-D_DEBUG_INFO" ) # visual studio headers change with _DEBUG defined... so it can't be release with _DEBUG defined if( NOT CMAKE_C_FLAGS_RELWITHDEBINFO MATCHES "-D_DEBUG_INFO" ) set( CMAKE_C_FLAGS_RELWITHDEBINFO "${CMAKE_CXX_FLAGS_DEBUG} -D_DEBUG_INFO" ) endif( NOT CMAKE_C_FLAGS_RELWITHDEBINFO MATCHES "-D_DEBUG_INFO" ) if( __ANDROID__ ) ADD_DEFINITIONS( -D__ANDROID__ ) ADD_DEFINITIONS( -D"TARGET_INSTALL_PREFIX=\"${CMAKE_CURRENT_SOURCE_DIR}/build/${CMAKE_BUILD_TYPE}\"" ) endif( __ANDROID__ ) # SACK defaults this to ON because it doesn't expose it. # so the gui can set this here? include( ExternalProject ) if( WIN32 ) set( GIT_REPO file://m:/sack ) else( WIN32 ) set( GIT_REPO file:///home/git/sack ) endif( WIN32 ) if( NOT EXISTS GIT_REPO ) set( GIT_REPO https://github.com/d3x0r/sack ) endif( NOT EXISTS GIT_REPO ) if( EXISTS NEED_LIBRESSL AND NOT NEED_LIBRESSL ) SET( SACK_EXTRA_DEFS ${SACK_EXTRA_DEFS} -DNEED_LIBRESSL=0 ) else( EXISTS NEED_LIBRESSL AND NOT NEED_LIBRESSL ) SET( SACK_EXTRA_DEFS ${SACK_EXTRA_DEFS} -DNEED_LIBRESSL=1 ) endif( EXISTS NEED_LIBRESSL AND NOT NEED_LIBRESSL ) if( EXISTS NEED_ZLIB AND NOT NEED_ZLIB ) SET( SACK_EXTRA_DEFS ${SACK_EXTRA_DEFS} -DNEED_ZLIB=0 ) else( EXISTS NEED_ZLIB AND NOT NEED_ZLIB ) SET( SACK_EXTRA_DEFS ${SACK_EXTRA_DEFS} -DNEED_ZLIB=1 ) endif( EXISTS NEED_ZLIB AND NOT NEED_ZLIB ) if( EXISTS NEED_JPEG AND NOT NEED_JPEG ) SET( SACK_EXTRA_DEFS ${SACK_EXTRA_DEFS} -DNEED_JPEG=0 ) else( EXISTS NEED_JPEG AND NOT NEED_JPEG ) SET( SACK_EXTRA_DEFS ${SACK_EXTRA_DEFS} -DNEED_JPEG=1 ) endif( EXISTS NEED_JPEG AND NOT NEED_JPEG ) if( EXISTS NEED_FREETYPE AND NOT NEED_FREETYPE ) SET( SACK_EXTRA_DEFS ${SACK_EXTRA_DEFS} -DNEED_FREETYPE=0 ) else( EXISTS NEED_FREETYPE AND NOT NEED_FREETYPE ) SET( SACK_EXTRA_DEFS ${SACK_EXTRA_DEFS} -DNEED_FREETYPE=1 ) endif( EXISTS NEED_FREETYPE AND NOT NEED_FREETYPE ) ExternalProject_Add( sack BUILD_ALWAYS ON PREFIX sack-src GIT_REPOSITORY ${GIT_REPO} GIT_SHALLOW 1 INSTALL_DIR ${CMAKE_BINARY_DIR}/${CMAKE_BUILD_TYPE} CMAKE_ARGS -DCMAKE_INSTALL_PREFIX=${CMAKE_BINARY_DIR}/${CMAKE_BUILD_TYPE} -DNEED_PNG=1 -DSACK_LIBRARY_ONLY=1 -DUSE_SYSLOG_STDOUT_DEFAULT=ON -DCMAKE_BINARY_DIR:PATH=${CMAKE_BINARY_DIR} -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE} -DINCLUDE_EXTRAS=1 -DINCLUDE_VULKAN=0 -DLIBRESSL_SKIP_INSTALL=0 -DLIBRESSL_APPS=0 -DLIBRESSL_TESTS=0 ${SACK_EXTRA_DEFS} ) if( EXISTS ${CMAKE_BINARY_DIR}/sack-src/src/sack/src/InterShell.stable ) ExternalProject_Add( intershell PREFIX sack-src BUILD_ALWAYS ON DEPENDS sack SOURCE_DIR ${CMAKE_BINARY_DIR}/sack-src/src/sack/src/InterShell.stable INSTALL_DIR ${CMAKE_BINARY_DIR}/${CMAKE_BUILD_TYPE} CMAKE_ARGS -DCMAKE_INSTALL_PREFIX=${CMAKE_BINARY_DIR}/${CMAKE_BUILD_TYPE} -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE} -DCMAKE_BINARY_DIR:PATH=${CMAKE_BINARY_DIR} -DSACK_SDK_ROOT_PATH=${CMAKE_BINARY_DIR}/${CMAKE_BUILD_TYPE} -DBUILD_INTO_SACK_INSTALL=1 ) ExternalProject_Add( dekware PREFIX sack-src BUILD_ALWAYS ON DEPENDS sack intershell SOURCE_DIR ${CMAKE_BINARY_DIR}/sack-src/src/sack/src/games/dekware INSTALL_DIR ${CMAKE_BINARY_DIR}/${CMAKE_BUILD_TYPE} CMAKE_ARGS -DCMAKE_INSTALL_PREFIX=${CMAKE_BINARY_DIR}/${CMAKE_BUILD_TYPE} -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE} -DCMAKE_BINARY_DIR:PATH=${CMAKE_BINARY_DIR} -DSACK_SDK_ROOT_PATH=${CMAKE_BINARY_DIR}/${CMAKE_BUILD_TYPE} -DINTERSHELL_SDK_ROOT_PATH=${CMAKE_BINARY_DIR}/${CMAKE_BUILD_TYPE} -DBUILD_INTO_SACK_INSTALL=1 ) LINK_DIRECTORIES( ${CMAKE_BINARY_DIR}/${CMAKE_BUILD_TYPE}/${CMAKE_INSTALL_LIBDIR} ) message( "Using libs ${CMAKE_BINARY_DIR}/${CMAKE_BUILD_TYPE}/${CMAKE_INSTALL_LIBDIR}" ) message( "Using libs ${SACK_LIBRARY_DIR}" ) set( DEFINITIONS USE_SQLITE USE_SQLITE_INTERFACE NO_FILEOP_ALIAS NO_OPEN_MACRO _CRT_SECURE_NO_WARNINGS NEED_SHLAPI NEED_SHLOBJ "SQLITE_ENABLE_LOCKING_STYLE=0" SACK_CORE INCLUDE_GUI ) foreach( DEF ${DEFINITIONS} ) ADD_DEFINITIONS( -D${DEF} ) ENDFOREACH() include_directories(${CMAKE_BINARY_DIR}/${CMAKE_BUILD_TYPE}/include/SACK ) include_directories(${CMAKE_BINARY_DIR}/${CMAKE_BUILD_TYPE}/include/SACK/InterShell ) include_directories(${CMAKE_JS_INC} ) if( WIN32 ) set( MORE_MODULE_SOURCES src/hid_module.cc src/reg_access.cc src/playSound_module.cc src/win32/commandline.cc src/win32/window_shell.cc src/gui/sack_systray.cc ) elseif( UNIX ) set( MORE_MODULE_SOURCES src/linux/commandline.cc ) endif( WIN32 ) set( GUI_SOURCES src/gui/sack_psi_module.cc src/gui/sack_systray.cc src/gui/sack_image_module.cc src/gui/sack_render_module.cc src/gui/sack_intershell_module.cc src/gui/sack_vulkan_module.cc ) source_group( "Source Files\\GUI" FILES ${GUI_SOURCES} ) #REGULAR_EXPRESSION src/gui/.*) set( PROJECT sack_gui ) add_library(${PROJECT} SHARED src/com_interface.cc src/fileMonitor_module.cc src/jsonParse.cc src/jsoxParse.cc src/playSound_module.cc src/network_module.cc src/objStore_module.cc src/sql_module.cc src/srg_module.cc src/system_module.cc src/task_module.cc src/text_object.cc src/thread_module.cc src/tls_interface.cc src/websocket_module.cc src/vfs_module.cc src/system_module.cc src/text_object.cc src/config_module.cc src/ssh2_module.cc ${MORE_MODULE_SOURCES} ${GUI_SOURCES} ) set_target_properties(${PROJECT} PROPERTIES PREFIX "" SUFFIX ".node") if( CMAKE_COMPILER_IS_GNUCC ) set_target_properties(${PROJECT} PROPERTIES COMPILE_FLAGS "-Wno-unused-result") endif( CMAKE_COMPILER_IS_GNUCC ) set_target_properties(${PROJECT} PROPERTIES COMPILE_DEFINITIONS "BUILDING_NODE_EXTENSION;TARGETNAME=\"${PROJECT}.node\";${MOREDEFS}" ) add_dependencies( ${PROJECT} sack intershell dekware ) if( UNIX ) target_link_libraries( ${PROJECT} tls ssl crypto ) set( VFSLIB sack_vfs.pp ) set( EXTRACOPY COMMAND ${CMAKE_COMMAND} -E copy_directory ${CMAKE_BINARY_DIR}/sack-${CMAKE_BUILD_TYPE}/${CMAKE_INSTALL_LIBDIR} ${CMAKE_BINARY_DIR}/${CMAKE_BUILD_TYPE} ) else( UNIX ) #target_link_libraries( ${PROJECT} tls ssl crypto ) target_link_libraries( ${PROJECT} tls ssl crypto bcrypt ) set( VFSLIB sack_vfs.pp ) endif( UNIX ) target_link_libraries(${PROJECT} bag++ bag.externals bag.psi++ ${VFSLIB} ${CMAKE_JS_LIB} ) if( WIN32 ) add_custom_target( finalTarget ALL #TARGET ${PROJECT} POST_BUILD #COMMAND cmake -E echo ${AMALG_COMMAND} COMMAND ${CMAKE_COMMAND} -E echo Updating deps.... #COMMAND ${CMAKE_COMMAND} -E copy_directory ${CMAKE_BINARY_DIR}/sack-${CMAKE_BUILD_TYPE}/share ${CMAKE_BINARY_DIR}/${CMAKE_BUILD_TYPE} #COMMAND ${CMAKE_COMMAND} -E copy_directory ${CMAKE_BINARY_DIR}/sack-${CMAKE_BUILD_TYPE}/lib ${CMAKE_BINARY_DIR}/${CMAKE_BUILD_TYPE} #COMMAND ${CMAKE_COMMAND} -E copy_directory ${CMAKE_BINARY_DIR}/sack-${CMAKE_BUILD_TYPE}/bin ${CMAKE_BINARY_DIR}/${CMAKE_BUILD_TYPE} #${EXTRACOPY} COMMENT "Updating Dependancies to build target" #DEPENDS ${PROJECT} ) add_dependencies( finalTarget ${PROJECT} ) endif( WIN32 ) if( WIN32 ) set_property(TARGET ${PROJECT} PROPERTY MSVC_RUNTIME_LIBRARY "MultiThreaded$<$<CONFIG:Debug>:Debug>DLL") target_link_libraries(${PROJECT} winmm ws2_32 rpcrt4 iphlpapi odbc32 psapi ntdll ) endif( WIN32 ) if( UNIX ) target_link_libraries( ${PROJECT} uuid ) endif( UNIX ) endif( EXISTS ${CMAKE_BINARY_DIR}/sack-src/src/sack/src/InterShell.stable ) message( "${CMAKE_C_FLAGS_DEBUG} ${CMAKE_C_FLAGS_RELEASE} ${CMAKE_C_FLAGS_RELWITHDEBINFO}" )