97 lines
2.9 KiB
Makefile
97 lines
2.9 KiB
Makefile
#-----------------------------------------------------------------------------#
|
|
|
|
PARQUETDIR := /home/mario/Desktop/Record_Evolution/parquet-cpp
|
|
ARROWDIR := /home/mario/Desktop/Record_Evolution/arrow/cpp/src
|
|
|
|
CPP := g++ -std=c++14
|
|
OPT :=
|
|
#-Wall -Woverflow -Wpedantic -Wextra -Waddress -Waligned-new -Walloc-zero
|
|
|
|
prepare : collect_parquet modify_parquet collect_arrow modify_arrow
|
|
|
|
collect_parquet :
|
|
cp -r $(PARQUETDIR)/src/parquet ./
|
|
cp $(PARQUETDIR)/examples/low-level-api/reader_writer.h ./
|
|
cp $(PARQUETDIR)/examples/low-level-api/reader-writer.cc ./
|
|
|
|
modify_parquet :
|
|
cp parquet/parquet_version.h.in parquet/parquet_version.h
|
|
sed -i 's/ReadableFileInterface/ReadWriteFileInterface/g' parquet/util/memory.h
|
|
sed -i 's/ReadableFileInterface/ReadWriteFileInterface/g' parquet/file_reader.h
|
|
sed -i 's/arrow::Codec/arrow::util::Codec/g' parquet/util/memory.h
|
|
sed -i 's/valid_bits_writer/valid_bits_offset/g' parquet/column_reader.h
|
|
|
|
collect_arrow :
|
|
cp -r $(ARROWDIR)/arrow ./
|
|
|
|
modify_arrow :
|
|
cp arrow/util/bit_util.h arrow/util/bit-util.h
|
|
|
|
collect_test :
|
|
cp $(PARQUETDIR)/examples/low-level-api/reader-writer.cc ./
|
|
|
|
subst :
|
|
sed -i 's/#include \"arrow\//\/\/#include \"arrow/g' parquet/properties.h
|
|
|
|
test :
|
|
$(CPP) $(OPT) -I$(PWD) reader-writer.cc
|
|
|
|
clean :
|
|
rm -r parquet/ arrow/
|
|
rm reader-writer.cc reader_writer.h
|
|
#-----------------------------------------------------------------------------#
|
|
|
|
# choose shell
|
|
SHELL:=/bin/bash
|
|
|
|
SRC = reader-writer
|
|
|
|
# specify path of cloned directory
|
|
ARROWGIT := /home/mario/Desktop/Record_Evolution/arrow
|
|
|
|
filewriter : parquet/file_writer.cc
|
|
$(CPP) -c $(OPT) $<
|
|
|
|
# build executable (and generate dependency file)
|
|
readwrite : reader-writer.cc
|
|
$(CPP) $(OPT) -MMD $< -I ./
|
|
|
|
# generate dependency file
|
|
$(SRC).d : $(SRC).cc
|
|
$(CPP) -c -MMD $< -I ./ -I $(ARROWGIT)/cpp/src/
|
|
|
|
# extract source dependencies
|
|
extract-dep : $(SRC).d
|
|
@# extract relevant dependencies
|
|
cat $< | sed 's/ /\n/g' | awk 'NF' | grep -v '\\' | grep '\/' > deps.log
|
|
cat deps.log | sed ':a;N;$!ba;s/\n/ /g' > headers.log
|
|
cat headers.log | sed 's/.h$$/.cc/g' > sources.log
|
|
@# copy required sources
|
|
mkdir -p temp/
|
|
cp --parents `cat headers.log` temp/
|
|
cp --parents `cat sources.log` temp/ 2>/dev/null
|
|
mv temp$(ARROWGIT)/cpp/src/* ./
|
|
rm -r temp
|
|
|
|
clean-dep :
|
|
rm -f deps.log headers.log sources.log $(SRC).d
|
|
|
|
#-----------------------------------------------------------------------------#
|
|
# only use more recent and up to date repository arrow.git
|
|
|
|
# build arrow shared/static libraries
|
|
build :
|
|
cd arrow/cpp
|
|
# cmake -LA to show all options
|
|
cmake . -D ARROW_PARQUET=ON #ARROW_ARMV8_ARCH=armv8-a
|
|
make
|
|
|
|
example :
|
|
cd arrow/cpp/examples/parquet/low-level-api/
|
|
g++ reader-writer.cc -I. -I../../../src/ -L../../../../cpp/build/release/ -larrow -lparquet
|
|
|
|
# set environment variable LD_LIBRARY_PATH=../../../../cpp/build/release/ before launching executable
|
|
|
|
|
|
#------------------------------------------------------------------------------------#
|