diff --git a/.github/workflows/lwjgl.yml b/.github/workflows/lwjgl.yml new file mode 100644 index 0000000000..380d45064d --- /dev/null +++ b/.github/workflows/lwjgl.yml @@ -0,0 +1,207 @@ +name: LWJGL Build + +on: + workflow_dispatch: + push: + branches: + - master + +env: + AWS_DEFAULT_REGION: us-east-1 + AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }} + AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }} + S3_PARAMS: --cache-control "public,must-revalidate,proxy-revalidate,max-age=0" + +jobs: + linux: + name: Linux + runs-on: ubuntu-latest + container: + image: centos:7 + strategy: + fail-fast: false + matrix: + ARCH: [x64] + include: + - ARCH: x64 + HOST: x86_64-pc-linux-gnu + steps: + - run: | + yum -y install https://packages.endpointdev.com/rhel/7/os/x86_64/endpoint-repo.x86_64.rpm + yum -y install git + name: Upgrade git + - uses: actions/checkout@v3 + with: + fetch-depth: 3 + - run: | + yum -y install epel-release + yum -y update + name: Configure yum + - run: | + yum -y install centos-release-scl + yum -y install devtoolset-11-gcc-c++ + yum -y install autoconf automake libtool awscli + name: Install build dependencies + - run: | + source scl_source enable devtoolset-11 || true + curl -L https://ftpmirror.gnu.org/autoconf/autoconf-2.71.tar.gz | tar -xz + (cd autoconf-2.71; ./configure; make; make install) + name: Install autoconf 2.71 + - run: | + source scl_source enable devtoolset-11 || true + ./autogen.sh + CFLAGS="-g0 -O2 -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=0" ./configure --host=${{matrix.HOST}} + name: Configure build + - run: | + source scl_source enable devtoolset-11 || true + make + strip hwloc/.libs/libhwloc.so + name: Build + - run: aws s3 cp hwloc/.libs/libhwloc.so s3://lwjgl-build/nightly/linux/${{matrix.ARCH}}/ $S3_PARAMS + name: Upload artifact + - run: | + git config --global --add safe.directory $PWD + git log --first-parent --pretty=format:%H HEAD~2..HEAD~1 > libhwloc.so.git + aws s3 cp libhwloc.so.git s3://lwjgl-build/nightly/linux/${{matrix.ARCH}}/ $S3_PARAMS + name: Upload git revision + + linux-cross: + name: Linux Cross + runs-on: ubuntu-latest + container: + image: ubuntu:18.04 + strategy: + fail-fast: false + matrix: + ARCH: [arm32, arm64] + include: + # ----- + - ARCH: arm32 + CROSS_ARCH: armhf + PACKAGES: gcc-arm-linux-gnueabihf libc6-dev-armhf-cross + CC: PKG_CONFIG_PATH=${PKG_CONFIG_PATH}:${CMAKE_SYSROOT}/usr/lib/arm-linux-gnueabihf/pkgconfig CC=arm-linux-gnueabihf-gcc + HOST: arm-unknown-linux-gnueabihf + STRIP: arm-linux-gnueabihf-strip + # ----- + - ARCH: arm64 + CROSS_ARCH: arm64 + PACKAGES: gcc-aarch64-linux-gnu libc6-dev-arm64-cross + CC: PKG_CONFIG_PATH=${PKG_CONFIG_PATH}:${CMAKE_SYSROOT}/usr/lib/aarch64-linux-gnu/pkgconfig CC=aarch64-linux-gnu-gcc + HOST: aarch64-unknown-linux-gnu + STRIP: aarch64-linux-gnu-strip + env: + LWJGL_ARCH: ${{matrix.ARCH}} + steps: + - run: | + apt-get -y update + apt-get -y install software-properties-common wget + apt-get -y install --reinstall ca-certificates + apt-get -y update + apt-get -y upgrade + wget https://apt.kitware.com/keys/kitware-archive-latest.asc + apt-key add kitware-archive-latest.asc + add-apt-repository -y 'deb https://apt.kitware.com/ubuntu/ bionic main' + add-apt-repository -y ppa:git-core/ppa + apt-get -y update + DEBIAN_FRONTEND=noninteractive apt-get -yq install awscli git + name: Upgrade git + - uses: actions/checkout@v3 + with: + fetch-depth: 3 + - run: DEBIAN_FRONTEND=noninteractive apt-get -yq install autoconf make libtool ${{matrix.PACKAGES}} + name: Install dependencies + - run: | + sed -i 's/deb http/deb [arch=amd64,i386] http/' /etc/apt/sources.list + grep "ubuntu.com/ubuntu" /etc/apt/sources.list | tee /etc/apt/sources.list.d/ports.list + sed -i 's/amd64,i386/armhf,arm64/' /etc/apt/sources.list.d/ports.list + sed -i 's#http://.*/ubuntu#http://ports.ubuntu.com/ubuntu-ports#' /etc/apt/sources.list.d/ports.list + dpkg --add-architecture ${{matrix.CROSS_ARCH}} + apt-get update + name: Prepare cross-compilation + - run: | + ./autogen.sh + ${{matrix.CC}} CFLAGS="-g0 -O2 -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=0" ./configure --host=${{matrix.HOST}} + name: Configure build + - run: | + make + ${{matrix.STRIP}} hwloc/.libs/libhwloc.so + name: Build + - run: aws s3 cp hwloc/.libs/libhwloc.so s3://lwjgl-build/nightly/linux/${{matrix.ARCH}}/ $S3_PARAMS + name: Upload artifacts + - run: | + git config --global --add safe.directory $(pwd) + git log --first-parent --pretty=format:%H HEAD~2..HEAD~1 > libhwloc.so.git + aws s3 cp libhwloc.so.git s3://lwjgl-build/nightly/linux/${{matrix.ARCH}}/ $S3_PARAMS + name: Upload git revision + + macos: + name: macOS + runs-on: macos-latest + strategy: + fail-fast: false + matrix: + ARCH: [x64, arm64] + include: + - ARCH: x64 + CC: MACOSX_DEPLOYMENT_TARGET=10.9 CFLAGS="-g0 -O2 -mmacosx-version-min=10.9" LDFLAGS=-mmacosx-version-min=10.9 + HOST: x86_64-apple-darwin13 + - ARCH: arm64 + CC: MACOSX_DEPLOYMENT_TARGET=11.0 CFLAGS="-g0 -O2 -target aarch64-apple-darwin -arch arm64 -mmacosx-version-min=11.0" LDFLAGS="-target aarch64-apple-darwin -arch arm64 -mmacosx-version-min=11.0" + HOST: aarch64-apple-darwin20 + steps: + - uses: actions/checkout@v3 + with: + fetch-depth: 3 + - run: brew install automake + name: Install dependencies + - run: | + ./autogen.sh + ${{matrix.CC}} ./configure --host=${{matrix.HOST}} + name: Configure build + - run: | + make + strip -u -r hwloc/.libs/libhwloc.dylib + name: Build + - run: | + aws s3 cp hwloc/.libs/libhwloc.dylib s3://lwjgl-build/nightly/macosx/${{matrix.ARCH}}/ $S3_PARAMS + name: Upload artifacts + - run: | + git log --first-parent --pretty=format:%H HEAD~2..HEAD~1 > libhwloc.dylib.git + aws s3 cp libhwloc.dylib.git s3://lwjgl-build/nightly/macosx/${{matrix.ARCH}}/ $S3_PARAMS + name: Upload git revision + + windows: + name: Windows + runs-on: windows-latest + strategy: + fail-fast: false + matrix: + ARCH: [x86, x64, arm64] + include: + - ARCH: x86 + PLATFORM: Win32 + HAS_X86: ON + - ARCH: x64 + PLATFORM: x64 + HAS_X86: ON + - ARCH: arm64 + PLATFORM: ARM64 + HAS_X86: OFF + steps: + - uses: actions/checkout@v3 + with: + fetch-depth: 3 + - run: cmake -B build -G "Visual Studio 17 2022" -A ${{matrix.PLATFORM}} -DLWJGL_HAS_X86=${{matrix.HAS_X86}} -DHWLOC_ENABLE_TESTING=OFF -DHWLOC_SKIP_LSTOPO=ON -DHWLOC_SKIP_TOOLS=ON -DHWLOC_SKIP_INCLUDES=ON -DHWLOC_WITH_OPENCL=OFF -DHWLOC_WITH_CUDA=OFF -DBUILD_SHARED_LIBS=ON -DCMAKE_C_FLAGS_RELEASE="/MT /EHsc /Ox /GF /Gy /GS- /DNDEBUG" -DCMAKE_SHARED_LINKER_FLAGS_RELEASE="/OPT:REF,ICF /INCREMENTAL:NO" contrib/windows-cmake + shell: cmd + name: Configure build + - run: cmake --build build --config Release + shell: cmd + name: Build + - run: aws s3 cp build\Release\hwloc.dll s3://lwjgl-build/nightly/windows/${{matrix.ARCH}}/ ${{env.S3_PARAMS}} + shell: cmd + name: Upload artifacts + - run: | + git log --first-parent --pretty=format:%%H HEAD~2..HEAD~1 > hwloc.dll.git + aws s3 cp hwloc.dll.git s3://lwjgl-build/nightly/windows/${{matrix.ARCH}}/ ${{env.S3_PARAMS}} + shell: cmd + name: Upload git revision diff --git a/.gitignore b/.gitignore index 6b5ebe7f7e..7efdb2e251 100644 --- a/.gitignore +++ b/.gitignore @@ -10,6 +10,8 @@ test-suite.log *.log *.trs +/build + /auto.out /config.out /dist.out diff --git a/contrib/windows-cmake/CMakeLists.txt b/contrib/windows-cmake/CMakeLists.txt index e43ea8e513..4e6be35797 100644 --- a/contrib/windows-cmake/CMakeLists.txt +++ b/contrib/windows-cmake/CMakeLists.txt @@ -5,6 +5,8 @@ project(hwloc enable_testing() +option(LWJGL_HAS_X86 "LWJGL flag to skip x86 stuff on ARM build" ON) + option(HWLOC_ENABLE_TESTING "Enable testing" ON) option(HWLOC_SKIP_LSTOPO "don't build/install lstopo") option(HWLOC_SKIP_TOOLS "don't build/install other hwloc tools") @@ -50,10 +52,10 @@ set(SIZEOF_VOID_P ${CMAKE_SIZEOF_VOID_P}) set(HWLOC_X86_32_ARCH) set(HWLOC_X86_64_ARCH) set(HWLOC_HAVE_X86_CPUID 1) -if (CMAKE_SYSTEM_PROCESSOR MATCHES "(^AMD64$|^x86_64$)") +if (LWJGL_HAS_X86 AND CMAKE_SYSTEM_PROCESSOR MATCHES "(^AMD64$|^x86_64$)") # "AMD64" on Windows, "x86_64" on Linux set(HWLOC_X86_64_ARCH 1) -elseif (CMAKE_SYSTEM_PROCESSOR MATCHES "(^x86$|i.86)") +elseif (LWJGL_HAS_X86 AND CMAKE_SYSTEM_PROCESSOR MATCHES "(^x86$|i.86)") # "x86" on Windows, "i.86" on Linux set(HWLOC_X86_32_ARCH 1) else() @@ -122,7 +124,7 @@ add_library(hwloc ${TOPDIR}/hwloc/topology-xml.c ${TOPDIR}/hwloc/topology-xml-nolibxml.c ${TOPDIR}/hwloc/topology-windows.c - ${TOPDIR}/hwloc/topology-x86.c + $<$:${TOPDIR}/hwloc/topology-x86.c> $<$:${TOPDIR}/hwloc/topology-xml-libxml.c> $<$:${TOPDIR}/hwloc/topology-opencl.c> $<$:${TOPDIR}/hwloc/topology-cuda.c>