diff --git a/.travis.yml b/.travis.yml index 821d564c4..b62c60ee9 100644 --- a/.travis.yml +++ b/.travis.yml @@ -19,7 +19,7 @@ matrix: packages: - g++ - os: linux - env: PROFILE=m32 + env: PROFILE=x86 addons: apt: packages: @@ -36,6 +36,12 @@ matrix: apt: packages: - g++-mingw-w64-x86-64 + - os: linux + env: PROFILE=mingwaarch64 + addons: + apt: + packages: + - clang - os: linux env: PROFILE=armhf addons: diff --git a/ant/build.xml b/ant/build.xml new file mode 100644 index 000000000..0d346b47d --- /dev/null +++ b/ant/build.xml @@ -0,0 +1,273 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Tests will run only if the TARGET and HOST match:${line.separator}${line.separator} + TARGET: ${os.target.classifier} + DETECTED: ${os.detected.classifier} + + + + + + + ===== ${maven.test.message} ===== + + + + + + + File information: + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/pom.xml b/pom.xml index f52783453..3bb6b6f0a 100644 --- a/pom.xml +++ b/pom.xml @@ -42,25 +42,19 @@ ${project.build.directory}/cmake + ${project.build.directory}/props.properties + ${project.basedir} - false - - IGNORE - - - - - false - + false + false false true - ${os.detected.name}-${os.detected.arch}-${os.detected.bitness} 4.12 1.2.3 - 2.3.6 + 2.3.5 1.17 @@ -191,92 +185,50 @@ ${plugin.antrun.version} + + gather-props + validate + run + + + + + + true + + + cmake-generate run generate-sources - ${cmake.generator.skip} - - - - - - - - - - - + ${cmake.generate.skip} + + - cmake-compile + cmake-build run compile - ${cmake.compile.skip} - - - - - - - - - - + ${cmake.build.skip} + + - maven-test-helper - compile + show-file-info + install run - true - - - - - - - - - Tests will run only if the TARGET and HOST match:${line.separator}${line.separator} - TARGET: ${maven.target.system} - HOST: ${maven.host.system} - - - - - - - - - - - - - - - - - - - - - - ===== ${maven.test.message} ===== - + + @@ -336,7 +288,7 @@ single - ${cmake.generator.skip} + ${cmake.generate.skip} ${project.basedir}/src/assembly/one-off-jar.xml @@ -451,8 +403,8 @@ true true - true - true + true + true @@ -493,254 +445,101 @@ - - - aarch64_detected - - - aarch64 - - - - aarch_64 - - - - x86_64_detected - - - amd64 - - - - x86_64 - - - - x86_detected - - - x86 - - - - x86_32 - - - - + aarch64 - - - os.detected.arch - aarch_64 - - - aarch_64 - 64 - ${os.detected.name}_arm64 - - ARM64 - - arm64 - - aarch64 [${os.name}] + aarch_64 - + x86_64 - - - os.detected.arch - x86_64 - - - x86_64 - 64 - ${os.detected.name}_64 - - x64 - - x86_64 - - M64 - - amd64 [${os.name}] + x86_64 - + x86 - - - os.detected.arch - x86_32 - - - x86_32 - 32 - ${os.detected.name}_32 - - Win32 - - x86_64 - - M32 - - x86 [${os.name}] + x86_32 - - - msvc - - - windows - - - - -DCMAKE_GENERATOR_PLATFORM=${cmake.generator.msvcplatform} - - --config Release - - - - - - linux - - - - unix - - - - - "-DFORCE_${cmake.generator.gccarch}=True" - - - - - - macos - - - mac - - - - -DCMAKE_OSX_ARCHITECTURES=${cmake.generator.osxarchitectures} - - - - + mingw32 - - windows - x86_32 - 32 - -DCMAKE_TOOLCHAIN_FILE="${project.basedir}/toolchain/Mingw${os.detected.bitness}.cmake" - ${os.detected.name}_${os.detected.bitness} - - x86 [Windows] + Mingw32 + + windows + x86_32 + 32 - + mingw64 - windows - x86_64 - 64 - -DCMAKE_TOOLCHAIN_FILE="${project.basedir}/toolchain/Mingw${os.detected.bitness}.cmake" - ${os.detected.name}_${os.detected.bitness} - - amd64 [Windows] + Mingw64 + + windows + x86_64 + 64 - + mingwaarch64 - windows - arm_64 - 64 - -DCMAKE_TOOLCHAIN_FILE="${project.basedir}/toolchain/MingwAarch64.cmake" - windows_arm64 - - aarch64 [Windows] + MingwAarch64 + + windows + aarch_64 + 64 - + - armsf + ppc64 - linux - arm_32 - 32 - -DCMAKE_TOOLCHAIN_FILE="${project.basedir}/toolchain/Armsf.cmake" - ${os.detected.name}_arm - - armsf [Linux] + Ppc64 + + linux + ppc_64 + 64 - + armhf - linux - arm_32 - 32 + Armhf + + linux - -DCMAKE_TOOLCHAIN_FILE="${project.basedir}/toolchain/Armhf.cmake" - ${os.detected.name}_arm - - armhf [Linux] + arm_32 + 32 - + - ppc64 + armsf - linux - ppc_64 - 64 - -DCMAKE_TOOLCHAIN_FILE="${project.basedir}/toolchain/Ppc64.cmake" - ${os.detected.name}_ppc - - ppc64 [Linux] - - + Armsf - - - linux-aarch64 - - linux - arm_64 - 64 - -DCMAKE_TOOLCHAIN_FILE="${project.basedir}/toolchain/Aarch64.cmake" - ${os.detected.name}_arm64 - - aarch64 [Linux] + linux + + arm_32 + 32 diff --git a/toolchain/MingwAarch64.cmake b/toolchain/MingwAarch64.cmake index 086db8096..7de43651e 100644 --- a/toolchain/MingwAarch64.cmake +++ b/toolchain/MingwAarch64.cmake @@ -1,5 +1,28 @@ set(CMAKE_SYSTEM_NAME Windows) -set(TOOLCHAIN_LOCATION "$ENV{HOME}/llvm-mingw/bin") + +# URL for llvm-mingw +set(URL "https://github.com/mstorsjo/llvm-mingw/releases/download/20201020/llvm-mingw-20201020-msvcrt-ubuntu-18.04.tar.xz") +set(SHA256 "96e94e469665ee5632fff32a19b589ae1698859189d85615f3062b1544510b75") +get_filename_component(ARCHIVE_NAME "${URL}" NAME) +set(ARCHIVE "${CMAKE_BINARY_DIR}/llvm-mingw/${ARCHIVE_NAME}") + +# Try to predict the subdirectory name from the file name +string(REPLACE ".tar.xz" "" SUBDIR "${ARCHIVE_NAME}") + +# Prevent extract process from running more than once +if(NOT TOOLCHAIN_LOCATION) + if(NOT EXISTS "${CMAKE_BINARY_DIR}/llvm-mingw/${SUBDIR}") + if(NOT EXISTS "${ARCHIVE}") + file(MAKE_DIRECTORY "${CMAKE_BINARY_DIR}/llvm-mingw") + message(STATUS "Downloading ${URL} to ${ARCHIVE}...") + file(DOWNLOAD ${URL} ${ARCHIVE} TIMEOUT 60 EXPECTED_HASH SHA256=${SHA256}) + endif() + message(STATUS "Extracting ${ARCHIVE} to ${CMAKE_BINARY_DIR}/llvm-mingw/${SUBDIR}/...") + file(ARCHIVE_EXTRACT INPUT "${ARCHIVE}" DESTINATION "${CMAKE_BINARY_DIR}/llvm-mingw") + endif() +endif() + +set(TOOLCHAIN_LOCATION "${CMAKE_BINARY_DIR}/llvm-mingw/${SUBDIR}/bin") set(TOOLCHAIN_PREFIX "${TOOLCHAIN_LOCATION}/aarch64-w64-mingw32") set(CMAKE_C_COMPILER "${TOOLCHAIN_PREFIX}-gcc") set(CMAKE_CXX_COMPILER "${TOOLCHAIN_PREFIX}-g++") @@ -7,4 +30,4 @@ set(CMAKE_RC_COMPILER "${TOOLCHAIN_PREFIX}-windres") set(CMAKE_STRIP "${TOOLCHAIN_PREFIX}-strip" CACHE FILEPATH "" FORCE) set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER) set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY BOTH) -set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE BOTH) \ No newline at end of file +set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE BOTH)