Changeset 158b026


Ignore:
Timestamp:
Sep 20, 2019, 9:21:51 AM (5 years ago)
Author:
Thierry Delisle <tdelisle@…>
Branches:
ADT, arm-eh, ast-experimental, enum, forall-pointer-decay, jacob/cs343-translation, jenkins-sandbox, master, new-ast, new-ast-unique-expr, pthread-emulation, qualifiedEnum
Children:
679363c
Parents:
34e1494
Message:

Remove flags -in-tree and -disttree, now using paths and /proc/self/exe instead

Files:
19 edited

Legend:

Unmodified
Added
Removed
  • Makefile.in

    r34e1494 r158b026  
    264264CCDEPMODE = @CCDEPMODE@
    265265CFACC = @CFACC@
     266CFACC_INSTALL = @CFACC_INSTALL@
    266267CFACPP = @CFACPP@
    267268CFA_BACKEND_CC = @CFA_BACKEND_CC@
  • benchmark/Makefile.in

    r34e1494 r158b026  
    214214CCDEPMODE = @CCDEPMODE@
    215215CFACC = @CFACC@
     216CFACC_INSTALL = @CFACC_INSTALL@
    216217CFACPP = @CFACPP@
    217218CFA_BACKEND_CC = @CFA_BACKEND_CC@
  • configure

    r34e1494 r158b026  
    715715BUILD_IN_TREE_FLAGS
    716716CFACPP
     717CFACC_INSTALL
    717718CFACC
    718719DRIVER_DIR
     
    33033304DRIVER_DIR=${TOP_BUILDDIR}driver/
    33043305CFACC=${DRIVER_DIR}cfa
     3306CFACC_INSTALL=${CFA_BINDIR}${CFA_NAME}
    33053307CFACPP=${DRIVER_DIR}cfa-cpp
     3308
    33063309
    33073310
  • configure.ac

    r34e1494 r158b026  
    9393DRIVER_DIR=${TOP_BUILDDIR}driver/
    9494CFACC=${DRIVER_DIR}cfa
     95CFACC_INSTALL=${CFA_BINDIR}${CFA_NAME}
    9596CFACPP=${DRIVER_DIR}cfa-cpp
    9697AC_SUBST(DRIVER_DIR)
    9798AC_SUBST(CFACC)
     99AC_SUBST(CFACC_INSTALL)
    98100AC_SUBST(CFACPP)
    99101
  • driver/Makefile.in

    r34e1494 r158b026  
    201201CCDEPMODE = @CCDEPMODE@
    202202CFACC = @CFACC@
     203CFACC_INSTALL = @CFACC_INSTALL@
    203204CFACPP = @CFACPP@
    204205CFA_BACKEND_CC = @CFA_BACKEND_CC@
  • driver/cfa.cc

    r34e1494 r158b026  
    1515
    1616#include <iostream>
    17 #include <cstdio>                                                                               // perror
    18 #include <cstdlib>                                                                              // putenv, exit
    19 #include <unistd.h>                                                                             // execvp
    20 #include <string>                                                                               // STL version
    21 #include <string.h>                                                                             // strcmp
    22 #include <algorithm>                                                                    // find
     17#include <cstdio>      // perror
     18#include <cstdlib>     // putenv, exit
     19#include <climits>     // PATH_MAX
     20#include <unistd.h>    // execvp
     21#include <string>      // STL version
     22#include <string.h>    // strcmp
     23#include <algorithm>   // find
    2324
    2425#include <sys/types.h>
     
    3536// #define __DEBUG_H__
    3637
    37 static string __CFA_FLAGPREFIX__( "__CFA_FLAG" );               // "N__=" suffix
     38// "N__=" suffix
     39static string __CFA_FLAGPREFIX__( "__CFA_FLAG" );
    3840
    3941void Putenv( char * argv[], string arg ) {
     
    5759}
    5860
    59 bool suffix( const string & arg ) {                                             // check if string has suffix
     61// check if string has suffix
     62bool suffix( const string & arg ) {
    6063        enum { NumSuffixes = 3 };
    6164        static const string suffixes[NumSuffixes] = { "cfa", "hfa", "ifa" };
     
    7679static inline string dir(const string & path) {
    7780        return path.substr(0, path.find_last_of('/'));
     81}
     82
     83// Different path modes
     84enum PathMode {
     85        Installed,     // cfa is installed, use prefix
     86        BuildTree,     // cfa is in the tree, use source and build tree
     87        Distributed    // cfa is distributed, use build tree for includes and executable directory for .cfs
     88};
     89
     90// Get path mode from /proc
     91PathMode FromProc() {
     92        std::string abspath;
     93        abspath.resize(PATH_MAX);
     94
     95        // get executable path from /proc/self/exe
     96        ssize_t size = readlink("/proc/self/exe", const_cast<char*>(abspath.c_str()), abspath.size());
     97        if(size <= 0) {
     98                std::cerr << "Error could not evaluate absolute path from /proc/self/exe" << std::endl;
     99                std::cerr << "Failed with " << std::strerror(errno) << std::endl;
     100                std::exit(1);
     101        }
     102
     103        // Trim extra characters
     104        abspath.resize(size);
     105
     106        // Are we installed
     107        if(abspath.rfind(CFA_BINDIR  , 0) == 0) { return Installed; }
     108
     109        // Is this the build tree
     110        if(abspath.rfind(TOP_BUILDDIR, 0) == 0) { return BuildTree; }
     111
     112        // Does this look like distcc
     113        if(abspath.find("/.cfadistcc/") != std::string::npos) { return Distributed; }
     114
     115        // None of the above? Give up since we don't know where the prelude or include directories are
     116        std::cerr << "Cannot find required files from excutable path " << abspath << std::endl;
     117        std::exit(1);
    78118}
    79119
     
    113153        bool m32 = false;                                                                       // -m32 flag
    114154        bool m64 = false;                                                                       // -m64 flag
    115         bool intree = false;                                                            // build in tree
    116155        bool compiling_libs = false;
    117         bool disttree = false;
    118156        int o_file = 0;                                                                         // -o filename position
     157
     158        PathMode path = FromProc();
    119159
    120160        const char *args[argc + 100];                                           // cfa command line values, plus some space for additional flags
     
    171211                        } else if ( arg == "-no-include-stdhdr" ) {
    172212                                noincstd_flag = true;                                   // strip the no-include-stdhdr flag
    173                         } else if ( arg == "-in-tree" ) {
    174                                 intree = true;
    175                         } else if ( arg == "-dist-tree" ) {
    176                                 disttree = true;
    177213                        } else if ( arg == "-cfalib") {
    178214                                compiling_libs = true;
     
    283319
    284320        // add the CFA include-library paths, which allow direct access to header files without directory qualification
    285         if ( ! intree ) {
     321        string libbase;
     322        switch(path) {
     323        case Installed:
    286324                args[nargs++] = "-I" CFA_INCDIR;
    287                 if ( ! noincstd_flag ) {                                                // do not use during build
     325                // do not use during build
     326                if ( ! noincstd_flag ) {
    288327                        args[nargs++] = "-I" CFA_INCDIR "stdhdr";
    289328                } // if
    290329                args[nargs++] = "-I" CFA_INCDIR "concurrency";
    291330                args[nargs++] = "-I" CFA_INCDIR "containers";
    292         } else {
     331                libbase = CFA_LIBDIR;
     332                break;
     333        case BuildTree:
     334        case Distributed:
    293335                args[nargs++] = "-I" TOP_SRCDIR "libcfa/src";
    294                 if ( ! noincstd_flag ) {                                                // do not use during build
     336                // do not use during build
     337                if ( ! noincstd_flag ) {
    295338                        args[nargs++] = "-I" TOP_SRCDIR "libcfa/src" "/stdhdr";
    296339                } // if
    297340                args[nargs++] = "-I" TOP_SRCDIR "libcfa/src" "/concurrency";
    298341                args[nargs++] = "-I" TOP_SRCDIR "libcfa/src" "/containers";
     342
     343                libbase = TOP_BUILDDIR "libcfa/";
     344
     345                break;
    299346        } // if
    300347
     
    302349        args[nargs++] = "-imacros";
    303350        args[nargs++] = "stdbool.h";
    304 
    305         string libbase;
    306         if ( ! intree ) {
    307                 libbase = CFA_LIBDIR;
    308         } else {
    309                 libbase = TOP_BUILDDIR "libcfa/";
    310         } // if
    311351
    312352        if( compiling_libs ) {
     
    326366        string libdir = libbase + arch + "-" + config;
    327367
    328         if (!disttree) {
     368        if (path != Distributed) {
    329369                if ( ! nolib && ! dirExists( libdir ) ) {
    330370                        cerr << argv[0] << " internal error, configuration " << config << " not installed." << endl;
     
    344384        } // if
    345385
    346         if(disttree) {
    347                 Putenv( argv, "--prelude-dir=" + dir(argv[0]) );
    348         } else if(intree) {
    349                 Putenv( argv, "--prelude-dir=" + libdir + "/prelude" );
    350         } else {
    351                 Putenv( argv, "--prelude-dir=" + libdir );
     386        switch(path) {
     387        case Installed   : Putenv( argv, "--prelude-dir=" + libdir ); break;
     388        case BuildTree   : Putenv( argv, "--prelude-dir=" + libdir + "/prelude" ); break;
     389        case Distributed : Putenv( argv, "--prelude-dir=" + dir(argv[0]) ); break;
    352390        }
    353391
     
    365403
    366404                // include the cfa library in case it is needed
    367                 args[nargs++] = ( *new string( string("-L" ) + libdir + (intree ? "/src/.libs" : "")) ).c_str();
    368                 args[nargs++] = ( *new string( string("-Wl,-rpath," ) + libdir + (intree ? "/src/.libs" : "")) ).c_str();
     405                args[nargs++] = ( *new string( string("-L" ) + libdir + (path != Installed ? "/src/.libs" : "")) ).c_str();
     406                args[nargs++] = ( *new string( string("-Wl,-rpath," ) + libdir + (path != Installed ? "/src/.libs" : "")) ).c_str();
    369407                args[nargs++] = "-Wl,--push-state,--as-needed";
    370408                args[nargs++] = "-lcfathread";
     
    410448
    411449        if ( bprefix.length() == 0 ) {
    412                 if(disttree) {
    413                         bprefix = dir(argv[0]);
    414                 } else if(intree) {
    415                         bprefix = srcdriverdir;
    416                 } else {
    417                         bprefix = installlibdir;
     450                switch(path) {
     451                case Installed   : bprefix = installlibdir; break;
     452                case BuildTree   : bprefix = srcdriverdir ; break;
     453                case Distributed : bprefix = dir(argv[0]) ; break;
    418454                }
    419455                if ( bprefix[bprefix.length() - 1] != '/' ) bprefix += '/';
  • libcfa/Makefile.in

    r34e1494 r158b026  
    296296PACKAGE_VERSION = @PACKAGE_VERSION@
    297297PATH_SEPARATOR = @PATH_SEPARATOR@
    298 PRELUDEFLAG = @PRELUDEFLAG@
    299298RANLIB = @RANLIB@
    300299SED = @SED@
  • libcfa/configure

    r34e1494 r158b026  
    707707CONFIG_CFLAGS
    708708ARCH_FLAGS
    709 PRELUDEFLAG
    710709CFADIR_HASH
    711710LOCAL_CC1
     
    29602959if test x$enable_distcc = xno; then
    29612960        CFACC=${DRIVER_DIR}cfa
    2962         PRELUDEFLAG='-in-tree'
    29632961        echo "no"
    29642962else
     
    29682966        CFADIR_HASH=$($tools/distcc_hash $config)
    29692967        CFACC="distcc ~/.cfadistcc/${CFADIR_HASH}/cfa"
    2970         PRELUDEFLAG='-dist-tree'
    29712968        echo "yes (hash=${CFADIR_HASH})"
    29722969fi
     
    29822979  ENABLE_DISTCC_FALSE=
    29832980fi
    2984 
    29852981
    29862982
  • libcfa/configure.ac

    r34e1494 r158b026  
    3434if test x$enable_distcc = xno; then
    3535        CFACC=${DRIVER_DIR}cfa
    36         PRELUDEFLAG='-in-tree'
    3736        echo "no"
    3837else
     
    4241        CFADIR_HASH=$($tools/distcc_hash $config)
    4342        CFACC="distcc ~/.cfadistcc/${CFADIR_HASH}/cfa"
    44         PRELUDEFLAG='-dist-tree'
    4543        echo "yes (hash=${CFADIR_HASH})"
    4644fi
     
    5755AC_SUBST(CFADIR_HASH)
    5856AC_SUBST(CFA_VERSION)
    59 AC_SUBST(PRELUDEFLAG)
    6057
    6158#==============================================================================
  • libcfa/prelude/Makefile.in

    r34e1494 r158b026  
    239239PACKAGE_VERSION = @PACKAGE_VERSION@
    240240PATH_SEPARATOR = @PATH_SEPARATOR@
    241 PRELUDEFLAG = @PRELUDEFLAG@
    242241RANLIB = @RANLIB@
    243242SED = @SED@
  • libcfa/src/Makefile.am

    r34e1494 r158b026  
    3232# use -no-include-stdhdr to prevent rebuild cycles
    3333# The built sources must not depend on the installed headers
    34 AM_CFAFLAGS = -quiet -cfalib @PRELUDEFLAG@ -I$(srcdir)/stdhdr $(if $(findstring ${gdbwaittarget}, ${@}), -XCFA --gdb) @CONFIG_CFAFLAGS@
     34AM_CFAFLAGS = -quiet -cfalib -I$(srcdir)/stdhdr $(if $(findstring ${gdbwaittarget}, ${@}), -XCFA --gdb) @CONFIG_CFAFLAGS@
    3535AM_CFLAGS = -g -Wall -Wno-unused-function -fPIC @ARCH_FLAGS@ @CONFIG_CFLAGS@
    3636AM_CCASFLAGS = -g -Wall -Wno-unused-function @ARCH_FLAGS@ @CONFIG_CFLAGS@
     
    9696
    9797prelude.o : prelude.cfa extras.cf gcc-builtins.cf builtins.cf @LOCAL_CFACC@ @CFACPP@
    98         ${AM_V_GEN}$(CFACOMPILE) -quiet @PRELUDEFLAG@ -XCFA -l ${<} -c -o ${@}
     98        ${AM_V_GEN}$(CFACOMPILE) -quiet -XCFA -l ${<} -c -o ${@}
    9999
    100100prelude.lo: prelude.cfa extras.cf gcc-builtins.cf builtins.cf @LOCAL_CFACC@ @CFACPP@
    101101        ${AM_V_GEN}$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile \
    102         $(CFACOMPILE) -quiet @PRELUDEFLAG@ -XCFA -l ${<} -c -o ${@}
     102        $(CFACOMPILE) -quiet -XCFA -l ${<} -c -o ${@}
    103103
    104104#----------------------------------------------------------------------------------------------------------------
  • libcfa/src/Makefile.in

    r34e1494 r158b026  
    349349PACKAGE_VERSION = @PACKAGE_VERSION@
    350350PATH_SEPARATOR = @PATH_SEPARATOR@
    351 PRELUDEFLAG = @PRELUDEFLAG@
    352351RANLIB = @RANLIB@
    353352SED = @SED@
     
    445444# use -no-include-stdhdr to prevent rebuild cycles
    446445# The built sources must not depend on the installed headers
    447 AM_CFAFLAGS = -quiet -cfalib @PRELUDEFLAG@ -I$(srcdir)/stdhdr $(if $(findstring ${gdbwaittarget}, ${@}), -XCFA --gdb) @CONFIG_CFAFLAGS@
     446AM_CFAFLAGS = -quiet -cfalib -I$(srcdir)/stdhdr $(if $(findstring ${gdbwaittarget}, ${@}), -XCFA --gdb) @CONFIG_CFAFLAGS@
    448447AM_CFLAGS = -g -Wall -Wno-unused-function -fPIC @ARCH_FLAGS@ @CONFIG_CFLAGS@
    449448AM_CCASFLAGS = -g -Wall -Wno-unused-function @ARCH_FLAGS@ @CONFIG_CFLAGS@
     
    954953
    955954prelude.o : prelude.cfa extras.cf gcc-builtins.cf builtins.cf @LOCAL_CFACC@ @CFACPP@
    956         ${AM_V_GEN}$(CFACOMPILE) -quiet @PRELUDEFLAG@ -XCFA -l ${<} -c -o ${@}
     955        ${AM_V_GEN}$(CFACOMPILE) -quiet -XCFA -l ${<} -c -o ${@}
    957956
    958957prelude.lo: prelude.cfa extras.cf gcc-builtins.cf builtins.cf @LOCAL_CFACC@ @CFACPP@
    959958        ${AM_V_GEN}$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile \
    960         $(CFACOMPILE) -quiet @PRELUDEFLAG@ -XCFA -l ${<} -c -o ${@}
     959        $(CFACOMPILE) -quiet -XCFA -l ${<} -c -o ${@}
    961960
    962961#----------------------------------------------------------------------------------------------------------------
  • longrun_tests/Makefile.in

    r34e1494 r158b026  
    348348CCDEPMODE = @CCDEPMODE@
    349349CFACC = @CFACC@
     350CFACC_INSTALL = @CFACC_INSTALL@
    350351CFACPP = @CFACPP@
    351352CFA_BACKEND_CC = @CFA_BACKEND_CC@
  • src/Makefile.in

    r34e1494 r158b026  
    411411CCDEPMODE = @CCDEPMODE@
    412412CFACC = @CFACC@
     413CFACC_INSTALL = @CFACC_INSTALL@
    413414CFACPP = @CFACPP@
    414415CFA_BACKEND_CC = @CFA_BACKEND_CC@
  • tests/Makefile.am

    r34e1494 r158b026  
    2424archiveerrors=
    2525
    26 INSTALL_FLAGS=-in-tree
    2726DEBUG_FLAGS=-debug -O0
    2827
     
    4342        -DIN_DIR="${abs_srcdir}/.in/"
    4443
     44# get the desired cfa to test
     45TARGET_CFA = $(if $(filter $(installed),yes), @CFACC_INSTALL@, @CFACC@)
     46
    4547# adjust CC to current flags
    46 CC = $(if $(DISTCC_CFA_PATH),distcc $(DISTCC_CFA_PATH) -dist-tree -in-tree,@CFACC@ ${DEBUG_FLAGS} ${INSTALL_FLAGS} ${ARCH_FLAGS})
     48CC = $(if $(ifeq $(DISTCC_CFA_PATH),yes),distcc $(DISTCC_CFA_PATH),$(TARGET_CFA) ${DEBUG_FLAGS} ${ARCH_FLAGS})
    4749CFACC = $(CC)
    4850
     
    5153
    5254# adjusted CC but without the actual distcc call
    53 CFACCLOCAL = $(if $(DISTCC_CFA_PATH),$(DISTCC_CFA_PATH) -dist-tree -in-tree,@CFACC@ ${DEBUG_FLAGS} ${INSTALL_FLAGS} ${ARCH_FLAGS})
     55CFACCLOCAL = $(if $(DISTCC_CFA_PATH),$(DISTCC_CFA_PATH),$(TARGET_CFA) ${DEBUG_FLAGS} ${ARCH_FLAGS})
    5456
    5557PRETTY_PATH=mkdir -p $(dir $(abspath ${@})) && cd ${srcdir} &&
  • tests/Makefile.in

    r34e1494 r158b026  
    214214
    215215# adjust CC to current flags
    216 CC = $(if $(DISTCC_CFA_PATH),distcc $(DISTCC_CFA_PATH) -dist-tree -in-tree,@CFACC@ ${DEBUG_FLAGS} ${INSTALL_FLAGS} ${ARCH_FLAGS})
     216CC = $(if $(ifeq $(DISTCC_CFA_PATH),yes),distcc $(DISTCC_CFA_PATH),$(TARGET_CFA) ${DEBUG_FLAGS} ${ARCH_FLAGS})
    217217CCAS = @CCAS@
    218218CCASDEPMODE = @CCASDEPMODE@
     
    220220CCDEPMODE = @CCDEPMODE@
    221221CFACC = $(CC)
     222CFACC_INSTALL = @CFACC_INSTALL@
    222223CFACPP = @CFACPP@
    223224CFA_BACKEND_CC = @CFA_BACKEND_CC@
     
    381382installed = no
    382383archiveerrors =
    383 INSTALL_FLAGS = -in-tree
    384384DEBUG_FLAGS = -debug -O0
    385385quick_test = avl_test operators numericConstants expression enum array typeof cast raii/dtor-early-exit raii/init_once attributes
     
    398398
    399399
     400# get the desired cfa to test
     401TARGET_CFA = $(if $(filter $(installed),yes), @CFACC_INSTALL@, @CFACC@)
     402
    400403# get local binary for depedencies
    401404CFACCBIN = @CFACC@
    402405
    403406# adjusted CC but without the actual distcc call
    404 CFACCLOCAL = $(if $(DISTCC_CFA_PATH),$(DISTCC_CFA_PATH) -dist-tree -in-tree,@CFACC@ ${DEBUG_FLAGS} ${INSTALL_FLAGS} ${ARCH_FLAGS})
     407CFACCLOCAL = $(if $(DISTCC_CFA_PATH),$(DISTCC_CFA_PATH),$(TARGET_CFA) ${DEBUG_FLAGS} ${ARCH_FLAGS})
    405408PRETTY_PATH = mkdir -p $(dir $(abspath ${@})) && cd ${srcdir} &&
    406409avl_test_SOURCES = avltree/avl_test.cfa avltree/avl0.cfa avltree/avl1.cfa avltree/avl2.cfa avltree/avl3.cfa avltree/avl4.cfa avltree/avl-private.cfa
  • tests/pybin/settings.py

    r34e1494 r158b026  
    9797
    9898                self.string = "installed" if value else "in-tree"
    99                 self.flags  = """INSTALL_FLAGS=%s""" % ("" if value else "-in-tree")
     99                self.flags  = """installed=%s""" % ("yes" if value else "no")
    100100
    101101class Timeouts:
  • tools/Makefile.in

    r34e1494 r158b026  
    208208CCDEPMODE = @CCDEPMODE@
    209209CFACC = @CFACC@
     210CFACC_INSTALL = @CFACC_INSTALL@
    210211CFACPP = @CFACPP@
    211212CFA_BACKEND_CC = @CFA_BACKEND_CC@
  • tools/prettyprinter/Makefile.in

    r34e1494 r158b026  
    237237CCDEPMODE = @CCDEPMODE@
    238238CFACC = @CFACC@
     239CFACC_INSTALL = @CFACC_INSTALL@
    239240CFACPP = @CFACPP@
    240241CFA_BACKEND_CC = @CFA_BACKEND_CC@
Note: See TracChangeset for help on using the changeset viewer.