Skip to content

Commit ddb3e88

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

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
@@ -187,40 +187,40 @@ clean:
187187
rm -vf *.o main quantize quantize-stats perplexity embedding benchmark-matmult build-info.h
188188

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

225225
libllama.so: llama.o ggml.o $(OBJS)
226226
$(CXX) $(CXXFLAGS) -shared -fPIC -o $@ $^ $(LDFLAGS)
@@ -229,10 +229,31 @@ libllama.so: llama.o ggml.o $(OBJS)
229229
# Tests
230230
#
231231

232-
benchmark-matmult: examples/benchmark/benchmark-matmult.cpp build-info.h ggml.o $(OBJS)
233-
$(CXX) $(CXXFLAGS) $(filter-out build-info.h,$^) -o $@ $(LDFLAGS)
234-
./$@
232+
TARGETS_CPP += benchmark
233+
DEPS_benchmark := examples/benchmark/benchmark-matmult.cpp build-info.h ggml.o $(OBJS)
234+
OUTP_benchmark := benchmark-matmult
235+
EXEC_benchmark := ./benchmark-matmult
235236

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