@d3x0r/sack-gui
Version:
SACK abstraction library exposed to JS to provide low level system services.
335 lines (260 loc) • 11.4 kB
Plain Text
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}" )