Uploaded image for project: 'CouchDB'
  1. CouchDB
  2. COUCHDB-1699

C/C++ compiler detection

Details

    • Bug
    • Status: Closed
    • Blocker
    • Resolution: Fixed
    • None
    • 1.3
    • Build System
    • None

    Description

      Friend of mine was trying to build couchdb today and ran into a problem.

      [[[
      checking jsapi.h usability... no
      checking jsapi.h presence... no
      checking for jsapi.h... no
      checking js/jsapi.h usability... no
      checking js/jsapi.h presence... no
      checking for js/jsapi.h... no
      configure.jm: error: Could not find the jsapi header.

      Are the Mozilla SpiderMonkey headers installed?
      ]]]

      But he clearly had Mozilla Spidermonkey installed:
      [[[

      1. locate jsapi.h
        /usr/include/jsapi.h
        /usr/include/js/jsapi.h
        /usr/include/xulrunner-sdk-1.9.2/jsapi.h
        ]]]

      He was stumped and asked me to take a look. I looked at the
      config.log and found:
      [[[
      configure.jm:16700: checking jsapi.h usability
      configure.jm:16717: g++ -c -DXP_UNIX
      -I/usr/include/xulrunner-sdk-1.9.2
      -I/usr/include/xulrunner-sdk-1.9.2/js
      -I/usr/include/xulrunner-sdk-1.9.2/mozjs -I/opt/local/include
      -I/usr/local/include -I/usr/include conftest.cpp >&5
      ./configure.jm: line 16718: g++: command not found
      ]]]

      You're using AC_PROG_CXX in your configure.ac to find a C++ compiler.
      Unfortunately due to a bug (or misfeature) of autoconf if AC_PROG_CXX
      follows AC_PROG_CC then it won't fail if no C++ compiler is found.
      See:
      http://lists.gnu.org/archive/html/bug-autoconf/2010-05/msg00001.html

      Fortunately, it's relatively easy to work around this. You can simply
      test that the ac_ct_CXX shell variable is set after running
      AC_PROG_CXX. I've attached a patch that does so.

      Running configure on a system without a C++ compiler now results in
      the following:
      [[[
      checking for g++... no
      checking for c++... no
      checking for gpp... no
      checking for aCC... no
      checking for CC... no
      checking for cxx... no
      checking for cc++... no
      checking for cl.exe... no
      checking for FCC... no
      checking for KCC... no
      checking for RCC... no
      checking for xlC_r... no
      checking for xlC... no
      checking whether we are using the GNU C++ compiler... no
      checking whether g++ accepts -g... no
      checking dependency style of g++... none
      checking that we found a C++ compiler... no
      configure: error: A C++ compiler is required.
      ]]]

      I'm not subscribed to your dev list so if you'd like to respond to me please CC me. Also my ASF username is breser an ICLA is already on file for me.

      added to master, should go to 1.3.x before closing.

      Attachments

        1. couchdb-c++-configure-v2.patch.txt
          0.6 kB
          Ben Reser
        2. couchdb-c++-configure.patch.txt
          0.7 kB
          Dave Cottlehuber

        Activity

          People

            dch Dave Cottlehuber
            breser Ben Reser
            Votes:
            0 Vote for this issue
            Watchers:
            6 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved:

              Slack

                Issue deployment