|
1 |
| -.PHONY: all clean format debug release duckdb_debug duckdb_release pull update |
| 1 | +PROJ_DIR := $(dir $(abspath $(lastword $(MAKEFILE_LIST)))) |
2 | 2 |
|
3 |
| -all: release |
| 3 | +# Configuration of extension |
| 4 | +EXT_NAME=excel |
| 5 | +EXT_CONFIG=${PROJ_DIR}extension_config.cmake |
4 | 6 |
|
5 |
| -DUCKDB_SRCDIR ?= "./duckdb/" |
6 |
| - |
7 |
| -MKFILE_PATH := $(abspath $(lastword $(MAKEFILE_LIST))) |
8 |
| -PROJ_DIR := $(dir $(MKFILE_PATH)) |
9 |
| - |
10 |
| -TEST_PATH="/test/unittest" |
11 |
| -DUCKDB_PATH="/duckdb" |
12 |
| - |
13 |
| -# For non-MinGW windows the path is slightly different |
14 |
| -ifeq ($(OS),Windows_NT) |
15 |
| -ifneq ($(CXX),g++) |
16 |
| - TEST_PATH="/test/Release/unittest.exe" |
17 |
| - DUCKDB_PATH="/Release/duckdb.exe" |
18 |
| -endif |
19 |
| -endif |
20 |
| - |
21 |
| -#### OSX config |
22 |
| -OSX_BUILD_FLAG= |
23 |
| -ifneq (${OSX_BUILD_ARCH}, "") |
24 |
| - OSX_BUILD_FLAG=-DOSX_BUILD_ARCH=${OSX_BUILD_ARCH} |
25 |
| -endif |
26 |
| - |
27 |
| -#### VCPKG config |
28 |
| -VCPKG_TOOLCHAIN_PATH?= |
29 |
| -ifneq ("${VCPKG_TOOLCHAIN_PATH}", "") |
30 |
| - TOOLCHAIN_FLAGS:=${TOOLCHAIN_FLAGS} -DVCPKG_MANIFEST_DIR='${PROJ_DIR}' -DVCPKG_BUILD=1 -DCMAKE_TOOLCHAIN_FILE='${VCPKG_TOOLCHAIN_PATH}' |
31 |
| -endif |
32 |
| -ifneq ("${VCPKG_TARGET_TRIPLET}", "") |
33 |
| - TOOLCHAIN_FLAGS:=${TOOLCHAIN_FLAGS} -DVCPKG_TARGET_TRIPLET='${VCPKG_TARGET_TRIPLET}' |
34 |
| -endif |
35 |
| -ifeq (${USE_MERGED_VCPKG_MANIFEST}, 1) |
36 |
| - TOOLCHAIN_FLAGS:=${TOOLCHAIN_FLAGS} -DVCPKG_MANIFEST_DIR='${PROJ_DIR}build/extension_configuration' |
37 |
| -else |
38 |
| - TOOLCHAIN_FLAGS:=${TOOLCHAIN_FLAGS} -DVCPKG_MANIFEST_DIR='${PROJ_DIR}' |
39 |
| -endif |
40 |
| - |
41 |
| -#### Enable Ninja as generator |
42 |
| -ifeq ($(GEN),ninja) |
43 |
| - GENERATOR=-G "Ninja" -DFORCE_COLORED_OUTPUT=1 |
44 |
| -endif |
45 |
| - |
46 |
| -EXT_NAME=spatial |
47 |
| - |
48 |
| -#### Configuration for this extension |
49 |
| -EXTENSION_NAME=SPATIAL |
50 |
| -EXTENSION_FLAGS=\ |
51 |
| --DENABLE_SANITIZER=OFF \ |
52 |
| --DDUCKDB_EXTENSION_NAMES="spatial" \ |
53 |
| --DDUCKDB_EXTENSION_${EXTENSION_NAME}_PATH="$(PROJ_DIR)" \ |
54 |
| --DDUCKDB_EXTENSION_${EXTENSION_NAME}_SHOULD_LINK=1 \ |
55 |
| --DDUCKDB_EXTENSION_${EXTENSION_NAME}_LOAD_TESTS=1 \ |
56 |
| --DDUCKDB_EXTENSION_${EXTENSION_NAME}_INCLUDE_PATH="$(PROJ_DIR)spatial/include" \ |
57 |
| --DDUCKDB_EXTENSION_${EXTENSION_NAME}_TEST_PATH="$(PROJ_DIR)test" \ |
58 |
| --DDUCKDB_EXTENSION_${EXTENSION_NAME}_LINKED_LIBS="../../deps/local/lib/*.a" |
59 |
| - |
60 |
| -#### Add more of the DuckDB in-tree extensions here that you need (also feel free to remove them when not needed) |
61 |
| -EXTRA_EXTENSIONS_FLAG=-DBUILD_EXTENSIONS="parquet;json" |
62 |
| - |
63 |
| -BUILD_FLAGS=-DEXTENSION_STATIC_BUILD=1 $(EXTENSION_FLAGS) ${EXTRA_EXTENSIONS_FLAG} $(OSX_BUILD_FLAG) $(TOOLCHAIN_FLAGS) -DDUCKDB_EXPLICIT_PLATFORM='${DUCKDB_PLATFORM}' |
64 |
| -ifeq (${BUILD_SHELL}, 0) |
65 |
| - BUILD_FLAGS += -DBUILD_SHELL=0 |
66 |
| -else |
67 |
| - ifeq ($(OS),Windows_NT) |
68 |
| - BUILD_FLAGS += -DBUILD_SHELL=0 |
69 |
| - endif |
70 |
| -endif |
71 |
| - |
72 |
| -ifeq (${BUILD_BENCHMARK}, 1) |
73 |
| - BUILD_FLAGS += -DBUILD_BENCHMARKS=1 |
74 |
| -endif |
75 |
| - |
76 |
| -CLIENT_FLAGS:= |
77 |
| - |
78 |
| -#### Main build |
79 |
| -# For regular CLI build, we link the spatial extension directly into the DuckDB executable |
80 |
| -CLIENT_FLAGS=-DDUCKDB_EXTENSION_${EXTENSION_NAME}_SHOULD_LINK=1 |
81 |
| - |
82 |
| -debug: |
83 |
| - mkdir -p build/debug && \ |
84 |
| - cmake $(GENERATOR) $(BUILD_FLAGS) $(CLIENT_FLAGS) -DCMAKE_BUILD_TYPE=Debug -S ./duckdb/ -B build/debug && \ |
85 |
| - cmake --build build/debug --config Debug |
86 |
| - |
87 |
| -release: |
88 |
| - mkdir -p build/release && \ |
89 |
| - cmake $(GENERATOR) $(BUILD_FLAGS) $(CLIENT_FLAGS) -DCMAKE_BUILD_TYPE=Release -S ./duckdb/ -B build/release && \ |
90 |
| - cmake --build build/release --config Release |
91 |
| - |
92 |
| -reldebug: |
93 |
| - mkdir -p build/reldebug && \ |
94 |
| - cmake $(GENERATOR) $(BUILD_FLAGS) $(CLIENT_FLAGS) -DCMAKE_BUILD_TYPE=RelWithDebInfo -S ./duckdb/ -B build/reldebug && \ |
95 |
| - cmake --build build/reldebug --config RelWithDebInfo |
96 |
| - |
97 |
| -##### Client build |
98 |
| -JS_BUILD_FLAGS=-DBUILD_NODE=1 -DDUCKDB_EXTENSION_${EXTENSION_NAME}_SHOULD_LINK=0 |
99 |
| -PY_BUILD_FLAGS=-DBUILD_PYTHON=1 -DDUCKDB_EXTENSION_${EXTENSION_NAME}_SHOULD_LINK=0 |
100 |
| - |
101 |
| -debug_js: CLIENT_FLAGS=$(JS_BUILD_FLAGS) |
102 |
| -debug_js: debug |
103 |
| -debug_python: CLIENT_FLAGS=$(PY_BUILD_FLAGS) |
104 |
| -debug_python: debug |
105 |
| -release_js: CLIENT_FLAGS=$(JS_BUILD_FLAGS) |
106 |
| -release_js: release |
107 |
| -release_python: CLIENT_FLAGS=$(PY_BUILD_FLAGS) |
108 |
| -release_python: release |
109 |
| - |
110 |
| -# Main tests |
111 |
| -test: test_release |
112 |
| - |
113 |
| -test_release: release |
114 |
| - ./build/release/$(TEST_PATH) "$(PROJ_DIR)test/*" |
115 |
| - |
116 |
| -test_debug: debug |
117 |
| - ./build/debug/$(TEST_PATH) "$(PROJ_DIR)test/*" |
118 |
| - |
119 |
| -#### Client tests |
120 |
| -DEBUG_EXT_PATH='$(PROJ_DIR)build/debug/extension/spatial/spatial.duckdb_extension' |
121 |
| -RELEASE_EXT_PATH='$(PROJ_DIR)build/release/extension/spatial/spatial.duckdb_extension' |
122 |
| - |
123 |
| -test_js: test_debug_js |
124 |
| - |
125 |
| -test_debug_js: debug_js |
126 |
| - cd duckdb/tools/nodejs && ${EXTENSION_NAME}_EXTENSION_BINARY_PATH=$(DEBUG_EXT_PATH) npm run test-path -- "../../../test/nodejs/**/*.js" |
127 |
| - |
128 |
| -test_release_js: release_js |
129 |
| - cd duckdb/tools/nodejs && ${EXTENSION_NAME}_EXTENSION_BINARY_PATH=$(RELEASE_EXT_PATH) npm run test-path -- "../../../test/nodejs/**/*.js" |
130 |
| - |
131 |
| -test_python: test_debug_python |
132 |
| - |
133 |
| -test_debug_python: debug_python |
134 |
| - cd test/python && ${EXTENSION_NAME}_EXTENSION_BINARY_PATH=$(DEBUG_EXT_PATH) python3 -m pytest |
135 |
| - |
136 |
| -test_release_python: release_python |
137 |
| - cd test/python && ${EXTENSION_NAME}_EXTENSION_BINARY_PATH=$(RELEASE_EXT_PATH) python3 -m pytest |
138 |
| - |
139 |
| -#### Misc |
140 |
| -format: |
141 |
| - find spatial/src/ -iname *.hpp -o -iname *.cpp | xargs clang-format --sort-includes=0 -style=file -i |
142 |
| - find spatial/include -iname *.hpp -o -iname *.cpp | xargs clang-format --sort-includes=0 -style=file -i |
143 |
| - cmake-format -i spatial/src/CMakeLists.txt |
144 |
| - |
145 |
| -update: |
146 |
| - git submodule update --remote --merge |
147 |
| - |
148 |
| -pull: |
149 |
| - git submodule init |
150 |
| - git submodule update --recursive --remote |
151 |
| - |
152 |
| -clean: |
153 |
| - rm -rf build |
154 |
| - rm -rf testext |
155 |
| -#cd duckdb && make clean |
156 |
| -#cd duckdb && make clean-python |
157 |
| - |
158 |
| -# WASM config |
159 |
| -VCPKG_EMSDK_FLAGS=-DVCPKG_CHAINLOAD_TOOLCHAIN_FILE=$(EMSDK)/upstream/emscripten/cmake/Modules/Platform/Emscripten.cmake |
160 |
| -WASM_COMPILE_TIME_COMMON_FLAGS=-DWASM_LOADABLE_EXTENSIONS=1 -DBUILD_EXTENSIONS_ONLY=1 -DSKIP_EXTENSIONS="parquet;json" $(VCPKG_EMSDK_FLAGS) |
161 |
| -WASM_CXX_MVP_FLAGS= |
162 |
| -WASM_CXX_EH_FLAGS=$(WASM_CXX_MVP_FLAGS) -fwasm-exceptions -DWEBDB_FAST_EXCEPTIONS=1 |
163 |
| -WASM_CXX_THREADS_FLAGS=$(WASM_COMPILE_TIME_EH_FLAGS) -DWITH_WASM_THREADS=1 -DWITH_WASM_SIMD=1 -DWITH_WASM_BULK_MEMORY=1 -pthread |
164 |
| -WASM_LINK_TIME_FLAGS=-O3 -sSIDE_MODULE=2 -sEXPORTED_FUNCTIONS="_${EXT_NAME}_version,_${EXT_NAME}_init" |
165 |
| - |
166 |
| -# WASM targets |
167 |
| -wasm_mvp: |
168 |
| - mkdir -p build/wasm_mvp |
169 |
| - emcmake cmake $(GENERATOR) $(EXTENSION_FLAGS) $(WASM_COMPILE_TIME_COMMON_FLAGS) -Bbuild/wasm_mvp -DCMAKE_CXX_FLAGS="$(WASM_CXX_MVP_FLAGS)" -S $(DUCKDB_SRCDIR) -DDUCKDB_EXPLICIT_PLATFORM=wasm_mvp -DDUCKDB_CUSTOM_PLATFORM=wasm_mvp |
170 |
| - emmake make -j8 -Cbuild/wasm_mvp |
171 |
| - |
172 |
| -wasm_eh: |
173 |
| - mkdir -p build/wasm_eh |
174 |
| - emcmake cmake $(GENERATOR) $(EXTENSION_FLAGS) $(WASM_COMPILE_TIME_COMMON_FLAGS) -Bbuild/wasm_eh -DCMAKE_CXX_FLAGS="$(WASM_CXX_EH_FLAGS)" -S $(DUCKDB_SRCDIR) -DDUCKDB_EXPLICIT_PLATFORM=wasm_eh -DDUCKDB_CUSTOM_PLATFORM=wasm_eh |
175 |
| - emmake make -j8 -Cbuild/wasm_eh |
176 |
| - |
177 |
| -wasm_threads: |
178 |
| - mkdir -p ./build/wasm_threads |
179 |
| - emcmake cmake $(GENERATOR) $(EXTENSION_FLAGS) $(WASM_COMPILE_TIME_COMMON_FLAGS) -Bbuild/wasm_threads -DCMAKE_CXX_FLAGS="$(WASM_CXX_THREADS_FLAGS)" -S $(DUCKDB_SRCDIR) -DDUCKDB_EXPLICIT_PLATFORM=wasm_threads -DDUCKDB_CUSTOM_PLATFORM=wasm_threads |
180 |
| - emmake make -j8 -Cbuild/wasm_threads |
| 7 | +# Include the Makefile from extension-ci-tools |
| 8 | +include extension-ci-tools/makefiles/duckdb_extension.Makefile |
0 commit comments