Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

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

Open
barracuda156 opened this issue Sep 6, 2023 · 2 comments

Comments

@barracuda156
Copy link

@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
Copy link
Author

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
Copy link
Owner

helske commented Sep 7, 2023

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?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants