2023-04-08 23:28:39 -04:00
cmake_minimum_required ( VERSION 3.16 )
2023-07-12 10:49:24 -04:00
set ( CMAKE_EXPORT_COMPILE_COMMANDS ON )
2023-05-25 15:22:45 -04:00
set ( CMAKE_CXX_STANDARD 20 )
set ( CMAKE_CXX_STANDARD_REQUIRED ON )
2023-04-14 12:19:03 -04:00
if ( APPLE )
2023-04-20 06:35:17 -04:00
option ( BUILD_UNIVERSAL "Build a Universal binary on macOS" OFF )
if ( BUILD_UNIVERSAL )
# Build a Universal binary on macOS
# This requires that the found Qt library is compiled as Universal binaries.
set ( CMAKE_OSX_ARCHITECTURES "arm64;x86_64" CACHE STRING "" FORCE )
else ( )
# Build for the host architecture on macOS
set ( CMAKE_OSX_ARCHITECTURES "${CMAKE_HOST_SYSTEM_PROCESSOR}" CACHE STRING "" FORCE )
endif ( )
2023-04-14 12:19:03 -04:00
endif ( )
2023-04-17 07:50:39 -04:00
set ( APP_VERSION_MAJOR 2 )
2024-05-15 15:27:50 -04:00
set ( APP_VERSION_MINOR 8 )
2024-05-23 10:29:25 -04:00
set ( APP_VERSION_PATCH 1 )
2023-04-16 19:20:43 -04:00
set ( APP_VERSION "${APP_VERSION_MAJOR}.${APP_VERSION_MINOR}.${APP_VERSION_PATCH}" )
# Include the binary directory for the generated header file
include_directories ( "${CMAKE_CURRENT_BINARY_DIR}" )
2023-04-20 19:34:39 -04:00
project ( gpt4all VERSION ${ APP_VERSION } LANGUAGES CXX C )
2023-04-08 23:28:39 -04:00
set ( CMAKE_AUTOMOC ON )
set ( CMAKE_AUTORCC ON )
set ( CMAKE_CXX_STANDARD_REQUIRED ON )
2023-04-26 11:02:05 -04:00
option ( GPT4ALL_LOCALHOST OFF "Build installer for localhost repo" )
2023-04-29 12:13:11 -04:00
option ( GPT4ALL_OFFLINE_INSTALLER "Build an offline installer" OFF )
2023-04-25 19:16:45 -04:00
2023-05-08 08:23:00 -04:00
# Generate a header file with the version number
configure_file (
" $ { C M A K E _ C U R R E N T _ S O U R C E _ D I R } / c m a k e / c o n f i g . h . i n "
" $ { C M A K E _ C U R R E N T _ B I N A R Y _ D I R } / c o n f i g . h "
)
2023-07-01 08:10:14 -04:00
if ( LINUX )
2024-02-05 04:37:59 -05:00
find_package ( Qt6 6.4 COMPONENTS Core Quick WaylandCompositor QuickDialogs2 Svg HttpServer Sql Pdf REQUIRED )
2023-07-01 08:10:14 -04:00
else ( )
2024-02-05 04:37:59 -05:00
find_package ( Qt6 6.4 COMPONENTS Core Quick QuickDialogs2 Svg HttpServer Sql Pdf REQUIRED )
2023-07-01 08:10:14 -04:00
endif ( )
2023-04-21 23:23:57 -04:00
# Get the Qt6Core target properties
get_target_property ( Qt6Core_INCLUDE_DIRS Qt6::Core INTERFACE_INCLUDE_DIRECTORIES )
get_target_property ( Qt6Core_LIBRARY_RELEASE Qt6::Core LOCATION_RELEASE )
# Find the qmake binary
find_program ( QMAKE_EXECUTABLE NAMES qmake qmake6 PATHS ${ Qt6Core_INCLUDE_DIRS } /../.. NO_DEFAULT_PATH )
# Get the Qt 6 root directory
get_filename_component ( Qt6_ROOT_DIR "${Qt6Core_LIBRARY_RELEASE}" DIRECTORY )
get_filename_component ( Qt6_ROOT_DIR "${Qt6_ROOT_DIR}/.." ABSOLUTE )
message ( STATUS "qmake binary: ${QMAKE_EXECUTABLE}" )
message ( STATUS "Qt 6 root directory: ${Qt6_ROOT_DIR}" )
2023-04-08 23:28:39 -04:00
2023-04-26 22:59:37 -04:00
set ( CMAKE_RUNTIME_OUTPUT_DIRECTORY ${ CMAKE_BINARY_DIR } /bin )
2023-05-31 17:04:01 -04:00
add_subdirectory ( ../gpt4all-backend llmodel )
2023-06-09 16:48:46 -04:00
set ( METAL_SHADER_FILE )
if ( ${ CMAKE_SYSTEM_NAME } MATCHES Darwin )
2024-05-15 15:27:50 -04:00
set ( METAL_SHADER_FILE ${ CMAKE_RUNTIME_OUTPUT_DIRECTORY } /default.metallib )
2023-06-09 16:48:46 -04:00
endif ( )
2024-05-09 13:42:46 -04:00
set ( APP_ICON_RESOURCE )
if ( WIN32 )
set ( APP_ICON_RESOURCE "${CMAKE_CURRENT_SOURCE_DIR}/resources/gpt4all.rc" )
elseif ( APPLE )
# The MACOSX_BUNDLE_ICON_FILE variable is added to the Info.plist
# generated by CMake. This variable contains the .icns file name,
# without the path.
set ( MACOSX_BUNDLE_ICON_FILE gpt4all.icns )
# And the following tells CMake where to find and install the file itself.
set ( APP_ICON_RESOURCE "${CMAKE_CURRENT_SOURCE_DIR}/resources/gpt4all.icns" )
set_source_files_properties ( ${ APP_ICON_RESOURCE } PROPERTIES
M A C O S X _ P A C K A G E _ L O C A T I O N " R e s o u r c e s " )
endif ( )
2024-03-29 16:21:40 -04:00
2023-04-08 23:28:39 -04:00
qt_add_executable ( chat
m a i n . c p p
2023-05-01 17:13:20 -04:00
c h a t . h c h a t . c p p
2023-05-01 09:10:05 -04:00
c h a t l l m . h c h a t l l m . c p p
2023-05-04 15:31:41 -04:00
c h a t m o d e l . h c h a t l i s t m o d e l . h c h a t l i s t m o d e l . c p p
2024-03-13 18:23:57 -04:00
c h a t a p i . h c h a t a p i . c p p
2023-05-22 22:13:42 -04:00
d a t a b a s e . h d a t a b a s e . c p p
2023-10-24 12:13:32 -04:00
e m b e d d i n g s . h e m b e d d i n g s . c p p
2023-04-18 21:10:06 -04:00
d o w n l o a d . h d o w n l o a d . c p p
2023-10-24 12:13:32 -04:00
e m b l l m . c p p e m b l l m . h
2023-05-22 22:13:42 -04:00
l o c a l d o c s . h l o c a l d o c s . c p p l o c a l d o c s m o d e l . h l o c a l d o c s m o d e l . c p p
2023-04-08 23:28:39 -04:00
l l m . h l l m . c p p
2023-06-22 15:44:49 -04:00
m o d e l l i s t . h m o d e l l i s t . c p p
2023-06-27 11:54:34 -04:00
m y s e t t i n g s . h m y s e t t i n g s . c p p
2023-06-22 15:44:49 -04:00
n e t w o r k . h n e t w o r k . c p p
2023-05-11 16:46:25 -04:00
s e r v e r . h s e r v e r . c p p
2023-06-01 10:50:42 -04:00
l o g g e r . h l o g g e r . c p p
2023-06-10 10:15:38 -04:00
r e s p o n s e t e x t . h r e s p o n s e t e x t . c p p
2023-06-09 16:48:46 -04:00
$ { M E T A L _ S H A D E R _ F I L E }
2024-05-09 13:42:46 -04:00
$ { A P P _ I C O N _ R E S O U R C E }
2023-04-08 23:28:39 -04:00
)
qt_add_qml_module ( chat
2023-04-23 09:42:35 -04:00
U R I g p t 4 a l l
2023-04-08 23:28:39 -04:00
V E R S I O N 1 . 0
2023-10-24 12:13:32 -04:00
N O _ C A C H E G E N
2023-04-14 14:44:28 -04:00
Q M L _ F I L E S
m a i n . q m l
2023-05-01 13:51:46 -04:00
q m l / C h a t D r a w e r . q m l
2024-03-13 19:57:05 -04:00
q m l / C h a t V i e w . q m l
2023-05-23 14:51:14 -04:00
q m l / C o l l e c t i o n s D i a l o g . q m l
2024-04-18 14:52:29 -04:00
q m l / M o d e l D o w n l o a d e r D i a l o g . q m l
2023-04-28 10:54:05 -04:00
q m l / N e t w o r k D i a l o g . q m l
q m l / N e w V e r s i o n D i a l o g . q m l
2023-04-14 14:44:28 -04:00
q m l / T h u m b s D o w n D i a l o g . q m l
2024-04-18 14:52:29 -04:00
q m l / S e t t i n g s D i a l o g . q m l
2023-04-28 10:54:05 -04:00
q m l / S t a r t u p D i a l o g . q m l
2023-04-23 07:05:43 -04:00
q m l / P o p u p D i a l o g . q m l
2023-05-05 10:47:05 -04:00
q m l / A b o u t D i a l o g . q m l
2023-04-23 09:42:35 -04:00
q m l / T h e m e . q m l
2023-06-30 09:50:09 -04:00
q m l / M o d e l S e t t i n g s . q m l
2023-06-28 23:46:03 -04:00
q m l / A p p l i c a t i o n S e t t i n g s . q m l
q m l / L o c a l D o c s S e t t i n g s . q m l
2024-02-07 09:37:59 -05:00
q m l / S w i t c h M o d e l D i a l o g . q m l
2023-06-28 23:46:03 -04:00
q m l / M y S e t t i n g s T a b . q m l
2023-06-29 13:38:10 -04:00
q m l / M y S e t t i n g s S t a c k . q m l
2024-01-22 14:41:47 -05:00
q m l / M y S e t t i n g s D e s t r u c t i v e B u t t o n . q m l
q m l / M y S e t t i n g s B u t t o n . q m l
q m l / M y S e t t i n g s L a b e l . q m l
q m l / M y S l u g . q m l
2023-05-22 09:01:46 -04:00
q m l / M y B u t t o n . q m l
q m l / M y C o m b o B o x . q m l
2023-07-06 10:53:43 -04:00
q m l / M y D i a l o g . q m l
2023-06-02 22:52:55 -04:00
q m l / M y D i r e c t o r y F i e l d . q m l
2024-01-22 14:41:47 -05:00
q m l / M y T e x t A r e a . q m l
2023-05-22 17:58:37 -04:00
q m l / M y T e x t F i e l d . q m l
q m l / M y C h e c k B o x . q m l
2023-05-31 19:28:09 -04:00
q m l / M y B u s y I n d i c a t o r . q m l
2024-02-07 09:37:59 -05:00
q m l / M y M i n i B u t t o n . q m l
2023-05-31 21:07:14 -04:00
q m l / M y T o o l B u t t o n . q m l
2023-04-10 23:34:34 -04:00
R E S O U R C E S
i c o n s / s e n d _ m e s s a g e . s v g
i c o n s / s t o p _ g e n e r a t i n g . s v g
i c o n s / r e g e n e r a t e . s v g
2023-07-06 10:53:43 -04:00
i c o n s / c l o s e . s v g
2023-04-11 08:54:57 -04:00
i c o n s / c o p y . s v g
2023-05-23 14:51:14 -04:00
i c o n s / d b . s v g
2023-07-09 15:51:59 -04:00
i c o n s / d o w n l o a d . s v g
2023-04-16 01:14:30 -04:00
i c o n s / s e t t i n g s . s v g
2024-02-07 09:37:59 -05:00
i c o n s / e j e c t . s v g
2023-04-14 14:44:28 -04:00
i c o n s / e d i t . s v g
2023-07-01 11:34:21 -04:00
i c o n s / i m a g e . s v g
2023-05-01 20:56:53 -04:00
i c o n s / t r a s h . s v g
2023-04-14 14:44:28 -04:00
i c o n s / n e t w o r k . s v g
i c o n s / t h u m b s _ u p . s v g
i c o n s / t h u m b s _ d o w n . s v g
2024-03-13 08:53:53 -04:00
i c o n s / l e f t _ p a n e l _ c l o s e d . s v g
i c o n s / l e f t _ p a n e l _ o p e n . s v g
2023-04-14 14:44:28 -04:00
i c o n s / l o g o . s v g
2023-04-12 22:12:01 -04:00
i c o n s / l o g o - 3 2 . p n g
i c o n s / l o g o - 4 8 . p n g
2023-04-08 23:28:39 -04:00
)
set_target_properties ( chat PROPERTIES
2023-04-23 22:57:37 -04:00
M A C O S X _ B U N D L E _ G U I _ I D E N T I F I E R g p t 4 a l l
2023-04-08 23:28:39 -04:00
M A C O S X _ B U N D L E _ B U N D L E _ V E R S I O N $ { P R O J E C T _ V E R S I O N }
M A C O S X _ B U N D L E _ S H O R T _ V E R S I O N _ S T R I N G $ { P R O J E C T _ V E R S I O N _ M A J O R } . $ { P R O J E C T _ V E R S I O N _ M I N O R }
M A C O S X _ B U N D L E T R U E
W I N 3 2 _ E X E C U T A B L E T R U E
)
2023-04-23 23:42:55 -04:00
if ( ${ CMAKE_SYSTEM_NAME } MATCHES Darwin )
set_target_properties ( chat PROPERTIES
O U T P U T _ N A M E g p t 4 a l l
)
endif ( )
2023-06-09 16:48:46 -04:00
if ( METAL_SHADER_FILE )
set_target_properties ( chat PROPERTIES
R E S O U R C E $ { M E T A L _ S H A D E R _ F I L E }
)
2024-05-15 18:12:32 -04:00
add_dependencies ( chat ggml-metal )
2023-06-09 16:48:46 -04:00
endif ( )
2023-04-08 23:28:39 -04:00
target_compile_definitions ( chat
P R I V A T E $ < $ < O R : $ < C O N F I G : D e b u g > , $ < C O N F I G : R e l W i t h D e b I n f o > > : Q T _ Q M L _ D E B U G > )
2023-07-01 08:10:14 -04:00
if ( LINUX )
target_link_libraries ( chat
2023-07-01 08:49:39 -04:00
P R I V A T E Q t 6 : : Q u i c k Q t 6 : : S v g Q t 6 : : H t t p S e r v e r Q t 6 : : S q l Q t 6 : : P d f Q t 6 : : W a y l a n d C o m p o s i t o r )
2023-07-01 08:10:14 -04:00
else ( )
target_link_libraries ( chat
2023-06-26 14:10:27 -04:00
P R I V A T E Q t 6 : : Q u i c k Q t 6 : : S v g Q t 6 : : H t t p S e r v e r Q t 6 : : S q l Q t 6 : : P d f )
2023-07-01 08:10:14 -04:00
endif ( )
2023-04-08 23:28:39 -04:00
target_link_libraries ( chat
2023-12-13 12:11:09 -05:00
P R I V A T E l l m o d e l )
2023-04-10 15:03:00 -04:00
2023-04-21 23:23:57 -04:00
set ( COMPONENT_NAME_MAIN ${ PROJECT_NAME } )
2024-03-17 14:25:45 -04:00
if ( CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT )
set ( CMAKE_INSTALL_PREFIX ${ CMAKE_BINARY_DIR } /install CACHE PATH "..." FORCE )
endif ( )
2023-04-21 23:23:57 -04:00
2023-04-10 15:03:00 -04:00
install ( TARGETS chat DESTINATION bin COMPONENT ${ COMPONENT_NAME_MAIN } )
2024-05-15 15:27:50 -04:00
install (
T A R G E T S l l m o d e l
L I B R A R Y D E S T I N A T I O N l i b C O M P O N E N T $ { C O M P O N E N T _ N A M E _ M A I N } # .so/.dylib
R U N T I M E D E S T I N A T I O N b i n C O M P O N E N T $ { C O M P O N E N T _ N A M E _ M A I N } # .dll
)
2023-04-10 15:03:00 -04:00
2023-06-05 09:56:52 -04:00
# We should probably iterate through the list of the cmake for backend, but these need to be installed
# to the this component's dir for the finicky qt installer to work
2024-05-15 15:27:50 -04:00
if ( LLMODEL_KOMPUTE )
set ( MODEL_IMPL_TARGETS
l l a m a m o d e l - m a i n l i n e - k o m p u t e
l l a m a m o d e l - m a i n l i n e - k o m p u t e - a v x o n l y
g p t j - k o m p u t e
g p t j - k o m p u t e - a v x o n l y
)
else ( )
set ( MODEL_IMPL_TARGETS
l l a m a m o d e l - m a i n l i n e - c p u
l l a m a m o d e l - m a i n l i n e - c p u - a v x o n l y
g p t j - c p u
g p t j - c p u - a v x o n l y
)
endif ( )
if ( APPLE )
list ( APPEND MODEL_IMPL_TARGETS llamamodel-mainline-metal )
endif ( )
install (
T A R G E T S $ { M O D E L _ I M P L _ T A R G E T S }
L I B R A R Y D E S T I N A T I O N l i b C O M P O N E N T $ { C O M P O N E N T _ N A M E _ M A I N } # .so/.dylib
R U N T I M E D E S T I N A T I O N l i b C O M P O N E N T $ { C O M P O N E N T _ N A M E _ M A I N } # .dll
)
if ( LLMODEL_CUDA )
set_property ( TARGET llamamodel-mainline-cuda llamamodel-mainline-cuda-avxonly
A P P E N D P R O P E R T Y I N S T A L L _ R P A T H " $ O R I G I N " )
install (
T A R G E T S l l a m a m o d e l - m a i n l i n e - c u d a
l l a m a m o d e l - m a i n l i n e - c u d a - a v x o n l y
R U N T I M E _ D E P E N D E N C Y _ S E T l l a m a - c u d a - d e p s
L I B R A R Y D E S T I N A T I O N l i b C O M P O N E N T $ { C O M P O N E N T _ N A M E _ M A I N } # .so/.dylib
R U N T I M E D E S T I N A T I O N l i b C O M P O N E N T $ { C O M P O N E N T _ N A M E _ M A I N } # .dll
)
if ( WIN32 )
install (
R U N T I M E _ D E P E N D E N C Y _ S E T l l a m a - c u d a - d e p s
P R E _ E X C L U D E _ R E G E X E S " ^ ( n v c u d a | a p i - m s - . * ) \ \ . d l l $ "
P O S T _ I N C L U D E _ R E G E X E S " ( ^ | [ / \ \ \ \ ] ) ( l i b ) ? ( c u d a | c u b l a s ) " P O S T _ E X C L U D E _ R E G E X E S .
D I R E C T O R I E S " $ { C U D A T o o l k i t _ B I N _ D I R } "
D E S T I N A T I O N l i b C O M P O N E N T $ { C O M P O N E N T _ N A M E _ M A I N }
)
endif ( )
2023-06-16 17:18:17 -04:00
endif ( )
2023-06-05 09:56:52 -04:00
2023-04-10 15:03:00 -04:00
set ( CPACK_GENERATOR "IFW" )
2023-04-21 23:23:57 -04:00
set ( CPACK_VERBATIM_VARIABLES YES )
set ( CPACK_IFW_VERBOSE ON )
2023-04-16 22:10:26 -04:00
2023-04-10 16:33:14 -04:00
if ( ${ CMAKE_SYSTEM_NAME } MATCHES Linux )
2023-09-19 13:59:43 -04:00
find_program ( LINUXDEPLOYQT linuxdeployqt HINTS "$ENV{HOME}/dev/linuxdeployqt/build/tools/linuxdeployqt" "$ENV{HOME}/project/linuxdeployqt/bin" )
2023-04-10 16:33:14 -04:00
configure_file ( "${CMAKE_CURRENT_SOURCE_DIR}/cmake/deploy-qt-linux.cmake.in"
" $ { C M A K E _ B I N A R Y _ D I R } / c m a k e / d e p l o y - q t - l i n u x . c m a k e " @ O N L Y )
set ( CPACK_PRE_BUILD_SCRIPTS ${ CMAKE_BINARY_DIR } /cmake/deploy-qt-linux.cmake )
2023-09-19 13:59:43 -04:00
set ( CPACK_IFW_ROOT "~/Qt/Tools/QtInstallerFramework/4.6" )
2023-04-17 15:59:14 -04:00
set ( CPACK_PACKAGE_FILE_NAME "${COMPONENT_NAME_MAIN}-installer-linux" )
2023-04-21 23:23:57 -04:00
set ( CPACK_IFW_TARGET_DIRECTORY "@HomeDir@/${COMPONENT_NAME_MAIN}" )
2023-04-10 16:33:14 -04:00
elseif ( ${ CMAKE_SYSTEM_NAME } MATCHES Windows )
2023-04-10 15:03:00 -04:00
find_program ( WINDEPLOYQT windeployqt HINTS ${ _qt_bin_dir } )
configure_file ( "${CMAKE_CURRENT_SOURCE_DIR}/cmake/deploy-qt-windows.cmake.in"
" $ { C M A K E _ B I N A R Y _ D I R } / c m a k e / d e p l o y - q t - w i n d o w s . c m a k e " @ O N L Y )
set ( CPACK_PRE_BUILD_SCRIPTS ${ CMAKE_BINARY_DIR } /cmake/deploy-qt-windows.cmake )
2023-09-19 13:59:43 -04:00
set ( CPACK_IFW_ROOT "C:/Qt/Tools/QtInstallerFramework/4.6" )
2024-05-09 13:42:46 -04:00
set ( CPACK_IFW_PACKAGE_ICON "${CMAKE_CURRENT_SOURCE_DIR}/resources/gpt4all.ico" )
2023-04-17 15:59:14 -04:00
set ( CPACK_PACKAGE_FILE_NAME "${COMPONENT_NAME_MAIN}-installer-win64" )
2023-04-21 23:23:57 -04:00
set ( CPACK_IFW_TARGET_DIRECTORY "@HomeDir@\\${COMPONENT_NAME_MAIN}" )
2023-04-10 16:33:14 -04:00
elseif ( ${ CMAKE_SYSTEM_NAME } MATCHES Darwin )
2023-04-10 17:13:22 -04:00
find_program ( MACDEPLOYQT macdeployqt HINTS ${ _qt_bin_dir } )
configure_file ( "${CMAKE_CURRENT_SOURCE_DIR}/cmake/deploy-qt-mac.cmake.in"
" $ { C M A K E _ B I N A R Y _ D I R } / c m a k e / d e p l o y - q t - m a c . c m a k e " @ O N L Y )
set ( CPACK_PRE_BUILD_SCRIPTS ${ CMAKE_BINARY_DIR } /cmake/deploy-qt-mac.cmake )
2023-09-19 13:59:43 -04:00
set ( CPACK_IFW_ROOT "~/Qt/Tools/QtInstallerFramework/4.6" )
2024-05-09 13:42:46 -04:00
set ( CPACK_IFW_PACKAGE_ICON "${CMAKE_CURRENT_SOURCE_DIR}/resources/gpt4all.icns" )
2023-04-17 15:59:14 -04:00
set ( CPACK_PACKAGE_FILE_NAME "${COMPONENT_NAME_MAIN}-installer-darwin" )
2023-04-28 21:19:12 -04:00
set ( CPACK_IFW_TARGET_DIRECTORY "@ApplicationsDir@/${COMPONENT_NAME_MAIN}" )
2023-04-23 22:05:24 -04:00
set ( CPACK_BUNDLE_NAME ${ COMPONENT_NAME_MAIN } )
2024-05-09 13:42:46 -04:00
set ( CPACK_BUNDLE_ICON "${CMAKE_CURRENT_SOURCE_DIR}/resources/gpt4all.icns" )
2023-04-10 16:33:14 -04:00
endif ( )
2023-04-10 15:03:00 -04:00
2023-04-17 15:59:14 -04:00
set ( CPACK_PACKAGE_INSTALL_DIRECTORY ${ COMPONENT_NAME_MAIN } )
2023-04-13 04:59:48 -04:00
set ( CPACK_PACKAGE_VERSION_MAJOR ${ PROJECT_VERSION_MAJOR } )
set ( CPACK_PACKAGE_VERSION_MINOR ${ PROJECT_VERSION_MINOR } )
SET ( CPACK_PACKAGE_VERSION_PATCH ${ PROJECT_VERSION_PATCH } )
2023-04-11 12:16:49 -04:00
set ( CPACK_PACKAGE_HOMEPAGE_URL "https://gpt4all.io" )
2023-04-28 21:40:45 -04:00
set ( CPACK_PACKAGE_ICON "${CMAKE_CURRENT_SOURCE_DIR}/icons/logo-48.png" )
2023-04-11 12:16:49 -04:00
set ( CPACK_RESOURCE_FILE_LICENSE ${ CMAKE_CURRENT_SOURCE_DIR } /LICENSE )
set ( CPACK_RESOURCE_FILE_README ${ CMAKE_CURRENT_SOURCE_DIR } /README.md )
2023-04-17 07:50:39 -04:00
set ( CPACK_PACKAGE_EXECUTABLES "GPT4All" )
set ( CPACK_CREATE_DESKTOP_LINKS "GPT4All" )
set ( CPACK_IFW_PACKAGE_NAME "GPT4All" )
set ( CPACK_IFW_PACKAGE_TITLE "GPT4All Installer" )
2023-04-16 19:20:43 -04:00
set ( CPACK_IFW_PACKAGE_PUBLISHER "Nomic, Inc." )
set ( CPACK_IFW_PRODUCT_URL "https://gpt4all.io" )
2023-04-10 15:03:00 -04:00
set ( CPACK_IFW_PACKAGE_WIZARD_STYLE "Aero" )
2023-04-28 21:40:45 -04:00
set ( CPACK_IFW_PACKAGE_LOGO "${CMAKE_CURRENT_SOURCE_DIR}/icons/logo-48.png" )
set ( CPACK_IFW_PACKAGE_WINDOW_ICON "${CMAKE_CURRENT_SOURCE_DIR}/icons/logo-32.png" )
2023-04-10 15:03:00 -04:00
set ( CPACK_IFW_PACKAGE_WIZARD_SHOW_PAGE_LIST OFF )
2023-04-11 12:16:49 -04:00
2023-04-28 21:26:38 -04:00
include ( InstallRequiredSystemLibraries )
2023-04-10 15:03:00 -04:00
include ( CPack )
include ( CPackIFW )
2023-09-18 16:21:34 -04:00
if ( GPT4ALL_OFFLINE_INSTALLER )
cpack_add_component ( ${ COMPONENT_NAME_MAIN } )
else ( )
cpack_add_component ( ${ COMPONENT_NAME_MAIN } DOWNLOADED )
endif ( )
2023-04-10 15:03:00 -04:00
cpack_ifw_configure_component ( ${ COMPONENT_NAME_MAIN } ESSENTIAL FORCED_INSTALLATION )
2023-04-16 19:20:43 -04:00
cpack_ifw_configure_component ( ${ COMPONENT_NAME_MAIN } VERSION ${ APP_VERSION } )
2023-04-21 23:23:57 -04:00
cpack_ifw_configure_component ( ${ COMPONENT_NAME_MAIN } LICENSES "MIT LICENSE" ${ CPACK_RESOURCE_FILE_LICENSE } )
2023-04-12 16:42:17 -04:00
cpack_ifw_configure_component ( ${ COMPONENT_NAME_MAIN } SCRIPT "${CMAKE_CURRENT_SOURCE_DIR}/cmake/installerscript.qs" )
2023-04-13 05:49:00 -04:00
cpack_ifw_configure_component ( ${ COMPONENT_NAME_MAIN } REPLACES "gpt4all-chat" ) #Was used in very earliest prototypes
2023-04-10 15:03:00 -04:00
2023-04-24 01:08:13 -04:00
if ( GPT4ALL_LOCALHOST )
cpack_ifw_add_repository ( "GPT4AllRepository" URL "http://localhost/repository" )
2023-04-29 12:13:11 -04:00
elseif ( GPT4ALL_OFFLINE_INSTALLER )
2023-09-19 13:59:43 -04:00
add_compile_definitions ( GPT4ALL_OFFLINE_INSTALLER )
2023-04-24 01:08:13 -04:00
else ( )
if ( ${ CMAKE_SYSTEM_NAME } MATCHES Linux )
cpack_ifw_add_repository ( "GPT4AllRepository" URL "https://gpt4all.io/installer_repos/linux/repository" )
elseif ( ${ CMAKE_SYSTEM_NAME } MATCHES Windows )
2023-06-04 15:28:58 -04:00
#To sign the target on windows have to create a batch script add use it as a custom target and then use CPACK_IFW_EXTRA_TARGETS to set this extra target
2023-04-24 01:08:13 -04:00
cpack_ifw_add_repository ( "GPT4AllRepository" URL "https://gpt4all.io/installer_repos/windows/repository" )
elseif ( ${ CMAKE_SYSTEM_NAME } MATCHES Darwin )
cpack_ifw_add_repository ( "GPT4AllRepository" URL "https://gpt4all.io/installer_repos/mac/repository" )
endif ( )
2023-04-10 23:34:34 -04:00
endif ( )