Skip to content

Commit

Permalink
ci: add CI build for Digital Mars C/C++ Compiler
Browse files Browse the repository at this point in the history
  • Loading branch information
nemequ committed Sep 13, 2024
1 parent 2e9c453 commit a8f3e8b
Show file tree
Hide file tree
Showing 3 changed files with 136 additions and 106 deletions.
154 changes: 92 additions & 62 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -23,75 +23,105 @@ jobs:
- name: Check for changes
run: git diff --exit-code

nvhpc:
runs-on: ubuntu-latest
dmc:
runs-on: windows-latest
strategy:
matrix:
version:
# For available versions, see https://developer.download.nvidia.com/hpc-sdk/ubuntu/amd64/Packages
- "20.11"
# - "21.1" ## BROKEN. File size mismatch.
# - "21.2"
# - "21.3"
# - "21.5"
# - "21.7"
# - "21.9"
# - "21.11"
# - "22.1"
# - "22.2"
# - "22.3"
# - "22.5"
# - "22.7"
# - "22.9"
# - "22.11"
# - "23.1"
# - "23.3"
# - "23.5"
# - "23.7"
# - "23.9"
# - "23.11"
# - "24.1"
# - "24.3"
- "24.7"
# - "8.26"
# - "8.35"
- "8.40"
- "8.45"
# - "8.50"
# - "8.57"
steps:
- uses: actions/checkout@v4
- name: Free some disk space
run: sudo rm -rf /usr/local/lib/android /usr/local/.ghcup/ghc
- name: Install NVidia HPC SDK
- name: Install Digital Mars C/C++ Compiler
run: |
curl https://developer.download.nvidia.com/hpc-sdk/ubuntu/DEB-GPG-KEY-NVIDIA-HPC-SDK | sudo gpg --dearmor -o /usr/share/keyrings/nvidia-hpcsdk-archive-keyring.gpg
echo 'deb [signed-by=/usr/share/keyrings/nvidia-hpcsdk-archive-keyring.gpg] https://developer.download.nvidia.com/hpc-sdk/ubuntu/amd64 /' | sudo tee /etc/apt/sources.list.d/nvhpc.list
sudo apt-get update -y
sudo apt-get install -y nvhpc-$(echo "${{ matrix.version }}" | tr '.' '-')
- name: Compile
env:
CC: /opt/nvidia/hpc_sdk/Linux_x86_64/"${{ matrix.version }}"/compilers/bin/nvc
CXX: /opt/nvidia/hpc_sdk/Linux_x86_64/"${{ matrix.version }}"/compilers/bin/nvc++
$version = "${{ matrix.version }}".Replace(".", "")
$url = "http://ftp.digitalmars.com/Digital_Mars_C++/Patch/dm${version}c.zip"
Invoke-WebRequest -Uri "${url}" -OutFile "dmc.zip"
Expand-Archive -LiteralPath "dmc.zip" -DestinationPath dmc-tmp
Move-Item -Path dmc-tmp\* -Destination dmc
working-directory: test
run: make

pelles-c:
runs-on: windows-latest
strategy:
matrix:
version:
# https://community.chocolatey.org/packages/pelles-c#versionhistory
- "12.0.2"
- "11.0.2"
- "10.0.6"
- "9.00.0.0"
# - "8.00.0.0" ## Installation times out.
steps:
- uses: actions/checkout@v2
- name: Install Pelles-C
uses: crazy-max/ghaction-chocolatey@v3
with:
args: install pelles-c --version "${{ matrix.version }}" --no-progress
- name: Debug
run: dir test\dmc\bin
- name: Compile
env:
CC: 'C:\Program Files\PellesC\bin\pocc.exe'
LD: 'C:\Program Files\PellesC\bin\polink.exe'
CFLAGS: '/IC:\Progra~1\PellesC\Include'
LDFLAGS: '/LIBPATH:C:\Progra~1\PellesC\lib /LIBPATH:C:\Progra~1\PellesC\Lib\Win64'
CC: dmc\bin\dmc.exe
CXX: dmc\bin\dmc.exe
run: make -f Makefile.dmc
working-directory: test
run: make -f Makefile.pelles

