1. 12 Jun, 2012 1 commit
    • Stephen Kelly's avatar
      Add platform variables for position independent code flags · 31d7a0f2
      Stephen Kelly authored
      Store in new platform variables
      
        CMAKE_${lang}_COMPILE_OPTIONS_PIC
        CMAKE_${lang}_COMPILE_OPTIONS_PIE
      
      flags for position independent code generation.
      
      In almost all cases, this means duplication of the
      CMAKE_SHARED_LIBRARY_${lang}_FLAGS for the _PIC case and using the
      assumed pie equivalent for the _PIE case.  Note that the GNU compiler
      has supported -fPIE since 3.4 and that there is no -fPIC on GNU for
      Windows or Cygwin.
      
      There is a possibility that the _PIE variables are not correct.
      However, as there is no backwards compatibility to be concerned about
      (as the POSITION_INDEPENDENT_CODE property is not used anywhere yet),
      the current state suffices.
      31d7a0f2
  2. 30 Apr, 2012 2 commits
    • Modestas Vainius's avatar
      Support building shared libraries or modules without soname (#13155) · e1409ac5
      Modestas Vainius authored
      Add a boolean target property NO_SONAME which may be used to disable
      soname for the specified shared library or module even if the platform
      supports it.  This property should be useful for private shared
      libraries or various plugins which live in private directories and have
      not been designed to be found or loaded globally.
      
      Replace references to <CMAKE_SHARED_LIBRARY_SONAME_${LANG}_FLAG> and
      hard-coded -install_name flags with a conditional <SONAME_FLAG> which is
      expanded to the value of the CMAKE_SHARED_LIBRARY_SONAME_${LANG}_FLAG
      definition as long as soname supports is enabled for the target in
      question.  Keep expanding CMAKE_SHARED_LIBRARY_SONAME_${LANG}_FLAG in
      rules in case third party projects still use it.  Such projects would
      not yet use NO_SONAME so the adjacent <TARGET_SONAME> will always be
      expanded.  Make <TARGET_INSTALLNAME_DIR> NO_SONAME aware as well.  Since
      -install_name is soname on OS X, this should not be a problem if this
      variable is expanded only if soname is enabled.
      
      The Ninja generator performs rule variable substitution only once
      globally per rule to put its own placeholders.  Final substitution is
      performed by ninja at build time.  Therefore we cannot conditionally
      replace the soname placeholders on a per-target basis.  Rather than
      omitting $SONAME from rules.ninja, simply do not write its contents for
      targets which have NO_SONAME.  Since 3 variables are affected by
      NO_SONAME ($SONAME, $SONAME_FLAG, $INSTALLNAME_DIR), set them only if
      soname is enabled.
      e1409ac5
    • Brad King's avatar
  3. 24 Apr, 2012 1 commit
    • Brad King's avatar
      Intel: On Windows use /EHsc instead of deprecated /GX (#13163) · 4f80896e
      Brad King authored
      Use of the deprecated option with Intel 2011 produces
      
       icl: command line remark #10010: option '/GX' is deprecated and will
       be removed in a future release. See '/help deprecated'
      
      so use its replacement option which has been supported for several
      older versions anyway.
      4f80896e
  4. 06 Apr, 2012 2 commits
  5. 26 Mar, 2012 1 commit
  6. 20 Mar, 2012 1 commit
  7. 08 Mar, 2012 1 commit
    • David Cole's avatar
      Xcode: Detect new default locations of Xcode 4.3 bits and pieces (#12621) · 4693cf84
      David Cole authored
      Xcode 4.3 installs into "/Applications" by default, from the Mac App Store.
      
      Also, the paths to the available SDKs changed: they are now within the
      Xcode.app bundle.
      
      PackageMaker is installed as a separate program, and may be installed
      anywhere. It is not installed with Xcode 4.3 by default anymore.
      Download the "Auxiliary Tools for Xcode" to get PackageMaker.
      Put PackageMaker inside the Xcode.app bundle, in its nested Applications
      folder, or put it alongside Xcode in "/Applications" and CMake will find
      it.
      
      Update references to "find" paths: add new possible locations for finding
      Xcode.app and PackageMaker.app. Prefer the most recent version's locations
      first, but keep the old locations as fallback search paths, too.
      
      Thanks to all the contributors who provided and tested out various patches
      for fixing this issue. Especially, but by no means limited to:
      Francisco Requena Espí, Jamie Kirkpatrick and drfrogsplat.
      4693cf84
  8. 20 Feb, 2012 1 commit
  9. 18 Feb, 2012 1 commit
  10. 17 Feb, 2012 1 commit
    • Brad King's avatar
      Rename Modules/Platform/Windows-{Borland => Embarcadero}.cmake · 3f78ced7
      Brad King authored
      The Borland compiler is now the Embarcadero compiler.  Rename the shared
      platform information file to reflect this.  This does not change the
      interface, as old versions are still "Borland", but will allow new
      versions released by Embarcadero to be supported cleanly.
      3f78ced7
  11. 02 Jan, 2012 1 commit
  12. 15 Dec, 2011 1 commit
    • Brad King's avatar
      Do not link private dependent shared libraries on OS X > 10.4 · 5d993431
      Brad King authored
      The default OS X 10.4 linker incorrectly searches for dependencies of
      linked shared libraries only under the -isysroot location.  It fails to
      find dependencies of linked shared libraries in cases such as the
      ExportImport test.  It produces errors like:
      
       /usr/libexec/gcc/i686-apple-darwin8/4.0.1/ld: warning can't open dynamic library:
       libtestLib3Imp.dylib
       referenced from: /.../ExportImport/Root/lib/libtestLib3lib.1.2.dylib
       (checking for undefined symbols may be affected) (No such file or directory, errno = 2)
       /usr/libexec/gcc/i686-apple-darwin8/4.0.1/ld: Undefined symbols: _testLib3Imp
       referenced from libtestLib3lib expected to be defined in
       libtestLib3Imp.dylib
      
      or with CMAKE_SKIP_RPATH off to enable install_name in the Export side:
      
       /usr/libexec/gcc/i686-apple-darwin8/4.0.1/ld: warning can't open dynamic library:
       /Developer/SDKs/MacOSX10.4u.sdk/.../ExportImport/Export/impl/libtestLib3Imp.dylib
       referenced from: /.../ExportImport/Export/libtestLib3lib.1.2.dylib
       (checking for undefined symbols may be affected) (No such file or directory, errno = 2)
       /usr/libexec/gcc/i686-apple-darwin8/4.0.1/ld: Undefined symbols:_testLib3Imp
       referenced from libtestLib3lib expected to be defined in
       /.../ExportImport/Export/impl/libtestLib3Imp.dylib
      
      Note how "/Developer/SDKs/MacOSX10.4u.sdk" is prepended to the dependent
      library path.
      
      Commit 2cff26fa (Support linking to shared libs with dependent libs,
      2008-01-31) and commit 82fcaebe (Pass dependent library search path to
      linker on some platforms, 2008-02-01) worked around the problem by
      defining platform variable CMAKE_LINK_DEPENDENT_LIBRARY_FILES.  It tells
      CMake to link to dependent libraries explicitly by their path thus
      telling the linker where to find them.
      
      Unfortunately the workaround had the side effect of linking dependent
      libraries and defeats most benefits of LINK_INTERFACE_LIBRARIES.
      Fortunately OS X 10.5 and above do not need to find transitive
      dependencies at all so we can avoid the workaround on Modern OS X.
      5d993431
  13. 14 Dec, 2011 1 commit
    • Brad King's avatar
      HP: Drive shared library linking with compiler front end · 5720e1f6
      Brad King authored
      Previously we linked C, Fortran, and ASM shared libraries compiled with
      the HP compiler using a direct invocation of the linker (ld).  This
      behavior was left historically from support for an ancient HP C compiler
      that did not know how to create shared libraries.  Fortran shared
      libraries need to be linked with the compiler to get the language
      runtime library dependencies as is already done for C++.
      
      Update the HP-UX-HP* platform information to use the compiler front end
      when linking shared libraries.  This works on modern HP tools and
      produces correct behavior.  If there is a need to support older tools
      again we can add a special case for them.
      5720e1f6
  14. 08 Dec, 2011 1 commit
  15. 05 Dec, 2011 2 commits
    • Brad King's avatar
      Add CMAKE_GNUtoMS option to convert GNU .dll.a to MS .lib · afb00fef
      Brad King authored
      Teach the Windows-GNU.cmake platform file to look for Visual Studio
      tools matching the target ABI.  Add an extra step to the link command
      for shared libraries and executables that export symbols and on which a
      new GNUtoMS property is set (initialized by the CMAKE_GNUtoMS option).
      Tell the GNU linker to output a module definition (.def) file listing
      exported symbols in addition to the GNU-format import library (.dll.a).
      Pass the .def file to the MS "lib" tool to construct a MS-format DLL
      import library (.lib).
      
      Teach the install(TARGETS) command to install the MS import library next
      to the GNU one.  Teach the install(EXPORT) and export() command to set
      the IMPORTED_IMPLIB property pointing at the import library to use the
      import library matching the tools in the importing project.
      afb00fef
    • Brad King's avatar
      Fortran: Detect pointer size in gfortran on MinGW · ecd84147
      Brad King authored
      Use __SIZEOF_POINTER__ which the GNU Fortran compiler defines at least
      on 64-bit MinGW.  Assume default size 4 on MinGW if gfortran does not
      define the size.
      ecd84147
  16. 02 Dec, 2011 1 commit
  17. 29 Aug, 2011 1 commit
    • Todd Gamblin's avatar
      Fixed link bugs in BlueGeneP build. · 5993891e
      Todd Gamblin authored
      - Build wasn't properly using -soname linker args, so installed libraries
        could depend on relative paths from the build directory.
      - Consolidated GNU linker args to one place in the BlueGeneP-base platform
        file, since ld is used by both XL and GNU toolchains on BlueGene.
      5993891e
  18. 02 Aug, 2011 1 commit
    • Brad King's avatar
      XL: Fix old VisualAge branding of Fortran compiler · ad542d82
      Brad King authored
      Commit 6d434ee6 (Split XL compiler information files, 2009-09-30)
      added Platform/AIX-(XL|VisualAge)-(C|CXX|Fortran).cmake modules
      to support the old and new compiler branding for all languages.
      Add the "AIX-VisualAge-Fortran" combination that was left out
      accidentally.
      ad542d82
  19. 01 Aug, 2011 1 commit
  20. 29 Jul, 2011 2 commits
  21. 20 Jun, 2011 1 commit
  22. 13 Jun, 2011 1 commit
    • Modestas Vainius's avatar
      multiarch: Set CMAKE_LIBRARY_ARCHITECTURE_REGEX for Linux|Hurd|kFreeBSD · 1ed19bcb
      Modestas Vainius authored
      * Fix linux CMAKE_LIBRARY_ARCHITECTURE_REGEX to support armel-linux-gnueabi.
      * Add CMAKE_LIBRARY_ARCHITECTURE_REGEX on kFreeBSD.
      * Add CMAKE_LIBRARY_ARCHITECTURE_REGEX on GNU (Hurd).
      
      Also regex is improved to support quadlets.  Even if I have not seen this
      in the wild yet, reportedly they are possible.
      1ed19bcb
  23. 08 Jun, 2011 1 commit
  24. 20 May, 2011 1 commit
    • Brad King's avatar
      Absoft: Detect implicit link libraries on Linux and Mac · d7b376b3
      Brad King authored
      Use the "-X -v" flag to the Absoft front-end to pass "-v" to the gcc it
      invokes under the hood.  Teach CMakeParseImplicitLinkInfo to exclude
      linker version lines from consideration as link lines.  Fix parsing of
      Sun's linker search path option "-Y..." to avoid conflict with the Mac
      linker option "-Y<num>".
      d7b376b3
  25. 17 Mar, 2011 1 commit
    • Brad King's avatar
      Pass include directories with response files to GNU on Windows · 86cb17b1
      Brad King authored
      The GNU 4.x toolchain on MinGW (and therefore MSYS) allows compiler
      options to be passed via response files.  Use this to pass include
      directory -I options.  This allows the include file search path to be
      very long despite shell and mingw32-make command line length limits.
      86cb17b1
  26. 02 Mar, 2011 6 commits
  27. 23 Feb, 2011 1 commit
    • Brad King's avatar
      Pass .def files directly to MinGW tools (#9997) · 76162164
      Brad King authored
      Commit 6a61a8a5 (Honor module .def files with MinGW tools, 2011-02-21)
      set CMAKE_LINK_DEF_FILE_FLAG to "-Wl," to enable passing .def files to
      the linker on MinGW.  However, older GNU tools in the MSYS shell do not
      know how to translate "-Wl,/c/..." to "c:/..." and complain that the
      file does not exist.  Instead set the flag to just "" which tells CMake
      it can pass the file through the front-end with no special flag.
      76162164
  28. 21 Feb, 2011 1 commit
    • Brad King's avatar
      Honor module .def files with MinGW tools (#9997) · 6a61a8a5
      Brad King authored
      Since commit 024d05ad (Fix use of module .def files for MS tools,
      2009-09-29) module .def files work for any platform that sets
      CMAKE_LINK_DEF_FILE_FLAG correctly.  Set it in the Windows-GNU platform
      information file to enable support with MinGW tools.  Also enable the
      test added by commit 0db2c850 (Test use of module .def files for MS
      tools, 2009-09-29) for MinGW and MSYS generators.
      6a61a8a5
  29. 01 Feb, 2011 1 commit
  30. 17 Jan, 2011 1 commit
  31. 03 Jan, 2011 1 commit