Skip to content
Open
Show file tree
Hide file tree
Changes from 16 commits
Commits
Show all changes
47 commits
Select commit Hold shift + click to select a range
896f912
CI: Create a Cygwin workflow
DWesl Nov 20, 2023
110c0be
FIX: Set ESMF_DIR to CI exec location.
DWesl Nov 20, 2023
3045b70
FIX: Install Cygwin make.
DWesl Nov 20, 2023
fd0e167
FIX: Ensure bash/dash installed, Cygwin make used.
DWesl Nov 20, 2023
839602d
FIX: Check ESMF_DIR setting.
DWesl Nov 20, 2023
438d20c
DBG: Add more information to pwd check
DWesl Nov 20, 2023
fdd00b3
DBG: Try to fix newline errors.
DWesl Nov 20, 2023
6d4fece
BLD: Ensure kill, sigset*, M_PI, and friends get defined on Cygwin.
DWesl Nov 20, 2023
9a8dad3
CI: Install liblapack-devel on Cygwin runner.
DWesl Nov 20, 2023
171e8b5
BLD: Fix shared library compile lines for Cygwin
DWesl Nov 20, 2023
b8f1537
FIX: Fix syntax in SL linking rule.
DWesl Nov 20, 2023
44c66ba
CI,FIX: Install protex files for doc build.
DWesl Nov 21, 2023
72e2a45
CI: Add Python and tests to Cygwin CI job.
DWesl Nov 21, 2023
9bf40db
CI: Ensure Lapack is in Cygwin path.
DWesl Nov 21, 2023
7689a41
Merge pull request #201 from DWesl/esmf-cygwin-compile
theurich Dec 8, 2023
6ac7f8c
Fix logic syntax, and formatting.
theurich Dec 8, 2023
9afb99d
CI: Update Cygwin CI workflow triggers.
DWesl Dec 11, 2023
8323f76
CI:Cygwin: Remove ESMPy and doc checks.
DWesl May 10, 2024
f04998c
CI: Drop runs on each CI commit
DWesl Feb 6, 2025
7a4891d
Merge branch 'esmf-org:develop' into esmf-cygwin-compile
DWesl Feb 6, 2025
caf1a51
CI: Add CMake for PIO build
DWesl Feb 6, 2025
ff0fa78
CI:Cygwin: Run on release-like tags
DWesl Feb 10, 2025
a6ce87b
CI:Cygwin: Install CMake for PIO
DWesl Feb 10, 2025
7576ad7
CI:Cygwin: Remove LaTeX packages for skipped doc build
DWesl Mar 13, 2025
9d3af6b
Merge branch 'esmf-org:develop' into esmf-cygwin-compile
DWesl Mar 13, 2025
fd49f7f
CI:Cygwin: Define ESMFMKFILE
DWesl Mar 14, 2025
3ed8bf7
CI:Cygwin: Install libyaml-devel and specify ESMFMKFILE for ESMPy
DWesl Mar 15, 2025
4047714
CI:Cygwin: Fix ESMFMKFILE value
DWesl Mar 15, 2025
ba9568f
ENH:ESMPy: Add ESMF_OS constant for Cygwin
DWesl Mar 19, 2025
17d4b29
ENH:ESMPy: Tell ESMF loader about Cygwin
DWesl Mar 19, 2025
23eb16e
CI:Cygwin: Check installed files
DWesl Mar 20, 2025
e941576
BLD:Cygwin: Ensure DLL gets installed, not just import library
DWesl Mar 20, 2025
c1aee18
BLD:Cygwin: List ESMF_LDIR contents after making a shared library
DWesl Mar 21, 2025
f9e8875
BLD:Cygwin: List ESMF_LDIR when building a shared library
DWesl Mar 21, 2025
ba335a8
BLD:Cygwin: Fix syntax for building shared libraries
DWesl Mar 21, 2025
ab311e4
BLD:Cygwin: Link netCDF libraries when linking PIO
DWesl Mar 21, 2025
391f0ae
BLD:Cygwin: Fix syntax for netCDF libraries
DWesl Mar 21, 2025
8e02f25
BLD:Cygwin: Fix syntax for shared library rule
DWesl Mar 21, 2025
0460ac1
BLD:Cygwin: Create binary install directory
DWesl Mar 22, 2025
c9878cd
ENH:ESMPy:Cygwin: Separate DLL loading code from other platforms
DWesl Mar 23, 2025
8ede710
DBG:CI:Cygwin: Find variable names in esmf.mk
DWesl Mar 24, 2025
406bc94
FIX:ESMPy:Cygwin: Fix name of APPSDIR
DWesl Mar 26, 2025
69481d8
CI:Cygwin: Install version of pytest compatible with python version
DWesl Mar 26, 2025
1484abf
Merge branch 'feature/esmf-cygwin-compile' into esmf-cygwin-compile
DWesl Mar 28, 2025
e0de93b
Merge branch 'esmf-org:develop' into esmf-cygwin-compile
DWesl Apr 5, 2025
640308b
Merge branch 'esmf-org:develop' into esmf-cygwin-compile
DWesl Apr 16, 2025
29ab9b8
Merge pull request #370 from DWesl/esmf-cygwin-compile
DWesl Apr 24, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
74 changes: 74 additions & 0 deletions .github/workflows/test-build-cygwin.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,74 @@
name: Test on Cygwin
on: ["push", "pull_request"]
Comment thread
DWesl marked this conversation as resolved.
Outdated

