Missing cc function added.
authormorsch <morsch@f7af4fe6-9843-0410-8265-dc069ae4e863>
Fri, 17 Oct 2008 09:46:13 +0000 (09:46 +0000)
committermorsch <morsch@f7af4fe6-9843-0410-8265-dc069ae4e863>
Fri, 17 Oct 2008 09:46:13 +0000 (09:46 +0000)
LHAPDF/lhapdf5.5.1/src/getdatapath.cxx [new file with mode: 0644]
LHAPDF/liblhapdf.pkg

diff --git a/LHAPDF/lhapdf5.5.1/src/getdatapath.cxx b/LHAPDF/lhapdf5.5.1/src/getdatapath.cxx
new file mode 100644 (file)
index 0000000..4c7740f
--- /dev/null
@@ -0,0 +1,88 @@
+#include "LHAPDF/FortranWrappers.h"
+#include <iostream>
+#include <string>
+#include <cstring>
+#include <cassert>
+#include <unistd.h>
+#include "binreloc.h"
+
+using namespace std;
+
+
+#define SIZE 499
+
+
+extern "C" {
+
+
+  #define fgetdirpath FC_FUNC(getdirpath, GETDIRPATH)
+  void fgetdirpath(char*, int);
+
+
+  #define fgetprefixpath FC_FUNC(getprefixpath, GETPREFIXPATH)
+  void fgetprefixpath(char* prefixpath, int length) {
+    BrInitError error;
+    br_init_lib(&error);
+    string prefixdir = br_find_prefix(DEFAULTPREFIXPATH);
+    string test1 = prefixdir + "/share/lhapdf";
+    if (access(test1.c_str(), R_OK) != 0) {
+      prefixdir = DEFAULTPREFIXPATH;
+    }
+    assert(prefixdir.length() <= (unsigned) length);
+    strncpy(prefixpath, prefixdir.c_str(), length);
+    // Replace null-terminated string convention with Fortran "trailing spaces" convention:
+    for (size_t i = strlen(prefixpath); i < (unsigned) length; ++i) {
+      prefixpath[i] = ' ';
+    }
+  }
+
+
+  #define fgetindexpath FC_FUNC(getindexpath, GETINDEXPATH)
+  void fgetindexpath(char* indexpath, int length) {
+    char tmp[SIZE+1];
+    tmp[SIZE] = '\0';
+    fgetdirpath(tmp, SIZE);
+    //for (size_t i = 0; i < SIZE; ++i) {
+    //  tmp[i] = ' ';
+    //}
+    for (size_t i = SIZE-1; i >= 0; --i) {
+      if (tmp[i] != ' ') break;
+      tmp[i] = '\0';
+    }
+    string try1(tmp), try2(tmp);
+    try1 += "/PDFsets.index";
+    try2 += ".index";
+    if (access(try1.c_str(), R_OK) == 0) {
+      assert(try1.length() <= (unsigned) length);
+      strncpy(indexpath, try1.c_str(), length);
+    } else {
+      assert(try2.length() <= (unsigned) length);
+      strncpy(indexpath, try2.c_str(), length);
+    }
+    // Replace null-terminated string convention with Fortran "trailing spaces" convention:
+    for (size_t i = strlen(indexpath); i < (unsigned) length; ++i) {
+      indexpath[i] = ' ';
+    }
+  }
+
+
+  #define fgetdatapath FC_FUNC(getdatapath, GETDATAPATH)
+  void fgetdatapath(char* datapath, int length) {
+    BrInitError error;
+    br_init_lib(&error);
+    string sharedir = br_find_data_dir(DEFAULTLHAPATH);
+    string tmp = sharedir + "/lhapdf/PDFsets";
+    string test1 = tmp + "/cteq6.LHpdf";
+    if (access(test1.c_str(), R_OK) != 0) {
+      tmp = string(DEFAULTLHAPATH) + "/lhapdf/PDFsets";
+    }
+    assert(tmp.length() <= (unsigned) length);
+    strncpy(datapath, tmp.c_str(), length);
+    // Replace null-terminated string convention with Fortran "trailing spaces" convention:
+    for (size_t i = strlen(datapath); i < (unsigned) length; ++i) {
+      datapath[i] = ' ';
+    }
+  }
+
+
+}
index 5181d01..2d11710 100644 (file)
@@ -1,8 +1,8 @@
-SRCS:=AliStructFuncType.cxx lhapdf5.5.1/src/version.cxx
-
+SRCS:=AliStructFuncType.cxx lhapdf5.5.1/src/version.cxx  lhapdf5.5.1/src/getdatapath.cxx
 
 HDRS:= $(SRCS:.cxx=.h) 
 HDRS:= $(filter-out lhapdf5.5.1/src/version.h,$(HDRS)) 
+HDRS:= $(filter-out lhapdf5.5.1/src/getdatapath.h,$(HDRS)) 
 
 DHDR:=LHAPDFLinkDef.h
 
@@ -57,6 +57,6 @@ lhapdf5.5.1/src/wrapzeus.f \
 lhapdf5.5.1/src/lhaglue.f\
 lhapdf5.5.1/src/wrapUSER.f
 PACKFFLAGS = $(FFLAGS) -ffree-form
-
+PACKCXXFLAGS = $(CXXFLAGS) -DDEFAULTPREFIXPATH=\"NONE\" -DDEFAULTLHAPATH=\"$(ALICE_ROOT)/LHAPDF/PDFsets\"
 EXPORT:=AliStructFuncType.h