Applied patch by maruel:

- Fixed taking the address of begin() on an empty std::vector.
- Fixed nsis makefile to use %ProgramFiles% environment variable.
- Fixed nsis makefile to pass the output directory and file to makensis.
- Fixed synergy.nsi to get the files from the output directory. That
  enables a debug build of the installer.
- Fixes to compile under VS2005.

I did not apply VS2005 project files, instead adding nmake files.
nmake is pretty weak but the makefiles can be modified without having
visual studio.  Also modified the .rc files to not use winres.h.
This plus nmake means synergy can now be built using the freely
downloadable Microsoft Windows SDK for Vista, available from
microsoft's web site.  This change removes all of the old VC++6
project files in favor of the nmake files.  It also removes the
XCode project in favor of ./configure and make.

All of the nmake files are named nmake.mak.  Only the top level
makefile is directly useful (the rest are included by it) so all
builds are from the top level directory.  nmake knows the following
targets:

  all:  build synergy.exe, synergyc.exe and synergys.exe
  clean:  remove all intermediate files, keep programs
  clobber:  clean and remove programs
  installer:  build programs and an installer
  debug:  build a debug version of 'all'
  release:  build a release version of 'all'
  debug-installer:  build an installer of the debug build
  release-installer:  build an installer of the release build

The default build version is release so 'all' and 'installer' will
build a release version.  The installer itself never has debug
symbols, just the stuff it installs.  The default target is 'all'.
To build use:

  nmake /nologo /f nmake.mak <target>

VC++ and VisualStudio users may need to manually run vcvars.bat in a
command.exe or cmd.exe window before invoking nmake.  The Window 98/Me
command.exe may not handle potentially long command lines;  I haven't
tried to verify if that works.
This commit is contained in:
crs23 2007-09-06 05:01:44 +00:00
parent 0ed17ccca2
commit 5c29ae9967
66 changed files with 1623 additions and 6064 deletions

View file

@ -14,8 +14,7 @@
NULL =
EXTRA_DIST = \
installer.dsp \
installer.mak \
nmake.mak \
synergy.nsi \
dosify.c \
$(NULL)

View file

@ -1,114 +0,0 @@
# Microsoft Developer Studio Project File - Name="installer" - Package Owner=<4>
# Microsoft Developer Studio Generated Build File, Format Version 6.00
# ** DO NOT EDIT **
# TARGTYPE "Win32 (x86) External Target" 0x0106
CFG=installer - Win32 Debug
!MESSAGE This is not a valid makefile. To build this project using NMAKE,
!MESSAGE use the Export Makefile command and run
!MESSAGE
!MESSAGE NMAKE /f "installer.mak".
!MESSAGE
!MESSAGE You can specify a configuration when running NMAKE
!MESSAGE by defining the macro CFG on the command line. For example:
!MESSAGE
!MESSAGE NMAKE /f "installer.mak" CFG="installer - Win32 Debug"
!MESSAGE
!MESSAGE Possible choices for configuration are:
!MESSAGE
!MESSAGE "installer - Win32 Release" (based on "Win32 (x86) External Target")
!MESSAGE "installer - Win32 Debug" (based on "Win32 (x86) External Target")
!MESSAGE
# Begin Project
# PROP AllowPerConfigDependencies 0
# PROP Scc_ProjName ""
# PROP Scc_LocalPath ""
!IF "$(CFG)" == "installer - Win32 Release"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 0
# PROP BASE Output_Dir "installer___Win32_Release"
# PROP BASE Intermediate_Dir "installer___Win32_Release"
# PROP BASE Cmd_Line "NMAKE /f installer.mak"
# PROP BASE Rebuild_Opt "/a"
# PROP BASE Target_File "installer.exe"
# PROP BASE Bsc_Name "installer.bsc"
# PROP BASE Target_Dir ""
# PROP Use_MFC 0
# PROP Use_Debug_Libraries 0
# PROP Output_Dir "."
# PROP Intermediate_Dir "."
# PROP Cmd_Line "nmake /nologo /f "installer.mak""
# PROP Rebuild_Opt "/a"
# PROP Target_File "..\..\build\SynergyInstaller.exe"
# PROP Bsc_Name ""
# PROP Target_Dir ""
NSIS=makensis
!ELSEIF "$(CFG)" == "installer - Win32 Debug"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 1
# PROP BASE Output_Dir "installer___Win32_Debug"
# PROP BASE Intermediate_Dir "installer___Win32_Debug"
# PROP BASE Cmd_Line "NMAKE /f installer.mak"
# PROP BASE Rebuild_Opt "/a"
# PROP BASE Target_File "installer.exe"
# PROP BASE Bsc_Name "installer.bsc"
# PROP BASE Target_Dir ""
# PROP Use_MFC 0
# PROP Use_Debug_Libraries 1
# PROP Output_Dir "."
# PROP Intermediate_Dir "."
# PROP Cmd_Line "echo "Can only build installer for Release configuration""
# PROP Rebuild_Opt ""
# PROP Target_File "dummy.exe"
# PROP Bsc_Name ""
# PROP Target_Dir ""
NSIS=makensis
!ENDIF
# Begin Target
# Name "installer - Win32 Release"
# Name "installer - Win32 Debug"
!IF "$(CFG)" == "installer - Win32 Release"
!ELSEIF "$(CFG)" == "installer - Win32 Debug"
!ENDIF
# Begin Group "Source Files"
# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
# Begin Source File
SOURCE=.\dosify.c
# PROP Intermediate_Dir "."
# End Source File
# Begin Source File
SOURCE=.\installer.mak
# PROP Intermediate_Dir "."
# End Source File
# Begin Source File
SOURCE=.\synergy.nsi
# PROP Intermediate_Dir "."
# End Source File
# End Group
# Begin Group "Header Files"
# PROP Default_Filter "h;hpp;hxx;hm;inl"
# End Group
# Begin Group "Resource Files"
# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe"
# End Group
# End Target
# End Project

