Skip to content

Adding pic_flag property to compilers#2375

Merged
tgamblin merged 1 commit intospack:developfrom
aprokop:pic_flag
Nov 24, 2016
Merged

Adding pic_flag property to compilers#2375
tgamblin merged 1 commit intospack:developfrom
aprokop:pic_flag

Conversation

@aprokop
Copy link
Copy Markdown
Contributor

@aprokop aprokop commented Nov 21, 2016

Different compilers have different flags for PIC (position-independent
code). This patch provides a common ground to accessing it inside specs.

See discussions in #508 and #2373. This patch does not address the issue
of mixed compilers as mentioned in #508.

Different compilers have different flags for PIC (position-independent
code). This patch provides a common ground to accessing it inside specs.

See discussions in spack#508 and spack#2373. This patch does not address the issue
of mixed compilers as mentioned in spack#508.
@aprokop
Copy link
Copy Markdown
Contributor Author

aprokop commented Nov 21, 2016

According to http://www.pgroup.com/doc/pgiug-x64.pdf:

The following steps describe how to create and use a shared object file.
1. Create an object file with position independent code.
To do this, compile your code with the appropriate PGI compiler using the -fpic option, or one of the equivalent options, such as -fPIC, -Kpic, and -KPIC, which are supported for
compatibility with other systems.

@aprokop
Copy link
Copy Markdown
Contributor Author

aprokop commented Nov 22, 2016

After this PR is merged in some form, here is a list of packages that may require updating:

$ git grep -i -- -fpic
var/spack/repos/builtin/packages/adios/package.py:        extra_args.append("CFLAGS=-fPIC")
var/spack/repos/builtin/packages/arpack/package.py:        makefile.filter('^FFLAGS.*', 'FFLAGS = -O2 -g -fPIC')
var/spack/repos/builtin/packages/atlas/package.py:            # TODO: for non GNU add '-Fa', 'alg', '-fPIC' ?
var/spack/repos/builtin/packages/cantera/package.py:    depends_on('sundials',  when='+sundials')  # must be compiled with -fPIC
var/spack/repos/builtin/packages/cantera/package.py:            'cc_flags=-fPIC',
var/spack/repos/builtin/packages/gcc/piclibs.patch:+CFLAGS = @CFLAGS@ -fPIC
var/spack/repos/builtin/packages/gcc/piclibs.patch:+CPPFLAGS = @CPPFLAGS@ -fPIC
var/spack/repos/builtin/packages/gcc/piclibs.patch:+DEFS = @DEFS@ -fPIC
var/spack/repos/builtin/packages/gcc/piclibs.patch:+FCFLAGS = @FCFLAGS@ -fPIC
var/spack/repos/builtin/packages/gcc/piclibs.patch:+CFLAGS = @CFLAGS@ -fPIC
var/spack/repos/builtin/packages/gcc/piclibs.patch:+CPPFLAGS = @CPPFLAGS@ -fPIC
var/spack/repos/builtin/packages/gcc/piclibs.patch:+DEFS = @DEFS@ -fPIC
var/spack/repos/builtin/packages/grackle/Make.mach.template:MACH_DEFINES   = -DLINUX -DH5_USE_16_API -fPIC
var/spack/repos/builtin/packages/hdf/package.py:            'CFLAGS=-fPIC',
var/spack/repos/builtin/packages/metis/package.py:        options = ['COPTIONS=-fPIC']
var/spack/repos/builtin/packages/metis/package.py:            shared_flags = ['-fPIC', '-shared']
var/spack/repos/builtin/packages/mumps/package.py:        # when building shared libs need -fPIC, otherwise
var/spack/repos/builtin/packages/mumps/package.py:        # can not be used when making a shared object; recompile with -fPIC
var/spack/repos/builtin/packages/mumps/package.py:        fpic = '-fPIC' if '+shared' in self.spec else ''
var/spack/repos/builtin/packages/netlib-scalapack/package.py:        description='Build with -fpic compiler option'
var/spack/repos/builtin/packages/netlib-scalapack/package.py:                "-DCMAKE_C_FLAGS=-fPIC",
var/spack/repos/builtin/packages/netlib-scalapack/package.py:                "-DCMAKE_Fortran_FLAGS=-fPIC"
var/spack/repos/builtin/packages/openblas/package.py:                make_defs.extend(['CFLAGS=-fPIC', 'FFLAGS=-fPIC'])
var/spack/repos/builtin/packages/otf2/package.py:                          "CFLAGS=-fPIC",
var/spack/repos/builtin/packages/otf2/package.py:                          "CXXFLAGS=-fPIC"]
var/spack/repos/builtin/packages/parallel-netcdf/package.py:            args.extend(['CFLAGS=-fPIC', 'CXXFLAGS=-fPIC', 'FFLAGS=-fPIC'])
var/spack/repos/builtin/packages/parmgridgen/package.py:            'COPTIONS=-fPIC',
var/spack/repos/builtin/packages/parmgridgen/package.py:            'LDOPTIONS=-fPIC',
var/spack/repos/builtin/packages/scorep/package.py:                "CFLAGS=-fPIC",
var/spack/repos/builtin/packages/scorep/package.py:                "CXXFLAGS=-fPIC"]
var/spack/repos/builtin/packages/scotch/package.py:                'CLIBFLAGS = -shared -fPIC',
var/spack/repos/builtin/packages/scotch/package.py:            cflags.append('-fPIC')
var/spack/repos/builtin/packages/suite-sparse/package.py:            make_args.extend(['CFLAGS=-fPIC', 'FFLAGS=-fPIC'])
var/spack/repos/builtin/packages/sundials/package.py:            '-DCMAKE_C_FLAGS=-fPIC',
var/spack/repos/builtin/packages/sundials/package.py:            '-DCMAKE_Fortran_FLAGS=-fPIC',
var/spack/repos/builtin/packages/superlu-dist/package.py:            'CFLAGS       = -fPIC -std=c99 -O2 -I%s -I%s' % (
var/spack/repos/builtin/packages/superlu-dist/package.py:            'NOOPTS       = -fPIC -std=c99',
var/spack/repos/builtin/packages/trilinos/package.py:    # Everything should be compiled with -fpic
var/spack/repos/builtin/packages/wannier90/make.sys:FCOPTS=-O2 -fpic
var/spack/repos/builtin/packages/wannier90/make.sys:LDOPTS=-O2 -fpic
var/spack/repos/builtin/packages/zoltan/package.py:            config_cflags.append('-fPIC')

@tgamblin tgamblin merged commit 11bfccd into spack:develop Nov 24, 2016
citibeth pushed a commit to citibeth/spack that referenced this pull request Dec 4, 2016
Different compilers have different flags for PIC (position-independent
code). This patch provides a common ground to accessing it inside specs.

See discussions in spack#508 and spack#2373. This patch does not address the issue
of mixed compilers as mentioned in spack#508.
citibeth pushed a commit to citibeth/spack that referenced this pull request Dec 4, 2016
@aprokop aprokop deleted the pic_flag branch December 7, 2016 22:01
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

Successfully merging this pull request may close these issues.

5 participants