diff options
-rw-r--r-- | .gitignore | 23 | ||||
-rw-r--r-- | win/.gitignore | 2 | ||||
-rw-r--r-- | win/CMakeLists.txt | 94 | ||||
-rw-r--r-- | win/NSIS.template.in | 978 | ||||
-rw-r--r-- | win/README.txt | 51 | ||||
-rw-r--r-- | win/build/.gitignore | 1 | ||||
-rw-r--r-- | win/configure.cpp | 556 | ||||
-rw-r--r-- | win/configure.vcxproj | 211 | ||||
-rw-r--r-- | win/inspircd.nsi | 253 | ||||
-rw-r--r-- | win/inspircd.rc.cmake | 35 | ||||
-rw-r--r-- | win/inspircd.vcxproj | 392 | ||||
-rw-r--r-- | win/inspircd_config.h | 13 | ||||
-rw-r--r-- | win/inspircd_memory_functions.cpp | 6 | ||||
-rw-r--r-- | win/m_spanningtree.vcxproj | 287 | ||||
-rw-r--r-- | win/modules/CMakeLists.txt | 30 | ||||
-rw-r--r-- | win/resource.rc | 38 | ||||
-rw-r--r-- | win/vs2010.sln | 51 |
17 files changed, 1207 insertions, 1814 deletions
diff --git a/.gitignore b/.gitignore index af10891ba..3a5fef871 100644 --- a/.gitignore +++ b/.gitignore @@ -28,26 +28,3 @@ /src/modules/m_ssl_gnutls.cpp /src/modules/m_ssl_openssl.cpp -*.ilk -*.lib -*.pdb -*.exp -*.dll -*.exe -/src/commands/debug -/src/commands/release -/src/commands/debug_x64 -/src/commands/release_x64 -/src/commands/commands.mak -/src/modules/debug -/src/modules/release -/src/modules/debug_x64 -/src/modules/release_x64 -/src/modules/modules.mak -/win/x64* -/win/debug* -/win/release* -/win/*.suo -/win/*.sdf -/win/*.user -/win/*.opensdf diff --git a/win/.gitignore b/win/.gitignore new file mode 100644 index 000000000..a49a10efa --- /dev/null +++ b/win/.gitignore @@ -0,0 +1,2 @@ +inspircd_version.h
+inspircd.rc
diff --git a/win/CMakeLists.txt b/win/CMakeLists.txt new file mode 100644 index 000000000..288aa2d7b --- /dev/null +++ b/win/CMakeLists.txt @@ -0,0 +1,94 @@ +cmake_minimum_required(VERSION 2.8) + +project(InspIRCd CXX) + +set(INSPIRCD_BASE "${CMAKE_CURRENT_SOURCE_DIR}/../") + +# Use our own NSIS template +set(CMAKE_MODULE_PATH "${INSPIRCD_BASE}/win") + +# Grab version info from version.sh +file(STRINGS "${INSPIRCD_BASE}/src/version.sh" VERSIONSH) +string(REGEX REPLACE ".*InspIRCd-([0-9]*).*" "\\1" MAJOR_VERSION "${VERSIONSH}") +string(REGEX REPLACE ".*InspIRCd-[0-9]*\\.([0-9]*).*" "\\1" MINOR_VERSION "${VERSIONSH}") +string(REGEX REPLACE ".*InspIRCd-[0-9]*\\.[0-9]*\\.([0-9]*).*" "\\1" PATCH_VERSION "${VERSIONSH}") +set(FULL_VERSION "${MAJOR_VERSION}.${MINOR_VERSION}.${PATCH_VERSION}") + +# Write out inspircd_version.h +file(WRITE "${INSPIRCD_BASE}/win/inspircd_version.h" "#define BRANCH \"${MAJOR_VERSION}.${MINOR_VERSION}\"\n") +file(APPEND "${INSPIRCD_BASE}/win/inspircd_version.h" "#define VERSION \"${FULL_VERSION}\"\n") +file(APPEND "${INSPIRCD_BASE}/win/inspircd_version.h" "#define REVISION \"0\"\n") +file(APPEND "${INSPIRCD_BASE}/win/inspircd_version.h" "#define SYSTEM \"${CMAKE_SYSTEM}\"\n") + +if(MSVC) + # Without /SAFESEH:NO old libraries compiled with VS 2010 or older won't link correctly to VS2012 (eg, extra module libs) + set(CMAKE_EXE_LINKER_FLAGS_DEBUG "${CMAKE_EXE_LINKER_FLAGS_DEBUG} /SAFESEH:NO") + set(CMAKE_EXE_LINKER_FLAGS_MINSIZEREL "${CMAKE_EXE_LINKER_FLAGS_MINSIZEREL} /SAFESEH:NO") + set(CMAKE_EXE_LINKER_FLAGS_RELEASE "${CMAKE_EXE_LINKER_FLAGS_RELEASE} /SAFESEH:NO") + set(CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO "${CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO} /SAFESEH:NO") + set(CMAKE_SHARED_LINKER_FLAGS_DEBUG "${CMAKE_SHARED_LINKER_FLAGS_DEBUG} /SAFESEH:NO") + set(CMAKE_SHARED_LINKER_FLAGS_MINSIZEREL "${CMAKE_SHARED_LINKER_FLAGS_MINSIZEREL} /SAFESEH:NO") + set(CMAKE_SHARED_LINKER_FLAGS_RELEASE "${CMAKE_SHARED_LINKER_FLAGS_RELEASE} /SAFESEH:NO") + set(CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO "${CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO} /SAFESEH:NO") + set(CMAKE_MODULE_LINKER_FLAGS_DEBUG "${CMAKE_MODULE_LINKER_FLAGS_DEBUG} /SAFESEH:NO") + set(CMAKE_MODULE_LINKER_FLAGS_MINSIZEREL "${CMAKE_MODULE_LINKER_FLAGS_MINSIZEREL} /SAFESEH:NO") + set(CMAKE_MODULE_LINKER_FLAGS_RELEASE "${CMAKE_MODULE_LINKER_FLAGS_RELEASE} /SAFESEH:NO") + set(CMAKE_MODULE_LINKER_FLAGS_RELWITHDEBINFO "${CMAKE_MODULE_LINKER_FLAGS_RELWITHDEBINFO} /SAFESEH:NO") +endif(MSVC) + +file(GLOB INSPIRCD_SOURCES RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} "${INSPIRCD_BASE}/win/inspircd_win32wrapper.cpp" "${INSPIRCD_BASE}/win/win32service.cpp" "${INSPIRCD_BASE}/src/*.cpp" "${INSPIRCD_BASE}/src/modes/*.cpp" "${INSPIRCD_BASE}/src/socketengines/socketengine_select.cpp") +list(APPEND INSPIRCD_SOURCES "${INSPIRCD_BASE}/src/threadengines/threadengine_win32.cpp") +list(SORT INSPIRCD_SOURCES) + +include_directories("${INSPIRCD_BASE}/win" "${INSPIRCD_BASE}/include") + +include_directories(${EXTRA_INCLUDES}) +link_directories(${EXTRA_LIBS}) + +configure_file("${INSPIRCD_BASE}/win/inspircd.rc.cmake" "${INSPIRCD_BASE}/win/inspircd.rc") +add_executable(inspircd ${INSPIRCD_SOURCES} "${INSPIRCD_BASE}/win/inspircd.rc") +set_target_properties(inspircd PROPERTIES ENABLE_EXPORTS ON) +install(TARGETS inspircd DESTINATION .) + +if(MSVC) + add_library(win32_memory STATIC "${INSPIRCD_BASE}/win/inspircd_memory_functions.cpp") +endif(MSVC) +add_subdirectory(modules) + +# Package any DLLs in win/ +file(GLOB EXTRA_DLLS RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} "${INSPIRCD_BASE}/win/*.dll") +install(FILES ${EXTRA_DLLS} DESTINATION .) + +# Install example configs +file(GLOB_RECURSE EXAMPLE_CONFIGS RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} "${INSPIRCD_BASE}/docs/conf/*.example") +install(FILES ${EXAMPLE_CONFIGS} DESTINATION conf) + +# Create an empty data and logs directory and install them +file(MAKE_DIRECTORY data) +install(DIRECTORY "data" DESTINATION .) +file(MAKE_DIRECTORY logs) +install(DIRECTORY "logs" DESTINATION .) + +if(EXISTS "${CMAKE_ROOT}/Modules/CPack.cmake") + include(InstallRequiredSystemLibraries) + + set(CPACK_PACKAGE_NAME "InspIRCd IRC Daemon") + set(CPACK_PACKAGE_VENDOR "InspIRCd Development Team") + set(CPACK_PACKAGE_VERSION_MAJOR ${MAJOR_VERSION}) + set(CPACK_PACKAGE_VERSION_MINOR ${MINOR_VERSION}) + set(CPACK_PACKAGE_VERSION_PATCH ${PATCH_VERSION}) + set(CPACK_PACKAGE_FILE_NAME "InspIRCd-${FULL_VERSION}") + set(CPACK_RESOURCE_FILE_LICENSE "${CMAKE_CURRENT_SOURCE_DIR}/../docs/COPYING") + + set(CPACK_GENERATOR "NSIS") + set(CPACK_PACKAGE_INSTALL_DIRECTORY "InspIRCd") + # NSIS has a bug with full nix paths, so this must contain at least one backslash + set(CPACK_PACKAGE_ICON "${INSPIRCD_BASE}/win\\\\inspircd.ico") + set(CPACK_NSIS_MUI_ICON "${INSPIRCD_BASE}/win\\\\inspircd.ico") + set(CPACK_NSIS_MUI_UNIICON "${INSPIRCD_BASE}/win\\\\inspircd.ico") + set(CPACK_NSIS_INSTALLED_ICON_NAME "inspircd.exe") + set(CPACK_NSIS_URL_INFO_ABOUT "http://www.inspircd.org/") + set(CPACK_NSIS_COMPRESSOR "/SOLID lzma") + + include(CPack) +endif(EXISTS "${CMAKE_ROOT}/Modules/CPack.cmake") diff --git a/win/NSIS.template.in b/win/NSIS.template.in new file mode 100644 index 000000000..0b74cc98f --- /dev/null +++ b/win/NSIS.template.in @@ -0,0 +1,978 @@ +; CPack install script designed for a nmake build
+
+;--------------------------------
+; You must define these values
+
+ !define VERSION "@CPACK_PACKAGE_VERSION@"
+ !define PATCH "@CPACK_PACKAGE_VERSION_PATCH@"
+ !define INST_DIR "@CPACK_TEMPORARY_DIRECTORY@"
+
+;--------------------------------
+;Variables
+
+ Var MUI_TEMP
+ Var STARTMENU_FOLDER
+ Var SV_ALLUSERS
+ Var START_MENU
+ Var DO_NOT_ADD_TO_PATH
+ Var ADD_TO_PATH_ALL_USERS
+ Var ADD_TO_PATH_CURRENT_USER
+ Var INSTALL_DESKTOP
+ Var IS_DEFAULT_INSTALLDIR
+;--------------------------------
+;Include Modern UI
+
+ !include "MUI.nsh"
+
+ ;Default installation folder
+ InstallDir "@CPACK_NSIS_INSTALL_ROOT@\@CPACK_PACKAGE_INSTALL_DIRECTORY@"
+
+;--------------------------------
+;General
+
+ ;Name and file
+ Name "@CPACK_NSIS_PACKAGE_NAME@"
+ OutFile "@CPACK_TOPLEVEL_DIRECTORY@/@CPACK_OUTPUT_FILE_NAME@"
+
+ ;Set compression
+ SetCompressor @CPACK_NSIS_COMPRESSOR@
+
+@CPACK_NSIS_DEFINES@
+
+ !include Sections.nsh
+
+;--- Component support macros: ---
+; The code for the add/remove functionality is from:
+; http://nsis.sourceforge.net/Add/Remove_Functionality
+; It has been modified slightly and extended to provide
+; inter-component dependencies.
+Var AR_SecFlags
+Var AR_RegFlags
+@CPACK_NSIS_SECTION_SELECTED_VARS@
+
+; Loads the "selected" flag for the section named SecName into the
+; variable VarName.
+!macro LoadSectionSelectedIntoVar SecName VarName
+ SectionGetFlags ${${SecName}} $${VarName}
+ IntOp $${VarName} $${VarName} & ${SF_SELECTED} ;Turn off all other bits
+!macroend
+
+; Loads the value of a variable... can we get around this?
+!macro LoadVar VarName
+ IntOp $R0 0 + $${VarName}
+!macroend
+
+; Sets the value of a variable
+!macro StoreVar VarName IntValue
+ IntOp $${VarName} 0 + ${IntValue}
+!macroend
+
+!macro InitSection SecName
+ ; This macro reads component installed flag from the registry and
+ ;changes checked state of the section on the components page.
+ ;Input: section index constant name specified in Section command.
+
+ ClearErrors
+ ;Reading component status from registry
+ ReadRegDWORD $AR_RegFlags HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\@CPACK_PACKAGE_INSTALL_REGISTRY_KEY@\Components\${SecName}" "Installed"
+ IfErrors "default_${SecName}"
+ ;Status will stay default if registry value not found
+ ;(component was never installed)
+ IntOp $AR_RegFlags $AR_RegFlags & ${SF_SELECTED} ;Turn off all other bits
+ SectionGetFlags ${${SecName}} $AR_SecFlags ;Reading default section flags
+ IntOp $AR_SecFlags $AR_SecFlags & 0xFFFE ;Turn lowest (enabled) bit off
+ IntOp $AR_SecFlags $AR_RegFlags | $AR_SecFlags ;Change lowest bit
+
+ ; Note whether this component was installed before
+ !insertmacro StoreVar ${SecName}_was_installed $AR_RegFlags
+ IntOp $R0 $AR_RegFlags & $AR_RegFlags
+
+ ;Writing modified flags
+ SectionSetFlags ${${SecName}} $AR_SecFlags
+
+ "default_${SecName}:"
+ !insertmacro LoadSectionSelectedIntoVar ${SecName} ${SecName}_selected
+!macroend
+
+!macro FinishSection SecName
+ ; This macro reads section flag set by user and removes the section
+ ;if it is not selected.
+ ;Then it writes component installed flag to registry
+ ;Input: section index constant name specified in Section command.
+
+ SectionGetFlags ${${SecName}} $AR_SecFlags ;Reading section flags
+ ;Checking lowest bit:
+ IntOp $AR_SecFlags $AR_SecFlags & ${SF_SELECTED}
+ IntCmp $AR_SecFlags 1 "leave_${SecName}"
+ ;Section is not selected:
+ ;Calling Section uninstall macro and writing zero installed flag
+ !insertmacro "Remove_${${SecName}}"
+ WriteRegDWORD HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\@CPACK_PACKAGE_INSTALL_REGISTRY_KEY@\Components\${SecName}" \
+ "Installed" 0
+ Goto "exit_${SecName}"
+
+ "leave_${SecName}:"
+ ;Section is selected:
+ WriteRegDWORD HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\@CPACK_PACKAGE_INSTALL_REGISTRY_KEY@\Components\${SecName}" \
+ "Installed" 1
+
+ "exit_${SecName}:"
+!macroend
+
+!macro RemoveSection SecName
+ ; This macro is used to call section's Remove_... macro
+ ;from the uninstaller.
+ ;Input: section index constant name specified in Section command.
+
+ !insertmacro "Remove_${${SecName}}"
+!macroend
+
+; Determine whether the selection of SecName changed
+!macro MaybeSelectionChanged SecName
+ !insertmacro LoadVar ${SecName}_selected
+ SectionGetFlags ${${SecName}} $R1
+ IntOp $R1 $R1 & ${SF_SELECTED} ;Turn off all other bits
+
+ ; See if the status has changed:
+ IntCmp $R0 $R1 "${SecName}_unchanged"
+ !insertmacro LoadSectionSelectedIntoVar ${SecName} ${SecName}_selected
+
+ IntCmp $R1 ${SF_SELECTED} "${SecName}_was_selected"
+ !insertmacro "Deselect_required_by_${SecName}"
+ goto "${SecName}_unchanged"
+
+ "${SecName}_was_selected:"
+ !insertmacro "Select_${SecName}_depends"
+
+ "${SecName}_unchanged:"
+!macroend
+;--- End of Add/Remove macros ---
+
+;--------------------------------
+;Interface Settings
+
+ !define MUI_HEADERIMAGE
+ !define MUI_ABORTWARNING
+
+;--------------------------------
+; path functions
+
+!verbose 3
+!include "WinMessages.NSH"
+!verbose 4
+
+;----------------------------------------
+; based upon a script of "Written by KiCHiK 2003-01-18 05:57:02"
+;----------------------------------------
+!verbose 3
+!include "WinMessages.NSH"
+!verbose 4
+;====================================================
+; get_NT_environment
+; Returns: the selected environment
+; Output : head of the stack
+;====================================================
+!macro select_NT_profile UN
+Function ${UN}select_NT_profile
+ StrCmp $ADD_TO_PATH_ALL_USERS "1" 0 environment_single
+ DetailPrint "Selected environment for all users"
+ Push "all"
+ Return
+ environment_single:
+ DetailPrint "Selected environment for current user only."
+ Push "current"
+ Return
+FunctionEnd
+!macroend
+!insertmacro select_NT_profile ""
+!insertmacro select_NT_profile "un."
+;----------------------------------------------------
+!define NT_current_env 'HKCU "Environment"'
+!define NT_all_env 'HKLM "SYSTEM\CurrentControlSet\Control\Session Manager\Environment"'
+
+!ifndef WriteEnvStr_RegKey
+ !ifdef ALL_USERS
+ !define WriteEnvStr_RegKey \
+ 'HKLM "SYSTEM\CurrentControlSet\Control\Session Manager\Environment"'
+ !else
+ !define WriteEnvStr_RegKey 'HKCU "Environment"'
+ !endif
+!endif
+
+; AddToPath - Adds the given dir to the search path.
+; Input - head of the stack
+; Note - Win9x systems requires reboot
+
+Function AddToPath
+ Exch $0
+ Push $1
+ Push $2
+ Push $3
+
+ # don't add if the path doesn't exist
+ IfFileExists "$0\*.*" "" AddToPath_done
+
+ ReadEnvStr $1 PATH
+ ; if the path is too long for a NSIS variable NSIS will return a 0
+ ; length string. If we find that, then warn and skip any path
+ ; modification as it will trash the existing path.
+ StrLen $2 $1
+ IntCmp $2 0 CheckPathLength_ShowPathWarning CheckPathLength_Done CheckPathLength_Done
+ CheckPathLength_ShowPathWarning:
+ Messagebox MB_OK|MB_ICONEXCLAMATION "Warning! PATH too long installer unable to modify PATH!"
+ Goto AddToPath_done
+ CheckPathLength_Done:
+ Push "$1;"
+ Push "$0;"
+ Call StrStr
+ Pop $2
+ StrCmp $2 "" "" AddToPath_done
+ Push "$1;"
+ Push "$0\;"
+ Call StrStr
+ Pop $2
+ StrCmp $2 "" "" AddToPath_done
+ GetFullPathName /SHORT $3 $0
+ Push "$1;"
+ Push "$3;"
+ Call StrStr
+ Pop $2
+ StrCmp $2 "" "" AddToPath_done
+ Push "$1;"
+ Push "$3\;"
+ Call StrStr
+ Pop $2
+ StrCmp $2 "" "" AddToPath_done
+
+ Call IsNT
+ Pop $1
+ StrCmp $1 1 AddToPath_NT
+ ; Not on NT
+ StrCpy $1 $WINDIR 2
+ FileOpen $1 "$1\autoexec.bat" a
+ FileSeek $1 -1 END
+ FileReadByte $1 $2
+ IntCmp $2 26 0 +2 +2 # DOS EOF
+ FileSeek $1 -1 END # write over EOF
+ FileWrite $1 "$\r$\nSET PATH=%PATH%;$3$\r$\n"
+ FileClose $1
+ SetRebootFlag true
+ Goto AddToPath_done
+
+ AddToPath_NT:
+ StrCmp $ADD_TO_PATH_ALL_USERS "1" ReadAllKey
+ ReadRegStr $1 ${NT_current_env} "PATH"
+ Goto DoTrim
+ ReadAllKey:
+ ReadRegStr $1 ${NT_all_env} "PATH"
+ DoTrim:
+ StrCmp $1 "" AddToPath_NTdoIt
+ Push $1
+ Call Trim
+ Pop $1
+ StrCpy $0 "$1;$0"
+ AddToPath_NTdoIt:
+ StrCmp $ADD_TO_PATH_ALL_USERS "1" WriteAllKey
+ WriteRegExpandStr ${NT_current_env} "PATH" $0
+ Goto DoSend
+ WriteAllKey:
+ WriteRegExpandStr ${NT_all_env} "PATH" $0
+ DoSend:
+ SendMessage ${HWND_BROADCAST} ${WM_WININICHANGE} 0 "STR:Environment" /TIMEOUT=5000
+
+ AddToPath_done:
+ Pop $3
+ Pop $2
+ Pop $1
+ Pop $0
+FunctionEnd
+
+
+; RemoveFromPath - Remove a given dir from the path
+; Input: head of the stack
+
+Function un.RemoveFromPath
+ Exch $0
+ Push $1
+ Push $2
+ Push $3
+ Push $4
+ Push $5
+ Push $6
+
+ IntFmt $6 "%c" 26 # DOS EOF
+
+ Call un.IsNT
+ Pop $1
+ StrCmp $1 1 unRemoveFromPath_NT
+ ; Not on NT
+ StrCpy $1 $WINDIR 2
+ FileOpen $1 "$1\autoexec.bat" r
+ GetTempFileName $4
+ FileOpen $2 $4 w
+ GetFullPathName /SHORT $0 $0
+ StrCpy $0 "SET PATH=%PATH%;$0"
+ Goto unRemoveFromPath_dosLoop
+
+ unRemoveFromPath_dosLoop:
+ FileRead $1 $3
+ StrCpy $5 $3 1 -1 # read last char
+ StrCmp $5 $6 0 +2 # if DOS EOF
+ StrCpy $3 $3 -1 # remove DOS EOF so we can compare
+ StrCmp $3 "$0$\r$\n" unRemoveFromPath_dosLoopRemoveLine
+ StrCmp $3 "$0$\n" unRemoveFromPath_dosLoopRemoveLine
+ StrCmp $3 "$0" unRemoveFromPath_dosLoopRemoveLine
+ StrCmp $3 "" unRemoveFromPath_dosLoopEnd
+ FileWrite $2 $3
+ Goto unRemoveFromPath_dosLoop
+ unRemoveFromPath_dosLoopRemoveLine:
+ SetRebootFlag true
+ Goto unRemoveFromPath_dosLoop
+
+ unRemoveFromPath_dosLoopEnd:
+ FileClose $2
+ FileClose $1
+ StrCpy $1 $WINDIR 2
+ Delete "$1\autoexec.bat"
+ CopyFiles /SILENT $4 "$1\autoexec.bat"
+ Delete $4
+ Goto unRemoveFromPath_done
+
+ unRemoveFromPath_NT:
+ StrCmp $ADD_TO_PATH_ALL_USERS "1" unReadAllKey
+ ReadRegStr $1 ${NT_current_env} "PATH"
+ Goto unDoTrim
+ unReadAllKey:
+ ReadRegStr $1 ${NT_all_env} "PATH"
+ unDoTrim:
+ StrCpy $5 $1 1 -1 # copy last char
+ StrCmp $5 ";" +2 # if last char != ;
+ StrCpy $1 "$1;" # append ;
+ Push $1
+ Push "$0;"
+ Call un.StrStr ; Find `$0;` in $1
+ Pop $2 ; pos of our dir
+ StrCmp $2 "" unRemoveFromPath_done
+ ; else, it is in path
+ # $0 - path to add
+ # $1 - path var
+ StrLen $3 "$0;"
+ StrLen $4 $2
+ StrCpy $5 $1 -$4 # $5 is now the part before the path to remove
+ StrCpy $6 $2 "" $3 # $6 is now the part after the path to remove
+ StrCpy $3 $5$6
+
+ StrCpy $5 $3 1 -1 # copy last char
+ StrCmp $5 ";" 0 +2 # if last char == ;
+ StrCpy $3 $3 -1 # remove last char
+
+ StrCmp $ADD_TO_PATH_ALL_USERS "1" unWriteAllKey
+ WriteRegExpandStr ${NT_current_env} "PATH" $3
+ Goto unDoSend
+ unWriteAllKey:
+ WriteRegExpandStr ${NT_all_env} "PATH" $3
+ unDoSend:
+ SendMessage ${HWND_BROADCAST} ${WM_WININICHANGE} 0 "STR:Environment" /TIMEOUT=5000
+
+ unRemoveFromPath_done:
+ Pop $6
+ Pop $5
+ Pop $4
+ Pop $3
+ Pop $2
+ Pop $1
+ Pop $0
+FunctionEnd
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+; Uninstall sutff
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+###########################################
+# Utility Functions #
+###########################################
+
+;====================================================
+; IsNT - Returns 1 if the current system is NT, 0
+; otherwise.
+; Output: head of the stack
+;====================================================
+; IsNT
+; no input
+; output, top of the stack = 1 if NT or 0 if not
+;
+; Usage:
+; Call IsNT
+; Pop $R0
+; ($R0 at this point is 1 or 0)
+
+!macro IsNT un
+Function ${un}IsNT
+ Push $0
+ ReadRegStr $0 HKLM "SOFTWARE\Microsoft\Windows NT\CurrentVersion" CurrentVersion
+ StrCmp $0 "" 0 IsNT_yes
+ ; we are not NT.
+ Pop $0
+ Push 0
+ Return
+
+ IsNT_yes:
+ ; NT!!!
+ Pop $0
+ Push 1
+FunctionEnd
+!macroend
+!insertmacro IsNT ""
+!insertmacro IsNT "un."
+
+; StrStr
+; input, top of stack = string to search for
+; top of stack-1 = string to search in
+; output, top of stack (replaces with the portion of the string remaining)
+; modifies no other variables.
+;
+; Usage:
+; Push "this is a long ass string"
+; Push "ass"
+; Call StrStr
+; Pop $R0
+; ($R0 at this point is "ass string")
+
+!macro StrStr un
+Function ${un}StrStr
+Exch $R1 ; st=haystack,old$R1, $R1=needle
+ Exch ; st=old$R1,haystack
+ Exch $R2 ; st=old$R1,old$R2, $R2=haystack
+ Push $R3
+ Push $R4
+ Push $R5
+ StrLen $R3 $R1
+ StrCpy $R4 0
+ ; $R1=needle
+ ; $R2=haystack
+ ; $R3=len(needle)
+ ; $R4=cnt
+ ; $R5=tmp
+ loop:
+ StrCpy $R5 $R2 $R3 $R4
+ StrCmp $R5 $R1 done
+ StrCmp $R5 "" done
+ IntOp $R4 $R4 + 1
+ Goto loop
+done:
+ StrCpy $R1 $R2 "" $R4
+ Pop $R5
+ Pop $R4
+ Pop $R3
+ Pop $R2
+ Exch $R1
+FunctionEnd
+!macroend
+!insertmacro StrStr ""
+!insertmacro StrStr "un."
+
+Function Trim ; Added by Pelaca
+ Exch $R1
+ Push $R2
+Loop:
+ StrCpy $R2 "$R1" 1 -1
+ StrCmp "$R2" " " RTrim
+ StrCmp "$R2" "$\n" RTrim
+ StrCmp "$R2" "$\r" RTrim
+ StrCmp "$R2" ";" RTrim
+ GoTo Done
+RTrim:
+ StrCpy $R1 "$R1" -1
+ Goto Loop
+Done:
+ Pop $R2
+ Exch $R1
+FunctionEnd
+
+Function ConditionalAddToRegisty
+ Pop $0
+ Pop $1
+ StrCmp "$0" "" ConditionalAddToRegisty_EmptyString
+ WriteRegStr SHCTX "Software\Microsoft\Windows\CurrentVersion\Uninstall\@CPACK_PACKAGE_INSTALL_REGISTRY_KEY@" \
+ "$1" "$0"
+ ;MessageBox MB_OK "Set Registry: '$1' to '$0'"
+ DetailPrint "Set install registry entry: '$1' to '$0'"
+ ConditionalAddToRegisty_EmptyString:
+FunctionEnd
+
+;--------------------------------
+
+!ifdef CPACK_USES_DOWNLOAD
+Function DownloadFile
+ IfFileExists $INSTDIR\* +2
+ CreateDirectory $INSTDIR
+ Pop $0
+
+ ; Skip if already downloaded
+ IfFileExists $INSTDIR\$0 0 +2
+ Return
+
+ StrCpy $1 "@CPACK_DOWNLOAD_SITE@"
+
+ try_again:
+ NSISdl::download "$1/$0" "$INSTDIR\$0"
+
+ Pop $1
+ StrCmp $1 "success" success
+ StrCmp $1 "Cancelled" cancel
+ MessageBox MB_OK "Download failed: $1"
+ cancel:
+ Return
+ success:
+FunctionEnd
+!endif
+
+;--------------------------------
+; Installation types
+@CPACK_NSIS_INSTALLATION_TYPES@
+
+;--------------------------------
+; Component sections
+@CPACK_NSIS_COMPONENT_SECTIONS@
+
+;--------------------------------
+; Define some macro setting for the gui
+@CPACK_NSIS_INSTALLER_MUI_ICON_CODE@
+@CPACK_NSIS_INSTALLER_ICON_CODE@
+@CPACK_NSIS_INSTALLER_MUI_COMPONENTS_DESC@
+@CPACK_NSIS_INSTALLER_MUI_FINISHPAGE_RUN_CODE@
+
+;--------------------------------
+;Pages
+ !insertmacro MUI_PAGE_WELCOME
+
+ !insertmacro MUI_PAGE_LICENSE "@CPACK_RESOURCE_FILE_LICENSE@"
+ Page custom InstallOptionsPage
+ !insertmacro MUI_PAGE_DIRECTORY
+
+ ;Start Menu Folder Page Configuration
+ !define MUI_STARTMENUPAGE_REGISTRY_ROOT "SHCTX"
+ !define MUI_STARTMENUPAGE_REGISTRY_KEY "Software\@CPACK_PACKAGE_VENDOR@\@CPACK_PACKAGE_INSTALL_REGISTRY_KEY@"
+ !define MUI_STARTMENUPAGE_REGISTRY_VALUENAME "Start Menu Folder"
+ !insertmacro MUI_PAGE_STARTMENU Application $STARTMENU_FOLDER
+
+ @CPACK_NSIS_PAGE_COMPONENTS@
+
+ !insertmacro MUI_PAGE_INSTFILES
+ !insertmacro MUI_PAGE_FINISH
+
+ !insertmacro MUI_UNPAGE_CONFIRM
+ !insertmacro MUI_UNPAGE_INSTFILES
+
+;--------------------------------
+;Languages
+
+ !insertmacro MUI_LANGUAGE "English" ;first language is the default language
+ !insertmacro MUI_LANGUAGE "Albanian"
+ !insertmacro MUI_LANGUAGE "Arabic"
+ !insertmacro MUI_LANGUAGE "Basque"
+ !insertmacro MUI_LANGUAGE "Belarusian"
+ !insertmacro MUI_LANGUAGE "Bosnian"
+ !insertmacro MUI_LANGUAGE "Breton"
+ !insertmacro MUI_LANGUAGE "Bulgarian"
+ !insertmacro MUI_LANGUAGE "Croatian"
+ !insertmacro MUI_LANGUAGE "Czech"
+ !insertmacro MUI_LANGUAGE "Danish"
+ !insertmacro MUI_LANGUAGE "Dutch"
+ !insertmacro MUI_LANGUAGE "Estonian"
+ !insertmacro MUI_LANGUAGE "Farsi"
+ !insertmacro MUI_LANGUAGE "Finnish"
+ !insertmacro MUI_LANGUAGE "French"
+ !insertmacro MUI_LANGUAGE "German"
+ !insertmacro MUI_LANGUAGE "Greek"
+ !insertmacro MUI_LANGUAGE "Hebrew"
+ !insertmacro MUI_LANGUAGE "Hungarian"
+ !insertmacro MUI_LANGUAGE "Icelandic"
+ !insertmacro MUI_LANGUAGE "Indonesian"
+ !insertmacro MUI_LANGUAGE "Irish"
+ !insertmacro MUI_LANGUAGE "Italian"
+ !insertmacro MUI_LANGUAGE "Japanese"
+ !insertmacro MUI_LANGUAGE "Korean"
+ !insertmacro MUI_LANGUAGE "Kurdish"
+ !insertmacro MUI_LANGUAGE "Latvian"
+ !insertmacro MUI_LANGUAGE "Lithuanian"
+ !insertmacro MUI_LANGUAGE "Luxembourgish"
+ !insertmacro MUI_LANGUAGE "Macedonian"
+ !insertmacro MUI_LANGUAGE "Malay"
+ !insertmacro MUI_LANGUAGE "Mongolian"
+ !insertmacro MUI_LANGUAGE "Norwegian"
+ !insertmacro MUI_LANGUAGE "Polish"
+ !insertmacro MUI_LANGUAGE "Portuguese"
+ !insertmacro MUI_LANGUAGE "PortugueseBR"
+ !insertmacro MUI_LANGUAGE "Romanian"
+ !insertmacro MUI_LANGUAGE "Russian"
+ !insertmacro MUI_LANGUAGE "Serbian"
+ !insertmacro MUI_LANGUAGE "SerbianLatin"
+ !insertmacro MUI_LANGUAGE "SimpChinese"
+ !insertmacro MUI_LANGUAGE "Slovak"
+ !insertmacro MUI_LANGUAGE "Slovenian"
+ !insertmacro MUI_LANGUAGE "Spanish"
+ !insertmacro MUI_LANGUAGE "Swedish"
+ !insertmacro MUI_LANGUAGE "Thai"
+ !insertmacro MUI_LANGUAGE "TradChinese"
+ !insertmacro MUI_LANGUAGE "Turkish"
+ !insertmacro MUI_LANGUAGE "Ukrainian"
+ !insertmacro MUI_LANGUAGE "Welsh"
+
+
+;--------------------------------
+;Reserve Files
+
+ ;These files should be inserted before other files in the data block
+ ;Keep these lines before any File command
+ ;Only for solid compression (by default, solid compression is enabled for BZIP2 and LZMA)
+
+ ReserveFile "NSIS.InstallOptions.ini"
+ !insertmacro MUI_RESERVEFILE_INSTALLOPTIONS
+
+;--------------------------------
+;Installer Sections
+
+Section "-Core installation"
+ ;Use the entire tree produced by the INSTALL target. Keep the
+ ;list of directories here in sync with the RMDir commands below.
+ SetOutPath "$INSTDIR"
+ @CPACK_NSIS_EXTRA_PREINSTALL_COMMANDS@
+ @CPACK_NSIS_FULL_INSTALL@
+
+ ;Store installation folder
+ WriteRegStr SHCTX "Software\@CPACK_PACKAGE_VENDOR@\@CPACK_PACKAGE_INSTALL_REGISTRY_KEY@" "" $INSTDIR
+
+ ;Create uninstaller
+ WriteUninstaller "$INSTDIR\Uninstall.exe"
+ Push "DisplayName"
+ Push "@CPACK_NSIS_DISPLAY_NAME@"
+ Call ConditionalAddToRegisty
+ Push "DisplayVersion"
+ Push "@CPACK_PACKAGE_VERSION@"
+ Call ConditionalAddToRegisty
+ Push "Publisher"
+ Push "@CPACK_PACKAGE_VENDOR@"
+ Call ConditionalAddToRegisty
+ Push "UninstallString"
+ Push "$INSTDIR\Uninstall.exe"
+ Call ConditionalAddToRegisty
+ Push "NoRepair"
+ Push "1"
+ Call ConditionalAddToRegisty
+
+ !ifdef CPACK_NSIS_ADD_REMOVE
+ ;Create add/remove functionality
+ Push "ModifyPath"
+ Push "$INSTDIR\AddRemove.exe"
+ Call ConditionalAddToRegisty
+ !else
+ Push "NoModify"
+ Push "1"
+ Call ConditionalAddToRegisty
+ !endif
+
+ ; Optional registration
+ Push "DisplayIcon"
+ Push "$INSTDIR\@CPACK_NSIS_INSTALLED_ICON_NAME@"
+ Call ConditionalAddToRegisty
+ Push "HelpLink"
+ Push "@CPACK_NSIS_HELP_LINK@"
+ Call ConditionalAddToRegisty
+ Push "URLInfoAbout"
+ Push "@CPACK_NSIS_URL_INFO_ABOUT@"
+ Call ConditionalAddToRegisty
+ Push "Contact"
+ Push "@CPACK_NSIS_CONTACT@"
+ Call ConditionalAddToRegisty
+ !insertmacro MUI_INSTALLOPTIONS_READ $INSTALL_DESKTOP "NSIS.InstallOptions.ini" "Field 5" "State"
+ !insertmacro MUI_STARTMENU_WRITE_BEGIN Application
+
+ ;Create shortcuts
+ CreateDirectory "$SMPROGRAMS\$STARTMENU_FOLDER"
+@CPACK_NSIS_CREATE_ICONS@
+@CPACK_NSIS_CREATE_ICONS_EXTRA@
+ CreateShortCut "$SMPROGRAMS\$STARTMENU_FOLDER\Uninstall.lnk" "$INSTDIR\Uninstall.exe"
+
+ ;Read a value from an InstallOptions INI file
+ !insertmacro MUI_INSTALLOPTIONS_READ $DO_NOT_ADD_TO_PATH "NSIS.InstallOptions.ini" "Field 2" "State"
+ !insertmacro MUI_INSTALLOPTIONS_READ $ADD_TO_PATH_ALL_USERS "NSIS.InstallOptions.ini" "Field 3" "State"
+ !insertmacro MUI_INSTALLOPTIONS_READ $ADD_TO_PATH_CURRENT_USER "NSIS.InstallOptions.ini" "Field 4" "State"
+
+ ; Write special uninstall registry entries
+ Push "StartMenu"
+ Push "$STARTMENU_FOLDER"
+ Call ConditionalAddToRegisty
+ Push "DoNotAddToPath"
+ Push "$DO_NOT_ADD_TO_PATH"
+ Call ConditionalAddToRegisty
+ Push "AddToPathAllUsers"
+ Push "$ADD_TO_PATH_ALL_USERS"
+ Call ConditionalAddToRegisty
+ Push "AddToPathCurrentUser"
+ Push "$ADD_TO_PATH_CURRENT_USER"
+ Call ConditionalAddToRegisty
+ Push "InstallToDesktop"
+ Push "$INSTALL_DESKTOP"
+ Call ConditionalAddToRegisty
+
+ !insertmacro MUI_STARTMENU_WRITE_END
+
+ detailPrint "Installing InspIRCd service..."
+ nsExec::Exec /TIMEOUT=30000 '"$INSTDIR\inspircd.exe" --installservice'
+
+@CPACK_NSIS_EXTRA_INSTALL_COMMANDS@
+
+SectionEnd
+
+Section "-Add to path"
+ Push $INSTDIR\bin
+ StrCmp "@CPACK_NSIS_MODIFY_PATH@" "ON" 0 doNotAddToPath
+ StrCmp $DO_NOT_ADD_TO_PATH "1" doNotAddToPath 0
+ Call AddToPath
+ doNotAddToPath:
+SectionEnd
+
+;--------------------------------
+; Create custom pages
+Function InstallOptionsPage
+ !insertmacro MUI_HEADER_TEXT "Install Options" "Choose options for installing @CPACK_NSIS_PACKAGE_NAME@"
+ !insertmacro MUI_INSTALLOPTIONS_DISPLAY "NSIS.InstallOptions.ini"
+
+FunctionEnd
+
+;--------------------------------
+; determine admin versus local install
+Function un.onInit
+
+ ClearErrors
+ UserInfo::GetName
+ IfErrors noLM
+ Pop $0
+ UserInfo::GetAccountType
+ Pop $1
+ StrCmp $1 "Admin" 0 +3
+ SetShellVarContext all
+ ;MessageBox MB_OK 'User "$0" is in the Admin group'
+ Goto done
+ StrCmp $1 "Power" 0 +3
+ SetShellVarContext all
+ ;MessageBox MB_OK 'User "$0" is in the Power Users group'
+ Goto done
+
+ noLM:
+ ;Get installation folder from registry if available
+
+ done:
+
+FunctionEnd
+
+;--- Add/Remove callback functions: ---
+!macro SectionList MacroName
+ ;This macro used to perform operation on multiple sections.
+ ;List all of your components in following manner here.
+@CPACK_NSIS_COMPONENT_SECTION_LIST@
+!macroend
+
+Section -FinishComponents
+ ;Removes unselected components and writes component status to registry
+ !insertmacro SectionList "FinishSection"
+
+!ifdef CPACK_NSIS_ADD_REMOVE
+ ; Get the name of the installer executable
+ System::Call 'kernel32::GetModuleFileNameA(i 0, t .R0, i 1024) i r1'
+ StrCpy $R3 $R0
+
+ ; Strip off the last 13 characters, to see if we have AddRemove.exe
+ StrLen $R1 $R0
+ IntOp $R1 $R0 - 13
+ StrCpy $R2 $R0 13 $R1
+ StrCmp $R2 "AddRemove.exe" addremove_installed
+
+ ; We're not running AddRemove.exe, so install it
+ CopyFiles $R3 $INSTDIR\AddRemove.exe
+
+ addremove_installed:
+!endif
+SectionEnd
+;--- End of Add/Remove callback functions ---
+
+;--------------------------------
+; Component dependencies
+Function .onSelChange
+ !insertmacro SectionList MaybeSelectionChanged
+FunctionEnd
+
+;--------------------------------
+;Uninstaller Section
+
+Section "Uninstall"
+ DetailPrint "Uninstalling InspIRCd service..."
+ nsExec::Exec /TIMEOUT=30000 '"$INSTDIR\inspircd.exe" --removeservice'
+
+ ReadRegStr $START_MENU SHCTX \
+ "Software\Microsoft\Windows\CurrentVersion\Uninstall\@CPACK_PACKAGE_INSTALL_REGISTRY_KEY@" "StartMenu"
+ ;MessageBox MB_OK "Start menu is in: $START_MENU"
+ ReadRegStr $DO_NOT_ADD_TO_PATH SHCTX \
+ "Software\Microsoft\Windows\CurrentVersion\Uninstall\@CPACK_PACKAGE_INSTALL_REGISTRY_KEY@" "DoNotAddToPath"
+ ReadRegStr $ADD_TO_PATH_ALL_USERS SHCTX \
+ "Software\Microsoft\Windows\CurrentVersion\Uninstall\@CPACK_PACKAGE_INSTALL_REGISTRY_KEY@" "AddToPathAllUsers"
+ ReadRegStr $ADD_TO_PATH_CURRENT_USER SHCTX \
+ "Software\Microsoft\Windows\CurrentVersion\Uninstall\@CPACK_PACKAGE_INSTALL_REGISTRY_KEY@" "AddToPathCurrentUser"
+ ;MessageBox MB_OK "Add to path: $DO_NOT_ADD_TO_PATH all users: $ADD_TO_PATH_ALL_USERS"
+ ReadRegStr $INSTALL_DESKTOP SHCTX \
+ "Software\Microsoft\Windows\CurrentVersion\Uninstall\@CPACK_PACKAGE_INSTALL_REGISTRY_KEY@" "InstallToDesktop"
+ ;MessageBox MB_OK "Install to desktop: $INSTALL_DESKTOP "
+
+@CPACK_NSIS_EXTRA_UNINSTALL_COMMANDS@
+
+ ;Remove files we installed.
+ ;Keep the list of directories here in sync with the File commands above.
+@CPACK_NSIS_DELETE_FILES@
+@CPACK_NSIS_DELETE_DIRECTORIES@
+
+!ifdef CPACK_NSIS_ADD_REMOVE
+ ;Remove the add/remove program
+ Delete "$INSTDIR\AddRemove.exe"
+!endif
+
+ ;Remove the uninstaller itself.
+ Delete "$INSTDIR\Uninstall.exe"
+ DeleteRegKey SHCTX "Software\Microsoft\Windows\CurrentVersion\Uninstall\@CPACK_PACKAGE_INSTALL_REGISTRY_KEY@"
+
+ ;Remove the installation directory if it is empty.
+ RMDir "$INSTDIR"
+
+ ; Remove the registry entries.
+ DeleteRegKey SHCTX "Software\@CPACK_PACKAGE_VENDOR@\@CPACK_PACKAGE_INSTALL_REGISTRY_KEY@"
+
+ ; Removes all optional components
+ !insertmacro SectionList "RemoveSection"
+
+ !insertmacro MUI_STARTMENU_GETFOLDER Application $MUI_TEMP
+
+ Delete "$SMPROGRAMS\$MUI_TEMP\Uninstall.lnk"
+@CPACK_NSIS_DELETE_ICONS@
+@CPACK_NSIS_DELETE_ICONS_EXTRA@
+
+ ;Delete empty start menu parent diretories
+ StrCpy $MUI_TEMP "$SMPROGRAMS\$MUI_TEMP"
+
+ startMenuDeleteLoop:
+ ClearErrors
+ RMDir $MUI_TEMP
+ GetFullPathName $MUI_TEMP "$MUI_TEMP\.."
+
+ IfErrors startMenuDeleteLoopDone
+
+ StrCmp "$MUI_TEMP" "$SMPROGRAMS" startMenuDeleteLoopDone startMenuDeleteLoop
+ startMenuDeleteLoopDone:
+
+ ; If the user changed the shortcut, then untinstall may not work. This should
+ ; try to fix it.
+ StrCpy $MUI_TEMP "$START_MENU"
+ Delete "$SMPROGRAMS\$MUI_TEMP\Uninstall.lnk"
+@CPACK_NSIS_DELETE_ICONS_EXTRA@
+
+ ;Delete empty start menu parent diretories
+ StrCpy $MUI_TEMP "$SMPROGRAMS\$MUI_TEMP"
+
+ secondStartMenuDeleteLoop:
+ ClearErrors
+ RMDir $MUI_TEMP
+ GetFullPathName $MUI_TEMP "$MUI_TEMP\.."
+
+ IfErrors secondStartMenuDeleteLoopDone
+
+ StrCmp "$MUI_TEMP" "$SMPROGRAMS" secondStartMenuDeleteLoopDone secondStartMenuDeleteLoop
+ secondStartMenuDeleteLoopDone:
+
+ DeleteRegKey /ifempty SHCTX "Software\@CPACK_PACKAGE_VENDOR@\@CPACK_PACKAGE_INSTALL_REGISTRY_KEY@"
+
+ Push $INSTDIR\bin
+ StrCmp $DO_NOT_ADD_TO_PATH_ "1" doNotRemoveFromPath 0
+ Call un.RemoveFromPath
+ doNotRemoveFromPath:
+SectionEnd
+
+;--------------------------------
+; determine admin versus local install
+; Is install for "AllUsers" or "JustMe"?
+; Default to "JustMe" - set to "AllUsers" if admin or on Win9x
+; This function is used for the very first "custom page" of the installer.
+; This custom page does not show up visibly, but it executes prior to the
+; first visible page and sets up $INSTDIR properly...
+; Choose different default installation folder based on SV_ALLUSERS...
+; "Program Files" for AllUsers, "My Documents" for JustMe...
+
+Function .onInit
+ StrCmp "@CPACK_NSIS_ENABLE_UNINSTALL_BEFORE_INSTALL@" "ON" 0 inst
+
+ ReadRegStr $0 HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\@CPACK_PACKAGE_NAME@" "UninstallString"
+ StrCmp $0 "" inst
+
+ MessageBox MB_YESNOCANCEL|MB_ICONEXCLAMATION \
+ "@CPACK_NSIS_PACKAGE_NAME@ is already installed. $\n$\nDo you want to uninstall the old version before installing the new one?" \
+ IDYES uninst IDNO inst
+ Abort
+
+;Run the uninstaller
+uninst:
+ ClearErrors
+ ExecWait '$0 _?=$INSTDIR' ;Do not copy the uninstaller to a temp file
+
+ IfErrors uninst_failed inst
+uninst_failed:
+ MessageBox MB_OK|MB_ICONSTOP "Uninstall failed."
+ Abort
+
+
+inst:
+ ; Reads components status for registry
+ !insertmacro SectionList "InitSection"
+
+ ; check to see if /D has been used to change
+ ; the install directory by comparing it to the
+ ; install directory that is expected to be the
+ ; default
+ StrCpy $IS_DEFAULT_INSTALLDIR 0
+ StrCmp "$INSTDIR" "@CPACK_NSIS_INSTALL_ROOT@\@CPACK_PACKAGE_INSTALL_DIRECTORY@" 0 +2
+ StrCpy $IS_DEFAULT_INSTALLDIR 1
+
+ StrCpy $SV_ALLUSERS "JustMe"
+ ; if default install dir then change the default
+ ; if it is installed for JustMe
+ StrCmp "$IS_DEFAULT_INSTALLDIR" "1" 0 +2
+ StrCpy $INSTDIR "$DOCUMENTS\@CPACK_PACKAGE_INSTALL_DIRECTORY@"
+
+ ClearErrors
+ UserInfo::GetName
+ IfErrors noLM
+ Pop $0
+ UserInfo::GetAccountType
+ Pop $1
+ StrCmp $1 "Admin" 0 +4
+ SetShellVarContext all
+ ;MessageBox MB_OK 'User "$0" is in the Admin group'
+ StrCpy $SV_ALLUSERS "AllUsers"
+ Goto done
+ StrCmp $1 "Power" 0 +4
+ SetShellVarContext all
+ ;MessageBox MB_OK 'User "$0" is in the Power Users group'
+ StrCpy $SV_ALLUSERS "AllUsers"
+ Goto done
+
+ noLM:
+ StrCpy $SV_ALLUSERS "AllUsers"
+ ;Get installation folder from registry if available
+
+ done:
+ StrCmp $SV_ALLUSERS "AllUsers" 0 +3
+ StrCmp "$IS_DEFAULT_INSTALLDIR" "1" 0 +2
+ StrCpy $INSTDIR "@CPACK_NSIS_INSTALL_ROOT@\@CPACK_PACKAGE_INSTALL_DIRECTORY@"
+
+ StrCmp "@CPACK_NSIS_MODIFY_PATH@" "ON" 0 noOptionsPage
+ !insertmacro MUI_INSTALLOPTIONS_EXTRACT "NSIS.InstallOptions.ini"
+
+ noOptionsPage:
+FunctionEnd
diff --git a/win/README.txt b/win/README.txt new file mode 100644 index 000000000..24f4fd7e6 --- /dev/null +++ b/win/README.txt @@ -0,0 +1,51 @@ +Building InspIRCd for Windows:
+
+Prerequisites:
+ Visual Studio 2010 or newer (http://www.microsoft.com/visualstudio/eng/products/visual-studio-express-products)
+ CMake 2.8 or newer (http://www.cmake.org/)
+ If building the installer, NSIS http://nsis.sourceforge.net/
+
+Configuring:
+ First copy any extra modules from extras (such as m_mysql) to the modules directory that you want to build.
+
+ Run CMake to generate build files. The CMake scripts are set up to do an out of source build from the
+ "win\build" directory, so navigate there before running CMake, eg:
+
+ c:\Users\Adam\Desktop\inspircd\win\build>cmake -G "Visual Studio 11" ..
+ -- Check for working CXX compiler using: Visual Studio 11
+ -- Check for working CXX compiler using: Visual Studio 11 -- works
+ -- Detecting CXX compiler ABI info
+ -- Detecting CXX compiler ABI info - done
+ -- Configuring done
+ -- Generating done
+ -- Build files have been written to: C:/Users/Adam/Desktop/inspircd/win/build
+
+ This generates project files for Visual Studio 11 (2012). Available generators can be seen in cmake --help,
+ such as Visual Studio 10 and NMake Makefiles.
+
+ If some of the modules you are building require libraries that are not in the default system path
+ (and thus not found by CMake), you can inform CMake about them by defining EXTRA_INCLUDES and
+ EXTRA_LIBS when configuring, eg;
+
+ cmake -DEXTRA_INCLUDES:STRING="C:\inspircd-includes" -DEXTRA_LIBS:STRING="C:\inspircd-libs" -G "Visual Studio 11" ..
+
+ Additionally, place any DLL files required by any extra modules in to the win directory for the installer to pick up.
+
+Building:
+ Open the InspIRCd Microsoft Visual Studio Solution file. If you are building a release, be sure to change
+ the Solution Configuration to Release before starting the build. Start the build by right clicking the
+ InspIRCd solution in the solution explorer and clicking "Build Solution"
+
+ If you are building using NMake Makefiles, simply use "nmake".
+
+Installing:
+ If you do not want to build the installer you can simply build the INSTALL target, which will probably install
+ InspIRCd into C:\Program Files\InspIRCd. This may require administrative privileges by Visual Studio.
+
+ If you are building using NMake Makefiles, simply use "nmake install".
+
+Building the installer:
+ Locate the PACKAGE project on Visual Studio's Solution Explorer and build it. This will generate an InspIRCd-x.x.x.exe
+ installer in the build directory which is ready to be distributed.
+
+ If you are building using NMake Makefiles or do not want to build the installer in Visual Studio, simply use "cpack".
\ No newline at end of file diff --git a/win/build/.gitignore b/win/build/.gitignore new file mode 100644 index 000000000..5e4debcc1 --- /dev/null +++ b/win/build/.gitignore @@ -0,0 +1 @@ +*
diff --git a/win/configure.cpp b/win/configure.cpp deleted file mode 100644 index 6f821894b..000000000 --- a/win/configure.cpp +++ /dev/null @@ -1,556 +0,0 @@ -/* - * InspIRCd -- Internet Relay Chat Daemon - * - * Copyright (C) 2011 Adam <Adam@anope.org> - * Copyright (C) 2007, 2009 Dennis Friis <peavey@inspircd.org> - * Copyright (C) 2007-2008 Craig Edwards <craigedwards@brainbox.cc> - * Copyright (C) 2008 Eric Dietz <root@wrongway.org> - * Copyright (C) 2007 Burlex <???@???> - * Copyright (C) 2007 Robin Burchell <robin+git@viroteck.net> - * - * This file is part of InspIRCd. InspIRCd is free software: you can - * redistribute it and/or modify it under the terms of the GNU General Public - * License as published by the Free Software Foundation, version 2. - * - * This program 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. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see <http://www.gnu.org/licenses/>. - */ - - -#define _CRT_SECURE_NO_DEPRECATE - -#define CONFIGURE_BUILD -#define WIN32_LEAN_AND_MEAN -#include <windows.h> -#include <stdio.h> -#include <process.h> -#include "../include/consolecolors.h" - -WORD g_wOriginalColors; -WORD g_wBackgroundColor; -HANDLE g_hStdout; - -#include <iostream> -#include <string> -#include <vector> -#include <time.h> -#include "inspircd_win32wrapper.h" - -using namespace std; -void Run(); -void Banner(); -void WriteCompileModules(const vector<string> &, const vector<string> &); -void WriteCompileCommands(); -void CopyExtras(); - -#ifdef _WIN64 - // /MACHINE:X64 - #ifdef _DEBUG - #define OUTFOLDER "debug_x64" - #else - #define OUTFOLDER "release_x64" - #endif -#else - #ifdef _DEBUG - #define OUTFOLDER "debug" - #else - #define OUTFOLDER "release" - #endif -#endif - -int get_int_option(const char * text, int def) -{ - static char buffer[500]; - int ret; - std::cout << text << std::endl << " [" << con_green << def << con_reset << "] -> "; - fgets(buffer, sizeof(buffer), stdin); - if(sscanf(buffer, "%u", &ret) != 1) - ret = def; - - std::cout << std::endl; - return ret; -} - -bool get_bool_option(const char * text, bool def) -{ - static char buffer[500]; - char ret[100]; - std::cout << text << " [" << con_green << (def ? 'y' : 'n') << con_reset << "] -> "; - fgets(buffer, sizeof(buffer), stdin); - if(sscanf(buffer, "%s", ret) != 1) - strcpy(ret, def ? "y" : "n"); - - std::cout << std::endl; - return !strnicmp(ret, "y", 1); -} - -string get_string_option(const char * text, char * def) -{ - if (def && *def) - std::cout << text << std::endl << "[" << con_green << def << con_reset << "] -> "; - else - std::cout << text << std::endl << "[] -> "; - - char buffer[1000], buf[1000]; - fgets(buffer, sizeof(buffer), stdin); - if (sscanf(buffer, "%s", buf) != 1) - strcpy(buf, def); - - std::cout << std::endl; - return buf; -} - -// escapes a string for use in a c++ file -void escape_string(string &str) -{ - string copy = str; - str.clear(); - - for (unsigned i = 0; i < copy.size(); ++i) - { - str += copy[i]; - if (copy[i] == '\\') - str += '\\'; - } -} - -string get_git_commit() -{ - char buf[128]; - char *ref = NULL, *commit = NULL; - FILE *f = fopen("../.git/HEAD", "r"); - if (f) - { - if (fgets(buf, sizeof(buf), f)) - { - while (isspace(buf[strlen(buf) - 1])) - buf[strlen(buf) - 1] = 0; - char *p = strchr(buf, ' '); - if (p) - ref = ++p; - } - fclose(f); - } - if (ref == NULL) - return ""; - string ref_file = string("../.git/") + string(ref); - f = fopen(ref_file.c_str(), "r"); - if (f) - { - if (fgets(buf, sizeof(buf), f)) - { - while (isspace(buf[strlen(buf) - 1])) - buf[strlen(buf) - 1] = 0; - commit = buf; - } - fclose(f); - } - - return commit != NULL ? commit : "0"; -} - -void get_machine_info(char * buffer, size_t len) -{ - char buf[500]; - char buf2[500]; - - DWORD dwSize = sizeof(buf); - if (!GetComputerNameExA((COMPUTER_NAME_FORMAT)ComputerNameDnsFullyQualified, buf, &dwSize)) - sprintf(buf, "%s", "unknown"); - - FILE * f = fopen("ver.txt.tmp", "r"); - if (f) - { - while (fgets(buf2, sizeof(buf2), f)) { } - fclose(f); - _unlink("ver.txt.tmp"); - } - else - sprintf(buf2, "%s", "unknown"); - - sprintf(buffer, "%s ", buf); - //strip newlines - char* b = buffer + strlen(buf)+1; - char *b2 = buf2; - while (*b2) - { - if (*b2 != 10 && *b2 != 13) - { - *b = *b2; - b++; - } - *b2++; - } - *b = 0; -} - -vector<string> get_dir_list(const string &path_list) -{ - char *paths = _strdup(path_list.c_str()); - char *paths_save = paths; - char *p = paths; - vector<string> paths_return; - - while ((p = strchr(paths, ';'))) - { - *p++ = 0; - paths_return.push_back(paths); - paths = p; - } - if (paths != NULL) - paths_return.push_back(paths); - free(paths_save); - - return paths_return; -} - -int __stdcall WinMain(IN HINSTANCE hInstance, IN HINSTANCE hPrevInstance, IN LPSTR lpCmdLine, IN int nShowCmd ) -{ - FILE * j = fopen("..\\include\\inspircd_config.h", "r"); - if (j) - { - if (MessageBoxA(0, "inspircd_config.h already exists. Remove it and build from clean?", "Configure program", MB_ICONQUESTION|MB_YESNO|MB_DEFBUTTON2) != IDYES) - { - fclose(j); - exit(0); - } - } - - // call before we hook console handles - system("ver > ver.txt.tmp"); - - AllocConsole(); - - // pipe standard handles to this console - freopen("CONIN$", "r", stdin); - freopen("CONOUT$", "w", stdout); - freopen("CONOUT$", "w", stderr); - - // Initialize the console values - g_hStdout = GetStdHandle(STD_OUTPUT_HANDLE); - CONSOLE_SCREEN_BUFFER_INFO bufinf; - if(GetConsoleScreenBufferInfo(g_hStdout, &bufinf)) - { - g_wOriginalColors = bufinf.wAttributes & 0x00FF; - g_wBackgroundColor = bufinf.wAttributes & 0x00F0; - } - else - { - g_wOriginalColors = FOREGROUND_RED|FOREGROUND_BLUE|FOREGROUND_GREEN; - g_wBackgroundColor = 0; - } - - Banner(); - Run(); - FreeConsole(); - return 0; -} - -void Banner() -{ - std::cout << std::endl << "Welcome to the " << con_white_bright << "InspIRCd" << con_reset << " Configuration program! (" << con_white_bright << "interactive mode" << con_reset << ")" << std::endl - << con_white_bright << "Package maintainers: Type ./configure --help for non-interactive help" << con_reset << std::endl << std::endl - << "*** If you are unsure of any of these values, leave it blank for ***" << std::endl - << "*** standard settings that will work, and your server will run ***" << std::endl - << "*** using them. Please consult your IRC network admin if in doubt. ***" << std::endl << std::endl - << "Press " << con_white_bright << "<RETURN>" << con_reset << " to accept the default for any option, or enter" << std::endl - << "a new value. Please note: You will " << con_white_bright << "HAVE" << con_reset << " to read the docs" << std::endl - << "dir, otherwise you won't have a config file!" << std::endl << std::endl; - -} - -void Run() -{ - vector<string> extra_include_paths, extra_lib_paths; - string revision = get_git_commit(); - char version[514]; - char machine_text[MAX_PATH]; - get_machine_info(machine_text, MAX_PATH); - - // grab version - FILE * fI = fopen("..\\src\\version.sh", "r"); - if(fI) - { - fgets(version, sizeof(version), fI); - fgets(version, sizeof(version), fI); - char * p2 = version; - while(*p2 != '\"') - ++p2; - ++p2; - strcpy(version, p2); - p2 = version; - while(*p2 != '\"') - ++p2; - *p2 = 0; - fclose(fI); - } - else - strcpy(version, "InspIRCd-0.0.0"); - - string branch(version); - branch.erase(branch.find_last_of('.')); - - std::cout << "Your operating system is: " << con_green << "Windows " << -#ifdef _WIN64 - "x64 (64-bit)" -#else - "x86 (32-bit)" -#endif - << con_reset << std::endl << "InspIRCd revision ID: " << con_green << ( (!revision.empty() && revision != "0") ? revision : "(Non-GIT build)" ) << con_reset << std::endl << std::endl - << con_white_bright << "Extra modules." << con_reset << std::endl; - if (get_bool_option("Do you want to compile any extra non-core modules?", false)) - { - string extra_i_path = get_string_option("Extra include search paths separate by \";\"", "."); - string extra_l_path = get_string_option("Extra library search paths, separate by \";\"", "."); - - extra_include_paths = get_dir_list(extra_i_path); - extra_lib_paths = get_dir_list(extra_l_path); - } - - std::cout << con_white_bright << "All paths are relative to the binary directory." << con_reset << std::endl; - string base_path = get_string_option("In what directory do you wish to install the InspIRCd base?", ".."); - string config_path = get_string_option("In what directory are the configuration files?", "conf"); - string mod_path = get_string_option("In what directory are the modules to be compiled to?", "modules"); - string data_path = get_string_option("In what directory is the variable data to be placed in?", "data"); - string log_path = get_string_option("In what directory is the logs to be placed in?", "logs"); - string bin_dir = get_string_option("In what directory is the IRCd binary to be placed?", "."); - - std::cout << std::endl << con_green << "Pre-build configuration is complete!" << std::endl << std::endl; - - CopyExtras(); - - // dump all the options back out - std::cout << con_reset << "Base install path:\t" << con_green << base_path << std::endl - << con_reset << "Config path:\t" << con_green << config_path << std::endl - << con_reset << "Module path:\t" << con_green << mod_path << std::endl - << con_reset << "Data path:\t"<< con_green << data_path << std::endl - << con_reset << "Log path:\t" << con_green << log_path << std::endl - << con_reset << "Socket Engine:\t" << con_green << "select" << con_reset << std::endl; - - if(get_bool_option("Are these settings correct?", true) == false) - { - Run(); - return; - } - std::cout << std::endl; - - // escape the pathes - escape_string(data_path); - escape_string(log_path); - escape_string(config_path); - escape_string(mod_path); - - printf("\nWriting inspircd_config.h..."); - FILE * f = fopen("..\\include\\inspircd_config.h", "w"); - fprintf(f, "/* Auto generated by configure, do not modify! */\n"); - fprintf(f, "#ifndef __CONFIGURATION_AUTO__\n"); - fprintf(f, "#define __CONFIGURATION_AUTO__\n\n"); - - fprintf(f, "#define CONFIG_PATH \"%s\"\n", config_path.c_str()); - fprintf(f, "#define MOD_PATH \"%s\"\n", mod_path.c_str()); - fprintf(f, "#define DATA_PATH \"%s\"\n", data_path.c_str()); - fprintf(f, "#define LOG_PATH \"%s\"\n", log_path.c_str()); - fprintf(f, "#define SOMAXCONN_S \"128\"\n"); - fprintf(f, "#define MAXBUF 514\n"); - - fprintf(f, "\n#include \"inspircd_win32wrapper.h\""); - fprintf(f, "\n#include \"threadengines/threadengine_win32.h\"\n\n"); - fprintf(f, "#endif\n\n"); - fclose(f); - - std::cout << con_green << "done" << con_reset << std::endl; - printf("Writing inspircd_version.h..."); - f = fopen("..\\include\\inspircd_version.h", "w"); - fprintf(f, "#define BRANCH \"%s\"\n", branch.c_str()); - fprintf(f, "#define VERSION \"%s\"\n", version); - fprintf(f, "#define REVISION \"%s\"\n", revision.c_str()); - fprintf(f, "#define SYSTEM \"%s\"\n", machine_text); - fclose(f); - - std::cout << con_green << "done" << con_reset << std::endl; - printf("Writing command and module compilation scripts..."); - WriteCompileCommands(); - WriteCompileModules(extra_include_paths, extra_lib_paths); - std::cout << con_green << "done" << con_reset << std::endl; - - printf("\nconfigure is done.. exiting!\n"); -} - -/* Keeps files from modules/extra up to date if theyre copied into modules/ */ -void CopyExtras() -{ - char dest[65535]; - char src[65535]; - - printf("\nUpdating extra modules in src/modules...\n"); - - WIN32_FIND_DATAA fd; - HANDLE fh = FindFirstFileA("..\\src\\modules\\extra\\*.*", &fd); - - if(fh == INVALID_HANDLE_VALUE) - return; - - do - { - strcpy(dest, "..\\src\\modules\\"); - strcat(dest, fd.cFileName); - strcpy(src, "..\\src\\modules\\extra\\"); - strcat(src, fd.cFileName); - FILE* x = fopen(dest, "r"); - if (x) - { - fclose(x); - CopyFileA(src, dest, false); - std::cout << con_green << "\t" << fd.cFileName << con_reset << "..." << std::endl; - } - } - while (FindNextFileA(fh, &fd)); - - FindClose(fh); - - printf("\n\n"); -} - -void WriteCompileCommands() -{ - char commands[300][100]; - int command_count = 0; - printf("\n Finding Command Sources...\n"); - WIN32_FIND_DATAA fd; - HANDLE fh = FindFirstFileA("..\\src\\commands\\cmd_*.cpp", &fd); - if(fh == INVALID_HANDLE_VALUE) - std::cout << con_green << " No command sources could be found! This *could* be a bad thing.. :P" << con_reset << std::endl; - else - { - std::cout << con_green; - do - { - strcpy(commands[command_count], fd.cFileName); - commands[command_count][strlen(fd.cFileName) - 4] = 0; - printf(" %s\n", commands[command_count]); - ++command_count; - } while(FindNextFileA(fh, &fd)); - std::cout << con_reset; - } - - // Write our spiffy new makefile :D - // I am such a lazy fucker :P - FILE * f = fopen("..\\src\\commands\\commands.mak", "w"); - - time_t t = time(NULL); - fprintf(f, "# Generated at %s\n", ctime(&t)); - fprintf(f, "all: makedir "); - - // dump modules.. first time :) - for(int i = 0; i < command_count; ++i) - fprintf(f, "%s.so ", commands[i]); - - fprintf(f, "\n.cpp.obj:\n"); -#ifdef _WIN64 - // /MACHINE:X64 - #ifdef _DEBUG - fprintf(f, " cl /nologo /LD /Od /I \".\" /I \"../../include\" /I \"../../include/modes\" /I \"../../include/commands\" /I \"../../win\" /D \"_DEBUG\" /D \"_CONSOLE\" /D \"_MBCS\" /D \"DLL_BUILD\" /Gm /EHsc /RTC1 /MDd /Fo\"Debug_x64/\" /Fd\"Debug_x64/vc90.pdb\" /W2 /Zi /TP $*.cpp ..\\..\\win\\inspircd_memory_functions.cpp /link ..\\..\\bin\\debug_x64\\inspircd.lib /OUT:\"..\\..\\bin\\debug_x64\\modules\\$*.so\" /PDB:\"..\\..\\bin\\debug_x64\\modules\\$*.pdb\" /MACHINE:X64 /IMPLIB:\"..\\..\\bin\\debug_x64\\modules\\$*.lib\"\n\n"); - #else - fprintf(f, " cl /nologo /LD /O2 /I \".\" /I \"../../include\" /I \"../../include/modes\" /I \"../../include/commands\" /I \"../../win\" /D \"_CONSOLE\" /D \"_MBCS\" /D \"DLL_BUILD\" /Gm /EHsc /GL /MD /Fo\"Release_x64/\" /Fd\"Release_x64/vc90.pdb\" /W2 /Zi /TP $*.cpp ..\\..\\win\\inspircd_memory_functions.cpp /link ..\\..\\bin\\release_x64\\inspircd.lib /OUT:\"..\\..\\bin\\release_x64\\modules\\$*.so\" /PDB:\"..\\..\\bin\\release_x64\\modules\\$*.pdb\" /MACHINE:X64 /IMPLIB:\"..\\..\\bin\\release_x64\\modules\\$*.lib\"\n\n"); - #endif -#else - #ifdef _DEBUG - fprintf(f, " cl /nologo /LD /Od /I \".\" /I \"../../include\" /I \"../../include/modes\" /I \"../../include/commands\" /I \"../../win\" /D \"_DEBUG\" /D \"_CONSOLE\" /D \"_MBCS\" /D \"DLL_BUILD\" /Gm /EHsc /RTC1 /MDd /Fo\"Debug/\" /Fd\"Debug/vc90.pdb\" /W2 /Zi /TP $*.cpp ..\\..\\win\\inspircd_memory_functions.cpp /link ..\\..\\bin\\debug\\inspircd.lib /OUT:\"..\\..\\bin\\debug\\modules\\$*.so\" /PDB:\"..\\..\\bin\\debug\\modules\\$*.pdb\" /IMPLIB:\"..\\..\\bin\\debug\\modules\\$*.lib\"\n\n"); - #else - fprintf(f, " cl /nologo /LD /O2 /I \".\" /I \"../../include\" /I \"../../include/modes\" /I \"../../include/commands\" /I \"../../win\" /D \"_CONSOLE\" /D \"_MBCS\" /D \"DLL_BUILD\" /Gm /EHsc /GL /MD /Fo\"Release/\" /Fd\"Release/vc90.pdb\" /W2 /Zi /TP $*.cpp ..\\..\\win\\inspircd_memory_functions.cpp /link ..\\..\\bin\\release\\inspircd.lib /OUT:\"..\\..\\bin\\release\\modules\\$*.so\" /PDB:\"..\\..\\bin\\release\\modules\\$*.pdb\" /IMPLIB:\"..\\..\\bin\\release\\modules\\$*.lib\"\n\n"); - #endif -#endif - - fprintf(f, "makedir:\n"); - - CreateDirectoryA("..\\src\\commands\\" OUTFOLDER, NULL); - CreateDirectoryA("..\\bin\\" OUTFOLDER "\\modules", NULL); - fprintf(f, " if not exist ..\\..\\bin\\" OUTFOLDER "\\modules mkdir ..\\..\\bin\\" OUTFOLDER "\\modules\n"); - fprintf(f, " if not exist ..\\..\\bin\\" OUTFOLDER "\\data mkdir ..\\..\\bin\\" OUTFOLDER "\\data\n"); - fprintf(f, " if not exist ..\\..\\bin\\" OUTFOLDER "\\logs mkdir ..\\..\\bin\\" OUTFOLDER "\\logs\n"); - - // dump modules.. again the second and last time :) - for(int i = 0; i < command_count; ++i) - fprintf(f, "%s.so : %s.obj\n", commands[i], commands[i]); - - fprintf(f, "\n"); - fclose(f); -} - -void WriteCompileModules(const vector<string> &includes, const vector<string> &libs) -{ - char modules[300][100]; - int module_count = 0; - - printf("Finding Modules...\n"); - WIN32_FIND_DATAA fd; - HANDLE fh = FindFirstFileA("..\\src\\modules\\m_*.cpp", &fd); - if(fh == INVALID_HANDLE_VALUE) - std::cout << con_green << " No module sources could be found! This *could* be a bad thing.. :P" << con_reset << std::endl; - else - { - std::cout << con_green; - do - { - strcpy(modules[module_count], fd.cFileName); - modules[module_count][strlen(fd.cFileName) - 4] = 0; - printf(" %s\n", modules[module_count]); - ++module_count; - } while(FindNextFileA(fh, &fd)); - std::cout << con_reset; - } - - string extra_include, extra_lib; - for (unsigned i = 0; i < includes.size(); ++i) - extra_include += " /I \"" + includes[i] + "\" "; - for (unsigned i = 0; i < libs.size(); ++i) - extra_lib += " /LIBPATH:\"" + libs[i] + "\" "; - - // Write our spiffy new makefile :D - // I am such a lazy fucker :P - FILE * f = fopen("..\\src\\modules\\modules.mak", "w"); - - time_t t = time(NULL); - fprintf(f, "# Generated at %s\n", ctime(&t)); - fprintf(f, "all: makedir "); - - // dump modules.. first time :) - for(int i = 0; i < module_count; ++i) - fprintf(f, "%s.so ", modules[i]); - - fprintf(f, "\n.cpp.obj:\n"); -#ifdef _WIN64 - // /MACHINE:X64 - #ifdef _DEBUG - fprintf(f, " cl /nologo /LD /Od /I \".\" /I \"../../include\" /I \"../../include/modes\" /I \"../../include/modules\" /I \"../../win\" %s /D \"_DEBUG\" /D \"_CONSOLE\" /D \"_MBCS\" /D \"DLL_BUILD\" /Gm /EHsc /RTC1 /MDd /Fo\"Debug_x64/\" /Fd\"Debug_x64/vc90.pdb\" /W2 /Zi /TP $*.cpp ..\\..\\win\\inspircd_memory_functions.cpp /link %s ..\\..\\bin\\debug_x64\\inspircd.lib /OUT:\"..\\..\\bin\\debug_x64\\modules\\$*.so\" /PDB:\"..\\..\\bin\\debug_x64\\modules\\$*.pdb\" /MACHINE:X64 /IMPLIB:\"..\\..\\bin\\debug_x64\\modules\\$*.lib\"\n\n", extra_include.c_str(), extra_lib.c_str()); - #else - fprintf(f, " cl /nologo /LD /O2 /I \".\" /I \"../../include\" /I \"../../include/modes\" /I \"../../include/modules\" /I \"../../win\" %s /D \"_CONSOLE\" /D \"_MBCS\" /D \"DLL_BUILD\" /Gm /EHsc /GL /MD /Fo\"Release_x64/\" /Fd\"Release_x64/vc90.pdb\" /W2 /Zi /TP $*.cpp ..\\..\\win\\inspircd_memory_functions.cpp /link %s ..\\..\\bin\\release_x64\\inspircd.lib /OUT:\"..\\..\\bin\\release_x64\\modules\\$*.so\" /PDB:\"..\\..\\bin\\release_x64\\modules\\$*.pdb\" /MACHINE:X64 /IMPLIB:\"..\\..\\bin\\release_x64\\modules\\$*.lib\"\n\n", extra_include.c_str(), extra_lib.c_str()); - #endif -#else - #ifdef _DEBUG - fprintf(f, " cl /nologo /LD /Od /I \".\" /I \"../../include\" /I \"../../include/modes\" /I \"../../include/modules\" /I \"../../win\" %s /D \"_DEBUG\" /D \"_CONSOLE\" /D \"_MBCS\" /D \"DLL_BUILD\" /Gm /EHsc /RTC1 /MDd /Fo\"Debug/\" /Fd\"Debug/vc90.pdb\" /W2 /Zi /TP $*.cpp ..\\..\\win\\inspircd_memory_functions.cpp /link %s ..\\..\\bin\\debug\\inspircd.lib /OUT:\"..\\..\\bin\\debug\\modules\\$*.so\" /PDB:\"..\\..\\bin\\debug\\modules\\$*.pdb\" /IMPLIB:\"..\\..\\bin\\debug\\modules\\$*.lib\"\n\n", extra_include.c_str(), extra_lib.c_str()); - #else - fprintf(f, " cl /nologo /LD /O2 /I \".\" /I \"../../include\" /I \"../../include/modes\" /I \"../../include/modules\" /I \"../../win\" %s /D \"_CONSOLE\" /D \"_MBCS\" /D \"DLL_BUILD\" /Gm /EHsc /GL /MD /Fo\"Release/\" /Fd\"Release/vc90.pdb\" /W2 /Zi /TP $*.cpp ..\\..\\win\\inspircd_memory_functions.cpp /link %s ..\\..\\bin\\release\\inspircd.lib /OUT:\"..\\..\\bin\\release\\modules\\$*.so\" /PDB:\"..\\..\\bin\\release\\modules\\$*.pdb\" /IMPLIB:\"..\\..\\bin\\release\\modules\\$*.lib\"\n\n", extra_include.c_str(), extra_lib.c_str()); - #endif -#endif - - CreateDirectoryA("..\\src\\modules\\" OUTFOLDER, NULL); - -#ifdef _DEBUG - fprintf(f, "makedir:\n if not exist debug mkdir debug\n\n"); -#else - fprintf(f, "makedir:\n if not exist release mkdir release\n\n"); -#endif - - // dump modules.. again the second and last time :) - for(int i = 0; i < module_count; ++i) - fprintf(f, "%s.so : %s.obj\n", modules[i], modules[i]); - - fprintf(f, "\n"); - fclose(f); -} diff --git a/win/configure.vcxproj b/win/configure.vcxproj deleted file mode 100644 index df1175712..000000000 --- a/win/configure.vcxproj +++ /dev/null @@ -1,211 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <ItemGroup Label="ProjectConfigurations">
- <ProjectConfiguration Include="Debug|Win32">
- <Configuration>Debug</Configuration>
- <Platform>Win32</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Debug|Win32">
- <Configuration>Debug</Configuration>
- <Platform>Win32</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Debug|x64">
- <Configuration>Debug</Configuration>
- <Platform>x64</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Debug|x64">
- <Configuration>Debug</Configuration>
- <Platform>x64</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Release|Win32">
- <Configuration>Release</Configuration>
- <Platform>Win32</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Release|Win32">
- <Configuration>Release</Configuration>
- <Platform>Win32</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Release|x64">
- <Configuration>Release</Configuration>
- <Platform>x64</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Release|x64">
- <Configuration>Release</Configuration>
- <Platform>x64</Platform>
- </ProjectConfiguration>
- </ItemGroup>
- <PropertyGroup Label="Globals">
- <ProjectName>configure</ProjectName>
- <ProjectGUID>{B922B569-727E-4EB0-827A-04E133A91DE7}</ProjectGUID>
- <RootNamespace>configure</RootNamespace>
- <Keyword>Win32Proj</Keyword>
- </PropertyGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Label="Configuration" Condition="'$(Configuration)|$(Platform)'=='Debug|X64'">
- <ConfigurationType>Application</ConfigurationType>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Label="Configuration" Condition="'$(Configuration)|$(Platform)'=='Release|X64'">
- <ConfigurationType>Application</ConfigurationType>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
- <ImportGroup Label="ExtensionSettings">
- </ImportGroup>
- <ImportGroup Label="PropertySheets">
- <Import Project="$(LocalAppData)\Microsoft\VisualStudio\10.0\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(LocalAppData)\Microsoft\VisualStudio\10.0\Microsoft.Cpp.$(Platform).user.props')" />
- </ImportGroup>
- <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
- <Import Project="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.props" Condition="exists('$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.props')" />
- </ImportGroup>
- <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|X64'">
- <Import Project="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.props" Condition="exists('$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.props')" />
- </ImportGroup>
- <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
- <Import Project="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.props" Condition="exists('$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.props')" />
- </ImportGroup>
- <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|X64'">
- <Import Project="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.props" Condition="exists('$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.props')" />
- </ImportGroup>
- <PropertyGroup Label="UserMacros" />
- <PropertyGroup>
- <_ProjectFileVersion>10.0.20506.1</_ProjectFileVersion>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Debug_configure\</IntDir>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">configure</TargetName>
- <TargetExt Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.exe</TargetExt>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|X64'">.\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|X64'">x64Debug_Configure\</IntDir>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|X64'">configure</TargetName>
- <TargetExt Condition="'$(Configuration)|$(Platform)'=='Debug|X64'">.exe</TargetExt>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|X64'">true</LinkIncremental>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Release_Configure\</IntDir>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">configure</TargetName>
- <TargetExt Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.exe</TargetExt>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|X64'">.\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|X64'">x64Release_Configure\</IntDir>
- <TargetName Condition="'$(Configuration)|$(Platform)'=='Release|X64'">configure</TargetName>
- <TargetExt Condition="'$(Configuration)|$(Platform)'=='Release|X64'">.exe</TargetExt>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|X64'">false</LinkIncremental>
- </PropertyGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
- <ClCompile>
- <Optimization>Disabled</Optimization>
- <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <MinimalRebuild>false</MinimalRebuild>
- <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
- <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level4</WarningLevel>
- <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
- <MultiProcessorCompilation>true</MultiProcessorCompilation>
- </ClCompile>
- <Link>
- <AdditionalDependencies>%(AdditionalDependencies)</AdditionalDependencies>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <ProgramDatabaseFile>$(OutDir)configure.pdb</ProgramDatabaseFile>
- <SubSystem>Windows</SubSystem>
- <RandomizedBaseAddress>true</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- <TargetMachine>MachineX86</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|X64'">
- <Midl>
- <TargetEnvironment>X64</TargetEnvironment>
- </Midl>
- <ClCompile>
- <Optimization>Disabled</Optimization>
- <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <MinimalRebuild>false</MinimalRebuild>
- <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
- <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level4</WarningLevel>
- <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
- <MultiProcessorCompilation>true</MultiProcessorCompilation>
- </ClCompile>
- <Link>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <ProgramDatabaseFile>$(OutDir)configure.pdb</ProgramDatabaseFile>
- <SubSystem>Windows</SubSystem>
- <RandomizedBaseAddress>true</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- <TargetMachine>MachineX64</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
- <ClCompile>
- <Optimization>MaxSpeed</Optimization>
- <WholeProgramOptimization>true</WholeProgramOptimization>
- <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <MinimalRebuild>false</MinimalRebuild>
- <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
- <MultiProcessorCompilation>true</MultiProcessorCompilation>
- </ClCompile>
- <Link>
- <AdditionalDependencies>%(AdditionalDependencies)</AdditionalDependencies>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <SubSystem>Windows</SubSystem>
- <OptimizeReferences>true</OptimizeReferences>
- <EnableCOMDATFolding>true</EnableCOMDATFolding>
- <LinkTimeCodeGeneration>UseLinkTimeCodeGeneration</LinkTimeCodeGeneration>
- <RandomizedBaseAddress>true</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- <TargetMachine>MachineX86</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|X64'">
- <Midl>
- <TargetEnvironment>X64</TargetEnvironment>
- </Midl>
- <ClCompile>
- <Optimization>MaxSpeed</Optimization>
- <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <MinimalRebuild>false</MinimalRebuild>
- <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
- <MultiProcessorCompilation>true</MultiProcessorCompilation>
- <WholeProgramOptimization>true</WholeProgramOptimization>
- </ClCompile>
- <Link>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <SubSystem>Windows</SubSystem>
- <OptimizeReferences>true</OptimizeReferences>
- <EnableCOMDATFolding>true</EnableCOMDATFolding>
- <RandomizedBaseAddress>true</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- <TargetMachine>MachineX64</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemGroup>
- <ClCompile Include="configure.cpp" />
- </ItemGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
- <ImportGroup Label="ExtensionTargets">
- </ImportGroup>
-</Project>
\ No newline at end of file diff --git a/win/inspircd.nsi b/win/inspircd.nsi deleted file mode 100644 index e1ce0159f..000000000 --- a/win/inspircd.nsi +++ /dev/null @@ -1,253 +0,0 @@ -; -; InspIRCd -- Internet Relay Chat Daemon -; -; Copyright (C) 2011 Adam <Adam@anope.org> -; Copyright (C) 2007 Dennis Friis <peavey@inspircd.org> -; Copyright (C) 2007 Craig Edwards <craigedwards@brainbox.cc> -; -; This file is part of InspIRCd. InspIRCd is free software: you can -; redistribute it and/or modify it under the terms of the GNU General Public -; License as published by the Free Software Foundation, version 2. -; -; This program 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. -; -; You should have received a copy of the GNU General Public License -; along with this program. If not, see <http://www.gnu.org/licenses/>. -; - - -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; - - ;;;; SET THE BUILD TO BE PACKAGED HERE ;;;; - -!define BUILD "release" - -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; - -; HM NIS Edit Wizard helper defines -!define PRODUCT_NAME "InspIRCd" -!define PRODUCT_VERSION "2.0" -!define PRODUCT_PUBLISHER "InspIRCd Development Team" -!define PRODUCT_WEB_SITE "http://www.inspircd.org/" -!define PRODUCT_DIR_REGKEY "Software\Microsoft\Windows\CurrentVersion\App Paths\inspircd.exe" -!define PRODUCT_UNINST_KEY "Software\Microsoft\Windows\CurrentVersion\Uninstall\${PRODUCT_NAME}" -!define PRODUCT_UNINST_ROOT_KEY "HKLM" -!define DOT_MAJOR "2" -!define DOT_MINOR "0" - -SetCompressor bzip2 - -; MUI 1.67 compatible ------ -!include "MUI.nsh" - -; MUI Settings -!define MUI_ABORTWARNING -!define MUI_ICON "inspircd.ico" -!define MUI_UNICON "inspircd.ico" - -; Welcome page -!insertmacro MUI_PAGE_WELCOME -; License page -!define MUI_LICENSEPAGE_CHECKBOX -!insertmacro MUI_PAGE_LICENSE "..\docs\COPYING" -; directory page -Page directory -; Components page -!insertmacro MUI_PAGE_COMPONENTS -; Instfiles page -!insertmacro MUI_PAGE_INSTFILES - -; Uninstaller pages -!insertmacro MUI_UNPAGE_INSTFILES - -; Language files -!insertmacro MUI_LANGUAGE "English" - -; Reserve files -!insertmacro MUI_RESERVEFILE_INSTALLOPTIONS - -; MUI end ------ - -Name "${PRODUCT_NAME} ${PRODUCT_VERSION}" -OutFile "${PRODUCT_NAME}-${PRODUCT_VERSION}-Setup.exe" -InstallDir "$PROGRAMFILES\InspIRCd" -InstallDirRegKey HKLM "${PRODUCT_DIR_REGKEY}" "" -ShowInstDetails show -ShowUnInstDetails show - -Function IsDotNetInstalled - - StrCpy $0 "0" - StrCpy $1 "SOFTWARE\Microsoft\.NETFramework" ;registry entry to look in. - StrCpy $2 0 - - StartEnum: - ;Enumerate the versions installed. - EnumRegKey $3 HKLM "$1\policy" $2 - - ;If we don't find any versions installed, it's not here. - StrCmp $3 "" noDotNet notEmpty - - ;We found something. - notEmpty: - ;Find out if the RegKey starts with 'v'. - ;If it doesn't, goto the next key. - StrCpy $4 $3 1 0 - StrCmp $4 "v" +1 goNext - StrCpy $4 $3 1 1 - - ;It starts with 'v'. Now check to see how the installed major version - ;relates to our required major version. - ;If it's equal check the minor version, if it's greater, - ;we found a good RegKey. - IntCmp $4 ${DOT_MAJOR} +1 goNext yesDotNetReg - ;Check the minor version. If it's equal or greater to our requested - ;version then we're good. - StrCpy $4 $3 1 3 - IntCmp $4 ${DOT_MINOR} yesDotNetReg goNext yesDotNetReg - - goNext: - ;Go to the next RegKey. - IntOp $2 $2 + 1 - goto StartEnum - - yesDotNetReg: - ;Now that we've found a good RegKey, let's make sure it's actually - ;installed by getting the install path and checking to see if the - ;mscorlib.dll exists. - EnumRegValue $2 HKLM "$1\policy\$3" 0 - ;$2 should equal whatever comes after the major and minor versions - ;(ie, v1.1.4322) - StrCmp $2 "" noDotNet - ReadRegStr $4 HKLM $1 "InstallRoot" - ;Hopefully the install root isn't empty. - StrCmp $4 "" noDotNet - ;build the actuall directory path to mscorlib.dll. - StrCpy $4 "$4$3.$2\mscorlib.dll" - IfFileExists $4 yesDotNet noDotNet - - noDotNet: - MessageBox MB_OK "You do not have have v${DOT_MAJOR}.${DOT_MINOR} or greater of the .NET framework installed. This is required for the InspIRCd Monitor, however you can still launch the IRCd manually." - - yesDotNet: - ;Everything checks out. Go on with the rest of the installation. - -FunctionEnd - -Section "Binary Executable" SEC01 - Call IsDotNetInstalled - CreateDirectory "$SMPROGRAMS\InspIRCd" - CreateDirectory "$INSTDIR\logs" - CreateDirectory "$INSTDIR\data" - CreateShortCut "$SMPROGRAMS\InspIRCd\InspIRCd.lnk" "$INSTDIR\inspircd.exe" - SetOutPath "$INSTDIR" - SetOverwrite ifnewer - File "..\bin\${BUILD}\inspircd.exe" - DetailPrint "Installing InspIRCd service..." - nsExec::Exec /TIMEOUT=30000 '"$INSTDIR\inspircd.exe" --installservice' -SectionEnd - -Section "Config Files" SEC02 - SetOutPath "$INSTDIR\conf" - File "..\docs\conf\*.example" - SetOutPath "$INSTDIR\conf\aliases" - File "..\docs\conf\aliases\*.example" - SetOutPath "$INSTDIR\conf\modules" - File "..\docs\conf\modules\*.example" -SectionEnd - -Section "Command Handlers" SEC03 - SetOutPath "$INSTDIR\modules" - File "..\bin\${BUILD}\modules\cmd_*.so" -SectionEnd - -Section "Modules" SEC04 - SetOutPath "$INSTDIR\modules" - File "..\bin\${BUILD}\modules\m_*.so" - ; Copy DLLs required for modules - SetOutPath "$INSTDIR" - File /nonfatal "*.dll" - File "make_gnutls_cert.bat" -SectionEnd - -Section -AdditionalIcons - SetOutPath $INSTDIR - WriteIniStr "$INSTDIR\${PRODUCT_NAME}.url" "InternetShortcut" "URL" "${PRODUCT_WEB_SITE}" - CreateShortCut "$SMPROGRAMS\InspIRCd\InspIRCd Website.lnk" "$INSTDIR\${PRODUCT_NAME}.url" - CreateShortCut "$SMPROGRAMS\InspIRCd\Uninstall.lnk" "$INSTDIR\uninst.exe" -SectionEnd - -Section -Post - WriteUninstaller "$INSTDIR\uninst.exe" - WriteRegStr HKLM "${PRODUCT_DIR_REGKEY}" "" "$INSTDIR\inspircd.exe" - WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "DisplayName" "$(^Name)" - WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "UninstallString" "$INSTDIR\uninst.exe" - WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "DisplayIcon" "$INSTDIR\inspircd.exe" - WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "DisplayVersion" "${PRODUCT_VERSION}" - WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "URLInfoAbout" "${PRODUCT_WEB_SITE}" - WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "Publisher" "${PRODUCT_PUBLISHER}" - MessageBox MB_ICONINFORMATION|MB_OK "InspIRCd was successfully installed. Remember to edit your configuration file in $INSTDIR\conf!" -SectionEnd - -; Section descriptions -!insertmacro MUI_FUNCTION_DESCRIPTION_BEGIN - !insertmacro MUI_DESCRIPTION_TEXT ${SEC01} "Actual executable" - !insertmacro MUI_DESCRIPTION_TEXT ${SEC03} "Command modules" - !insertmacro MUI_DESCRIPTION_TEXT ${SEC02} "Default configuration files" - !insertmacro MUI_DESCRIPTION_TEXT ${SEC04} "Optional non-SSL modules" -!insertmacro MUI_FUNCTION_DESCRIPTION_END - - -Function un.onUninstSuccess - HideWindow - MessageBox MB_ICONINFORMATION|MB_OK "$(^Name) was successfully removed from your computer." -FunctionEnd - -Function .onInit - SectionSetFlags ${SEC01} 17 - SectionSetFlags ${SEC03} 17 - StrCpy $INSTDIR "$PROGRAMFILES\InspIRCd" -FunctionEnd - -Function un.onInit - MessageBox MB_ICONQUESTION|MB_YESNO|MB_DEFBUTTON2 "Are you sure you want to completely remove $(^Name) and all of its components?" IDYES +2 - Abort -FunctionEnd - -Section Uninstall - DetailPrint "Uninstalling InspIRCd service..." - nsExec::Exec /TIMEOUT=30000 '"$INSTDIR\inspircd.exe" --removeservice' - Delete "$INSTDIR\${PRODUCT_NAME}.url" - Delete "$INSTDIR\uninst.exe" - Delete "$INSTDIR\modules\*.so" - Delete "$INSTDIR\conf\*.example" - Delete "$INSTDIR\conf\aliases\*.example" - Delete "$INSTDIR\conf\modules\*.example" - Delete "$INSTDIR\conf\modules\modules.conf.charybdis" - Delete "$INSTDIR\conf\modules\modules.conf.unreal" - Delete "$INSTDIR\*.log" - Delete "$INSTDIR\logs\*" - Delete "$INSTDIR\data\*" - Delete "$INSTDIR\*.dll" - Delete "$INSTDIR\make_gnutls_cert.bat" - Delete "$INSTDIR\inspircd.exe" - Delete "$SMPROGRAMS\InspIRCd\Uninstall.lnk" - Delete "$SMPROGRAMS\InspIRCd\InspIRCd Website.lnk" - Delete "$SMPROGRAMS\InspIRCd\InspIRCd.lnk" - - RMDir "$SMPROGRAMS\InspIRCd" - RMDir "$INSTDIR\modules" - RMDir "$INSTDIR\conf\aliases" - RMDir "$INSTDIR\conf\modules" - RMDir "$INSTDIR\conf" - RMDir "$INSTDIR\logs" - RMDir "$INSTDIR\data" - RMDir "$INSTDIR" - - DeleteRegKey ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" - DeleteRegKey HKLM "${PRODUCT_DIR_REGKEY}" - SetAutoClose true -SectionEnd diff --git a/win/inspircd.rc.cmake b/win/inspircd.rc.cmake new file mode 100644 index 000000000..cd0adc580 --- /dev/null +++ b/win/inspircd.rc.cmake @@ -0,0 +1,35 @@ +101 ICON "inspircd.ico"
+
+1 VERSIONINFO
+ FILEVERSION @MAJOR_VERSION@,@MINOR_VERSION@,@PATCH_VERSION@
+ PRODUCTVERSION @MAJOR_VERSION@,@MINOR_VERSION@,@PATCH_VERSION@
+ FILEFLAGSMASK 0x3fL
+#ifdef _DEBUG
+ FILEFLAGS 0x1L
+#else
+ FILEFLAGS 0x0L
+#endif
+ FILEOS 0x40004L
+ FILETYPE 0x1L
+ FILESUBTYPE 0x0L
+BEGIN
+ BLOCK "StringFileInfo"
+ BEGIN
+ BLOCK "040904b0"
+ BEGIN
+ VALUE "Comments", "InspIRCd @MAJOR_VERSION@.@MINOR_VERSION@ IRC Daemon"
+ VALUE "CompanyName", "InspIRCd Development Team"
+ VALUE "FileDescription", "InspIRCd"
+ VALUE "FileVersion", "@FULL_VERSION@"
+ VALUE "InternalName", "InspIRCd"
+ VALUE "LegalCopyright", "Copyright (c) 2013 InspIRCd Development Team"
+ VALUE "OriginalFilename", "inspircd.exe"
+ VALUE "ProductName", "InspIRCd - The Inspire IRC Daemon"
+ VALUE "ProductVersion", "@FULL_VERSION@"
+ END
+ END
+ BLOCK "VarFileInfo"
+ BEGIN
+ VALUE "Translation", 0x809, 1200
+ END
+END
diff --git a/win/inspircd.vcxproj b/win/inspircd.vcxproj deleted file mode 100644 index 3087a966d..000000000 --- a/win/inspircd.vcxproj +++ /dev/null @@ -1,392 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> - <ItemGroup Label="ProjectConfigurations"> - <ProjectConfiguration Include="Debug|Win32"> - <Configuration>Debug</Configuration> - <Platform>Win32</Platform> - </ProjectConfiguration> - <ProjectConfiguration Include="Debug|Win32"> - <Configuration>Debug</Configuration> - <Platform>Win32</Platform> - </ProjectConfiguration> - <ProjectConfiguration Include="Debug|x64"> - <Configuration>Debug</Configuration> - <Platform>x64</Platform> - </ProjectConfiguration> - <ProjectConfiguration Include="Debug|x64"> - <Configuration>Debug</Configuration> - <Platform>x64</Platform> - </ProjectConfiguration> - <ProjectConfiguration Include="Release|Win32"> - <Configuration>Release</Configuration> - <Platform>Win32</Platform> - </ProjectConfiguration> - <ProjectConfiguration Include="Release|Win32"> - <Configuration>Release</Configuration> - <Platform>Win32</Platform> - </ProjectConfiguration> - <ProjectConfiguration Include="Release|x64"> - <Configuration>Release</Configuration> - <Platform>x64</Platform> - </ProjectConfiguration> - <ProjectConfiguration Include="Release|x64"> - <Configuration>Release</Configuration> - <Platform>x64</Platform> - </ProjectConfiguration> - </ItemGroup> - <PropertyGroup Label="Globals"> - <ProjectName>inspircd</ProjectName> - <ProjectGUID>{FE82A6FC-41C7-4CB1-AA46-6DBCB6C682C8}</ProjectGUID> - <RootNamespace>inspircd</RootNamespace> - <Keyword>Win32Proj</Keyword> - </PropertyGroup> - <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" /> - <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration"> - <ConfigurationType>Application</ConfigurationType> - <CharacterSet>MultiByte</CharacterSet> - </PropertyGroup> - <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration"> - <ConfigurationType>Application</ConfigurationType> - <CharacterSet>MultiByte</CharacterSet> - </PropertyGroup> - <PropertyGroup Label="Configuration" Condition="'$(Configuration)|$(Platform)'=='Debug|X64'"> - <ConfigurationType>Application</ConfigurationType> - <CharacterSet>MultiByte</CharacterSet> - </PropertyGroup> - <PropertyGroup Label="Configuration" Condition="'$(Configuration)|$(Platform)'=='Release|X64'"> - <ConfigurationType>Application</ConfigurationType> - <CharacterSet>MultiByte</CharacterSet> - </PropertyGroup> - <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" /> - <ImportGroup Label="ExtensionSettings"> - </ImportGroup> - <ImportGroup Label="PropertySheets"> - <Import Project="$(LocalAppData)\Microsoft\VisualStudio\10.0\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(LocalAppData)\Microsoft\VisualStudio\10.0\Microsoft.Cpp.$(Platform).user.props')" /> - </ImportGroup> - <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'"> - <Import Project="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.props" Condition="exists('$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.props')" /> - </ImportGroup> - <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'"> - <Import Project="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.props" Condition="exists('$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.props')" /> - </ImportGroup> - <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|X64'"> - <Import Project="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.props" Condition="exists('$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.props')" /> - </ImportGroup> - <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|X64'"> - <Import Project="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.props" Condition="exists('$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.props')" /> - </ImportGroup> - <PropertyGroup Label="UserMacros" /> - <PropertyGroup> - <_ProjectFileVersion>10.0.20506.1</_ProjectFileVersion> - <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">..\bin\debug\</OutDir> - <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Debug\</IntDir> - <TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">inspircd</TargetName> - <TargetExt Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.exe</TargetExt> - <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">false</LinkIncremental> - <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">..\bin\release\</OutDir> - <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Release\</IntDir> - <TargetName Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">inspircd</TargetName> - <TargetExt Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.exe</TargetExt> - <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental> - <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|X64'">..\bin\debug_x64\</OutDir> - <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|X64'">x64Debug\</IntDir> - <TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|X64'">inspircd</TargetName> - <TargetExt Condition="'$(Configuration)|$(Platform)'=='Debug|X64'">.exe</TargetExt> - <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|X64'">false</LinkIncremental> - <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|X64'">..\bin\release_x64\</OutDir> - <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|X64'">x64Release\</IntDir> - <TargetName Condition="'$(Configuration)|$(Platform)'=='Release|X64'">inspircd</TargetName> - <TargetExt Condition="'$(Configuration)|$(Platform)'=='Release|X64'">.exe</TargetExt> - <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|X64'">false</LinkIncremental> - </PropertyGroup> - <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'"> - <PreBuildEvent> - <Message>running configure...</Message> - <Command>"$(ProjectDir)\configure.exe"</Command> - </PreBuildEvent> - <ClCompile> - <Optimization>Disabled</Optimization> - <AdditionalIncludeDirectories>../include;../../include;../include/modes;../include/commands;../../include/modes;../../include/commands;../win;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> - <PreprocessorDefinitions>_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions> - <MinimalRebuild>false</MinimalRebuild> - <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks> - <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary> - <PrecompiledHeader> - </PrecompiledHeader> - <WarningLevel>Level4</WarningLevel> - <DebugInformationFormat>ProgramDatabase</DebugInformationFormat> - <DisableSpecificWarnings>%(DisableSpecificWarnings)</DisableSpecificWarnings> - <MultiProcessorCompilation>true</MultiProcessorCompilation> - </ClCompile> - <Link> - <AdditionalDependencies>%(AdditionalDependencies)</AdditionalDependencies> - <ShowProgress>LinkVerbose</ShowProgress> - <IgnoreSpecificDefaultLibraries>%(IgnoreSpecificDefaultLibraries)</IgnoreSpecificDefaultLibraries> - <GenerateDebugInformation>true</GenerateDebugInformation> - <ProgramDatabaseFile>$(OutDir)inspircd.pdb</ProgramDatabaseFile> - <SubSystem>Console</SubSystem> - <RandomizedBaseAddress>true</RandomizedBaseAddress> - <FixedBaseAddress>false</FixedBaseAddress> - <DataExecutionPrevention> - </DataExecutionPrevention> - <TargetMachine>MachineX86</TargetMachine> - </Link> - <PostBuildEvent> - <Command>@echo off -echo Compiling Command Modules... -cd ..\src\commands -nmake -f commands.mak -echo Compiling Modules... -cd ..\modules -nmake -f modules.mak -</Command> - </PostBuildEvent> - </ItemDefinitionGroup> - <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'"> - <PreBuildEvent> - <Message>running configure...</Message> - <Command>"$(ProjectDir)\configure.exe"</Command> - </PreBuildEvent> - <ClCompile> - <AdditionalOptions>/MP %(AdditionalOptions)</AdditionalOptions> - <Optimization>MaxSpeed</Optimization> - <WholeProgramOptimization>true</WholeProgramOptimization> - <AdditionalIncludeDirectories>../include;../../include;../include/modes;../include/commands;../../include/modes;../../include/commands;../win;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> - <PreprocessorDefinitions>NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions> - <MinimalRebuild>false</MinimalRebuild> - <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary> - <PrecompiledHeader> - </PrecompiledHeader> - <WarningLevel>Level3</WarningLevel> - <DebugInformationFormat> - </DebugInformationFormat> - <MultiProcessorCompilation>true</MultiProcessorCompilation> - </ClCompile> - <Link> - <AdditionalDependencies>%(AdditionalDependencies)</AdditionalDependencies> - <EmbedManagedResourceFile>inspircd.ico;%(EmbedManagedResourceFile)</EmbedManagedResourceFile> - <GenerateDebugInformation>true</GenerateDebugInformation> - <SubSystem>Console</SubSystem> - <OptimizeReferences>true</OptimizeReferences> - <EnableCOMDATFolding>true</EnableCOMDATFolding> - <LinkTimeCodeGeneration>UseLinkTimeCodeGeneration</LinkTimeCodeGeneration> - <RandomizedBaseAddress>true</RandomizedBaseAddress> - <DataExecutionPrevention> - </DataExecutionPrevention> - <TargetMachine>MachineX86</TargetMachine> - </Link> - <PostBuildEvent> - <Command>@echo off -echo Compiling Command Modules... -cd ..\src\commands -nmake -f commands.mak -echo Compiling Modules... -cd ..\modules -nmake -f modules.mak -</Command> - </PostBuildEvent> - </ItemDefinitionGroup> - <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|X64'"> - <PreBuildEvent> - <Message>running configure...</Message> - <Command>"$(ProjectDir)\configure.exe"</Command> - </PreBuildEvent> - <Midl> - <TargetEnvironment>X64</TargetEnvironment> - </Midl> - <ClCompile> - <Optimization>Disabled</Optimization> - <AdditionalIncludeDirectories>../include;../../include;../include/modes;../include/commands;../../include/modes;../../include/commands;../win;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> - <PreprocessorDefinitions>_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions> - <MinimalRebuild>false</MinimalRebuild> - <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks> - <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary> - <PrecompiledHeader> - </PrecompiledHeader> - <WarningLevel>Level4</WarningLevel> - <DebugInformationFormat>ProgramDatabase</DebugInformationFormat> - <MultiProcessorCompilation>true</MultiProcessorCompilation> - </ClCompile> - <Link> - <AdditionalDependencies>%(AdditionalDependencies)</AdditionalDependencies> - <ShowProgress>NotSet</ShowProgress> - <IgnoreSpecificDefaultLibraries>%(IgnoreSpecificDefaultLibraries)</IgnoreSpecificDefaultLibraries> - <GenerateDebugInformation>true</GenerateDebugInformation> - <ProgramDatabaseFile>$(OutDir)inspircd.pdb</ProgramDatabaseFile> - <SubSystem>Console</SubSystem> - <RandomizedBaseAddress>true</RandomizedBaseAddress> - <FixedBaseAddress>false</FixedBaseAddress> - <DataExecutionPrevention> - </DataExecutionPrevention> - <TargetMachine>MachineX64</TargetMachine> - </Link> - <PostBuildEvent> - <Command>@echo off -echo Compiling Command Modules... -cd ..\src\commands -nmake -f commands.mak -echo Compiling Modules... -cd ..\modules -nmake -f modules.mak -</Command> - </PostBuildEvent> - </ItemDefinitionGroup> - <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|X64'"> - <PreBuildEvent> - <Message>running configure...</Message> - <Command>$(ProjectDir)\configure.exe - </Command> - </PreBuildEvent> - <Midl> - <TargetEnvironment>X64</TargetEnvironment> - </Midl> - <ClCompile> - <Optimization>MaxSpeed</Optimization> - <AdditionalIncludeDirectories>../include;../../include;../include/modes;../include/commands;../../include/modes;../../include/commands;../win;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> - <PreprocessorDefinitions>NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions> - <MinimalRebuild>false</MinimalRebuild> - <RuntimeLibrary>MultiThreaded</RuntimeLibrary> - <PrecompiledHeader> - </PrecompiledHeader> - <WarningLevel>Level2</WarningLevel> - <DebugInformationFormat>ProgramDatabase</DebugInformationFormat> - <MultiProcessorCompilation>true</MultiProcessorCompilation> - <WholeProgramOptimization>true</WholeProgramOptimization> - </ClCompile> - <Link> - <AdditionalDependencies>%(AdditionalDependencies)</AdditionalDependencies> - <GenerateDebugInformation>true</GenerateDebugInformation> - <EmbedManagedResourceFile>inspircd.ico;%(EmbedManagedResourceFile)</EmbedManagedResourceFile> - <SubSystem>Console</SubSystem> - <OptimizeReferences>true</OptimizeReferences> - <EnableCOMDATFolding>true</EnableCOMDATFolding> - <RandomizedBaseAddress>true</RandomizedBaseAddress> - <DataExecutionPrevention> - </DataExecutionPrevention> - <TargetMachine>MachineX64</TargetMachine> - </Link> - <PostBuildEvent> - <Command>@echo off -echo Compiling Command Modules... -cd ..\src\commands -nmake -f commands.mak -echo Compiling Modules... -cd ..\modules -nmake -f modules.mak -</Command> - </PostBuildEvent> - </ItemDefinitionGroup> - <ItemGroup> - <ClCompile Include="..\src\bancache.cpp" /> - <ClCompile Include="..\src\base.cpp" /> - <ClCompile Include="..\src\channels.cpp" /> - <ClCompile Include="..\src\cidr.cpp" /> - <ClCompile Include="..\src\commands.cpp" /> - <ClCompile Include="..\src\command_parse.cpp" /> - <ClCompile Include="..\src\configparser.cpp" /> - <ClCompile Include="..\src\configreader.cpp" /> - <ClCompile Include="..\src\cull_list.cpp" /> - <ClCompile Include="..\src\dns.cpp" /> - <ClCompile Include="..\src\dynamic.cpp" /> - <ClCompile Include="..\src\filelogger.cpp" /> - <ClCompile Include="..\src\hashcomp.cpp" /> - <ClCompile Include="..\src\helperfuncs.cpp" /> - <ClCompile Include="..\src\inspircd.cpp" /> - <ClCompile Include="..\src\inspsocket.cpp" /> - <ClCompile Include="..\src\inspstring.cpp" /> - <ClCompile Include="..\src\listensocket.cpp" /> - <ClCompile Include="..\src\logger.cpp" /> - <ClCompile Include="..\src\mode.cpp" /> - <ClCompile Include="..\src\modes\cmode_b.cpp" /> - <ClCompile Include="..\src\modes\cmode_k.cpp" /> - <ClCompile Include="..\src\modes\cmode_l.cpp" /> - <ClCompile Include="..\src\modes\cmode_o.cpp" /> - <ClCompile Include="..\src\modes\cmode_v.cpp" /> - <ClCompile Include="..\src\modes\umode_o.cpp" /> - <ClCompile Include="..\src\modes\umode_s.cpp" /> - <ClCompile Include="..\src\modmanager_dynamic.cpp" /> - <ClCompile Include="..\src\modules.cpp" /> - <ClCompile Include="..\src\server.cpp" /> - <ClCompile Include="..\src\snomasks.cpp" /> - <ClCompile Include="..\src\socket.cpp" /> - <ClCompile Include="..\src\socketengine.cpp" /> - <ClCompile Include="..\src\socketengines\socketengine_select.cpp" /> - <ClCompile Include="..\src\testsuite.cpp" /> - <ClCompile Include="..\src\threadengine.cpp" /> - <ClCompile Include="..\src\threadengines\threadengine_win32.cpp" /> - <ClCompile Include="..\src\timer.cpp" /> - <ClCompile Include="..\src\usermanager.cpp" /> - <ClCompile Include="..\src\userprocess.cpp" /> - <ClCompile Include="..\src\users.cpp" /> - <ClCompile Include="..\src\user_resolver.cpp" /> - <ClCompile Include="..\src\whois.cpp" /> - <ClCompile Include="..\src\wildcard.cpp" /> - <ClCompile Include="..\src\xline.cpp" /> - <ClCompile Include="inspircd_memory_functions.cpp" /> - <ClCompile Include="inspircd_win32wrapper.cpp" /> - <ClCompile Include="win32service.cpp" /> - </ItemGroup> - <ItemGroup> - <CustomBuild Include="..\src\modules\httpd.h"> - <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild> - </CustomBuild> - </ItemGroup> - <ItemGroup> - <ClInclude Include="..\include\bancache.h" /> - <ClInclude Include="..\include\base.h" /> - <ClInclude Include="..\include\caller.h" /> - <ClInclude Include="..\include\channels.h" /> - <ClInclude Include="..\include\command_parse.h" /> - <ClInclude Include="..\include\configreader.h" /> - <ClInclude Include="..\include\consolecolors.h" /> - <ClInclude Include="..\include\ctables.h" /> - <ClInclude Include="..\include\cull_list.h" /> - <ClInclude Include="..\include\dns.h" /> - <ClInclude Include="..\include\dynamic.h" /> - <ClInclude Include="..\include\exitcodes.h" /> - <ClInclude Include="..\include\filelogger.h" /> - <ClInclude Include="..\include\globals.h" /> - <ClInclude Include="..\include\hashcomp.h" /> - <ClInclude Include="..\include\hash_map.h" /> - <ClInclude Include="..\include\inspircd.h" /> - <ClInclude Include="..\include\inspircd_config.h" /> - <ClInclude Include="..\include\inspsocket.h" /> - <ClInclude Include="..\include\inspstring.h" /> - <ClInclude Include="..\include\logger.h" /> - <ClInclude Include="..\include\mode.h" /> - <ClInclude Include="..\include\modules.h" /> - <ClInclude Include="..\include\numerics.h" /> - <ClInclude Include="..\include\snomasks.h" /> - <ClInclude Include="..\include\socket.h" /> - <ClInclude Include="..\include\socketengine.h" /> - <ClInclude Include="..\include\socketengines\socketengine_select.h" /> - <ClInclude Include="..\include\testsuite.h" /> - <ClInclude Include="..\include\threadengine.h" /> - <ClInclude Include="..\include\threadengines\threadengine_win32.h" /> - <ClInclude Include="..\include\timer.h" /> - <ClInclude Include="..\include\typedefs.h" /> - <ClInclude Include="..\include\uid.h" /> - <ClInclude Include="..\include\usermanager.h" /> - <ClInclude Include="..\include\users.h" /> - <ClInclude Include="..\include\u_listmode.h" /> - <ClInclude Include="..\include\wildcard.h" /> - <ClInclude Include="..\include\xline.h" /> - <ClInclude Include="inspircd_win32wrapper.h" /> - <ClInclude Include="win32service.h" /> - </ItemGroup> - <ItemGroup> - <None Include="..\src\version.sh" /> - <None Include="inspircd.ico" /> - </ItemGroup> - <ItemGroup> - <ResourceCompile Include="resource.rc" /> - </ItemGroup> - <ItemGroup> - <ProjectReference Include="configure.vcxproj"> - <Project>{b922b569-727e-4eb0-827a-04e133a91de7}</Project> - </ProjectReference> - </ItemGroup> - <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" /> - <ImportGroup Label="ExtensionTargets"> - </ImportGroup> -</Project>
\ No newline at end of file diff --git a/win/inspircd_config.h b/win/inspircd_config.h new file mode 100644 index 000000000..168eeb761 --- /dev/null +++ b/win/inspircd_config.h @@ -0,0 +1,13 @@ +#ifndef INSPIRCD_CONFIG_H
+#define INSPIRCD_CONFIG_H
+
+#define CONFIG_PATH "conf"
+#define MOD_PATH "modules"
+#define DATA_PATH "data"
+#define LOG_PATH "logs"
+#define MAXBUF 514
+
+#include "inspircd_win32wrapper.h"
+#include "threadengines/threadengine_win32.h"
+
+#endif
\ No newline at end of file diff --git a/win/inspircd_memory_functions.cpp b/win/inspircd_memory_functions.cpp index 4d8444f4c..398708317 100644 --- a/win/inspircd_memory_functions.cpp +++ b/win/inspircd_memory_functions.cpp @@ -16,8 +16,7 @@ * along with this program. If not, see <http://www.gnu.org/licenses/>. */ - -#include "inspircd_win32wrapper.h" +#include <windows.h> #include <exception> #include <new> #include <new.h> @@ -50,7 +49,8 @@ void ::operator delete(void * ptr) HeapFree(GetProcessHeap(), 0, ptr); } -void * operator new[] (size_t iSize) { +void * operator new[] (size_t iSize) +{ void* ptr = HeapAlloc(GetProcessHeap(), 0, iSize); if (!ptr) throw std::bad_alloc(); diff --git a/win/m_spanningtree.vcxproj b/win/m_spanningtree.vcxproj deleted file mode 100644 index e66693367..000000000 --- a/win/m_spanningtree.vcxproj +++ /dev/null @@ -1,287 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> - <ItemGroup Label="ProjectConfigurations"> - <ProjectConfiguration Include="Debug|Win32"> - <Configuration>Debug</Configuration> - <Platform>Win32</Platform> - </ProjectConfiguration> - <ProjectConfiguration Include="Debug|Win32"> - <Configuration>Debug</Configuration> - <Platform>Win32</Platform> - </ProjectConfiguration> - <ProjectConfiguration Include="Debug|x64"> - <Configuration>Debug</Configuration> - <Platform>x64</Platform> - </ProjectConfiguration> - <ProjectConfiguration Include="Debug|x64"> - <Configuration>Debug</Configuration> - <Platform>x64</Platform> - </ProjectConfiguration> - <ProjectConfiguration Include="Release|Win32"> - <Configuration>Release</Configuration> - <Platform>Win32</Platform> - </ProjectConfiguration> - <ProjectConfiguration Include="Release|Win32"> - <Configuration>Release</Configuration> - <Platform>Win32</Platform> - </ProjectConfiguration> - <ProjectConfiguration Include="Release|x64"> - <Configuration>Release</Configuration> - <Platform>x64</Platform> - </ProjectConfiguration> - <ProjectConfiguration Include="Release|x64"> - <Configuration>Release</Configuration> - <Platform>x64</Platform> - </ProjectConfiguration> - </ItemGroup> - <PropertyGroup Label="Globals"> - <ProjectName>m_spanningtree</ProjectName> - <ProjectGUID>{1EC86B60-AB2A-4984-8A7E-0422C15601E0}</ProjectGUID> - <RootNamespace>m_spanningtree</RootNamespace> - <Keyword>Win32Proj</Keyword> - </PropertyGroup> - <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" /> - <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration"> - <ConfigurationType>DynamicLibrary</ConfigurationType> - <CharacterSet>MultiByte</CharacterSet> - </PropertyGroup> - <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration"> - <ConfigurationType>DynamicLibrary</ConfigurationType> - <CharacterSet>MultiByte</CharacterSet> - </PropertyGroup> - <PropertyGroup Label="Configuration" Condition="'$(Configuration)|$(Platform)'=='Debug|X64'"> - <ConfigurationType>DynamicLibrary</ConfigurationType> - <CharacterSet>MultiByte</CharacterSet> - </PropertyGroup> - <PropertyGroup Label="Configuration" Condition="'$(Configuration)|$(Platform)'=='Release|X64'"> - <ConfigurationType>DynamicLibrary</ConfigurationType> - <CharacterSet>MultiByte</CharacterSet> - </PropertyGroup> - <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" /> - <ImportGroup Label="ExtensionSettings"> - </ImportGroup> - <ImportGroup Label="PropertySheets"> - <Import Project="$(LocalAppData)\Microsoft\VisualStudio\10.0\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(LocalAppData)\Microsoft\VisualStudio\10.0\Microsoft.Cpp.$(Platform).user.props')" /> - </ImportGroup> - <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'"> - <Import Project="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.props" Condition="exists('$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.props')" /> - </ImportGroup> - <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|X64'"> - <Import Project="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.props" Condition="exists('$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.props')" /> - </ImportGroup> - <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'"> - <Import Project="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.props" Condition="exists('$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.props')" /> - </ImportGroup> - <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|X64'"> - <Import Project="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.props" Condition="exists('$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.props')" /> - </ImportGroup> - <PropertyGroup Label="UserMacros" /> - <PropertyGroup> - <_ProjectFileVersion>10.0.20506.1</_ProjectFileVersion> - <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">..\bin\debug\modules\</OutDir> - <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Debug_spanningtree\</IntDir> - <TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">m_spanningtree</TargetName> - <TargetExt Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.so</TargetExt> - <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">false</LinkIncremental> - <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|X64'">..\bin\debug_x64\modules\</OutDir> - <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|X64'">x64Debug_spanningtree\</IntDir> - <TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|X64'">m_spanningtree</TargetName> - <TargetExt Condition="'$(Configuration)|$(Platform)'=='Debug|X64'">.so</TargetExt> - <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|X64'">false</LinkIncremental> - <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">..\bin\release\modules\</OutDir> - <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Release\</IntDir> - <TargetName Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">m_spanningtree</TargetName> - <TargetExt Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.so</TargetExt> - <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental> - <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|X64'">..\bin\release_x64\modules\</OutDir> - <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|X64'">x64Release_spanningtree\</IntDir> - <TargetName Condition="'$(Configuration)|$(Platform)'=='Release|X64'">m_spanningtree</TargetName> - <TargetExt Condition="'$(Configuration)|$(Platform)'=='Release|X64'">.so</TargetExt> - <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|X64'">false</LinkIncremental> - </PropertyGroup> - <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'"> - <ClCompile> - <Optimization>Disabled</Optimization> - <AdditionalIncludeDirectories>..\include;..\win;..\src\modules;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> - <PreprocessorDefinitions>_DEBUG;_USRDLL;DLL_BUILD;%(PreprocessorDefinitions)</PreprocessorDefinitions> - <MinimalRebuild>false</MinimalRebuild> - <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks> - <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary> - <PrecompiledHeader> - </PrecompiledHeader> - <WarningLevel>Level4</WarningLevel> - <DebugInformationFormat>ProgramDatabase</DebugInformationFormat> - <MultiProcessorCompilation>true</MultiProcessorCompilation> - </ClCompile> - <Link> - <AdditionalDependencies>inspircd.lib;%(AdditionalDependencies)</AdditionalDependencies> - <AdditionalLibraryDirectories>..\bin\debug\;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories> - <GenerateDebugInformation>true</GenerateDebugInformation> - <ProgramDatabaseFile>$(OutDir)m_spanningtree.pdb</ProgramDatabaseFile> - <SubSystem>Windows</SubSystem> - <RandomizedBaseAddress>true</RandomizedBaseAddress> - <DataExecutionPrevention> - </DataExecutionPrevention> - <ImportLibrary>$(OutDir)m_spanningtree.lib</ImportLibrary> - <TargetMachine>MachineX86</TargetMachine> - </Link> - </ItemDefinitionGroup> - <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|X64'"> - <Midl> - <TargetEnvironment>X64</TargetEnvironment> - </Midl> - <ClCompile> - <Optimization>Disabled</Optimization> - <AdditionalIncludeDirectories>..\include;..\win;..\src\modules;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> - <PreprocessorDefinitions>_DEBUG;_USRDLL;DLL_BUILD;%(PreprocessorDefinitions)</PreprocessorDefinitions> - <MinimalRebuild>false</MinimalRebuild> - <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks> - <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary> - <PrecompiledHeader> - </PrecompiledHeader> - <WarningLevel>Level4</WarningLevel> - <DebugInformationFormat>ProgramDatabase</DebugInformationFormat> - <MultiProcessorCompilation>true</MultiProcessorCompilation> - </ClCompile> - <Link> - <AdditionalDependencies>inspircd.lib;%(AdditionalDependencies)</AdditionalDependencies> - <AdditionalLibraryDirectories>..\bin\debug_x64;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories> - <GenerateDebugInformation>true</GenerateDebugInformation> - <ProgramDatabaseFile>$(OutDir)m_spanningtree.pdb</ProgramDatabaseFile> - <SubSystem>Windows</SubSystem> - <RandomizedBaseAddress>true</RandomizedBaseAddress> - <DataExecutionPrevention> - </DataExecutionPrevention> - <ImportLibrary>$(OutDir)m_spanningtree.lib</ImportLibrary> - <TargetMachine>MachineX64</TargetMachine> - </Link> - </ItemDefinitionGroup> - <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'"> - <ClCompile> - <AdditionalOptions>/MP %(AdditionalOptions)</AdditionalOptions> - <Optimization>MaxSpeed</Optimization> - <WholeProgramOptimization>true</WholeProgramOptimization> - <AdditionalIncludeDirectories>..\include;..\win;..\src\modules;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> - <PreprocessorDefinitions>NDEBUG;_USRDLL;DLL_BUILD;%(PreprocessorDefinitions)</PreprocessorDefinitions> - <MinimalRebuild>false</MinimalRebuild> - <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary> - <PrecompiledHeader> - </PrecompiledHeader> - <WarningLevel>Level2</WarningLevel> - <DebugInformationFormat>ProgramDatabase</DebugInformationFormat> - <MultiProcessorCompilation>true</MultiProcessorCompilation> - </ClCompile> - <Link> - <AdditionalDependencies>inspircd.lib;%(AdditionalDependencies)</AdditionalDependencies> - <AdditionalLibraryDirectories>..\bin\release\;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories> - <GenerateDebugInformation>true</GenerateDebugInformation> - <SubSystem>Windows</SubSystem> - <OptimizeReferences>true</OptimizeReferences> - <EnableCOMDATFolding>true</EnableCOMDATFolding> - <LinkTimeCodeGeneration>UseLinkTimeCodeGeneration</LinkTimeCodeGeneration> - <RandomizedBaseAddress>true</RandomizedBaseAddress> - <DataExecutionPrevention> - </DataExecutionPrevention> - <ImportLibrary>$(OutDir)m_spanningtree.lib</ImportLibrary> - <TargetMachine>MachineX86</TargetMachine> - </Link> - </ItemDefinitionGroup> - <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|X64'"> - <Midl> - <TargetEnvironment>X64</TargetEnvironment> - </Midl> - <ClCompile> - <Optimization>MaxSpeed</Optimization> - <AdditionalIncludeDirectories>..\include;..\win;..\src\modules;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> - <PreprocessorDefinitions>NDEBUG;_USRDLL;DLL_BUILD;%(PreprocessorDefinitions)</PreprocessorDefinitions> - <MinimalRebuild>false</MinimalRebuild> - <RuntimeLibrary>MultiThreaded</RuntimeLibrary> - <PrecompiledHeader> - </PrecompiledHeader> - <WarningLevel>Level2</WarningLevel> - <DebugInformationFormat>ProgramDatabase</DebugInformationFormat> - <MultiProcessorCompilation>true</MultiProcessorCompilation> - <WholeProgramOptimization>true</WholeProgramOptimization> - </ClCompile> - <Link> - <AdditionalDependencies>inspircd.lib;%(AdditionalDependencies)</AdditionalDependencies> - <AdditionalLibraryDirectories>..\bin\release_x64\;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories> - <GenerateDebugInformation>true</GenerateDebugInformation> - <SubSystem>Windows</SubSystem> - <OptimizeReferences>true</OptimizeReferences> - <EnableCOMDATFolding>true</EnableCOMDATFolding> - <RandomizedBaseAddress>true</RandomizedBaseAddress> - <DataExecutionPrevention> - </DataExecutionPrevention> - <ImportLibrary>$(OutDir)m_spanningtree.lib</ImportLibrary> - <TargetMachine>MachineX64</TargetMachine> - </Link> - </ItemDefinitionGroup> - <ItemGroup> - <ClCompile Include="..\src\modules\m_spanningtree\addline.cpp" /> - <ClCompile Include="..\src\modules\m_spanningtree\away.cpp" /> - <ClCompile Include="..\src\modules\m_spanningtree\cachetimer.cpp" /> - <ClCompile Include="..\src\modules\m_spanningtree\capab.cpp" /> - <ClCompile Include="..\src\modules\m_spanningtree\compat.cpp" /> - <ClCompile Include="..\src\modules\m_spanningtree\delline.cpp" /> - <ClCompile Include="..\src\modules\m_spanningtree\encap.cpp" /> - <ClCompile Include="..\src\modules\m_spanningtree\fjoin.cpp" /> - <ClCompile Include="..\src\modules\m_spanningtree\fmode.cpp" /> - <ClCompile Include="..\src\modules\m_spanningtree\ftopic.cpp" /> - <ClCompile Include="..\src\modules\m_spanningtree\hmac.cpp" /> - <ClCompile Include="..\src\modules\m_spanningtree\idle.cpp" /> - <ClCompile Include="..\src\modules\m_spanningtree\main.cpp" /> - <ClCompile Include="..\src\modules\m_spanningtree\metadata.cpp" /> - <ClCompile Include="..\src\modules\m_spanningtree\netburst.cpp" /> - <ClCompile Include="..\src\modules\m_spanningtree\nickcollide.cpp" /> - <ClCompile Include="..\src\modules\m_spanningtree\operquit.cpp" /> - <ClCompile Include="..\src\modules\m_spanningtree\opertype.cpp" /> - <ClCompile Include="..\src\modules\m_spanningtree\override_map.cpp" /> - <ClCompile Include="..\src\modules\m_spanningtree\override_squit.cpp" /> - <ClCompile Include="..\src\modules\m_spanningtree\override_stats.cpp" /> - <ClCompile Include="..\src\modules\m_spanningtree\override_whois.cpp" /> - <ClCompile Include="..\src\modules\m_spanningtree\ping.cpp" /> - <ClCompile Include="..\src\modules\m_spanningtree\pong.cpp" /> - <ClCompile Include="..\src\modules\m_spanningtree\postcommand.cpp" /> - <ClCompile Include="..\src\modules\m_spanningtree\precommand.cpp" /> - <ClCompile Include="..\src\modules\m_spanningtree\protocolinterface.cpp" /> - <ClCompile Include="..\src\modules\m_spanningtree\push.cpp" /> - <ClCompile Include="..\src\modules\m_spanningtree\rconnect.cpp" /> - <ClCompile Include="..\src\modules\m_spanningtree\resolvers.cpp" /> - <ClCompile Include="..\src\modules\m_spanningtree\rsquit.cpp" /> - <ClCompile Include="..\src\modules\m_spanningtree\save.cpp" /> - <ClCompile Include="..\src\modules\m_spanningtree\server.cpp"> - <ObjectFileName Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(IntDir)servers_spanningtree.obj</ObjectFileName> - </ClCompile> - <ClCompile Include="..\src\modules\m_spanningtree\svsjoin.cpp" /> - <ClCompile Include="..\src\modules\m_spanningtree\svsnick.cpp" /> - <ClCompile Include="..\src\modules\m_spanningtree\svspart.cpp" /> - <ClCompile Include="..\src\modules\m_spanningtree\treeserver.cpp" /> - <ClCompile Include="..\src\modules\m_spanningtree\treesocket1.cpp" /> - <ClCompile Include="..\src\modules\m_spanningtree\treesocket2.cpp" /> - <ClCompile Include="..\src\modules\m_spanningtree\uid.cpp" /> - <ClCompile Include="..\src\modules\m_spanningtree\utils.cpp" /> - <ClCompile Include="..\src\modules\m_spanningtree\version.cpp" /> - <ClCompile Include="inspircd_memory_functions.cpp" /> - </ItemGroup> - <ItemGroup> - <ClInclude Include="..\src\modules\m_spanningtree\cachetimer.h" /> - <ClInclude Include="..\src\modules\m_spanningtree\link.h" /> - <ClInclude Include="..\src\modules\m_spanningtree\main.h" /> - <ClInclude Include="..\src\modules\m_spanningtree\protocolinterface.h" /> - <ClInclude Include="..\src\modules\m_spanningtree\rconnect.h" /> - <ClInclude Include="..\src\modules\m_spanningtree\resolvers.h" /> - <ClInclude Include="..\src\modules\m_spanningtree\rsquit.h" /> - <ClInclude Include="..\src\modules\m_spanningtree\treeserver.h" /> - <ClInclude Include="..\src\modules\m_spanningtree\treesocket.h" /> - <ClInclude Include="..\src\modules\m_spanningtree\utils.h" /> - </ItemGroup> - <ItemGroup> - <ProjectReference Include="inspircd.vcxproj"> - <Project>{fe82a6fc-41c7-4cb1-aa46-6dbcb6c682c8}</Project> - </ProjectReference> - </ItemGroup> - <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" /> - <ImportGroup Label="ExtensionTargets"> - </ImportGroup> -</Project>
\ No newline at end of file diff --git a/win/modules/CMakeLists.txt b/win/modules/CMakeLists.txt new file mode 100644 index 000000000..70ab6d106 --- /dev/null +++ b/win/modules/CMakeLists.txt @@ -0,0 +1,30 @@ +file(GLOB INSPIRCD_MODULES RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} "${INSPIRCD_BASE}/src/commands/*.cpp" "${INSPIRCD_BASE}/src/modules/*.cpp")
+list(SORT INSPIRCD_MODULES)
+
+add_definitions("-DDLL_BUILD")
+
+foreach(MODULE_NAME ${INSPIRCD_MODULES})
+ string(REGEX REPLACE "^.*[/\\](.*).cpp$" "\\1.so" SO_NAME ${MODULE_NAME})
+ add_library(${SO_NAME} MODULE ${MODULE_NAME})
+ set_target_properties(${SO_NAME} PROPERTIES PREFIX "" SUFFIX "")
+ target_link_libraries(${SO_NAME} inspircd)
+ add_dependencies(${SO_NAME} inspircd)
+ if(MSVC)
+ target_link_libraries(${SO_NAME} win32_memory)
+ add_dependencies(${SO_NAME} win32_memory)
+ endif(MSVC)
+ install(TARGETS ${SO_NAME} DESTINATION modules)
+endforeach(MODULE_NAME ${INSPIRCD_MODULES})
+
+file(GLOB INSPIRCD_MODULES_SPANNINGTREE RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} "${INSPIRCD_BASE}/src/modules/m_spanningtree/*.cpp")
+list(SORT INSPIRCD_MODULES_SPANNINGTREE)
+
+add_library(m_spanningtree.so MODULE ${INSPIRCD_MODULES_SPANNINGTREE})
+set_target_properties(m_spanningtree.so PROPERTIES PREFIX "" SUFFIX "")
+target_link_libraries(m_spanningtree.so inspircd)
+add_dependencies(m_spanningtree.so inspircd)
+if(MSVC)
+ target_link_libraries(m_spanningtree.so win32_memory)
+ add_dependencies(m_spanningtree.so win32_memory)
+endif(MSVC)
+install(TARGETS m_spanningtree.so DESTINATION modules)
\ No newline at end of file diff --git a/win/resource.rc b/win/resource.rc deleted file mode 100644 index db2ae045e..000000000 --- a/win/resource.rc +++ /dev/null @@ -1,38 +0,0 @@ -101 ICON "inspircd.ico"
-
-1 VERSIONINFO
- FILEVERSION 2,0,0,0
- PRODUCTVERSION 2,0,0,0
- FILEFLAGSMASK 0x3fL
-#ifdef _DEBUG
- FILEFLAGS 0x1L
-#else
- FILEFLAGS 0x0L
-#endif
- FILEOS 0x40004L
- FILETYPE 0x1L
- FILESUBTYPE 0x0L
-BEGIN
- BLOCK "StringFileInfo"
- BEGIN
- BLOCK "040904b0"
- BEGIN
- VALUE "Comments", "InspIRCd 2.0 IRC Daemon\0"
- VALUE "CompanyName", "InspIRCd Development Team\0"
- VALUE "FileDescription", "InspIRCd\0"
- VALUE "FileVersion", "2, 0, 0, 0\0"
- VALUE "InternalName", "InspIRCd\0"
- VALUE "LegalCopyright", "Copyright (c) 2012 InspIRCd Development Team\0"
- VALUE "LegalTrademarks", "\0"
- VALUE "OriginalFilename", "inspircd.exe\0"
- VALUE "PrivateBuild", "\0"
- VALUE "ProductName", "InspIRCd - The Inspire IRC Daemon\0"
- VALUE "ProductVersion", "2, 0, 0, 0\0"
- VALUE "SpecialBuild", "\0"
- END
- END
- BLOCK "VarFileInfo"
- BEGIN
- VALUE "Translation", 0x809, 1200
- END
-END
diff --git a/win/vs2010.sln b/win/vs2010.sln deleted file mode 100644 index 56b0a4599..000000000 --- a/win/vs2010.sln +++ /dev/null @@ -1,51 +0,0 @@ -Microsoft Visual Studio Solution File, Format Version 11.00
-# Visual Studio 10
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "inspircd", "inspircd.vcxproj", "{FE82A6FC-41C7-4CB1-AA46-6DBCB6C682C8}"
- ProjectSection(ProjectDependencies) = postProject
- {B922B569-727E-4EB0-827A-04E133A91DE7} = {B922B569-727E-4EB0-827A-04E133A91DE7}
- EndProjectSection
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "configure", "configure.vcxproj", "{B922B569-727E-4EB0-827A-04E133A91DE7}"
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "m_spanningtree", "m_spanningtree.vcxproj", "{1EC86B60-AB2A-4984-8A7E-0422C15601E0}"
- ProjectSection(ProjectDependencies) = postProject
- {FE82A6FC-41C7-4CB1-AA46-6DBCB6C682C8} = {FE82A6FC-41C7-4CB1-AA46-6DBCB6C682C8}
- EndProjectSection
-EndProject
-Global
- GlobalSection(SolutionConfigurationPlatforms) = preSolution
- Debug|Win32 = Debug|Win32
- Debug|x64 = Debug|x64
- Release|Win32 = Release|Win32
- Release|x64 = Release|x64
- EndGlobalSection
- GlobalSection(ProjectConfigurationPlatforms) = postSolution
- {FE82A6FC-41C7-4CB1-AA46-6DBCB6C682C8}.Debug|Win32.ActiveCfg = Debug|Win32
- {FE82A6FC-41C7-4CB1-AA46-6DBCB6C682C8}.Debug|Win32.Build.0 = Debug|Win32
- {FE82A6FC-41C7-4CB1-AA46-6DBCB6C682C8}.Debug|x64.ActiveCfg = Debug|X64
- {FE82A6FC-41C7-4CB1-AA46-6DBCB6C682C8}.Debug|x64.Build.0 = Debug|X64
- {FE82A6FC-41C7-4CB1-AA46-6DBCB6C682C8}.Release|Win32.ActiveCfg = Release|Win32
- {FE82A6FC-41C7-4CB1-AA46-6DBCB6C682C8}.Release|Win32.Build.0 = Release|Win32
- {FE82A6FC-41C7-4CB1-AA46-6DBCB6C682C8}.Release|x64.ActiveCfg = Release|X64
- {FE82A6FC-41C7-4CB1-AA46-6DBCB6C682C8}.Release|x64.Build.0 = Release|X64
- {B922B569-727E-4EB0-827A-04E133A91DE7}.Debug|Win32.ActiveCfg = Debug|Win32
- {B922B569-727E-4EB0-827A-04E133A91DE7}.Debug|Win32.Build.0 = Debug|Win32
- {B922B569-727E-4EB0-827A-04E133A91DE7}.Debug|x64.ActiveCfg = Debug|X64
- {B922B569-727E-4EB0-827A-04E133A91DE7}.Debug|x64.Build.0 = Debug|X64
- {B922B569-727E-4EB0-827A-04E133A91DE7}.Release|Win32.ActiveCfg = Release|Win32
- {B922B569-727E-4EB0-827A-04E133A91DE7}.Release|Win32.Build.0 = Release|Win32
- {B922B569-727E-4EB0-827A-04E133A91DE7}.Release|x64.ActiveCfg = Release|X64
- {B922B569-727E-4EB0-827A-04E133A91DE7}.Release|x64.Build.0 = Release|X64
- {1EC86B60-AB2A-4984-8A7E-0422C15601E0}.Debug|Win32.ActiveCfg = Debug|Win32
- {1EC86B60-AB2A-4984-8A7E-0422C15601E0}.Debug|Win32.Build.0 = Debug|Win32
- {1EC86B60-AB2A-4984-8A7E-0422C15601E0}.Debug|x64.ActiveCfg = Debug|X64
- {1EC86B60-AB2A-4984-8A7E-0422C15601E0}.Debug|x64.Build.0 = Debug|X64
- {1EC86B60-AB2A-4984-8A7E-0422C15601E0}.Release|Win32.ActiveCfg = Release|Win32
- {1EC86B60-AB2A-4984-8A7E-0422C15601E0}.Release|Win32.Build.0 = Release|Win32
- {1EC86B60-AB2A-4984-8A7E-0422C15601E0}.Release|x64.ActiveCfg = Release|X64
- {1EC86B60-AB2A-4984-8A7E-0422C15601E0}.Release|x64.Build.0 = Release|X64
- EndGlobalSection
- GlobalSection(SolutionProperties) = preSolution
- HideSolutionNode = FALSE
- EndGlobalSection
-EndGlobal
|