concurrency:
group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }}
cancel-in-progress: true

permissions:
contents: read # to fetch code (actions/checkout)

env:
SHELLOPTS: igncr
CYGWIN_NOWINPATH: 1
CHERE_INVOKING: 1
ESMF_DIR: /cygdrive/d/a/esmf/esmf
ESMF_BOPT: O
ESMF_OPTLEVEL: 2
ESMF_COMM: mpiuni
ESMF_COMPILER: gfortran
ESMF_TESTSHAREDOBJ: ON
ESMF_RANLIB: ranlib
ESMF_LAPACK: system
ESMF_LAPACK_LIBPATH: /usr/lib
ESMF_LAPACK_LIBS: -llapack -lblas
NETCDF: /usr
ESMF_NETCDF: split
ESMF_NETCDF_INCLUDE: /usr/include
ESMF_NETCDF_LIBPATH: /usr/lib
ESMF_CXX: g++
ESMF_CXXCOMPILEOPTS: "-g -O2"
ESMF_F90: gfortran
ESMF_F90COMPILEOPTS: "-g -O2"
ESMF_INSTALL_PREFIX: /tmp/fakeroot/usr
ESMF_INSTALL_DOCDIR: share/doc/esmf

jobs:
cygwin_build_test:
runs-on: windows-latest
steps:
- run: git config --global core.autocrlf input
- uses: actions/checkout@v3
with:
submodules: recursive
- uses: cygwin/cygwin-install-action@v4
with:
platform: x86_64
install-dir: 'C:\tools\cygwin'
packages: >-
openmpi gcc-core gcc-fortran gcc-g++ libnetcdf-devel libnetcdf-fortran-devel
texlive-collection-latex texlive-collection-latexextra perl make bash dash
liblapack-devel
python39-devel python39-pip python39-numpy python39-pytest
- name: Set Windows PATH
uses: egor-tensin/cleanup-path@v3
with:
dirs: 'C:\tools\cygwin\bin;C:\tools\cygwin\lib\lapack'
- name: Check location
run: |
C:\tools\cygwin\bin\dash.exe -c "echo PWD; pwd; echo ESMF_DIR=${ESMF_DIR}"
- name: Build ESMF
run: |
C:\tools\cygwin\bin\dash.exe -c "/usr/bin/make all"
- name: Build ESMPy
run: |
C:\tools\cygwin\bin\dash.exe -c "cd src/addon/esmpy; python -m pip install ."
- name: Check ESMF
run: |
C:\tools\cygwin\bin\dash.exe -c "/usr/bin/make check"
- name: Check ESMPy
run: |
C:\tools\cygwin\bin\dash.exe -c "cd src/addon/esmpy; /usr/bin/make download test_all"
- name: Build ESMF Docs
run: |
C:\tools\cygwin\bin\dash.exe -c "/usr/bin/make doc"
23 changes: 16 additions & 7 deletions build/common.mk
Original file line number Diff line number Diff line change
Expand Up @@ -4027,7 +4027,11 @@ $(ESMF_LOCOBJDIR)/%.o : %.cpp

