mirror of
https://git.savannah.gnu.org/git/gperf.git
synced 2025-12-02 13:09:22 +00:00
Support for building with MSVC much like for Unix.
This commit is contained in:
@@ -1,3 +1,12 @@
|
|||||||
|
2012-07-01 Bruno Haible <bruno@clisp.org>
|
||||||
|
|
||||||
|
Support for building with MSVC much like for Unix.
|
||||||
|
* autogen.sh: Fetch also 'compile' and 'ar-lib'.
|
||||||
|
* Makefile.in (IMPORTED_FILES): Add build-aux/compile, build-aux/ar-lib.
|
||||||
|
* build-aux/.gitignore: Ignore also 'compile' and 'ar-lib'.
|
||||||
|
* lib/Makefile.in: Use $(OBJEXT) where suitable.
|
||||||
|
* README.woe32: Change instructions for compiling with MSVC.
|
||||||
|
|
||||||
2012-07-01 Bruno Haible <bruno@clisp.org>
|
2012-07-01 Bruno Haible <bruno@clisp.org>
|
||||||
|
|
||||||
Move build infrastructure files to build-aux/.
|
Move build infrastructure files to build-aux/.
|
||||||
|
|||||||
@@ -64,7 +64,10 @@ SOURCE_FILES = \
|
|||||||
configure.ac aclocal.m4 Makefile.in Makefile.msvc Makefile.vms \
|
configure.ac aclocal.m4 Makefile.in Makefile.msvc Makefile.vms \
|
||||||
Makefile.devel ChangeLog
|
Makefile.devel ChangeLog
|
||||||
# List of distributed files imported from other packages.
|
# List of distributed files imported from other packages.
|
||||||
IMPORTED_FILES = COPYING INSTALL build-aux/install-sh build-aux/mkinstalldirs
|
IMPORTED_FILES = \
|
||||||
|
COPYING INSTALL \
|
||||||
|
build-aux/install-sh build-aux/mkinstalldirs \
|
||||||
|
build-aux/compile build-aux/ar-lib
|
||||||
# List of distributed files generated by autotools or Makefile.devel.
|
# List of distributed files generated by autotools or Makefile.devel.
|
||||||
GENERATED_FILES = configure
|
GENERATED_FILES = configure
|
||||||
# List of distributed files generated by "make".
|
# List of distributed files generated by "make".
|
||||||
|
|||||||
91
README.woe32
91
README.woe32
@@ -1,7 +1,12 @@
|
|||||||
Installation on Woe32 (WinNT/2000/XP/Vista/7, Win95/98/ME):
|
Installation on Woe32 (Microsoft Windows):
|
||||||
|
|
||||||
There are three ways to create binaries of this package for Woe32:
|
There are three ways to create binaries of this package for Woe32:
|
||||||
|
1) Native binaries, built using the mingw tool chain.
|
||||||
|
2) Native binaries, built using the MS Visual C/C++ tool chain.
|
||||||
|
3) Binaries for the Cygwin environment. For these, please see the normal
|
||||||
|
INSTALL file.
|
||||||
|
|
||||||
|
===============================================================================
|
||||||
1) Native binaries, built using the mingw tool chain.
|
1) Native binaries, built using the mingw tool chain.
|
||||||
|
|
||||||
I recommend to use the cygwin environment as the development environment
|
I recommend to use the cygwin environment as the development environment
|
||||||
@@ -10,49 +15,79 @@ There are three ways to create binaries of this package for Woe32:
|
|||||||
- cygwin,
|
- cygwin,
|
||||||
- the mingw runtime package, also from the cygwin site.
|
- the mingw runtime package, also from the cygwin site.
|
||||||
|
|
||||||
Building for mingw is achieved through the following preparation
|
Building for mingw is achieved through the following preparation,
|
||||||
and configure commands:
|
configure, and build commands:
|
||||||
|
|
||||||
PATH=/usr/local/mingw/bin:$PATH
|
PATH=/usr/local/mingw/bin:$PATH
|
||||||
export PATH
|
export PATH
|
||||||
./configure --host=i586-pc-mingw32 --prefix=/usr/local/mingw \
|
./configure --host=i586-pc-mingw32 --prefix=/usr/local/mingw \
|
||||||
CC="gcc-3 -mno-cygwin" \
|
CC="gcc-3 -mno-cygwin" \
|
||||||
CXX="g++-3 -mno-cygwin"
|
CXX="g++-3 -mno-cygwin"
|
||||||
|
make
|
||||||
|
make check
|
||||||
|
|
||||||
|
Installation:
|
||||||
|
|
||||||
|
make install
|
||||||
|
|
||||||
|
===============================================================================
|
||||||
2) Native binaries, built using the MS Visual C/C++ tool chain.
|
2) Native binaries, built using the MS Visual C/C++ tool chain.
|
||||||
|
|
||||||
- Requires MS Visual C/C++ 4.0 or 5.0 or 6.0 or 7.0.
|
Note that binaries created with MSVC have a distribution constraint: They
|
||||||
|
depend on a closed-source library ('msvcr70.dll' for MSVC 7.0, 'msvcr90.dll'
|
||||||
|
for MSVC 9.0, and so on) which is not normally part of a Windows
|
||||||
|
installation.
|
||||||
|
You cannot distribute 'msvcr*.dll' with the binaries - this would be a
|
||||||
|
violation of the GPL and of the Microsoft EULA.
|
||||||
|
You can distribute the binaries without including 'msvcr*.dll', but this
|
||||||
|
will cause problems for users that don't have this library on their system.
|
||||||
|
Therefore it is not recommended; the mingw tool chain is preferred for
|
||||||
|
this reason.
|
||||||
|
|
||||||
Note that binaries created with MSVC 7.0 should not be distributed: They
|
Requires MS Visual C/C++ 4.0 or newer. The "Express" edition which
|
||||||
depend on a closed-source library 'msvcr70.dll' which is not normally part
|
contains just the tools and not the IDE is sufficient.
|
||||||
of a Woe32 installation. You cannot distribute 'msvcr70.dll' with the
|
|
||||||
binaries - this would be a violation of the GPL and of the Microsoft EULA.
|
|
||||||
You can distribute the binaries without including 'msvcr70.dll', but this
|
|
||||||
will cause problems for users that don't have this library on their system.
|
|
||||||
Therefore it is not recommended. This problem does not occur with MSVC 6.0
|
|
||||||
and earlier.
|
|
||||||
|
|
||||||
- Cannot build in a separate directory.
|
Requires also a cygwin or mingw environment (with 'bash', the common POSIX
|
||||||
|
commands, and 'make' ) as a build environment. Building with "nmake" is no
|
||||||
|
longer supported.
|
||||||
|
|
||||||
- Build instructions:
|
Make sure that the MSVC tools ("cl" etc.) are found in PATH.
|
||||||
|
In a typical MSVC 6.0 installation, this can be achieved by running
|
||||||
|
C:\Program Files\Microsoft Visual Studio\VC98\bin\vcvars32.bat
|
||||||
|
In a typical MSVC 7.0 installation, it can be achieved by running
|
||||||
|
C:\Program Files\Microsoft Visual Studio .NET\Common7\Tools\vsvars32.bat
|
||||||
|
In a typical MSVC 9.0 installation, it can be achieved by running
|
||||||
|
C:\Program Files\Microsoft Visual Studio 9.0\Common7\Tools\vsvars32.bat
|
||||||
|
|
||||||
Make sure that the MSVC4.0 or MSVC5.0 or MSVC6.0 or MSVC7.0 utilities
|
Then start a bash (from cygwin or mingw).
|
||||||
("cl" etc.) are found in PATH. In a typical MSVC6.0 installation, this
|
|
||||||
can be achieved by running
|
|
||||||
C:\Program Files\Microsoft Visual Studio\VC98\bin\vcvars32.bat
|
|
||||||
In a typical MSVC7.0 installation, it can be achieved by running
|
|
||||||
C:\Program Files\Microsoft Visual Studio .NET\Common7\Tools\vsvars32.bat
|
|
||||||
nmake -f Makefile.msvc
|
|
||||||
|
|
||||||
- Installation:
|
Building for mingw is achieved through the following preparation,
|
||||||
|
configure, and build commands:
|
||||||
|
|
||||||
Either:
|
PATH=/usr/local/msvc/bin:$PATH
|
||||||
|
export PATH
|
||||||
|
|
||||||
Copy gperf.exe to your program repository.
|
win32_target=_WIN32_WINNT_WINXP # for MSVC 9.0
|
||||||
|
win32_target=_WIN32_WINNT_VISTA # possibly for MSVC >= 10.0
|
||||||
|
win32_target=_WIN32_WINNT_WIN7 # possibly for MSVC >= 10.0
|
||||||
|
|
||||||
Or:
|
./configure --host=i586-pc-mingw32 --prefix=/usr/local/msvc \
|
||||||
|
CC="`pwd`/build-aux/compile cl -nologo" \
|
||||||
|
CFLAGS="-MD" \
|
||||||
|
CXX="`pwd`/build-aux/compile cl -nologo" \
|
||||||
|
CXXFLAGS="-MD" \
|
||||||
|
CPPFLAGS="-D_WIN32_WINNT=$win32_target -I/usr/local/msvc/include" \
|
||||||
|
LDFLAGS="-L/usr/local/msvc/lib" \
|
||||||
|
LD="link" \
|
||||||
|
NM="dumpbin -symbols" \
|
||||||
|
STRIP=":" \
|
||||||
|
AR="`pwd`/build-aux/ar-lib lib" \
|
||||||
|
RANLIB=":"
|
||||||
|
make
|
||||||
|
make check
|
||||||
|
|
||||||
nmake -f Makefile.msvc install prefix=InstallBaseDirectory
|
Installation:
|
||||||
|
|
||||||
3) Binaries for the Cygwin environment. For these, please see the normal
|
make install
|
||||||
INSTALL file.
|
|
||||||
|
===============================================================================
|
||||||
|
|||||||
@@ -29,7 +29,8 @@
|
|||||||
|
|
||||||
GNULIB_REPO_URL="http://git.savannah.gnu.org/gitweb/?p=gnulib.git;a=blob_plain;hb=HEAD;f="
|
GNULIB_REPO_URL="http://git.savannah.gnu.org/gitweb/?p=gnulib.git;a=blob_plain;hb=HEAD;f="
|
||||||
|
|
||||||
for file in build-aux/install-sh build-aux/mkinstalldirs; do
|
for file in build-aux/install-sh build-aux/mkinstalldirs \
|
||||||
|
build-aux/compile build-aux/ar-lib; do
|
||||||
if test -n "$GNULIB_TOOL"; then
|
if test -n "$GNULIB_TOOL"; then
|
||||||
$GNULIB_TOOL--copy-file $file $file
|
$GNULIB_TOOL--copy-file $file $file
|
||||||
else
|
else
|
||||||
@@ -37,7 +38,8 @@ for file in build-aux/install-sh build-aux/mkinstalldirs; do
|
|||||||
&& mv $file.tmp $file
|
&& mv $file.tmp $file
|
||||||
fi
|
fi
|
||||||
done
|
done
|
||||||
chmod a+x build-aux/install-sh build-aux/mkinstalldirs
|
chmod a+x build-aux/install-sh build-aux/mkinstalldirs \
|
||||||
|
build-aux/compile build-aux/ar-lib
|
||||||
|
|
||||||
rm -f configure lib/configure src/configure tests/configure doc/configure
|
rm -f configure lib/configure src/configure tests/configure doc/configure
|
||||||
rm -f src/config.h.in src/config.h.msvc src/config.h_vms
|
rm -f src/config.h.in src/config.h.msvc src/config.h_vms
|
||||||
|
|||||||
2
build-aux/.gitignore
vendored
2
build-aux/.gitignore
vendored
@@ -1,4 +1,6 @@
|
|||||||
# Files brought in by gnulib-tool:
|
# Files brought in by gnulib-tool:
|
||||||
/install-sh
|
/install-sh
|
||||||
/mkinstalldirs
|
/mkinstalldirs
|
||||||
|
/compile
|
||||||
|
/ar-lib
|
||||||
|
|
||||||
|
|||||||
@@ -81,16 +81,16 @@ $(TARGETLIB): $(OBJECTS)
|
|||||||
#%.o : %.cc
|
#%.o : %.cc
|
||||||
# $(CXX) $(CXXFLAGS) $(CPPFLAGS) -c $<
|
# $(CXX) $(CXXFLAGS) $(CPPFLAGS) -c $<
|
||||||
|
|
||||||
getopt.o : getopt.c getopt.h
|
getopt.$(OBJEXT) : getopt.c getopt.h
|
||||||
$(CC) $(CFLAGS) $(CPPFLAGS) -c $(srcdir)/getopt.c
|
$(CC) $(CFLAGS) $(CPPFLAGS) -c $(srcdir)/getopt.c
|
||||||
|
|
||||||
getopt1.o : getopt1.c getopt.h
|
getopt1.$(OBJEXT) : getopt1.c getopt.h
|
||||||
$(CC) $(CFLAGS) $(CPPFLAGS) -c $(srcdir)/getopt1.c
|
$(CC) $(CFLAGS) $(CPPFLAGS) -c $(srcdir)/getopt1.c
|
||||||
|
|
||||||
getline.o : getline.cc getline.h
|
getline.$(OBJEXT) : getline.cc getline.h
|
||||||
$(CXX) $(CXXFLAGS) $(CPPFLAGS) -c $(srcdir)/getline.cc
|
$(CXX) $(CXXFLAGS) $(CPPFLAGS) -c $(srcdir)/getline.cc
|
||||||
|
|
||||||
hash.o : hash.cc hash.h
|
hash.$(OBJEXT) : hash.cc hash.h
|
||||||
$(CXX) $(CXXFLAGS) $(CPPFLAGS) -c $(srcdir)/hash.cc
|
$(CXX) $(CXXFLAGS) $(CPPFLAGS) -c $(srcdir)/hash.cc
|
||||||
|
|
||||||
install : all
|
install : all
|
||||||
@@ -104,7 +104,7 @@ check : all
|
|||||||
mostlyclean : clean
|
mostlyclean : clean
|
||||||
|
|
||||||
clean : force
|
clean : force
|
||||||
$(RM) *~ *.s *.o *.a $(TARGETLIB) core
|
$(RM) *~ *.s *.$(OBJEXT) *.a $(TARGETLIB) core
|
||||||
|
|
||||||
distclean : clean
|
distclean : clean
|
||||||
$(RM) config.status config.log config.cache Makefile
|
$(RM) config.status config.log config.cache Makefile
|
||||||
|
|||||||
Reference in New Issue
Block a user