@@ -6,7 +6,7 @@ set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
66if (NOT XCODE AND NOT MSVC AND NOT CMAKE_BUILD_TYPE )
77 set (CMAKE_BUILD_TYPE Release CACHE STRING "Build type" FORCE)
88 set_property (CACHE CMAKE_BUILD_TYPE PROPERTY STRINGS "Debug" "Release" "MinSizeRel" "RelWithDebInfo" )
9- endif ()
9+ endif ()
1010
1111set (CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR} /bin)
1212set (CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR} /bin)
@@ -21,92 +21,41 @@ find_package(Threads REQUIRED)
2121set (CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR} /cmake;${CMAKE_MODULE_PATH} " )
2222
2323# Instruction set specific
24- option (SD_AVX "sd: enable AVX" ON )
25- option (SD_AVX2 "sd: enable AVX2" ON )
26- option (SD_AVX512 "sd: enable AVX512" OFF )
27- option (SD_FMA "sd: enable FMA" ON )
28-
29-
30-
31- if (MSVC )
32- add_compile_definitions (_CRT_SECURE_NO_WARNINGS)
33-
34- if (BUILD_SHARED_LIBS )
35- set (CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS ON )
36- endif ()
24+ option (SD_AVX "sd: enable AVX" ON )
25+ option (SD_AVX2 "sd: enable AVX2" ON )
26+ option (SD_AVX512 "sd: enable AVX512" OFF )
27+ option (SD_FMA "sd: enable FMA" ON )
28+
29+
30+ set (GGML_AVX512 OFF )
31+ set (GGML_AVX2 OFF )
32+ set (GGML_AVX OFF )
33+
34+ if (SD_AVX512)
35+ set (GGML_AVX512 ON )
36+ elseif (SD_AVX2)
37+ set (GGML_AVX2 ON )
38+ elseif (SD_AVX)
39+ set (GGML_AVX ON )
40+ endif ()
41+ if (SD_FMA)
42+ set (GGML_FMA ON )
3743endif ()
38-
39- if (${CMAKE_SYSTEM_PROCESSOR} MATCHES "arm" OR ${CMAKE_SYSTEM_PROCESSOR} MATCHES "aarch64" )
40- message (STATUS "ARM detected" )
41- if (MSVC )
42- # TODO [llama.cpp]: arm msvc?
43- else ()
44- if (${CMAKE_SYSTEM_PROCESSOR} MATCHES "aarch64" )
45- add_compile_options (-mcpu=native)
46- endif ()
47- # TODO [llama.cpp]: armv6,7,8 version specific flags
48- endif ()
49- elseif (${CMAKE_SYSTEM_PROCESSOR} MATCHES "^(x86_64|i686|AMD64)$" )
50- message (STATUS "x86 detected" )
51- if (MSVC )
52- if (SD_AVX512)
53- add_compile_options ($<$<COMPILE_LANGUAGE:C>:/arch:AVX512>)
54- add_compile_options ($<$<COMPILE_LANGUAGE:CXX>:/arch:AVX512>)
55- # MSVC has no compile-time flags enabling specific
56- # AVX512 extensions, neither it defines the
57- # macros corresponding to the extensions.
58- # Do it manually.
59- elseif (SD_AVX2)
60- add_compile_options ($<$<COMPILE_LANGUAGE:C>:/arch:AVX2>)
61- add_compile_options ($<$<COMPILE_LANGUAGE:CXX>:/arch:AVX2>)
62- elseif (SD_AVX)
63- add_compile_options ($<$<COMPILE_LANGUAGE:C>:/arch:AVX>)
64- add_compile_options ($<$<COMPILE_LANGUAGE:CXX>:/arch:AVX>)
65- endif ()
66- else ()
67- add_compile_options (-mf16c)
68- if (SD_FMA)
69- add_compile_options (-mfma)
70- endif ()
71- if (SD_AVX)
72- add_compile_options (-mavx)
73- endif ()
74- if (SD_AVX2)
75- add_compile_options (-mavx2)
76- endif ()
77- if (SD_AVX512)
78- add_compile_options (-mavx512f)
79- add_compile_options (-mavx512bw)
80- endif ()
81- endif ()
82- else ()
83- # TODO [llama.cpp]: support PowerPC
84- message (STATUS "Unknown architecture" )
85- endif ()
86- # deps
8744
8845include (sd)
8946include_directories (${sd_SOURCE_DIR} )
9047
91- if (APPLE AND NOT GGML_NO_ACCELERATE)
92- find_library (ACCELERATE_FRAMEWORK Accelerate)
93- if (ACCELERATE_FRAMEWORK)
94- message (STATUS "Accelerate framework found" )
95-
96- set (SD_EXTRA_LIBS ${SD_EXTRA_LIBS} ${ACCELERATE_FRAMEWORK} )
97- set (SD_EXTRA_LIBS ${SD_EXTRA_LIBS} -DGGML_USE_ACCELERATE)
98- else ()
99- message (WARNING "Accelerate framework not found" )
100- endif ()
101- endif ()
102-
10348set (SD_ABI sd-abi)
49+
10450add_library (${SD_ABI} SHARED
10551 stable-diffusion-abi.cpp
10652 stable-diffusion-abi.h
10753 base64.hpp)
54+
55+ target_include_directories (${SD_ABI} PUBLIC .)
56+
10857set_target_properties (${SD_ABI} PROPERTIES POSITION_INDEPENDENT_CODE ON )
10958target_compile_definitions (${SD_ABI} PRIVATE STABLE_DIFFUSION_SHARED STABLE_DIFFUSION_BUILD)
110- target_link_libraries (${SD_ABI} PUBLIC $<TARGET_OBJECTS: ggml> $<TARGET_OBJECTS: stable-diffusion> ${SD_EXTRA_LIBS} ${CMAKE_THREAD_LIBS_INIT} )
111- target_include_directories ( ${SD_ABI} PUBLIC .)
59+ target_link_libraries (${SD_ABI} PRIVATE ggml stable-diffusion ${CMAKE_THREAD_LIBS_INIT} )
60+
11261
0 commit comments