.F90.$(ESMF_SL_SUFFIX):
$(ESMF_F90COMPILEFREECPP_CMD) $(ESMF_SO_F90COMPILEOPTS) $<
$(ESMF_F90LINKER) $(ESMF_SO_F90LINKOPTS) $(ESMF_F90LINKOPTS) $(ESMF_F90LINKPATHS) $(ESMF_F90LINKRPATHS) -o $@ $*.o $(ESMF_F90ESMFLINKLIBS)
if [ $(ESMF_SL_SUFFIX) != "dll.a" ] ; then \
$(ESMF_F90LINKER) $(ESMF_SO_F90LINKOPTS) $(ESMF_F90LINKOPTS) $(ESMF_F90LINKPATHS) $(ESMF_F90LINKRPATHS) -o $@ $*.o $(ESMF_F90ESMFLINKLIBS); \
else \
$(ESMF_F90LINKER) $(ESMF_SO_F90LINKOPTS) $(ESMF_F90LINKOPTS) $(ESMF_F90LINKPATHS) -shared -o $(@:.dll.a=.dll) -Wl,--out-implib=$@ -Wl,--export-all-symbols -Wl,--whole-archive $*.o -Wl,--no-whole-archive $(ESMF_F90ESMFLINKLIBS); \
fi;

