use ExtUtils::MakeMaker; print "\n\n\nWelcome to the Db::Documentum installation process.\n"; print "***************************************************\n"; unless ($OS = $^O) { require Config; $OS = $Config::Config{'osname'}; } print "\tConfiguring Db::Documentum for $OS...\n"; ################################################################## # *** Windows NT/2000/XP users should look here *** ################################################################## if ($OS =~ /Win/i) { $DMCL = 'dmcl40.lib'; # Path to Documentum installation directory. $DM_HOME = "c:\\program files\\documentum"; print "\n\nDocumentum install directory:\n"; print "-----------------------------\n"; print "Enter the path to the Documentum installation directory:\n"; print "\t[$DM_HOME] ==>"; chomp($ans = ); if ($ans =~ /\w+/) { $DM_HOME = $ans; } # Path to Documentum library (dmcl40.lib). $DM_LIB = "$DM_HOME\\shared"; print "\n\n$DMCL library file:\n"; print "------------------------\n"; print "*** NOTE *** The $DMCL library file is located in the\n"; print "Documentum\\share\\clients\\win\\32 directory on the \n"; print "Content Server. I recommend copying it to the \n"; print "$DM_LIB directory for simplicity.\n"; print "\nEnter the path to the $DMCL library file:\n"; print "\t[$DM_LIB] ==>"; chomp($ans = ); if ($ans =~ /\w+/) { $DM_LIB = $ans; } # check for DMCL library file if (! -e "$DM_LIB\\$DMCL") { warn "\n*** WARNING *** Could not find $DM_LIB\\$DMCL.\nThe module will not make without " . "$DMCL.\nPlease copy $DMCL to the $DM_LIB directory.\n"; } # Path to dmapp.h. $DM_INCLUDE = "$DM_HOME\\shared"; print "\n\ndmapp.h header file:\n"; print "--------------------\n"; print "*** NOTE *** The dmapp.h header file is located in the\n"; print "Documentum\\share\\sdk\\include directory on the Content\n"; print "Server. I recommend copying it to the \n"; print "$DM_INCLUDE directory for simplicity.\n"; print "\nEnter the path to the dmapp.h header file:\n"; print "\t[$DM_INCLUDE] ==>"; chomp($ans = ); if ($ans =~ /\w+/) { $DM_INCLUDE = $ans; } # check for api header file if (! -e "$DM_INCLUDE\\dmapp.h") { warn "\n*** WARNING *** Could not find $DM_INCLUDE\\dmapp.h.\nThe module will not make without " . "dmapp.h.\nPlease copy dmapp.h to the $DM_INCLUDE directory.\n"; } # get the CPP include and lib paths from the environment my $inc = $ENV{INCLUDE}; warn "\n*** WARNING *** No INCLUDE environment variable found. You may need to run VCVARS32.BAT" . " before running nmake.\n" unless $inc; $inc = "-I\"" . join("\" -I\"",split(";",$inc)) . "\""; my $lib = $ENV{LIB}; warn "\n*** WARNING *** No LIB environment variable found. You may need to run VCVARS32.BAT" . " before running nmake.\n" unless $lib; $lib = "-L\"" . join("\" -L\"",split(";",$lib)) . "\""; # build all nmake parameters $CPP_INCS = $inc; $DM_INCLUDE = "-I\"$DM_INCLUDE\""; $CPP_LIBS = $lib; $DM_CLIENT_LIBS = "-L\"$DM_LIB\" -l$DMCL"; # Not used for Win32 nmake $LD_LIBS = ""; $DM_RPC_LIBS = ""; $OS_LIBS = ""; $CCFLAGS = ""; } ################################################################## # *** Unix users (Solaris, AIX) should look here *** ################################################################## elsif ( ($OS =~ /solaris/i) or ($OS =~ /aix/i) ) { # The path to your Documentum client installation. $DM_HOME = '/usr/local/documentum'; # If you've organized your Documentum libraries in the standard unix-y # bin, lib, include fashion, then you should be all set. Otherwise you # may have to tweak these. # Path to documentum client libraries. $DM_LIB = "$DM_HOME/lib"; # Path to directory where dmapp.h lives. $DM_INCLUDE = "-I$DM_HOME/include"; $DM_CLIENT_LIBS = "-L$DM_LIB -ldmapi -ldmupper -ldmlower -ldmcommon -ldmupper -lcompat"; $DM_RPC_LIBS = "-L$DM_LIB -lnwrpc -lnwstcp"; $OS_LIBS = "-lsocket -lnsl -lintl"; $CPP_LIBS = "-lC"; $LD_LIBS = "-ldl"; $CPP_INC = ""; $CCFLAGS = ""; } ################################################################## # *** HP Unix (HP-UX) users should look here *** ################################################################## elsif ($OS =~ /hpux/i) { # The path to your Documentum client installation. $DM_HOME = '/usr/local/documentum'; # If you've organized your Documentum libraries in the standard unix-y # bin, lib, include fashion, then you should be all set. Otherwise you # may have to tweak these. # Path to documentum client libraries. $DM_LIB = "$DM_HOME/lib"; # Path to directory where dmapp.h lives. $DM_INCLUDE = "-I$DM_HOME/include"; $DM_CLIENT_LIBS = "-L$DM_LIB -lDMCL40 -lc"; $DM_RPC_LIBS = "-L$DM_LIB -lnwrpc -lnwstcp"; $OS_LIBS = "-lsocket -lnsl -lintl"; $CPP_LIBS = "-lC"; $LD_LIBS = "-ldl"; $CPP_INC = ""; $CCFLAGS = '+DA1.1 +DS2.0 -ext -D_REENTRANT -D_PTHREAD_DRAFT4 -DSYSV -Dhpux -Dunix=unix -DOS_UNIX -DTHREADED_UNIX -DVDK_CE_ANSI -DEBHPUX +Z -Wl,+s,-E -D_POSIX_C_SOURCE=199506L -w +W829 -D_HPUX_SOURCE' } ########################################################################## # *** Linux - Tested using Redhat Enterprise 3 with Documentum 5.3 SP1 *** # *** Note: Returned warning on missing -lC during perl Makefile.PL *** # *** but it worked nonetheless... *** ######################################################################### elsif ( $OS =~ /linux/i ) { # The path to your Documentum client installation. $DM_HOME = '/documentum/product/5.3'; # dmcl.so file if (! -e "$DM_HOME\\dmcl.so") { warn "\n*** WARNING *** Could not find $DM_HOME\\dmcl.so.\nThe module will not make without " . "dmcl.so.\n"; } # This is kinda a gottcha, the Linux stuff is in unix/linux # You may have to tweak these. # Path to documentum client libraries. $DM_LIB = "$DM_HOME/unix/linux"; # Path to directory where dmapp.h lives. $DM_INCLUDE = "-I/documentum/share/sdk/include/"; $DM_CLIENT_LIBS = "-L$DM_LIB -ldmapi -ldmupper -ldmlower -ldmcommon -ldmupper -lcompat"; $DM_RPC_LIBS = "-L$DM_LIB -lnwrpc -lnwstcp"; $OS_LIBS = "-lsocket -lnsl -lintl"; $CPP_LIBS = "-lC"; $LD_LIBS = "-ldl"; $CPP_INC = ""; $CCFLAGS = ""; } ################################################################## # Otherwise you're out of luck. If you have an environment you # would like included in the install process, email me your changes # or better yet, your makefile.pl. ################################################################## else { die "$OS is not a supported platform for Db::Documentum (or for Documentum in general).\n"; } # print config summary print "\n\nConfig summary:\n"; print "---------------\n"; print "DM_HOME = $DM_HOME\n"; print "DM_LIB = $DM_LIB\n"; print "DM_INCLUDE = $DM_INCLUDE\n"; print "CPP_INCS = $CPP_INCS\n"; print "DM_CLIENT_LIBS = $DM_CLIENT_LIBS\n"; print "CPP_LIBS = $CPP_LIBS\n"; print "LD_LIBS = $LD_LIBS\n"; print "DM_RPC_LIBS = $DM_RPC_LIBS\n"; print "OS_LIBS = $OS_LIBS\n"; print "CCFLAGS = $CCFLAGS\n\n"; if ($OS =~ /Win/i) { warn "\n*** WARNING *** The Microsoft C++ compiler does not properly interpret quoted\n" . " paths, paths with spaces, or directory names longer than 8 characters. Please\n" . " double-check your environment variables to ensure all paths comply.\n\n"; } print "Press ENTER to continue."; chomp($ans = ); # write makefile # See lib/ExtUtils/MakeMaker.pm for details of how to influence # the contents of the Makefile that is written. WriteMakefile( 'NAME' => 'Db::Documentum', 'VERSION_FROM' => 'Documentum.pm', 'LIBS' => ["$LD_LIBS $DM_CLIENT_LIBS $DM_RPC_LIBS $CPP_LIBS $OS_LIBS"], # UNIX: # You can also link against the shared client library if you want. You'll need # to have libC.so, libDMCL.so, and libc.so in your LD_LIBRARY_PATH. This # slows things down a little bit, but drastically decreases the size of the # Documentum.so library. Uncomment the LIBS expression below and comment out # the one above if you want to use the shared libraries. # 'LIBS' => ["-L$DM_LIB -lC -ldmcl40 -lc"], 'DEFINE' => '-DSQLNETV2 -DSYSV -D$OS -DOS_UNIX', 'INC' => "$DM_INCLUDE $CPP_INCS", 'CCFLAGS' => $CCFLAGS, # This makes 'make ppd' happy ($] ge '5.005') ? ( 'AUTHOR' => 'M. Scott Roth (scott@dm-book.com)', 'ABSTRACT_FROM' => 'Documentum.pm', ) : (), # This is just here to make 'make dist' easier to run. 'dist' => { COMPRESS=>"gzip -9f", SUFFIX=>"gz" } ); # __EOF__