Skip to content

Commit 5b98702

Browse files
committed
4 space indenting for cmake, attempt to clean up my mess in Makefile
1 parent 3bd8ee2 commit 5b98702

File tree

4 files changed

+122
-79
lines changed

4 files changed

+122
-79
lines changed

CMakeLists.txt

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -80,20 +80,20 @@ option(LLAMA_BUILD_EXAMPLES "llama: build examples" ${LLAMA_STANDALONE})
8080
include(${CMAKE_CURRENT_SOURCE_DIR}/scripts/build-info.cmake)
8181

8282
if(EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/.git")
83-
# Add a custom target to regenerate build-info.h when .git/index changes
84-
add_custom_target(BUILD_INFO ALL DEPENDS "${CMAKE_CURRENT_SOURCE_DIR}/build-info.h")
85-
86-
# Add a custom command to generate build-info.h when .git/index changes
87-
add_custom_command(
88-
OUTPUT "${CMAKE_CURRENT_SOURCE_DIR}/build-info.h"
89-
COMMENT "Generating build details from Git"
90-
COMMAND ${CMAKE_COMMAND} -P "${CMAKE_CURRENT_SOURCE_DIR}/scripts/build-info.cmake"
91-
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
92-
DEPENDS "${CMAKE_CURRENT_SOURCE_DIR}/.git/index"
93-
VERBATIM
94-
)
83+
# Add a custom target to regenerate build-info.h when .git/index changes
84+
add_custom_target(BUILD_INFO ALL DEPENDS "${CMAKE_CURRENT_SOURCE_DIR}/build-info.h")
85+
86+
# Add a custom command to generate build-info.h when .git/index changes
87+
add_custom_command(
88+
OUTPUT "${CMAKE_CURRENT_SOURCE_DIR}/build-info.h"
89+
COMMENT "Generating build details from Git"
90+
COMMAND ${CMAKE_COMMAND} -P "${CMAKE_CURRENT_SOURCE_DIR}/scripts/build-info.cmake"
91+
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
92+
DEPENDS "${CMAKE_CURRENT_SOURCE_DIR}/.git/index"
93+
VERBATIM
94+
)
9595
else()
96-
message(WARNING "Git repository not found; to enable automatic generation of build info, make sure Git is installed and the project is a Git repository.")
96+
message(WARNING "Git repository not found; to enable automatic generation of build info, make sure Git is installed and the project is a Git repository.")
9797
endif()
9898

9999
#

Makefile

Lines changed: 58 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -185,40 +185,40 @@ clean:
185185
rm -vf *.o main quantize quantize-stats perplexity embedding benchmark-q4_0-matmult build-info.h
186186

187187
build-info.h: $(GIT_INDEX)
188-
@BUILD_NUMBER="0";\
189-
BUILD_COMMIT="unknown";\
190-
echo "git rev-list HEAD --count"; REV_LIST=`git rev-list HEAD --count`;\
191-
if [ $$? -eq 0 ]; then BUILD_NUMBER=$$REV_LIST; fi;\
192-
echo "git rev-parse HEAD"; REV_PARSE=`git rev-parse HEAD`;\
193-
if [ $$? -eq 0 ]; then BUILD_COMMIT=$$REV_PARSE; fi;\
194-
echo "#ifndef BUILD_INFO_H" > $@;\
195-
echo "#define BUILD_INFO_H" >> $@;\
196-
echo "" >> $@;\
197-
echo "#define BUILD_NUMBER $$BUILD_NUMBER" >> $@;\
198-
echo "#define BUILD_COMMIT \"$$BUILD_COMMIT\"" >> $@;\
199-
echo "" >> $@;\
200-
echo "#endif // BUILD_INFO_H" >> $@;
201-
202-
main: examples/main/main.cpp build-info.h ggml.o llama.o common.o $(OBJS)
203-
$(CXX) $(CXXFLAGS) $(filter-out build-info.h,$^) -o $@ $(LDFLAGS)
204-
@echo
205-
@echo '==== Run ./main -h for help. ===='
206-
@echo
207-
208-
quantize: examples/quantize/quantize.cpp build-info.h ggml.o llama.o $(OBJS)
209-
$(CXX) $(CXXFLAGS) $(filter-out build-info.h,$^) -o $@ $(LDFLAGS)
210-
211-
quantize-stats: examples/quantize-stats/quantize-stats.cpp build-info.h ggml.o llama.o $(OBJS)
212-
$(CXX) $(CXXFLAGS) $(filter-out build-info.h,$^) -o $@ $(LDFLAGS)
213-
214-
perplexity: examples/perplexity/perplexity.cpp build-info.h ggml.o llama.o common.o $(OBJS)
215-
$(CXX) $(CXXFLAGS) $(filter-out build-info.h,$^) -o $@ $(LDFLAGS)
216-
217-
embedding: examples/embedding/embedding.cpp build-info.h ggml.o llama.o common.o $(OBJS)
218-
$(CXX) $(CXXFLAGS) $(filter-out build-info.h,$^) -o $@ $(LDFLAGS)
219-
220-
vdot: pocs/vdot/vdot.cpp ggml.o $(OBJS)
221-
$(CXX) $(CXXFLAGS) $^ -o $@ $(LDFLAGS)
188+
scripts/build-info.sh > $@
189+
190+
#
191+
# Examples
192+
#
193+
194+
TARGETS_CPP += main
195+
DEPS_main := examples/main/main.cpp ggml.o llama.o common.o
196+
EXEC_main :=\
197+
@echo;\
198+
echo "==== Run ./main -h for help. ====";\
199+
echo
200+
201+
TARGETS_CPP += quantize
202+
DEPS_quantize := examples/quantize/quantize.cpp ggml.o llama.o
203+
204+
TARGETS_CPP += quantize-stats
205+
DEPS_quantize-stats := examples/quantize-stats/quantize-stats.cpp ggml.o llama.o
206+
207+
TARGETS_CPP += perplexity
208+
DEPS_perplexity := examples/perplexity/perplexity.cpp ggml.o llama.o common.o
209+
210+
TARGETS_CPP += embedding
211+
DEPS_embedding := examples/embedding/embedding.cpp ggml.o llama.o common.o
212+
213+
TARGETS_CPP += save-load-state
214+
DEPS_save-load-state := examples/save-load-state/save-load-state.cpp ggml.o llama.o common.o
215+
216+
TARGETS_CPP += vdot
217+
DEPS_vdot := pocs/vdot/vdot.cpp ggml.o
218+
219+
#
220+
# libllama
221+
#
222222

223223
libllama.so: llama.o ggml.o $(OBJS)
224224
$(CXX) $(CXXFLAGS) -shared -fPIC -o $@ $^ $(LDFLAGS)
@@ -227,10 +227,31 @@ libllama.so: llama.o ggml.o $(OBJS)
227227
# Tests
228228
#
229229

230-
benchmark: examples/benchmark/benchmark-q4_0-matmult.c build-info.h ggml.o $(OBJS)
231-
$(CXX) $(CXXFLAGS) $(filter-out build-info.h,$^) -o benchmark-q4_0-matmult $(LDFLAGS)
232-
./benchmark-q4_0-matmult
230+
TARGETS_CPP += benchmark
231+
DEPS_benchmark := examples/benchmark/benchmark-q4_0-matmult.c build-info.h ggml.o $(OBJS)
232+
OUTP_benchmark := benchmark-q4_0-matmult
233+
EXEC_benchmark := ./benchmark-q4_0-matmult
233234

234235
.PHONY: tests
235236
tests:
236237
bash ./tests/run-tests.sh
238+
239+
#
240+
# Templates
241+
#
242+
243+
# C++ template
244+
# To use this template:
245+
# 1. Add your target to the TARGETS variable: TARGETS_CPP += target
246+
# 2. Set target-specific dependencies: DEPS_target := source1 dependency1 dependency2 ...
247+
# 3. Optionally, set target-specific output: OUTP_target := output_name
248+
# 4. Optionally, set target-specific command: EXEC_target := command
249+
define template_cpp
250+
OUTP_$(1) ?= $(1)
251+
$(1): $$(DEPS_$(1)) $$(OBJS) build-info.h
252+
$$(CXX) $$(CXXFLAGS) $$(filter-out build-info.h,$$^) -o $$(OUTP_$(1)) $$(LDFLAGS)
253+
$$(if $$(value EXEC_$(1)),$$(EXEC_$(1)))
254+
endef
255+
256+
# This iterates through TARGETS_CPP and call the template for each target
257+
$(foreach target,$(TARGETS_CPP),$(eval $(call template_cpp,$(target))))

scripts/build-info.cmake

Lines changed: 29 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -3,38 +3,38 @@ set(COUNT 0)
33

44
find_package(Git)
55
if(NOT Git_FOUND)
6-
execute_process(
7-
COMMAND which git
8-
OUTPUT_VARIABLE GIT_EXECUTABLE
9-
OUTPUT_STRIP_TRAILING_WHITESPACE
10-
)
11-
if(NOT GIT_EXECUTABLE STREQUAL "")
12-
set(Git_FOUND TRUE)
13-
message(STATUS "Found Git using 'which': ${GIT_EXECUTABLE}")
14-
else()
15-
message(WARNING "Git not found using 'find_package' or 'which'. Build info will not be accurate. Consider installing Git or ensuring it is in the PATH.")
16-
endif()
6+
execute_process(
7+
COMMAND which git
8+
OUTPUT_VARIABLE GIT_EXECUTABLE
9+
OUTPUT_STRIP_TRAILING_WHITESPACE
10+
)
11+
if(NOT GIT_EXECUTABLE STREQUAL "")
12+
set(Git_FOUND TRUE)
13+
message(STATUS "Found Git using 'which': ${GIT_EXECUTABLE}")
14+
else()
15+
message(WARNING "Git not found using 'find_package' or 'which'. Build info will not be accurate. Consider installing Git or ensuring it is in the PATH.")
16+
endif()
1717
endif()
1818

1919
if(Git_FOUND)
20-
execute_process(
21-
COMMAND ${GIT_EXECUTABLE} rev-parse HEAD
22-
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
23-
OUTPUT_VARIABLE TEMP_HEAD
24-
OUTPUT_STRIP_TRAILING_WHITESPACE
25-
RESULT_VARIABLE GIT_HEAD_RESULT
26-
)
27-
execute_process(
28-
COMMAND ${GIT_EXECUTABLE} rev-list --count HEAD
29-
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
30-
OUTPUT_VARIABLE TEMP_COUNT
31-
OUTPUT_STRIP_TRAILING_WHITESPACE
32-
RESULT_VARIABLE GIT_COUNT_RESULT
33-
)
34-
if(GIT_HEAD_RESULT EQUAL 0 AND GIT_COUNT_RESULT EQUAL 0)
35-
set(HEAD ${TEMP_HEAD})
36-
set(COUNT ${TEMP_COUNT})
37-
endif()
20+
execute_process(
21+
COMMAND ${GIT_EXECUTABLE} rev-parse HEAD
22+
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
23+
OUTPUT_VARIABLE TEMP_HEAD
24+
OUTPUT_STRIP_TRAILING_WHITESPACE
25+
RESULT_VARIABLE GIT_HEAD_RESULT
26+
)
27+
execute_process(
28+
COMMAND ${GIT_EXECUTABLE} rev-list --count HEAD
29+
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
30+
OUTPUT_VARIABLE TEMP_COUNT
31+
OUTPUT_STRIP_TRAILING_WHITESPACE
32+
RESULT_VARIABLE GIT_COUNT_RESULT
33+
)
34+
if(GIT_HEAD_RESULT EQUAL 0 AND GIT_COUNT_RESULT EQUAL 0)
35+
set(HEAD ${TEMP_HEAD})
36+
set(COUNT ${TEMP_COUNT})
37+
endif()
3838
endif()
3939

4040
file(WRITE "${CMAKE_CURRENT_SOURCE_DIR}/build-info.h" "\

scripts/build-info.sh

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
#!/bin/sh
2+
3+
BUILD_NUMBER="0"
4+
BUILD_COMMIT="unknown"
5+
6+
REV_LIST=$(git rev-list HEAD --count)
7+
if [ $? -eq 0 ]; then
8+
BUILD_NUMBER=$REV_LIST
9+
fi
10+
11+
REV_PARSE=$(git rev-parse HEAD)
12+
if [ $? -eq 0 ]; then
13+
BUILD_COMMIT=$REV_PARSE
14+
fi
15+
16+
echo "#ifndef BUILD_INFO_H"
17+
echo "#define BUILD_INFO_H"
18+
echo ""
19+
echo "#define BUILD_NUMBER $BUILD_NUMBER"
20+
echo "#define BUILD_COMMIT \"$BUILD_COMMIT\""
21+
echo ""
22+
echo "#endif // BUILD_INFO_H"

0 commit comments

Comments
 (0)