set_property(GLOBAL PROPERTY USE_FOLDERS On) cmake_minimum_required(VERSION 3.0) project (sack_gui) ADD_DEFINITIONS( -DBUILD_NODE_ADDON ) 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 "${CMAKE_BINARY_DIR}/${CMAKE_BUILD_TYPE}") 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" ) 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 git://github.com/d3x0r/sack ) endif( NOT EXISTS GIT_REPO ) ExternalProject_Add( sack PREFIX sack-src GIT_REPOSITORY ${GIT_REPO} GIT_SHALLOW 1 INSTALL_DIR ${CMAKE_BINARY_DIR}/sack-${CMAKE_BUILD_TYPE} CMAKE_ARGS -DNEED_JPEG=1 -DNEED_FREETYPE=1 -DNEED_PNG=1 -DNEED_ZLIB=1 -DSACK_LIBRARY_ONLY=1 -DUSE_SYSLOG_STDOUT_DEFAULT=ON -DCMAKE_INSTALL_PREFIX=${CMAKE_BINARY_DIR}/sack-${CMAKE_BUILD_TYPE} -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE} -DINCLUDE_EXTRAS=1 ) if( EXISTS ${CMAKE_BINARY_DIR}/sack-src/src/sack/src/InterShell.stable ) ExternalProject_Add( intershell PREFIX sack-src DEPENDS sack SOURCE_DIR ${CMAKE_BINARY_DIR}/sack-src/src/sack/src/InterShell.stable INSTALL_DIR ${CMAKE_BINARY_DIR}/sack-${CMAKE_BUILD_TYPE} CMAKE_ARGS -DCMAKE_INSTALL_PREFIX=${CMAKE_BINARY_DIR}/sack-${CMAKE_BUILD_TYPE} -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE} -DSACK_SDK_ROOT_PATH=${CMAKE_BINARY_DIR}/sack-${CMAKE_BUILD_TYPE} -DBUILD_INTO_SACK_INSTALL=1 ) if( UNIX AND __64__ ) set( LIB_SUFFIX 64 ) endif( UNIX AND __64__ ) LINK_DIRECTORIES( ${CMAKE_BINARY_DIR}/sack-${CMAKE_BUILD_TYPE}/lib${LIB_SUFFIX} ) 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_JS_INC} ${CMAKE_BINARY_DIR}/sack-${CMAKE_BUILD_TYPE}/include/SACK ) if( WIN32 ) set( MORE_MODULE_SOURCES src/hid_module.cc src/reg_access.cc ) endif( WIN32 ) set( GUI_SOURCES src/gui/sack_psi_module.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/.*) add_library(${PROJECT_NAME} SHARED src/vfs_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/objStore_module.cc src/network_module.cc src/task_module.cc src/objStore_module.cc ${MORE_MODULE_SOURCES} ${GUI_SOURCES} ) 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}" ) add_dependencies( ${PROJECT_NAME} sack intershell ) if( UNIX ) set( VFSLIB :sack_vfs.pp.module ) set( EXTRACOPY COMMAND ${CMAKE_COMMAND} -E copy_directory ${CMAKE_BINARY_DIR}/sack-${CMAKE_BUILD_TYPE}/lib${LIB_SUFFIX} ${CMAKE_BINARY_DIR}/${CMAKE_BUILD_TYPE} ) else( UNIX ) set( VFSLIB sack_vfs.pp.module ) endif( UNIX ) target_link_libraries(${PROJECT_NAME} bag++ bag.externals bag.psi++ ${VFSLIB} ${CMAKE_JS_LIB} ) add_custom_command( TARGET ${PROJECT_NAME} 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}/bin ${CMAKE_BINARY_DIR}/${CMAKE_BUILD_TYPE} COMMAND ${CMAKE_COMMAND} -E copy_directory ${CMAKE_BINARY_DIR}/sack-${CMAKE_BUILD_TYPE}/resources ${CMAKE_BINARY_DIR}/resources ${EXTRACOPY} DEPENDS ${PROJECT_NAME} ) if( WIN32 ) target_link_libraries(${PROJECT_NAME} winmm ws2_32 rpcrt4 iphlpapi odbc32 psapi ntdll ) endif( WIN32 ) if( UNIX ) target_link_libraries( ${PROJECT_NAME} uuid ) endif( UNIX ) endif( EXISTS ${CMAKE_BINARY_DIR}/sack-src/src/sack/src/InterShell.stable )