View file

@ -1,20 +0,0 @@
NULL=
DEPTH=..\..
NSIS="D:\Program Files\NSIS\makensis"
DOCS = \
COPYING \
ChangeLog \
$(NULL)
default: dosifydocs installer
installer:
$(NSIS) synergy.nsi
dosifydocs: dosify.exe
.\dosify.exe $(DEPTH) . $(DOCS)
dosify.exe: dosify.c
$(CC) /nologo /Yd /Zi /MLd /Fe$@ $**

63
dist/nullsoft/nmake.mak vendored Normal file
View file

@ -0,0 +1,63 @@
# synergy -- mouse and keyboard sharing utility
# Copyright (C) 2007 Chris Schoeneman
#
# This package is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License
# found in the file COPYING that should have accompanied this file.
#
# This package is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
NSIS = "$(PROGRAMFILES)\NSIS\makensis.exe"
NSIS_FLAGS = /NOCD /V1
BIN_INSTALLER_SRC = dist\nullsoft
BIN_INSTALLER_DST = $(BUILD_DST)\$(BIN_INSTALLER_SRC)
BIN_DOSIFY_EXE = "$(BIN_INSTALLER_DST)\dosify.exe"
BIN_DOSIFY_C = \
"$(BIN_INSTALLER_SRC)\dosify.c" \
$(NULL)
BIN_DOSIFY_OBJ = \
"$(BIN_INSTALLER_DST)\dosify.obj" \
$(NULL)
BIN_INSTALLER_NSI = "$(BIN_INSTALLER_SRC)\synergy.nsi"
BIN_INSTALLER_EXE = "$(BUILD_DST)\SynergyInstaller.exe"
BIN_INSTALLER_DOCS = \
COPYING \
ChangeLog \
$(NULL)
BIN_INSTALLER_DOS_DOCS = \
$(BUILD_DST)\COPYING.txt \
$(BUILD_DST)\ChangeLog.txt \
$(NULL)
C_FILES = $(C_FILES) $(BIN_DOSIFY_C)
OBJ_FILES = $(OBJ_FILES) $(BIN_DOSIFY_OBJ)
OPTPROGRAMS = $(OPTPROGRAMS) $(BIN_DOSIFY_EXE)
# Build rules.
$(BIN_DOSIFY_OBJ): $(BIN_DOSIFY_C)
@$(ECHO) Compile $(BIN_DOSIFY_C)
-@$(MKDIR) $(BIN_INSTALLER_DST) 2>NUL:
$(cc) $(cdebug) $(cflags) $(cvars) /Fo$@ /Fd$(@:.obj=.pdb) $**
$(BIN_DOSIFY_EXE): $(BIN_DOSIFY_OBJ)
@$(ECHO) Link $(@F)
$(link) $(ldebug) $(conlflags) $(conlibsmt) /out:$@ $**
# Convert text files from Unix to DOS format.
$(BIN_INSTALLER_DOS_DOCS): $(BIN_DOSIFY_EXE) $(BIN_INSTALLER_DOCS)
@$(ECHO) Convert text files to DOS format
$(BIN_DOSIFY_EXE) "." "$(BUILD_DST)" $(BIN_INSTALLER_DOCS)
# Allow installers for both debug and release.
$(BIN_INSTALLER_EXE): $(BIN_INSTALLER_NSI) all $(BIN_INSTALLER_DOS_DOCS)
@$(ECHO) Build $(@F)
$(NSIS) $(NSIS_FLAGS) /DOUTPUTDIR=$(@D) /DOUTPUTFILE=$@ $(BIN_INSTALLER_NSI)
installer: $(BIN_INSTALLER_EXE)
debug-installer:
@$(MAKE) /nologo /f $(MAKEFILE) DEBUG=1 installer
release-installer:
@$(MAKE) /nologo /f $(MAKEFILE) NODEBUG=1 installer

