]> git.vomp.tv Git - vompclient.git/commitdiff
WIP: Build system tweaks to enable cross/distcc/clang/mold
authorChris Tallon <chris@vomp.tv>
Sun, 14 Aug 2022 16:14:52 +0000 (16:14 +0000)
committerChris Tallon <chris@vomp.tv>
Sun, 14 Aug 2022 16:14:52 +0000 (16:14 +0000)
.gitignore
README [new file with mode: 0644]
build.sh
compile-config.sample [new file with mode: 0644]
compiler [new file with mode: 0755]
src/CMakeLists.txt
src/CMakeToolChainRPi.txt [deleted file]
src/CMakeToolChainRPiClang.txt [new file with mode: 0644]
src/CMakeToolChainRPiGCC.txt [new file with mode: 0644]

index 0974245116c6786fa007d5fe418c982a643b49a9..28337fa665856c656471efa36f5440b21809d749 100644 (file)
@@ -2,3 +2,4 @@
 .#*
 config.json
 build
+compile-config
diff --git a/README b/README
new file mode 100644 (file)
index 0000000..95f53bb
--- /dev/null
+++ b/README
@@ -0,0 +1,4 @@
+How to set up a build:
+
+Copy compile-config.sample to compile-config
+
index 65672971992ec11fbcd3dc82dae7e0bbe56ce22b..340edcdf4bc843c85337dcb31ebc0e5c664a1fd6 100755 (executable)
--- a/build.sh
+++ b/build.sh
@@ -1,21 +1,15 @@
 #!/bin/bash
 
-NATIVE=no
-
-if grep -q BCM2708 /proc/cpuinfo ; then
-  NATIVE=yes
-elif grep -q BCM2709 /proc/cpuinfo ; then
-  NATIVE=yes
-elif grep -q BCM2835 /proc/cpuinfo ; then
-  NATIVE=yes
-else
-  NATIVE=no
-fi
-
-if [ $NATIVE == "no" ]; then
-  CROSS_COMPILE_INSERT=-DCMAKE_TOOLCHAIN_FILE=../src/CMakeToolChainRPi.txt
-  CROSS_COMPILE_J=-j8
+source compile-config
+
+if [ $CROSS_COMPILE == "yes" ]; then
+  if [ $CROSS_COMPILER == "gcc" ]; then
+    CROSS_COMPILE_INSERT=-DCMAKE_TOOLCHAIN_FILE=../src/CMakeToolChainRPiGCC.txt
+  elif [ $CROSS_COMPILER == "clang" ]; then
+    CROSS_COMPILE_INSERT=-DCMAKE_TOOLCHAIN_FILE=../src/CMakeToolChainRPiClang.txt
+  fi
 fi
 
 mkdir build
