1- #! /bin/sh
1+ #! /bin/bash
2+
3+ CURRENT_ARCH=` uname -m`
4+ CURRENT_OS=` uname -s`
25
3- # build monero-project dependencies
46cd ./external/monero-project/ || exit 1
57git submodule update --init --force || exit 1
68HOST_NCORES=$( nproc 2> /dev/null || shell nproc 2> /dev/null || sysctl -n hw.ncpu 2> /dev/null || echo 1)
7- if [[ $( uname -s) == " MINGW64_NT" * || $( uname -s) == " MSYS" * ]]; then
9+ if [[ $CURRENT_OS == " MINGW64_NT" * || $CURRENT_OS == " MSYS" * ]]; then
10+ VERSION=" ${CURRENT_ARCH} -W${bit} -${CURRENT_OS} "
11+
12+ # monero-project
813 bit=$( getconf LONG_BIT)
14+ mkdir -p build/release
915 if [ " $bit " == " 64" ]; then
1016 make release-static-win64 -j$HOST_NCORES || exit 1
1117 else
1218 make release-static-win32 -j$HOST_NCORES || exit 1
1319 fi
14- else
15- # OS is not windows
20+ mv build/release ../../external-libs/$VERSION /monero-project/
21+
22+ # monero-cpp
23+ cd ../../
24+ mkdir -p build/$CURRENT_ARCH /release &&
25+ cd build/$CURRENT_ARCH /release &&
26+ cmake -DMON_VERSION=$VERSION ../../.. &&
27+ cmake --build . &&
28+ make -j$HOST_NCORES .
29+
30+ elif [ $CURRENT_OS == " Darwin" ]; then
31+
32+ VERSION=" ${CURRENT_ARCH} -apple-darwin11"
33+
34+ # Build current architecture only.
35+ # monero-project
36+ printf " \nBuilding native release static version of monero-project for ${VERSION} \n"
1637 make release-static -j$HOST_NCORES || exit 1
38+ rm -rf ../../external-libs/$VERSION /monero-project
39+ mkdir -p ../../external-libs/$VERSION /monero-project/ &&
40+ mv build/release ../../external-libs/$VERSION /monero-project/
41+ cd ../..
42+
43+ # monero-cpp
44+ printf " \nBuilding native Monero-cpp for ${VERSION} \n"
45+ rm -rf build/$VERSION /release &&
46+ mkdir -p build/$VERSION /release &&
47+ cd build/$VERSION /release &&
48+ cmake -D MON_VERSION=$VERSION ../../.. &&
49+ cmake --build . &&
50+ make -j$HOST_NCORES .
51+
52+ else
53+ # Running on Linux
54+ # "OS" will be used as if it is called "WRAPPER"
55+
56+ rm -rf build
57+ BUILD_BOTH_ARCHS=0
58+ OS=" "
59+ VENDOR=" "
60+
61+ if [ " ${TARGET} " == " darwin" ]; then
62+ OS=" darwin11"
63+ VENDOR=" apple"
64+ if [ -z " ${ARCH} " ]; then
65+ BUILD_BOTH_ARCHS=1
66+ fi
67+ elif [ " ${TARGET} " == " MSYS" ] || [ " ${TARGET} " == " MINGW64_NT" ]; then
68+ OS=" mingw32"
69+ VENDOR=" w64"
70+ else
71+ OS=" gnu"
72+ VENDOR=" linux"
73+ fi
74+
75+ CPU=" "
76+ if [ -n " ${ARCH} " ]; then
77+ CPU=" ${ARCH} "
78+ else
79+ CPU=$CURRENT_ARCH
80+ fi
81+
82+ if [ $BUILD_BOTH_ARCHS == 1 ]; then
83+ # The target is darwin.
84+ printf " \nBuilding both Darwin architectures as a fat library\n"
85+
86+ ARM64_TOOLCHAIN=" contrib/depends/aarch64-apple-darwin11/share/toolchain.cmake"
87+ X86_64_TOOLCHAIN=" contrib/depends/x86_64-apple-darwin11/share/toolchain.cmake"
88+
89+ if [ -z $SKIP_MP ]; then
90+ printf " \nBuilding compilation dependencies for aarch64 Darwin\n"
91+ CUR_VERSION=" aarch64-apple-darwin11"
92+ cd contrib/depends &&
93+ make HOST=$CUR_VERSION -j$HOST_NCORES &&
94+ echo \
95+ " set(FRAMEWORK_DIR \" contrib/depends/$CUR_VERSION /native/SDK/System/Library/Frameworks\" )" \
96+ >> ../../$ARM64_TOOLCHAIN &&
97+ cd ../..
98+
99+ # build monero-project
100+ printf " \nBuilding monero-project for aarch64 Darwin\n"
101+ rm -rf build &&
102+ mkdir -p build/release && cd build/release &&
103+ cmake -j$HOST_NCORES -D STATIC=ON -D CMAKE_BUILD_TYPE=Release -D CMAKE_TOOLCHAIN_FILE=../../$ARM64_TOOLCHAIN ../.. && make -j$HOST_NCORES &&
104+ rm -rf ../../../../external-libs/$CUR_VERSION /monero-project
105+ mkdir -p ../../../../external-libs/$CUR_VERSION /monero-project/ &&
106+ cd ../.. && mv build/release ../../external-libs/$CUR_VERSION /monero-project/
107+
108+ # build monero-x64_64
109+ # Make dependencies
110+ printf " \nBuilding compilation dependencies for x86_64 Darwin\n"
111+ CUR_VERSION=" x86_64-apple-darwin11"
112+ cd contrib/depends &&
113+ make HOST=$CUR_VERSION -j$HOST_NCORES &&
114+ echo \
115+ " set(FRAMEWORK_DIR \" contrib/depends/$CUR_VERSION /native/SDK/System/Library/Frameworks\" )" \
116+ >> ../../$X86_64_TOOLCHAIN &&
117+ cd ../..
118+
119+ # build monero-project
120+ printf " \nBuilding monero-project for x86_64 Darwin\n"
121+ mkdir -p build/release && cd build/release &&
122+ cmake -j$HOST_NCORES -D STATIC=ON -D CMAKE_BUILD_TYPE=Release -D CMAKE_TOOLCHAIN_FILE=../../$X86_64_TOOLCHAIN ../.. &&
123+ make -j$HOST_NCORES &&
124+ rm -rf ../../../../external-libs/$CUR_VERSION /monero-project
125+ mkdir -p ../../../../external-libs/$CUR_VERSION /monero-project/
126+ cd ../.. && mv build/release ../../external-libs/$CUR_VERSION /monero-project/
127+ fi
128+
129+ # Build monero-cpp x86_64
130+ printf " \nBuilding x86_64 monero-cpp for Darwin\n"
131+ cd ../../ &&
132+ rm -rf build/x86_64-apple-darwin11/release &&
133+ rm -rf build/aarch64-apple-darwin11/release &&
134+ rm -rf build/darwin &&
135+ mkdir -p build/x86_64-apple-darwin11/release &&
136+ mkdir -p build/aarch64-apple-darwin11/release &&
137+ mkdir -p build/darwin/release
138+
139+ cd build/x86_64-apple-darwin11/release &&
140+ cmake -j$HOST_NCORES -D MON_VERSION=x86_64-apple-darwin11 -D CMAKE_TOOLCHAIN_FILE=../../../external/monero-project/$X86_64_TOOLCHAIN ../../.. &&
141+ make -j$HOST_NCORES
142+
143+ # Build monero-cpp arm64
144+ printf " \nBuilding aarch64 monero-cpp for Darwin\n"
145+ cd ../../aarch64-apple-darwin11/release &&
146+ cmake -j$HOST_NCORES -D MON_VERSION=aarch64-apple-darwin11 -D CMAKE_TOOLCHAIN_FILE=../../../external/monero-project/$ARM64_TOOLCHAIN ../../.. &&
147+ make -j$HOST_NCORES
148+
149+ # lipo the two builds together
150+ cd ../../..
151+ ./external/monero-project/contrib/depends/${CURRENT_ARCH} -apple-darwin11/native/bin/${CURRENT_ARCH} -apple-darwin11-lipo -create -output build/darwin/release/libmonero-cpp.dylib build/x86_64-apple-darwin11/release/libmonero-cpp.dylib build/aarch64-apple-darwin11/release/libmonero-cpp.dylib
152+
153+ elif [ $CPU == $CURRENT_ARCH ] && [ $VENDOR == " linux" ]; then
154+ # Fast native build / No Depends
155+
156+ VERSION=" ${CPU} -linux-gnu"
157+
158+ # Build current architecture only.
159+ # monero-project
160+ printf " \nBuilding native release static version of monero-project for ${VERSION} \n"
161+ make release-static USE_SINGLE_BUILDDIR=1 -j$HOST_NCORES || exit 1
162+ rm -rf ../../external-libs/$VERSION /monero-project
163+ mkdir -p ../../external-libs/$VERSION /monero-project/ &&
164+ mv build/release ../../external-libs/$VERSION /monero-project/
165+ cd ../..
166+
167+ # monero-cpp
168+ printf " \nBuilding native Monero-cpp for ${VERSION} \n"
169+ rm -rf build/$VERSION /release &&
170+ mkdir -p build/$VERSION /release &&
171+ cd build/$VERSION /release &&
172+ cmake -D MON_VERSION=$VERSION ../../.. &&
173+ cmake --build . &&
174+ make -j$HOST_NCORES .
175+
176+ else
177+ # Building 1 architecture for any platform
178+
179+ # "OS" is used as if it is named "WRAPPER"
180+ VERSION=" ${CPU} -${VENDOR} -${OS} " &&
181+ printf " \nBuilding for ${VERSION} \n"
182+
183+ # Make dependencies.
184+ if [ -z $SKIP_MP ]; then
185+ printf " \nBuilding compilation dependencies\n"
186+ cd contrib/depends &&
187+ make HOST=$VERSION -j$HOST_NCORES &&
188+ if [ $OS == " darwin11" ]; then
189+ echo \
190+ " set(FRAMEWORK_DIR \" contrib/depends/$VERSION /native/SDK/System/Library/Frameworks\" )" \
191+ >> $VERSION /share/toolchain.cmake
192+ fi
193+ cd ../..
194+
195+ # Build monero-project
196+ printf " \nBuilding monero-project for ${VERSION} \n"
197+ mkdir -p build/release && cd build/release &&
198+ cmake -j$HOST_NCORES -D STATIC=ON -D CMAKE_BUILD_TYPE=Release -D CMAKE_TOOLCHAIN_FILE=../../contrib/depends/$VERSION /share/toolchain.cmake ../.. &&
199+ make -j$HOST_NCORES &&
200+ rm -rf ../../../../external-libs/$VERSION /monero-project
201+ mkdir -p ../../../../external-libs/$VERSION /monero-project/ &&
202+ cd ../.. && mv build/release ../../external-libs/$VERSION /monero-project/
203+ fi
204+
205+ # Build monero-cpp
206+ printf " \nBuilding monero-cpp for ${VERSION} \n"
207+ rm -rf ../../build/$VERSION /release &&
208+ mkdir -p ../../build/$VERSION /release &&
209+ cd ../../build/$VERSION /release &&
210+ cmake -j$HOST_NCORES -D MON_VERSION=$VERSION -D CMAKE_TOOLCHAIN_FILE=../../../external/monero-project/contrib/depends/$VERSION /share/toolchain.cmake ../../.. &&
211+ make -j$HOST_NCORES
212+ fi
17213fi
18- cd ../../
19-
20- # build libmonero-cpp shared library
21- mkdir -p build &&
22- cd build &&
23- cmake .. &&
24- cmake --build . &&
25- make .
214+
0 commit comments