View file

@ -7,14 +7,15 @@
;--------------------------------
; Path to root of tree
!define DEPTH "..\.."
!ifndef OUTPUTDIR
!define OUTPUTDIR "build\Release"
!endif
; The name of the installer
Name "Synergy"
; The file to write
OutFile "${DEPTH}\build\SynergyInstaller.exe"
OutFile "${OUTPUTFILE}"
; The default installation directory
InstallDir $PROGRAMFILES\Synergy
@ -42,7 +43,7 @@ ComponentText "This will install Synergy on your computer. Select the optional
DirText "Choose a directory to install Synergy to:"
UninstallText "This will uninstall Synergy from your computer."
LicenseText "Synergy is distributed under the GNU GPL:"
LicenseData "COPYING.txt"
LicenseData ${OUTPUTDIR}\COPYING.txt
;--------------------------------
@ -55,38 +56,38 @@ Section "Synergy (required)"
SetOutPath $INSTDIR
; Put files there
File "${DEPTH}\build\synergy.exe"
File "${DEPTH}\build\synergyc.exe"
File "${DEPTH}\build\synergys.exe"
File "${DEPTH}\build\*.dll"
File COPYING.txt
File ChangeLog.txt
File ${DEPTH}\doc\PORTING
File ${DEPTH}\doc\about.html
File ${DEPTH}\doc\authors.html
File ${DEPTH}\doc\autostart.html
File ${DEPTH}\doc\banner.html
File ${DEPTH}\doc\compiling.html
File ${DEPTH}\doc\configuration.html
File ${DEPTH}\doc\contact.html
File ${DEPTH}\doc\developer.html
File ${DEPTH}\doc\faq.html
File ${DEPTH}\doc\history.html
File ${DEPTH}\doc\home.html
File ${DEPTH}\doc\index.html
File ${DEPTH}\doc\license.html
File ${DEPTH}\doc\news.html
File ${DEPTH}\doc\roadmap.html
File ${DEPTH}\doc\running.html
File ${DEPTH}\doc\security.html
File ${DEPTH}\doc\synergy.css
File ${DEPTH}\doc\tips.html
File ${DEPTH}\doc\toc.html
File ${DEPTH}\doc\trouble.html
File "${OUTPUTDIR}\synergy.exe"
File "${OUTPUTDIR}\synergyc.exe"
File "${OUTPUTDIR}\synergys.exe"
File "${OUTPUTDIR}\*.dll"
File "${OUTPUTDIR}\COPYING.txt"
File "${OUTPUTDIR}\ChangeLog.txt"
File doc\PORTING
File doc\about.html
File doc\authors.html
File doc\autostart.html
File doc\banner.html
File doc\compiling.html
File doc\configuration.html
File doc\contact.html
File doc\developer.html
File doc\faq.html
File doc\history.html
File doc\home.html
File doc\index.html
File doc\license.html
File doc\news.html
File doc\roadmap.html
File doc\running.html
File doc\security.html
File doc\synergy.css
File doc\tips.html
File doc\toc.html
File doc\trouble.html
SetOutPath $INSTDIR\images
File ${DEPTH}\doc\images\logo.gif
File ${DEPTH}\doc\images\warp.gif
File doc\images\logo.gif
File doc\images\warp.gif
; Write the installation path into the registry
WriteRegStr HKLM SOFTWARE\Synergy "Install_Dir" "$INSTDIR"