浏览代码

armel/armhf differentiation in builds

Grant Limberg 5 年之前
父节点
当前提交
d7c6f8ae3f
共有 3 个文件被更改,包括 24 次插入1 次删除
  1. 14 1
      CMakeLists.txt
  2. 6 0
      packaging/debian.cmake
  3. 4 0
      packaging/rpm.cmake

+ 14 - 1
CMakeLists.txt

@@ -154,6 +154,12 @@ if(NOT PACKAGE_STATIC)
 
 			option(BUILD_32BIT "Force building as 32-bit binary" OFF)
 			option(BUILD_STATIC "Build statically linked executable" OFF)
+			option(BUILD_ARM_V5 "Build ARMv5" OFF)
+			option(BUILD_ARM_v6 "Build ARMv6" OFF)
+			
+			if (BUILD_ARM_V5 AND BUILD_ARM_V6) 
+				message(FATAL_ERROR "BUILD_ARM_V5 and BUILD_ARM_V6 are mutually exclusive!")
+			endif()
 
 			if(BUILD_32BIT)
 				set(CMAKE_SYSTEM_PROCESSOR "x86" CACHE STRING "system processor")
@@ -185,6 +191,13 @@ if(NOT PACKAGE_STATIC)
 				)
 			endif(BUILD_STATIC)
 
+			if (BUILD_ARM_V5)
+				set(GOARM "GOARM=5")
+			endif (BUILD_ARM_V5)
+
+			if (BUILD_ARM_v6)
+				set(GOARM "GOARM=6")
+			endif (BUILD_ARM_V6)
 		endif(APPLE)
 	endif(WIN32)
 
@@ -230,7 +243,7 @@ if(NOT PACKAGE_STATIC)
 		zerotier ALL
 		BYPRODUCTS ${CMAKE_BINARY_DIR}/zerotier
 		SOURCES ${go_src}
-		COMMAND ${CMAKE_COMMAND} -E env ${GOARCH} CGO_ENABLED=1 CGO_CFLAGS=\"-O3\" CGO_LDFLAGS=\"$<TARGET_FILE:zt_core> $<TARGET_FILE:zt_controller> $<TARGET_FILE:zt_service_io_core> $<TARGET_FILE:zt_osdep> ${GO_EXTRA_LIBRARIES}\" ${GO} build ${GOFLAGS} -o ${CMAKE_BINARY_DIR}/${GO_EXE_NAME} ${CMAKE_SOURCE_DIR}/cmd/zerotier/zerotier.go
+		COMMAND ${CMAKE_COMMAND} -E env ${GOARCH} ${GOARM} CGO_ENABLED=1 CGO_CFLAGS=\"-O3\" CGO_LDFLAGS=\"$<TARGET_FILE:zt_core> $<TARGET_FILE:zt_controller> $<TARGET_FILE:zt_service_io_core> $<TARGET_FILE:zt_osdep> ${GO_EXTRA_LIBRARIES}\" ${GO} build ${GOFLAGS} -o ${CMAKE_BINARY_DIR}/${GO_EXE_NAME} ${CMAKE_SOURCE_DIR}/cmd/zerotier/zerotier.go
 		COMMENT "Compiling Go Code..."
 	)
 	add_dependencies(zerotier zt_osdep zt_core zt_controller zt_service_io_core)

+ 6 - 0
packaging/debian.cmake

@@ -19,4 +19,10 @@ set(CPACK_DEBIAN_PACKAGE_CONTROL_EXTRA "${CMAKE_CURRENT_SOURCE_DIR}/packaging/de
 
 set(CPACK_DEBIAN_FILE_NAME "DEB-DEFAULT")
 
+if(BUILD_ARM_V5)
+    set(CPACK_DEBIAN_PACKAGE_ARCHITECTURE "armel")
+elseif(BUILD_ARM_V6)
+    set(CPACK_DEBIAN_PACKAGE_ARCHITECTURE "armhf")
+endif()
+
 include(CPack)

+ 4 - 0
packaging/rpm.cmake

@@ -18,6 +18,10 @@ set(CPACK_RPM_PACKAGE_OBSOLETES "zerotier-one")
 set(CPACK_PACKAGE_RELOCATABLE FALSE)
 if(BUILD_32BIT)
     set(CPACK_RPM_PACKAGE_ARCHITECTURE "i386")
+elseif(BUILD_ARM_V5)
+    set(CPACK_RPM_PACKAGE_ARCHITECTURE "armel")
+elseif(BUILD_ARM_V6)
+    set(CPACK_RPM_PACKAGE_ARCHITECTURE "armhf")
 endif()
 
 set(CPACK_RPM_PRE_INSTALL_SCRIPT_FILE "${CMAKE_CURRENT_SOURCE_DIR}/packaging/rpm/rpm.pre")