-cmake $CROSS_COMPILE_INSERT -S src -B build && make -C build $CROSS_COMPILE_J
+cmake $CROSS_COMPILE_INSERT -DENABLE_MOLD=${ENABLE_MOLD} -DMOLD_BIN=${MOLD_BIN} \
+  -S src -B build && make -C build -j$MAKE_J
diff --git a/compile-config.sample b/compile-config.sample
new file mode 100644 (file)
index 0000000..ee9000a
--- /dev/null
@@ -0,0 +1,12 @@
+# Set the number of concurrent threads for compiling (make's -j option):
+MAKE_J=1
+
+# Enable cross-compiling
+CROSS_COMPILE=no
+
+# Set cross compiler. Options: gcc clang
+CROSS_COMPILER=gcc
+
+# Use mold for linker? (Only possible if compiler is clang)
+ENABLE_MOLD=no
+MOLD_BIN=/opt/mold/bin/mold
diff --git a/compiler b/compiler
new file mode 100755 (executable)
index 0000000..afff73d
--- /dev/null
+++ b/compiler
@@ -0,0 +1,5 @@
+#!/bin/bash
+
+/usr/bin/distcc /usr/bin/clang-11 "$@"
+#/usr/bin/clang-11 "$@"
+
index 964af00b6102ac0e39c753057b474ed08dcb69cd..d34a97aef85a04b40b51e0c583a653e26dbe19a5 100644 (file)
@@ -68,8 +68,11 @@ set (PNG_FILES
 project(vomp)
 add_executable(vomp ${VOMP_OBJ_COMMON} ${VOMP_OBJ_RASPBERRY} pngs.o)
 
-# Enable next line to use mold linker. Only available when using clang
-target_link_options(vomp PRIVATE "-fuse-ld=/opt/mold/bin/mold")
+# set(CMAKE_CXX_COMPILER_LAUNCHER "distcc") - not until cmake 3.17!
+
+if (${ENABLE_MOLD})
+  target_link_options(vomp PRIVATE "-fuse-ld=${MOLD_BIN}")
+endif()
 
 set(CMAKE_BUILD_TYPE Debug)
 target_compile_options(vomp PRIVATE -O0)
diff --git a/src/CMakeToolChainRPi.txt b/src/CMakeToolChainRPi.txt
deleted file mode 100644 (file)
index d437ad9..0000000
+++ /dev/null
@@ -1,26 +0,0 @@
-set(CMAKE_SYSTEM_NAME Linux)
-
-set(CMAKE_FIND_ROOT_PATH /pi-root)
-set(CMAKE_SYSROOT /pi-root)
-
-
-# GCC
-#set(CMAKE_C_COMPILER /usr/bin/arm-linux-gnueabihf-gcc)
-#set(CMAKE_CXX_COMPILER /usr/bin/arm-linux-gnueabihf-g++)
-#set(CMAKE_C_FLAGS "-Wno-psabi -mtune=cortex-a7 -mfloat-abi=hard -fopenmp")
-#set(CMAKE_CXX_FLAGS "-Wno-psabi -mtune=cortex-a7 -mfloat-abi=hard -fopenmp")
-
-# Pi1: -mtune=arm1176jzf-s  Pi2: -mtune=cortex-a7  Pi3: -mtune=cortex-a53
-
-# Clang
-set(CMAKE_C_COMPILER /usr/bin/clang-11)
-set(CMAKE_CXX_COMPILER /usr/bin/clang++-11)
-set(CMAKE_LINKER /usr/bin/arm-linux-gnueabihf-ld)
-set(CMAKE_C_FLAGS "-target arm-linux-gnueabihf -mfloat-abi=hard -mcpu=cortex-a7")
-set(CMAKE_CXX_FLAGS "-target arm-linux-gnueabihf -mfloat-abi=hard -mcpu=cortex-a7")
-
-
-set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
-
-set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
-set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)
diff --git a/src/CMakeToolChainRPiClang.txt b/src/CMakeToolChainRPiClang.txt
new file mode 100644 (file)
index 0000000..063e2fe
--- /dev/null
@@ -0,0 +1,19 @@
+set(CMAKE_SYSTEM_NAME Linux)
+
+set(CMAKE_FIND_ROOT_PATH /pi-root)
+set(CMAKE_SYSROOT /pi-root)
+
+# Clang
+#set(CMAKE_C_COMPILER "/usr/bin/clang-11")
+#set(CMAKE_CXX_COMPILER "/usr/bin/clang++-11")
+set(CMAKE_C_COMPILER "/opt/vompclient/compiler")
+set(CMAKE_CXX_COMPILER "/opt/vompclient/compiler")
+set(CMAKE_LINKER /usr/bin/arm-linux-gnueabihf-ld)
+set(CMAKE_C_FLAGS "-target arm-linux-gnueabihf -mfloat-abi=hard -mcpu=cortex-a7")
+set(CMAKE_CXX_FLAGS "-target arm-linux-gnueabihf -mfloat-abi=hard -mcpu=cortex-a7")
+
+
+set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
+
+set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
+set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)
diff --git a/src/CMakeToolChainRPiGCC.txt b/src/CMakeToolChainRPiGCC.txt
new file mode 100644 (file)
index 0000000..4a14672
--- /dev/null
@@ -0,0 +1,17 @@
+set(CMAKE_SYSTEM_NAME Linux)
+
+set(CMAKE_FIND_ROOT_PATH /pi-root)
+set(CMAKE_SYSROOT /pi-root)
+
+# GCC
+set(CMAKE_C_COMPILER /usr/bin/arm-linux-gnueabihf-gcc)
+set(CMAKE_CXX_COMPILER /usr/bin/arm-linux-gnueabihf-g++)
+set(CMAKE_C_FLAGS "-Wno-psabi -mtune=cortex-a7 -mfloat-abi=hard -fopenmp")
+set(CMAKE_CXX_FLAGS "-Wno-psabi -mtune=cortex-a7 -mfloat-abi=hard -fopenmp")
+
+# Pi1: -mtune=arm1176jzf-s  Pi2: -mtune=cortex-a7  Pi3: -mtune=cortex-a53
+
+
+set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
+set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
+set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)