.F90.$(ESMF_LIB_SUFFIX):
$(ESMF_F90COMPILEFREECPP_CMD) $<
Expand Down Expand Up @@ -4127,12 +4131,17 @@ shared:
echo Converting $$NEXTLIB.a to $$NEXTLIB.$(ESMF_SL_SUFFIX) ;\
mkdir tmp_$$NEXTLIB ;\
cd tmp_$$NEXTLIB ;\
$(ESMF_AREXTRACT) ../$$NEXTLIB.$(ESMF_LIB_SUFFIX) ;\
echo $(ESMF_SL_LIBLINKER) $(ESMF_SL_LIBOPTS) -o $(ESMF_LDIR)/$$NEXTLIB.$(ESMF_SL_SUFFIX) *.o $(ESMF_SL_LIBLIBS) ;\
$(ESMF_SL_LIBLINKER) $(ESMF_SL_LIBOPTS) -o $(ESMF_LDIR)/$$NEXTLIB.$(ESMF_SL_SUFFIX) *.o $(ESMF_SL_LIBLIBS) ;\
echo Converting $$NEXTLIB.$(ESMF_SL_SUFFIX) to $$NEXTLIB\_fullylinked.$(ESMF_SL_SUFFIX) ;\
echo $(ESMF_SL_LIBLINKER) $(ESMF_SL_LIBOPTS) -o $(ESMF_LDIR)/$$NEXTLIB\_fullylinked.$(ESMF_SL_SUFFIX) *.o $(ESMF_CXXLINKOPTS) $(ESMF_CXXLINKPATHS) $(ESMF_CXXLINKRPATHS) $(ESMF_CXXLINKLIBS) ;\
$(ESMF_SL_LIBLINKER) $(ESMF_SL_LIBOPTS) -o $(ESMF_LDIR)/$$NEXTLIB\_fullylinked.$(ESMF_SL_SUFFIX) *.o $(ESMF_CXXLINKOPTS) $(ESMF_CXXLINKPATHS) $(ESMF_CXXLINKRPATHS) $(ESMF_CXXLINKLIBS) ;\
$(ESMF_AREXTRACT) ../$$NEXTLIB.$(ESMF_LIB_SUFFIX) ;\
if [ $(ESMF_SL_SUFFIX) != "dll.a" ] ; then \
echo $(ESMF_SL_LIBLINKER) $(ESMF_SL_LIBOPTS) -o $(ESMF_LDIR)/$$NEXTLIB.$(ESMF_SL_SUFFIX) *.o $(ESMF_SL_LIBLIBS) ;\
$(ESMF_SL_LIBLINKER) $(ESMF_SL_LIBOPTS) -o $(ESMF_LDIR)/$$NEXTLIB.$(ESMF_SL_SUFFIX) *.o $(ESMF_SL_LIBLIBS) ;\
echo Converting $$NEXTLIB.$(ESMF_SL_SUFFIX) to $$NEXTLIB\_fullylinked.$(ESMF_SL_SUFFIX) ;\
echo $(ESMF_SL_LIBLINKER) $(ESMF_SL_LIBOPTS) -o $(ESMF_LDIR)/$$NEXTLIB\_fullylinked.$(ESMF_SL_SUFFIX) *.o $(ESMF_CXXLINKOPTS) $(ESMF_CXXLINKPATHS) $(ESMF_CXXLINKRPATHS) $(ESMF_CXXLINKLIBS) ;\
$(ESMF_SL_LIBLINKER) $(ESMF_SL_LIBOPTS) -o $(ESMF_LDIR)/$$NEXTLIB\_fullylinked.$(ESMF_SL_SUFFIX) *.o $(ESMF_CXXLINKOPTS) $(ESMF_CXXLINKPATHS) $(ESMF_CXXLINKRPATHS) $(ESMF_CXXLINKLIBS) ;\
else \
echo $(ESMF_SL_LIBLINKER) $(ESMF_SL_LIBOPTS) -o $(ESMF_LDIR)/cyg$${NEXTLIB#lib}\.dll -Wl,--out-implib=$(ESMF_LDIR)/$$NEXTLIB\.dll.a -Wl,--export-all-symbols -Wl,--enable-auto-import -Wl,--whole-archive *.o -Wl,--no-whole-archive $(ESMF_CXXLINKOPTS) $(ESMF_CXXLINKPATHS) $(ESMF_CXXLINKRPATHS) $(ESMF_CXXLINKLIBS) ;\
$(ESMF_SL_LIBLINKER) $(ESMF_SL_LIBOPTS) -o $(ESMF_LDIR)/cyg$${NEXTLIB#lib}\.dll -Wl,--out-implib=$(ESMF_LDIR)/$$NEXTLIB\.dll.a -Wl,--export-all-symbols -Wl,--enable-auto-import -Wl,--whole-archive *.o -Wl,--no-whole-archive $(ESMF_CXXLINKOPTS) $(ESMF_CXXLINKPATHS) $(ESMF_CXXLINKRPATHS) $(ESMF_CXXLINKLIBS) ;\
fi ;\
cd .. ;\
$(ESMF_RM) -r tmp_$$NEXTLIB ;\
fi ;\
Expand Down
5 changes: 3 additions & 2 deletions build_config/Cygwin.gfortran.default/build_rules.mk
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@
ESMF_F90DEFAULT = gfortran
ESMF_CXXDEFAULT = g++
ESMF_CDEFAULT = gcc
ESMF_CXXCOMPILECPPFLAGS+= -D_BSD_SOURCE -D_POSIX_C_SOURCE=199309L

############################################################
# Default MPI setting.
Expand Down Expand Up @@ -115,8 +116,8 @@ ESMF_CXXOPTFLAG_G += -Wall -Wextra -Wno-unused

############################################################
# Cygwin 1.5.24 does not yet support POSIX IPC (memory mapped files)
#
ESMF_CXXCOMPILECPPFLAGS += -DESMF_NO_POSIXIPC
# Cygwin 3.4.9 might
# ESMF_CXXCOMPILECPPFLAGS += -DESMF_NO_POSIXIPC

############################################################
# Fortran symbol convention
Expand Down