From 067ff9828d0ac118214d3505ebffa84cd7936e35 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?U-WIN-U2045GN0RNQ=5CV=C3=ADtor=20Santos=20Costa?= Date: Sat, 22 Oct 2011 00:19:48 +0100 Subject: [PATCH] windows Makefile. --- LGPL/swi_console/Makefile.in | 6 +- Makefile.in | 24 +-- misc/yap.nsi | 9 +- misc/yap64.nsi | 273 +++++++++++++++++++++++++++++++++++ 4 files changed, 298 insertions(+), 14 deletions(-) create mode 100755 misc/yap64.nsi diff --git a/LGPL/swi_console/Makefile.in b/LGPL/swi_console/Makefile.in index 4f39353db..14b82f763 100644 --- a/LGPL/swi_console/Makefile.in +++ b/LGPL/swi_console/Makefile.in @@ -39,10 +39,10 @@ OBJECTS= complete.o console.o edit.o history.o menu.o LIBS=-lgdi32 -lcomdlg32 -all: plterm.dll +all: ../../plterm.dll -plterm.dll: libplterm.a - $(CC) $(CFLAGS) -shared -o plterm.dll \ +../../plterm.dll: libplterm.a + $(CC) $(CFLAGS) -shared -o ../../plterm.dll \ -Wl,--export-all-symbols \ -Wl,--enable-auto-import \ -Wl,--whole-archive libplterm.a \ diff --git a/Makefile.in b/Makefile.in index 0f4bffb6e..61e5c1661 100644 --- a/Makefile.in +++ b/Makefile.in @@ -402,7 +402,7 @@ PLCONS_OBJECTS = \ pl-ntconsole.o \ pl-ntmain.o -all: parms.h startup.yss +all: parms.h startup.yss @ENABLE_WINCONSOLE@ pl-yap@EXEC_SUFFIX@ Makefile: $(srcdir)/Makefile.in @@ -718,9 +718,11 @@ yap@EXEC_SUFFIX@: $(HEADERS) yap.o @YAPLIB@ plyap: pl-yap@EXEC_SUFFIX@ -pl-yap@EXEC_SUFFIX@: $(PLCONS_OBJECTS) $(HEADERS) @YAPLIB@ LGPL/swi_console/plterm.dll +pl-yap: pl-yap@EXEC_SUFFIX@ + +pl-yap@EXEC_SUFFIX@: $(PLCONS_OBJECTS) $(HEADERS) @YAPLIB@ (cd LGPL/swi_console; $(MAKE)) - $(MPI_CC) -municode -DUNICODE -D_UNICODE $(EXECUTABLE_CFLAGS) $(LDFLAGS) -Wl,-subsystem,windows -o pl-yap $(PLCONS_OBJECTS) LGPL/swi_console/plterm.dll @YAPLIB@ $(LIBS) @MPI_LIBS@ + $(MPI_CC) -municode -DUNICODE -D_UNICODE $(EXECUTABLE_CFLAGS) $(LDFLAGS) -Wl,-subsystem,windows -o pl-yap $(PLCONS_OBJECTS) plterm.dll @YAPLIB@ $(LIBS) @MPI_LIBS@ libYap.a: $(LIB_OBJECTS) -rm -f libYap.a @@ -730,7 +732,7 @@ libYap.a: $(LIB_OBJECTS) @DYNYAPLIB@: $(LIB_OBJECTS) @YAPLIB_LD@ -o @YAPLIB@ $(LIB_OBJECTS) $(LIBS) $(LDFLAGS) $(SONAMEFLAG) -install: install_bin install_data +install: install_bin install_data @ENABLE_WINCONSOLE@ pl-yap@EXEC_SUFFIX@ install_bin: @INSTALL_COMMAND@ @@ -788,6 +790,8 @@ install_win32: startup.yss mkdir -p $(DESTDIR)$(INCLUDEDIR) $(INSTALL_PROGRAM) -m 755 yap.exe $(DESTDIR)$(BINDIR)/yap.exe $(INSTALL_PROGRAM) -m 755 yap.dll $(DESTDIR)$(BINDIR)/yap.dll + @ENABLE_WINCONSOLE@ $(INSTALL_PROGRAM) -m 755 pl-yap.exe $(DESTDIR)$(BINDIR)/pl-yap.exe + @ENABLE_WINCONSOLE@ $(INSTALL_PROGRAM) -m 755 plterm.dll $(DESTDIR)$(BINDIR)/plterm.dll $(INSTALL_PROGRAM) -m 755 @YAPLIB@ $(DESTDIR)$(YAPLIBDIR)/@YAPLIB@ $(INSTALL_PROGRAM) -m 755 startup.yss $(DESTDIR)$(YAPLIBDIR)/startup.yss mkdir -p $(DESTDIR)$(SHAREDIR)/Yap @@ -906,12 +910,12 @@ libWYap.a: yap.dll --dllname yap.dll \ --output-lib libWYap.a -yap.dll: libYap.a - $(CC) $(CFLAGS) -shared -o yap.dll \ - -Wl,--export-all-symbols \ - -Wl,--enable-auto-import \ - -Wl,--whole-archive libYap.a \ - -Wl,--no-whole-archive $(LIBS) $(LDFLAGS) +# yap.dll: libYap.a +# $(CC) $(CFLAGS) -shared -o yap.dll \ +# -Wl,--export-all-symbols \ +# -Wl,--enable-auto-import \ +# -Wl,--whole-archive libYap.a \ +# -Wl,--no-whole-archive $(LIBS) $(LDFLAGS) install_info: $(MAKE) info; \ diff --git a/misc/yap.nsi b/misc/yap.nsi index 13c61aef6..7ef34eca5 100644 --- a/misc/yap.nsi +++ b/misc/yap.nsi @@ -50,6 +50,8 @@ Section "Base system (required)" SetOutPath $INSTDIR\bin File c:\Yap\bin\yap.exe File c:\Yap\bin\yap.dll + File c:\Yap\bin\pl-yap.exe + File c:\Yap\bin\plterm.dll SetOutPath $INSTDIR\bin ; SYSTEM STUFF @@ -89,9 +91,14 @@ Section "Start Menu shortcuts" CreateDirectory "$SMPROGRAMS\${GRP}" CreateShortCut "$SMPROGRAMS\${GRP}\Prolog.lnk" \ "$INSTDIR\bin\yap.exe" \ - "--win_app" \ + "" \ "$INSTDIR\bin\yap.exe" \ 0 + CreateShortCut "$SMPROGRAMS\${GRP}\PLYap.lnk" \ + "$INSTDIR\bin\pl-yap.exe" \ + "" \ + "$INSTDIR\bin\pl-yap.exe" \ + 0 SetOutPath $INSTDIR CreateShortCut "$SMPROGRAMS\${GRP}\Readme.lnk" \ "$INSTDIR\doc\Yap\README.TXT" "" \ diff --git a/misc/yap64.nsi b/misc/yap64.nsi new file mode 100755 index 000000000..6a74dc639 --- /dev/null +++ b/misc/yap64.nsi @@ -0,0 +1,273 @@ +; YAP install-script (from SWI-Prolog) + +!define TEMP1 $R0 ; Temp variable +!define EXT $3 ; Filename extension for Prolog sources +!define CWD $4 ; Working directory for startmenu shortcut +!define GRP $5 ; Startmenu group +!define SHCTX $6 ; Shell context (current/all) +!define ARCH $7 ; Architecture (x86, ia64 or amd64) +!define REGKEY SOFTWARE\YAP\Prolog64 + +RequestExecutionLevel admin +SetCompressor bzip2 +MiscButtonText "" "abort" "finished" + +; Preload files that are needed by the installer itself +ReserveFile "${NSISDIR}\Plugins\UserInfo.dll" +ReserveFile "${NSISDIR}\Plugins\InstallOptions.dll" +ReserveFile "options.ini" + + +InstallDir $PROGRAMFILES64\Yap64 +InstallDirRegKey HKLM ${REGKEY} "home" +ComponentText "This will install YAP64 on your computer." +DirText "This program will install YAP64 on your computer.\ + Choose a directory" + +LicenseData c:\Yap64\share\doc\Yap\Artistic +LicenseText "YAP64 is governed by the Artistic License,\ + but includes code under the GPL and LGPL." + +InstType "Typical (all except debug symbols)" # 1 +InstType "Minimal (no graphics)" # 2 +InstType "Full" # 3 + +Page license +Page directory +Page custom SetCustom "" ": Installation options" +Page instfiles + +Section "Base system (required)" + SectionIn RO # do not allow to delete this + ; make sure we use 64 bits registry + SetRegView 64 + + Delete $INSTDIR\bin\*.pdb + + SetOutPath $INSTDIR\bin + File c:\Yap64\bin\yap.exe + File c:\Yap64\bin\yap.dll + File c:\Yap64\bin\pl-yap.exe + File c:\Yap64\bin\plterm.dll + + SetOutPath $INSTDIR\bin +; SYSTEM STUFF + File c:\Yap64\lib\Yap\*.dll + + SetOutPath $INSTDIR\lib + + SetOutPath $INSTDIR\lib +; SYSTEM STUFF + File c:\Yap64\lib\Yap\startup.yss + + SetOutPath $INSTDIR\share +; SYSTEM STUFF + File /r c:\Yap64\share\Yap\* + + SetOutPath $INSTDIR\doc\Yap + File c:\Yap64\share\doc\Yap\yap.html + File c:\Yap64\share\doc\Yap\yap.pdf + File c:\Yap64\share\doc\Yap\Artistic + File c:\Yap64\share\doc\Yap\README.TXT + File c:\Yap64\share\doc\Yap\COPYING.TXT + + WriteRegStr HKLM ${REGKEY} "home" "$INSTDIR" + WriteRegStr HKLM ${REGKEY} "startup" "$INSTDIR\lib\startup.yss" + WriteRegStr HKLM ${REGKEY} "library" "$INSTDIR\share" + + ; Write uninstaller + WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\YAP64" "DisplayName" "YAP64 (remove only)" + WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\YAP64" "UninstallString" '"$INSTDIR\uninstall.exe"' + WriteUninstaller "uninstall.exe" +SectionEnd + + +Section "Start Menu shortcuts" + SectionIn 1 2 3 + SetOutPath ${CWD} + CreateDirectory "$SMPROGRAMS\${GRP}" + CreateShortCut "$SMPROGRAMS\${GRP}\Prolog.lnk" \ + "$INSTDIR\bin\yap.exe" \ + "" \ + "$INSTDIR\bin\yap.exe" \ + 0 + CreateShortCut "$SMPROGRAMS\${GRP}\PLYap.lnk" \ + "$INSTDIR\bin\pl-yap.exe" \ + "" \ + "$INSTDIR\bin\pl-yap.exe" \ + 0 + SetOutPath $INSTDIR + CreateShortCut "$SMPROGRAMS\${GRP}\Readme.lnk" \ + "$INSTDIR\doc\Yap\README.TXT" "" \ + "$INSTDIR\doc\Yap\README.TXT" 0 \ + "SW_SHOWNORMAL" "" "View readme" + CreateShortCut "$SMPROGRAMS\${GRP}\Manual Html.lnk" \ + "$INSTDIR\doc\Yap\yap.html" "" \ + "$INSTDIR\doc\Yap\yap.html" 0 \ + "SW_SHOWNORMAL" "" "View readme" + CreateShortCut "$SMPROGRAMS\${GRP}\Manual PDF.lnk" \ + "$INSTDIR\doc\Yap\yap.pdf" "" \ + "$INSTDIR\doc\Yap\yap.pdf" 0 \ + "SW_SHOWNORMAL" "" "View readme" + CreateShortCut "$SMPROGRAMS\${GRP}\Uninstall.lnk" \ + "$INSTDIR\uninstall.exe" \ + "" \ + "$INSTDIR\uninstall.exe" \ + 0 + + WriteRegStr HKLM ${REGKEY} group ${GRP} + WriteRegStr HKLM ${REGKEY} cwd ${CWD} + WriteRegStr HKLM ${REGKEY} context ${SHCTX} +SectionEnd + +################################################################ +# The uninstaller +################################################################ + +UninstallText "This will uninstall YAP.64 Hit Uninstall to continue." + +Section "Uninstall" + ReadRegStr ${EXT} HKLM Software\YAP\Prolog64 fileExtension + ReadRegStr ${GRP} HKLM Software\YAP\Prolog64 group + ReadRegStr ${SHCTX} HKLM Software\YAP\Prolog64 context + + StrCmp ${SHCTX} "all" 0 +2 + SetShellVarContext all + + MessageBox MB_YESNO "Delete the following components?$\r$\n \ + Install dir: $INSTDIR$\r$\n \ + Extension: ${EXT}$\r$\n \ + Program Group ${GRP}" \ + IDNO Done + + StrCmp ".${EXT}" "" NoExt + ReadRegStr $1 HKCR .${EXT} "" + StrCmp $1 "PrologFile" 0 NoOwn ; only do this if we own it + ReadRegStr $1 HKCR .${EXT} "backup_val" + StrCmp $1 "" 0 RestoreBackup ; if backup == "" then delete the whole key + DeleteRegKey HKCR .${EXT} + Goto NoOwn + RestoreBackup: + WriteRegStr HKCR .${EXT} "" $1 + DeleteRegValue HKCR .${EXT} "backup_val" + NoOwn: + NoExt: + + StrCmp "${GRP}" "" NoGrp + MessageBox MB_OK "Deleting $SMPROGRAMS\${GRP}" + RMDir /r "$SMPROGRAMS\${GRP}" + NoGrp: + + IfFileExists "$INSTDIR\bin\yap.exe" 0 NoDir + RMDir /r "$INSTDIR" + goto Done + + NoDir: + MessageBox MB_OK "Folder $INSTDIR doesn't seem to contain Prolog" + + Done: + DeleteRegKey HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\YAP64" + DeleteRegKey HKLM ${REGKEY} +SectionEnd + +################################################################ +# FUNCTIONS +################################################################ + +Function .onInit + + ;Extract InstallOptions files + ;$PLUGINSDIR will automatically be removed when the installer closes + + InitPluginsDir + File /oname=$PLUGINSDIR\options.ini "options.ini" + +FunctionEnd + +################################################################ +# Handle customisation; Settings are maintained in +# +# HKLM ${REGKEY} +# +# Using the following mapping: +# +# ${EXT} fileExtension +################################################################ + +Function SetCustom +# Basic system info + Call UserInfo + +# Filename extension + ReadRegStr ${EXT} HKLM ${REGKEY} fileExtension + StrCmp ${EXT} "" 0 HasExt + StrCpy ${EXT} "pl" + HasExt: + WriteINIStr $PLUGINSDIR\options.ini "Field 4" "State" ${EXT} + +# Startmenu program group + ReadRegStr ${GRP} HKLM ${REGKEY} group + StrCmp ${GRP} "" 0 HasGroup + StrCpy ${GRP} "YAP64" + HasGroup: + WriteINIStr $PLUGINSDIR\options.ini "Field 6" "State" ${GRP} + +# Start the dialog + Push ${TEMP1} + InstallOptions::dialog "$PLUGINSDIR\options.ini" + Pop ${TEMP1} + Pop ${TEMP1} + +# Get the results + ReadINIStr ${EXT} $PLUGINSDIR\options.ini "Field 4" "State" + ReadINIStr ${GRP} $PLUGINSDIR\options.ini "Field 6" "State" +FunctionEnd + +Function UserInfo + ClearErrors + UserInfo::GetName + IfErrors Win9x + Pop $0 + UserInfo::GetAccountType + Pop $1 + + StrCmp $1 "Admin" 0 +4 + SetShellVarContext all + StrCpy ${SHCTX} "all" + Goto done + StrCmp $1 "Power" 0 +3 + StrCpy ${SHCTX} "all" + Goto done + StrCmp $1 "User" 0 +3 + StrCpy ${SHCTX} "current" + Goto done + StrCmp $1 "Guest" 0 +3 + StrCpy ${SHCTX} "current" + Goto done + StrCpy ${SHCTX} "current" # Unkown accounttype + Goto done + + Win9x: + StrCpy ${SHCTX} "current" + Goto end + + done: + StrCmp ${SHCTX} "all" 0 +2 + SetShellVarContext all + + end: +FunctionEnd + +Function .onInstSuccess + MessageBox MB_YESNO "Installation complete. View readme?" IDNO NoReadme + ExecShell "open" "$INSTDIR\doc\README.TXT" + NoReadme: +FunctionEnd + +Function .onInstFailed + MessageBox MB_OK "Installation failed.$\r$\n\ + If you cannot resolve the issue or it is a bug in the$\r$\n\ + installer, please contact yap-users@sf.net" +FunctionEnd + +outfile "yap64-6.3.0-installer.exe"