# nvhpc:
# runs-on: ubuntu-latest
# strategy:
# matrix:
# version:
# # For available versions, see https://developer.download.nvidia.com/hpc-sdk/ubuntu/amd64/Packages
# - "20.11"
# # - "21.1" ## BROKEN. File size mismatch.
# # - "21.2"
# # - "21.3"
# # - "21.5"
# # - "21.7"
# # - "21.9"
# # - "21.11"
# # - "22.1"
# # - "22.2"
# # - "22.3"
# # - "22.5"
# # - "22.7"
# # - "22.9"
# # - "22.11"
# # - "23.1"
# # - "23.3"
# # - "23.5"
# # - "23.7"
# # - "23.9"
# # - "23.11"
# # - "24.1"
# # - "24.3"
# - "24.7"
# steps:
# - uses: actions/checkout@v4
# - name: Free some disk space
# run: sudo rm -rf /usr/local/lib/android /usr/local/.ghcup/ghc
# - name: Install NVidia HPC SDK
# run: |
# curl https://developer.download.nvidia.com/hpc-sdk/ubuntu/DEB-GPG-KEY-NVIDIA-HPC-SDK | sudo gpg --dearmor -o /usr/share/keyrings/nvidia-hpcsdk-archive-keyring.gpg
# echo 'deb [signed-by=/usr/share/keyrings/nvidia-hpcsdk-archive-keyring.gpg] https://developer.download.nvidia.com/hpc-sdk/ubuntu/amd64 /' | sudo tee /etc/apt/sources.list.d/nvhpc.list
# sudo apt-get update -y
# sudo apt-get install -y nvhpc-$(echo "${{ matrix.version }}" | tr '.' '-')
# - name: Compile
# env:
# CC: /opt/nvidia/hpc_sdk/Linux_x86_64/"${{ matrix.version }}"/compilers/bin/nvc
# CXX: /opt/nvidia/hpc_sdk/Linux_x86_64/"${{ matrix.version }}"/compilers/bin/nvc++
# working-directory: test
# run: make

# pelles-c:
# runs-on: windows-latest
# strategy:
# matrix:
# version:
# # https://community.chocolatey.org/packages/pelles-c#versionhistory
# - "12.0.2"
# - "11.0.2"
# - "10.0.6"
# - "9.00.0.0"
# # - "8.00.0.0" ## Installation times out.
# steps:
# - uses: actions/checkout@v2
# - name: Install Pelles-C
# uses: crazy-max/ghaction-chocolatey@v3
# with:
# args: install pelles-c --version "${{ matrix.version }}" --no-progress
# - name: Compile
# env:
# CC: 'C:\Program Files\PellesC\bin\pocc.exe'
# LD: 'C:\Program Files\PellesC\bin\polink.exe'
# CFLAGS: '/IC:\Progra~1\PellesC\Include'
# LDFLAGS: '/LIBPATH:C:\Progra~1\PellesC\lib /LIBPATH:C:\Progra~1\PellesC\Lib\Win64'
# working-directory: test
# run: make -f Makefile.pelles
10 changes: 5 additions & 5 deletions test/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -189,12 +189,12 @@ Makefile.iar: Makefile

Makefile.dmc: Makefile
@$(ECHO) -e "# Generated by Makefile. Do not edit.\r" > $@
@$(ECHO) -e "CC = \"dmc.exe\"\r" >> $@
@$(ECHO) -e "CXX = \x24(CC)\r" >> $@
@$(ECHO) -e "CC ?= \"dmc.exe\"\r" >> $@
@$(ECHO) -e "CXX ?= \x24(CC)\r" >> $@
@$(ECHO) -e "\r" >> $@

@$(ECHO) -e "CFLAGS = -w -w17 -w18 -wx\r" >> $@
@$(ECHO) -e "CXXFLAGS = -wc \x24(CFLAGS)\r" >> $@
@$(ECHO) -e "CFLAGS ?= -w -w17 -w18 -wx\r" >> $@
@$(ECHO) -e "CXXFLAGS ?= -wc \x24(CFLAGS)\r" >> $@
@$(ECHO) -e "\r" >> $@

@$(ECHO) -e "TESTS = \x5c\r" >> $@
Expand All @@ -208,7 +208,7 @@ Makefile.dmc: Makefile
@$(ECHO) -e "all: \x24(TESTS)\r\n\r" >> $@
@$(ECHO) -e "clean:\r\n\tdel /Q \x24(CLEANFILES)\r\n\r" >> $@

@$(foreach file,$(TESTS),$(ECHO) -e "$(file:=.exe): $(file:=.c)\r\n\t\x24(CC) \x24(CFLAGS) -o \x24(@) \x24(?)\r\n$(file:=.cpp): $(file:=.c)\r\n\tcopy /Y \x24(?) \x24(@) >NUL\r\n$(file:=-cpp.exe): $(file:=.cpp)\r\n\t\x24(CXX) \x24(CXXFLAGS) -o \x24(@) \x24(?)\r\n\r" >> $@;)
@$(foreach file,$(TESTS),$(ECHO) -e "$(file:=.exe): $(file:=.c)\r\n\t\x24(CC) \x24(CFLAGS) -o \x24(@) \x24(?)\r\n$(file:=.cpp): $(file:=.c)\r\n\tcp -f \x24(?) \x24(@)\r\n$(file:=-cpp.exe): $(file:=.cpp)\r\n\t\x24(CXX) \x24(CXXFLAGS) -o \x24(@) \x24(?)\r\n\r" >> $@;)

Makefile.msvc: Makefile
@$(ECHO) -e "# Generated by Makefile. Do not edit.\r" > $@
Expand Down
Loading

0 comments on commit a8f3e8b

Please sign in to comment.