Description: Windows SDK package needed
Fix Description: 1) Update the packaging Makefile (package.mk) for Windows and SASL.
2) Add support for manifests in VC 8.0. There is a new command line tool
called mt.exe that is used to generate manifest files and to compile them into
the executables. This allows ldapsearch.exe to be able to find the right
msvcr80.dll at runtime. This was copied from NSS at Nelson's suggestion.
3) Added support for being able to do a configure and make in a different
directory. I find it very useful to be able to create a "build" directory and
run configure like this:
cd ~/build
/path/to/mozilla/directory/c-sdk/configure ... args ...
make
Then I can just completely blow away the build directory if I need to. I know
this is what make clean/make clobber are supposed to do, but keeping the binary
and source directories separate like this also facilitates creating source
tarballs from the working directory for use in building rpms/packages.
There were a few changes required to cygwin_wrapper and the makefiles to
support building in this manner.
Description: Windows: libldap and the LDAP tools should support SASL/Digest
Fix Description: The biggest change was to hack sasl.m4 to make AC_CHECK_LIB work on Windows. I
had to override LIBS to be able to pass in /link /LIBPATH:c:/path/to/sasl
libsasl.lib, libsasl2.lib, and sasl32.lib.
Another big change was to implement getlogin() on Windows, required by
ldaptool-sasl.c. The implementation is pretty simple.
There were several places in the Makefiles that assumed Windows meant no
support for SASL, so I just changed them, and added some support for SASL_LIBS
in some places where it was missing.
Description: Make libldif public - windows specific fixes
Fix Description: Windows needed a nsldif32.tdf file in order to generate
the nsldif32.def file using the libldif.ex file (committed in the previous
commit).
Also, it has been a while since the .def files were generated. The libX.ex
files have had quite a few changes, and we needed to regenerate all of the
.def files.
Finally, this will be version 6.0.2 of the mozilla ldap c sdk.
Description: Make libldif public
Fix Description: Copy/paste the makefile code to build the shared library in addition to the static library from libldap/Makefile.in. The build will now build both libldif60.so and libldif60.a, and package/distribute both of them. I changed include/Makefile.in to export ldif.h with the other public header files, and changed ldif.h to add a blurb explaining that these interfaces were formerly private and use with caution.
Since this is a non trivial change, I bumped the version number to 6.0.1.
Description: Change LDAP C SDK version to 6
Fix Description: Change the version to major 6, minor 0, and submin/patch 0. The change is in various places in the build makefiles and header files. The shared lib suffix is now 60 (from 50).
In a somewhat unrelated change, the configure script had to change to allow
building with the RPM spec %configure macro on rhel/fedora. That macro
defines --host, --build, and --target, and defines --host different than
--target. This caused configure to think it was doing a cross compilation.
Instead, the correct cross compilation trigger is if --host is specified and
it is different than --build. However, the mozilla builds expect to be able
to pass in --host different than --target, so all of these different
combinations had to be accomodated.
Description: Merge sun_merge_branch_20060523 changes into trunk.
Fix Description: I had to change re_encode_request to use the new ber types. Other than that, these merges are basically the sasl, ipv6, and ber types code already committed to the sun merge branch.
Fix Description: The default now is to not use RPATH when building shared libraries and executables. The configure flag --with-rpath[=dir] has been added. The dir is optional, and a default will be used if not given.
Allow build on Mac OSX
1) There is no RPATH on Darwin, so undefine the RPATH macros before linking
2) Have to use g++ to link
3) The iconv functions are in libiconv
This fix allows the trunk ldap c sdk build to be used to build the mozilla client. I was able to use this to build the mozilla 1_8 branch of thunderbird on Fedora Core 4. Addressbook and typedown addressing work fine.
The gist of the fix is to completely ignore svrcore if not specified, and to imply --with-nspr if --with-mozilla is specified. If not specified, the client build uses $(DIST)/include/nspr and $(DIST)/lib for the locations of the NSPR files.
Enable autoconf build on Windows with cygwin and free MSVC compiler + SDK
1) Don't set the -lsvrcore in SVRCORE_LIBS in configure - instead, do it the
way we do the NSPR and NSS libs, in build.mk
2) For the component LINK macros, use name.lib instead of -lname on Windows
3) The new free MSVC compiler does not have lib.exe - add an autoconf test for
the lib program and use link /lib if missing
4) If using MSVC (which expects DOS style absolute paths) and cygwin (which
uses unix style abs. paths), use cygpath -m on all user supplied paths to make
sure they are in the correct format for cl and link. It's better to do this
during configure rather than depend on cygwin_wrapper which is much, much
slower.
5) Don't link with the odbc libs (Why did we ever need these!?!??!?)
6) The free MSVC doesn't include afxwin.h, so use the other header files
instead
7) Add libutil to the Windows build, including getting rid of the old Makefile
and adding a new Makefile.in for the autoconf build (the Makefile.client
remains)
8) getopt.c doesn't need lber.h
I verified that these changes also build on Win2k with MSVC 6 SP 3. I also changed the copyright in the new Makefile.in as suggested by Mark Smith.
1) +DSblended can be omitted entirely - it's the default on IA, and ignored on
PA
2) +DD64 is supported on both IA and PA for B.11.23
3) The $ORIGIN linker flag should be added to any B.11.11 or later linker - the
patch to the linker to support this on B.11.11 is pretty old and should be
applied by any customer wanting a supported HP-UX system. If for some reason
they don't have the patch, the presence of $ORIGIN just causes a couple of
extra path lookups that fail - no big deal.
There were only a few places that needed to be changed. I needed to change the
order of c++ and cc detection around in configure - it seems that if you do the
cross compilation stuff first, it messes up the "regular" case, which is the
more important one. In order for the GNU_CC tests to work, you must define
CC=gcc and CXX=g++ on the configure command line. If building 64 bit, you must
also specify CFLAGS=-m64 and CXXFLAGS=-m64. I also removed the extra arguments
for static library building as they were not only not necessary but they were
also making the build abort.
It also seems to be important in certain cases when using g++
to build shared libraries.
I was having weird errors building the CLUs on linux x86_64. These turned out to be due to the incorrect ordering of objects on the link line.
The LINK_EXE macro already has everything needed - it is not necessary to
supply extra libs in the form of the LDTOOLS_LIBS. Just specify them in the
correct order in EXTRA_LIBS. You don't need to set EXTRA_LIBS for every
platform - on *nix platforms, they are all the same, so just define them in a
common place in the correct order. Use PLATFORMLIBS to specify platform
dependent libs.
The one tricky thing is that LINK_EXE expects OBJS to have all of the objects.
This works if you only build one executable per makefile, but this makefile
builds several, so you need to get the executable specific .obj file in the
link line as well. I suppose I could have used target specific variable
assignment to OBJS, but that seemed messy to me, so I just added a $(filter ..)
to the LINK_EXE command which will add all of the .obj files specified in the
executable link target dependency list to the link line. The filter is to
filter out libraries and other dependencies, which are usually specified
elsewhere. This seems to work on linux x86_64 and HP IPF 64 just fine.
Reviewed by Mark, Dan, Chris (Thanks!)
The newly added README.rpm explains how to build an RPM.
Running ./configure will print the list of flags and what they do.
Add support for generating PDB-format debug symbols with MSVC,
by setting MOZ_DEBUG_SYMBOLS=1 in the environment. This is to
be used in place of MOZ_PROFILE. r=wtc, dmose.
Add Makefile.client under mozilla/directory/c-sdk/config and call it
from mozilla/directory/Makefile (this "new" Makefile.client is
the same as the old mozilla/directory/c-sdk/Makefile that was
recently cvs removed).
Simplify the logic in mozilla/directory/build.mk and make sure the
command line tools are linked with the C++ compiler on all platforms
where necessary.
Recognize HP/UX 11.11 (treated the same as 11.00).
Replace an incorrect dependency on Makefile with a dependency on
Makefile.client inside the command line tools Makefile.client.
* We must use the full path to the source file when calling MSVC so that debugging information shows up in the object files.
* Because of cygwin's use of /cygdrive when using full paths, we must use a cygwin-wrapper script in some cases to allow native win32 programs to use a fully qualified cygwin path.
* We have to call configure using the full path so that $(srcdir) contains the
full path in the Makefiles. The rules have been changed for win32 so that it
always use $(srcdir)/$*.{c,cpp} as the sourcefile name even when the file is in
the cwd. This works around both the /cygdrive issue and the msvc's path info
optimization.
* We still use the wrapper when calling rc.exe & nsinstall. nsinstall
frequently takes multiple args and is called all over the tree so changing each
calling site is going to be expensive. (I'll have to check the logs again but
I think the rc wrapping can go.)
* nspr & ldap still use the wrappers for all native win32 progs. Neither nspr
nor ldap uses the acoutput-fast.pl script to speed up the substitution of
@srcdir@ into their Makefiles so, makefile substitution will break if we use
dos-paths.
* In the handful of directories where we copy srcfiles from another directory
in lieu of using VPATHs, we have to now copy those files to $(srcdir) so that
the default rules can find them.
Bug #141834 r=leaf,wtc,dmose,mcs