helske / Rlibeemd

Ensemble Empirical Mode Decomposition (EEMD) and Its Complete Variant (CEEMDAN)
37 stars 12 forks source link

[macOS] configure does not define SHLIB_OPENMP_CFLAGS, so OpenMP is not used #10

Open barracuda156 opened 1 year ago

barracuda156 commented 1 year ago

@helske Turned out, OpenMP detection does not work, at least in 1.4.3:

This file contains any messages produced by compilers while
running configure, to aid debugging if configure makes a mistake.

It was created by Rlibeemd configure 1.4.2, which was
generated by GNU Autoconf 2.69.  Invocation command line was

  $ ./configure 

## --------- ##
## Platform. ##
## --------- ##

hostname = 10.6.shared
uname -m = x86_64
uname -r = 10.8.0
uname -s = Darwin
uname -v = Darwin Kernel Version 10.8.0: Tue Jun  7 16:32:41 PDT 2011; root:xnu-1504.15.3~1/RELEASE_X86_64

/usr/bin/uname -p = i386
/bin/uname -X     = unknown

/bin/arch              = unknown
/usr/bin/arch -k       = unknown
/usr/convex/getsysinfo = unknown
/usr/bin/hostinfo      = Mach kernel version:
     Darwin Kernel Version 10.8.0: Tue Jun  7 16:32:41 PDT 2011; root:xnu-1504.15.3~1/RELEASE_X86_64
Kernel configured for up to 8 processors.
8 processors are physically available.
8 processors are logically available.
Processor type: i486 (Intel 80486)
Processors active: 0 1 2 3 4 5 6 7
Primary memory available: 8.00 gigabytes
Default processor set: 153 tasks, 392 threads, 8 processors
Load average: 3.40, Mach factor: 4.68
/bin/machine           = unknown
/usr/bin/oslevel       = unknown
/bin/universe          = unknown

PATH: /opt/local/bin
PATH: /opt/local/sbin
PATH: /bin
PATH: /sbin
PATH: /usr/bin
PATH: /usr/sbin

## ----------- ##
## Core tests. ##
## ----------- ##

configure:1685: checking for gsl-config
configure:1703: found /opt/local/bin/gsl-config
configure:1715: result: /opt/local/bin/gsl-config
configure:1889: creating ./config.status

## ---------------------- ##
## Running config.status. ##
## ---------------------- ##

This file was extended by Rlibeemd config.status 1.4.2, which was
generated by GNU Autoconf 2.69.  Invocation command line was

  CONFIG_FILES    = 
  CONFIG_HEADERS  = 
  CONFIG_LINKS    = 
  CONFIG_COMMANDS = 
  $ ./config.status 

on 10.6.shared

config.status:716: creating src/Makevars

## ---------------- ##
## Cache variables. ##
## ---------------- ##

ac_cv_env_build_alias_set=
ac_cv_env_build_alias_value=
ac_cv_env_host_alias_set=
ac_cv_env_host_alias_value=
ac_cv_env_target_alias_set=
ac_cv_env_target_alias_value=
ac_cv_path_GSL_CONFIG=/opt/local/bin/gsl-config

## ----------------- ##
## Output variables. ##
## ----------------- ##

DEFS='-DPACKAGE_NAME=\"Rlibeemd\" -DPACKAGE_TARNAME=\"rlibeemd\" -DPACKAGE_VERSION=\"1.4.2\" -DPACKAGE_STRING=\"Rlibeemd\ 1.4.2\" -DPACKAGE_BUGREPORT=\"\" -DPACKAGE_URL=\"\"'
ECHO_C=''
ECHO_N='-n'
ECHO_T=''
GSL_CFLAGS='-I/opt/local/include'
GSL_CONFIG='/opt/local/bin/gsl-config'
GSL_LIBS='-L/opt/local/lib -lgsl -lgslcblas'
LIBOBJS=''
LIBS=''
LTLIBOBJS=''
PACKAGE_BUGREPORT=''
PACKAGE_NAME='Rlibeemd'
PACKAGE_STRING='Rlibeemd 1.4.2'
PACKAGE_TARNAME='rlibeemd'
PACKAGE_URL=''
PACKAGE_VERSION='1.4.2'
PATH_SEPARATOR=':'
SHELL='/bin/sh'
bindir='${exec_prefix}/bin'
build_alias=''
datadir='${datarootdir}'
datarootdir='${prefix}/share'
docdir='${datarootdir}/doc/${PACKAGE_TARNAME}'
dvidir='${docdir}'
exec_prefix='${prefix}'
host_alias=''
htmldir='${docdir}'
includedir='${prefix}/include'
infodir='${datarootdir}/info'
libdir='${exec_prefix}/lib'
libexecdir='${exec_prefix}/libexec'
localedir='${datarootdir}/locale'
localstatedir='${prefix}/var'
mandir='${datarootdir}/man'
oldincludedir='/usr/include'
pdfdir='${docdir}'
prefix='/usr/local'
program_transform_name='s,x,x,'
psdir='${docdir}'
runstatedir='${localstatedir}/run'
sbindir='${exec_prefix}/sbin'
sharedstatedir='${prefix}/com'
sysconfdir='${prefix}/etc'
target_alias=''

## ----------- ##
## confdefs.h. ##
## ----------- ##

/* confdefs.h */
#define PACKAGE_NAME "Rlibeemd"
#define PACKAGE_TARNAME "rlibeemd"
#define PACKAGE_VERSION "1.4.2"
#define PACKAGE_STRING "Rlibeemd 1.4.2"
#define PACKAGE_BUGREPORT ""
#define PACKAGE_URL ""

configure: exit 0

Build is fine, but OpenMP is not used, despite being, obviously, supported by GCC.

Makevars are written like:

GSL_CFLAGS = -I/opt/local/include
GSL_LIBS = -L/opt/local/lib -lgsl -lgslcblas
PKG_LIBS=$(GSL_LIBS) $(SHLIB_OPENMP_CFLAGS)
PKG_CFLAGS=$(GSL_CFLAGS) $(SHLIB_OPENMP_CFLAGS)

And then SHLIB_OPENMP_CFLAGS are undefined. Should be -fopenmp there instead for it to work.

barracuda156 commented 1 year ago

P. S. Clang will likely need -lomp in ldflags in addition to -fopenmp; with GCC it should not be used (otherwise build will be broken, since libomp is LLVM-specific library).

helske commented 1 year ago

Hmm, I don't quite remember how did I end up with the current Makevars/configure, which I haven't changed in ages, did the old Makevars work earlier?