I found the bug: TIFF configures with C++ support enabled even though icpx already failed its C++ test, and the build later dies compiling tif_stream.cxx because icpx cannot resolve the C++ header location. The top-level compile_MET_all.log only reports the wrapper failure from make -j 8; the actionable error is in tiff.make.log.
TIFF’s configure log shows an earlier warning sign: libtool.m4: error: problem compiling CXX test program, followed by icpx supports -c -o file.o... no, but configure still finishes with C++ support: yes. The environment explicitly sets CXX=icpx and CXXFLAGS="-Wall -DHAVE_ISATTY", which is the compiler/flag path used in the failing TIFF C++ compile.
Describe the Problem
MET external library compilation fails while building TIFF 4.6.0 with the Intel oneAPI LLVM compilers. The TIFF configure step detects problems compiling with icpx, but still completes with C++ support enabled. The subsequent TIFF make step fails when compiling libtiff/tif_stream.cxx because icpx cannot resolve the C++ header location.
The first fatal error is:
icpx: error: C++ header location not resolved; check installed C++ dependencies
make[2]: *** [Makefile:724: tif_stream.lo] Error 1
make[1]: *** [Makefile:518: all] Error 2
make: *** [Makefile:556: all-recursive] Error 1
The top-level build then exits with:
ERROR: Command returned with non-zero (2) status: make -j 8 > .../tiff.make.log 2>&1
This appears to be a TIFF C++ configuration/compiler-detection issue in the Intel icx/icpx build path. The configure step logs that icpx cannot compile the C++ test program and does not support -c -o file.o, but still reports C++ support: yes. The build then attempts to compile the C++ source tif_stream.cxx with icpx and fails.
Expected Behavior
compile_MET_all.sh should successfully build and install the required external libraries, including TIFF, when using the Intel oneAPI compilers, or it should fail earlier during TIFF configure with a clear actionable message.
If TIFF C++ support is not required for MET, the TIFF configure step should disable TIFF C++ support when icpx fails the C++ compiler test. If TIFF C++ support is required, the build script should validate that icpx can resolve the system C++ headers before starting the TIFF build, or pass the necessary compiler configuration.
Environment
Describe your runtime environment:
-
Machine: Linux workstation or VM under /home/workhorse
-
OS: Linux x86_64-pc-linux-gnu; install script includes Ubuntu 24.04 handling
-
Software version number(s):
- MET source tarball:
v13.0.0-beta2.tar.gz
- Build directory shown in logs:
MET-12.2.1
- TIFF: 4.6.0
- Compiler family: Intel
CC=icx
CXX=icpx
FC=ifx
- Compiler string shown by MET build:
intel_22.1.0
- Intel oneAPI runtime paths include
2026.0
- Python: 3.12.8
MAKE_ARGS=-j 8
CFLAGS="-fPIC -fPIE -O3 -Wno-implicit-function-declaration -Wno-incompatible-function-pointer-types -Wno-unused-command-line-argument"
CXXFLAGS="-Wall -DHAVE_ISATTY"
To Reproduce
Describe the steps to reproduce the behavior:
-
Install the required packages and Intel oneAPI tooling.
-
Source the Intel oneAPI environment:
source /opt/intel/oneapi/setvars.sh --force
-
Export the Intel compiler environment:
export CC=icx
export CXX=icpx
export FC=ifx
export F77=ifx
export F90=ifx
export CFLAGS="-fPIC -fPIE -O3 -Wno-implicit-function-declaration -Wno-incompatible-function-pointer-types -Wno-unused-command-line-argument"
export CXXFLAGS="-Wall -DHAVE_ISATTY"
-
Download compile_MET_all.sh, tar_files.met-base-develop.tgz, and v13.0.0-beta2.tar.gz.
-
Set the MET build environment:
export TEST_BASE="${WRF_FOLDER}/MET-${met_Version_number}"
export MET_SUBDIR="${TEST_BASE}"
export MET_TARBALL=v13.0.0-beta2.tar.gz
export USE_MODULES=FALSE
export MAKE_ARGS="-j 8"
export MET_PYTHON=/opt/intel/oneapi/intelpython/python3.12
-
Run:
./compile_MET_all.sh 2>&1 | tee compile_MET_all.log
-
Observe that the build stops during TIFF:
Compiling TIFF
./configure --prefix=.../external_libs > .../tiff.configure.log 2>&1
make -j 8 > .../tiff.make.log 2>&1
ERROR: Command returned with non-zero (2) status
-
Open tiff.make.log and observe the real failure:
/bin/bash ../libtool --tag=CXX --mode=compile icpx ... -c -o tif_stream.lo tif_stream.cxx
icpx: error: C++ header location not resolved; check installed C++ dependencies
make[2]: *** [Makefile:724: tif_stream.lo] Error 1
Relevant sample data is attached in:
compile_MET_all.log
tiff.configure.log
tiff.make.log
compile_MET_all.sh
- install script snippet
Relevant Deadlines
NONE
Funding Source
NONE
Define the Metadata
Assignee
Labels
Milestone and Projects
Define Related Issue(s)
Consider the impact to the other METplus components.
This issue likely affects MET builds using the Intel oneAPI LLVM compiler stack, specifically when MET’s external library build compiles TIFF from source. It may affect METplus installations that rely on compile_MET_all.sh to build MET and its external dependencies.
Related issue may be needed in:
Suggested Fix
Update the TIFF build section in compile_MET_all.sh to handle broken or incomplete icpx C++ configuration before running make.
Possible approaches:
-
Disable TIFF C++ support if it is not required:
./configure --prefix=${LIB_DIR} --disable-cxx
-
Add a preflight C++ compiler test for Intel LLVM builds:
echo '#include <iostream>
int main(){ return 0; }' > conftest.cxx
${CXX} ${CXXFLAGS} conftest.cxx -o conftest
If this fails, stop before TIFF configure with a clear message.
-
If TIFF C++ support is required, document and configure the required system C++ header/toolchain dependency for icpx, or pass the appropriate CXXFLAGS/include paths so icpx can locate the C++ standard library headers.
-
Treat libtool.m4: error: problem compiling CXX test program during TIFF configure as fatal for builds that leave TIFF C++ support enabled.
Bugfix Checklist
See the METplus Workflow for details.
I found the bug: TIFF configures with C++ support enabled even though
icpxalready failed its C++ test, and the build later dies compilingtif_stream.cxxbecauseicpxcannot resolve the C++ header location. The top-levelcompile_MET_all.logonly reports the wrapper failure frommake -j 8; the actionable error is intiff.make.log.TIFF’s configure log shows an earlier warning sign:
libtool.m4: error: problem compiling CXX test program, followed byicpx supports -c -o file.o... no, but configure still finishes withC++ support: yes. The environment explicitly setsCXX=icpxandCXXFLAGS="-Wall -DHAVE_ISATTY", which is the compiler/flag path used in the failing TIFF C++ compile.Describe the Problem
MET external library compilation fails while building TIFF 4.6.0 with the Intel oneAPI LLVM compilers. The TIFF configure step detects problems compiling with
icpx, but still completes with C++ support enabled. The subsequent TIFFmakestep fails when compilinglibtiff/tif_stream.cxxbecauseicpxcannot resolve the C++ header location.The first fatal error is:
The top-level build then exits with:
This appears to be a TIFF C++ configuration/compiler-detection issue in the Intel
icx/icpxbuild path. The configure step logs thaticpxcannot compile the C++ test program and does not support-c -o file.o, but still reportsC++ support: yes. The build then attempts to compile the C++ sourcetif_stream.cxxwithicpxand fails.Expected Behavior
compile_MET_all.shshould successfully build and install the required external libraries, including TIFF, when using the Intel oneAPI compilers, or it should fail earlier during TIFF configure with a clear actionable message.If TIFF C++ support is not required for MET, the TIFF configure step should disable TIFF C++ support when
icpxfails the C++ compiler test. If TIFF C++ support is required, the build script should validate thaticpxcan resolve the system C++ headers before starting the TIFF build, or pass the necessary compiler configuration.Environment
Describe your runtime environment:
Machine: Linux workstation or VM under
/home/workhorseOS: Linux
x86_64-pc-linux-gnu; install script includes Ubuntu 24.04 handlingSoftware version number(s):
v13.0.0-beta2.tar.gzMET-12.2.1CC=icxCXX=icpxFC=ifxintel_22.1.02026.0MAKE_ARGS=-j 8CFLAGS="-fPIC -fPIE -O3 -Wno-implicit-function-declaration -Wno-incompatible-function-pointer-types -Wno-unused-command-line-argument"CXXFLAGS="-Wall -DHAVE_ISATTY"To Reproduce
Describe the steps to reproduce the behavior:
Install the required packages and Intel oneAPI tooling.
Source the Intel oneAPI environment:
source /opt/intel/oneapi/setvars.sh --forceExport the Intel compiler environment:
Download
compile_MET_all.sh,tar_files.met-base-develop.tgz, andv13.0.0-beta2.tar.gz.Set the MET build environment:
Run:
Observe that the build stops during TIFF:
Open
tiff.make.logand observe the real failure:Relevant sample data is attached in:
compile_MET_all.logtiff.configure.logtiff.make.logcompile_MET_all.shRelevant Deadlines
NONE
Funding Source
NONE
Define the Metadata
Assignee
Labels
Milestone and Projects
Define Related Issue(s)
Consider the impact to the other METplus components.
This issue likely affects MET builds using the Intel oneAPI LLVM compiler stack, specifically when MET’s external library build compiles TIFF from source. It may affect METplus installations that rely on
compile_MET_all.shto build MET and its external dependencies.Related issue may be needed in:
Suggested Fix
Update the TIFF build section in
compile_MET_all.shto handle broken or incompleteicpxC++ configuration before runningmake.Possible approaches:
Disable TIFF C++ support if it is not required:
./configure --prefix=${LIB_DIR} --disable-cxxAdd a preflight C++ compiler test for Intel LLVM builds:
If this fails, stop before TIFF configure with a clear message.
If TIFF C++ support is required, document and configure the required system C++ header/toolchain dependency for
icpx, or pass the appropriateCXXFLAGS/include paths soicpxcan locate the C++ standard library headers.Treat
libtool.m4: error: problem compiling CXX test programduring TIFF configure as fatal for builds that leave TIFF C++ support enabled.Bugfix Checklist
See the METplus Workflow for details.
Branch name:
bugfix_<Issue Number>_main_<Version>_fix_tiff_icpx_cxx_buildPull request:
bugfix <Issue Number> main_<Version> fix TIFF icpx CXX buildSelect: Reviewer(s) and Development issue
Select: Milestone as the next bugfix version
Select: Coordinated METplus-X.Y Support project for support of the current coordinated release
Branch name:
bugfix_<Issue Number>_develop_fix_tiff_icpx_cxx_buildPull request:
bugfix <Issue Number> develop fix TIFF icpx CXX buildSelect: Reviewer(s) and Development issue
Select: Milestone as the next official version
Select: METplus-Wrappers-X.Y.Z Development project for development toward the next official release