• Compile from source

    From Yigael to Digital Man on Fri Apr 5 14:11:44 2024

    Hello everyone,

    Is there a guide showing the easiest way to compile the Synchronet source files with a Windows app? Being new to Synchronet v3.20, and having only dabbled in programming up until now, I’m sure this must seem like a dumb question.

    What I’ve tried so far: cloned the GitHub mirror for SBBS, installed MS Visual Basic, spent hours trying to figure out how to compile without errors. As I prefer to research answers before asking, I checked the Synchro Wiki but only mentions the Windows files "built using Microsoft Visual Studio Express 2019 for Windows Desktop” (which doesn’t appear on the web so it must have been renamed). One of the Synchronet .bat files in the source says that building “requires Microsoft Visual C++ 2022". So I installed the latest VB, but even after adding nearly every module available module, I’m getting way too many errors for me to believe this is the right path.

    So now I’m asking for help.

    1. What are the easiest steps to compile Synchronet source files, without errors, and get a release that is ready for installation on a Windows PC?

    2. Can this task be accomplished using Git for Windows, or a compiler that isn't a disk-space-gobbling Microsoft product?

    3. If VB is the only way, then what are the minimum modules required, and what steps needed, for making a Synchronet "release version" properly.

    I see on the gitlab that there are nightly dev builds, so this must be an everyday task for developers. I just need some information that’ll help get me situated in the correct direction. Thank you in advance.

    Kind Regards,
    Chris
  • From Digital Man to Yigael on Fri Apr 5 14:41:36 2024
    Re: Compile from source
    By: Yigael to Digital Man on Fri Apr 05 2024 02:11 pm

    Is there a guide showing the easiest way to compile the Synchronet source files with a Windows app?

    The required tools are listed here:
    https://wiki.synchro.net/dev:tools#windows

    Being new to Synchronet v3.20, and having only
    dabbled in programming up until now, I'm sure this must seem like a dumb question.

    What I've tried so far: cloned the GitHub mirror for SBBS, installed MS Visual Basic, spent hours trying to figure out how to compile without errors.

    Visual Basic isn't used or involved in the building of Synchronet at all. Microsoft Visual C++ (which is a component of Visual Studio) is, however.

    As I prefer to research answers before asking, I checked the Synchro
    Wiki but only mentions the Windows files "built using Microsoft Visual Studio Express 2019 for Windows Desktop" (which doesn't appear on the web so it must have
    been renamed). One of the Synchronet .bat files in the source says that building "requires Microsoft Visual C++ 2022".

    The majority of Synchronet for Windows can be built today with either Visual C++ 2019 or 2022. Newer is better however.

    So I installed the latest
    VB, but even after adding nearly every module available module, I'm getting way
    too many errors for me to believe this is the right path.

    "VB" is a different language/tool-set.

    So now I'm asking for help.

    1. What are the easiest steps to compile Synchronet source files, without errors, and get a release that is ready for installation on a Windows PC?

    Install Visual C++ 2022, open src/sbbs3/sbbs3.sln in it and then "build solution". This will build all the Synchronet DLLs and utility EXEs and the console-mode sbbs.exe, but not the GUI components: sbbsctrl.exe, useredit.exe, chat.exe. Those are built using Borland C++Builder 6 (still, yes I know, a very old/proprietary/commercial tool).

    2. Can this task be accomplished using Git for Windows, or a compiler that isn't a disk-space-gobbling Microsoft product?

    No. Visual C++ (a Microsoft product) is required, at minimum. To rebuild everything I release for Windows, you'll also need C++Builder 6.

    3. If VB is the only way, then what are the minimum modules required, and what steps needed, for making a Synchronet "release version" properly.

    All the required "modules" are in the Git repo. Since these tools and concepts seem so foreign to you, I'm curious *why* you want to build Synchronet for Windows from source? If you're new to Synchronet and new to programming, this doesn't sound like a great way path to success. Maybe start with a simpler project?

    I see on the gitlab that there are nightly dev builds, so this must be an everyday task for developers. I just need some information that'll help get me situated in the correct direction. Thank you in advance.

    The nightly dev builds are built automatically (not manually by a developer). That said, yes, I build Synchronet for Windows daily, manually, as well.
    --
    digital man (rob)

    Sling Blade quote #11:
    Doyle Hargraves (to Karl): What in the hell you doin' with that hammer?
    Norco, CA WX: 55.2°F, 56.0% humidity, 3 mph SSW wind, 0.12 inches rain/24hrs
  • From Nightfox@DIGDIST to Digital Man on Fri Apr 5 15:50:08 2024
    Re: Compile from source
    By: Digital Man to Yigael on Fri Apr 05 2024 02:41 pm

    Visual Basic isn't used or involved in the building of Synchronet at all. Microsoft Visual C++ (which is a component of Visual Studio) is, however.

    A BBS package written in VB sounds like something Phil would be interested in working on.

    Nightfox

    ---
    ■ Synchronet ■ Digital Distortion: digitaldistortionbbs.com
  • From Digital Man to Yigael on Fri Apr 5 17:54:44 2024
    Re: Compile from source
    By: Yigael to Digital Man on Fri Apr 05 2024 02:11 pm

    Is there a guide showing the easiest way to compile the Synchronet source files with a Windows app?

    We have one now:
    https://gitlab.synchro.net/main/sbbs/-/blob/master/BUILDING.md
    --
    digital man (rob)

    Breaking Bad quote #42:
    We have laws, detective. Have your kindergarten teacher read them to you. Norco, CA WX: 51.7°F, 57.0% humidity, 10 mph WSW wind, 0.12 inches rain/24hrs
  • From Yigael to Digital Man on Sat Apr 6 00:29:31 2024
    Visual Basic isn't used or involved in the building of Synchronet at all. Microsoft Visual C++ (which is a component of Visual Studio) is, however.

    Oh shoot.. I meant "Visual C++". Serves me right for typing this at work. :\

    but not the GUI components: sbbsctrl.exe, useredit.exe, chat.exe. Those are built using Borland C++Builder 6 (still, yes I know, a very old/proprietary/commercial tool).

    Borland is a name I haven't heard in a long time. I don't expect to ever mess with that guy.

    All the required "modules" are in the Git repo.

    Sorry...I was referring to which components in Visual Studio Installer are actually necessary for what I need. Tick the wrong boxes and you lose dozens of gigabytes of drive space for no quantifiable reason.

    Since these tools and concepts seem so foreign to you, I'm curious *why* you want to build Synchronet for Windows from source? If you're new to Synchronet and new to programming, this doesn't sound like a great way path to success. Maybe start with a simpler project?

    That is a good question. One day I decided to install Synchronet BBS and start customizing for no reason. Someday when I get everything working the way I like, then I'll go live. For now it's the perfect excuse to see what it's like to compile an open source project. I honestly thought it would be easy. But getting this Microsoft product set up from scratch with all the necessary components so it builds without errors is maddening.

    Latest attempt: I tried installing Microsoft Visual C++ Build Tools and using the developer console to msbuild sbbs3.sln, but I just see errors about the v141_xp toolset being required. The only way to get that deprecated toolset is use Visual Studio Installer, which leads to installing Visual Studio Community 2022, which leads me into the maze of trying to figure out which workflow and components to install. Even after selecting practically everything in the list (thus taking up 86 GB) opening \src\sbbs3\sbbs3.sln project and clicking Build it just errors out because it can't find a bunch of .h files (that aren't even in the git).

    There has got to be something I'm missing here.

    /Chris
  • From Yigael to Digital Man on Sat Apr 6 00:31:56 2024
    We have one now: https://gitlab.synchro.net/main/sbbs/-/blob/master/BUILDING.md

    Excellent. I'll have a look at that sometime this weekend.
  • From Digital Man to Yigael on Sat Apr 6 01:44:46 2024
    Re: Compile from source
    By: Yigael to Digital Man on Sat Apr 06 2024 12:29 am

    it can't find a bunch of .h files (that aren't even in the git).

    Which .h files?
    --
    digital man (rob)

    Synchronet/BBS Terminology Definition #26:
    DSZ = DOS Send ZMODEM (by Chuck Forsberg)
    Norco, CA WX: 43.9°F, 79.0% humidity, 0 mph ESE wind, 0.09 inches rain/24hrs
  • From Gamgee@PALANTIR to Nightfox on Sat Apr 6 07:52:00 2024
    Nightfox wrote to Digital Man <=-

    Re: Compile from source
    By: Digital Man to Yigael on Fri Apr 05 2024 02:41 pm

    Visual Basic isn't used or involved in the building of Synchronet at all. Microsoft Visual C++ (which is a component of Visual Studio) is, however.

    A BBS package written in VB sounds like something Phil would be
    interested in working on.

    Put a dollar in the swear-jar.



    ... Honk if you love BBSing!
    --- MultiMail/Linux v0.52
    ■ Synchronet ■ Palantir BBS * palantirbbs.ddns.net * Pensacola, FL
  • From Yigael to Digital Man on Sat Apr 6 20:37:45 2024
    Which .h files?

    The .h files that magically become available when one actually selects a Windows SDK component. :P

    FINAL UPDATE: Thanks to the updated build instructions I was able to compile the source files into all the .EXE and .DLL files that I typically see in \sbbs\exec. Pretty cool.

    Here's what I did on my Windows 11 PC:

    1. Open an admin PowerShell and enter the following wget command. This installs Visual Studio C++ Build Tools with just the components needed (and nothing else):

    winget install Microsoft.VisualStudio.2022.BuildTools --force --override "--passive --wait --add Microsoft.VisualStudio.Workload.VCTools;includeRecommended Microsoft.VisualStudio.Component.Windows11SDK.22621 Microsoft.Component.VC.Runtime.UCRTSDK Microsoft.VisualStudio.Component.VC.v141.x86.x64 Microsoft.VisualStudio.Component.WinXP"

    2. Install the GnuWin32 package from https://sourceforge.net/projects/gnuwin32/

    3. Set environment variables by going into System Properties, clicking on System Variables and adding the following:

    User variables
    Variable Name: VS170COMNTOOLS
    Variable value: "C:\Program Files (x86)\Microsoft Visual Studio\2022\BuildTools\Common7\Tools"

    (because %VS170COMNTOOLS% is specified in the \sbbs\src\sbbs3\*.bat files)

    System variables
    PATH statement --> add "C:\Program Files (x86)\GnuWin32\bin"

    4. Open a Developer PowerShell for VS window and change to \sbbs\src\sbbs3 directory.

    5. Type ".\release.bat" and hit [Enter]. Go get another cup of coffee.
    I found the switch "/p:XPDeprecationWarning=false" helps suppress the annoying deprecation warning messages.

    Well this has been an interesting several days and I learned a lot. Thank you for all the helpful information! :D

    Kind Regards,
    Chris
  • From Digital Man to Yigael on Sat Apr 6 20:47:17 2024
    Re: Compile from source
    By: Yigael to Digital Man on Sat Apr 06 2024 08:37 pm

    5. Type ".\release.bat" and hit [Enter]. Go get another cup of coffee.
    I found the switch "/p:XPDeprecationWarning=false" helps suppress the annoying deprecation warning messages.

    If you're going to be modifying the code at all, you probably want to build/run debug (not release) binaries. Just a head's up.

    That's a good tip on the XP warning. I might add that somewhere (though, truth be told, the warning has never bothered me).

    Well this has been an interesting several days and I learned a lot. Thank you for all the helpful information! :D

    Glad you got it building and the BUILDING.md file was of some help.
    --
    digital man (rob)

    Sling Blade quote #26:
    Karl: kaiser blade, ax handle with long blade on it shaped kinda like a banana. Norco, CA WX: 52.2°F, 57.0% humidity, 7 mph WNW wind, 0.00 inches rain/24hrs
  • From Skylar to Digital Man on Thu Apr 11 16:43:37 2024
    Re: Compile from source
    By: Digital Man to Yigael on Fri Apr 05 2024 05:54 pm

    We have one now: https://gitlab.synchro.net/main/sbbs/-/blob/master/BUILDING.md

    *Scratching head*... wondering if I can locate my BCB6 CD. :D

    I'm kidding. I have *so* many projects on the backburner that I will likely never get around to doing much with, aside from maybe a few prototypes, before moving onto something else.

    Unfortunately, I'm not kidding about the last part. :D
  • From Digital Man to Skylar on Thu Apr 11 16:48:29 2024
    Re: Compile from source
    By: Skylar to Digital Man on Thu Apr 11 2024 04:43 pm

    *Scratching head*... wondering if I can locate my BCB6 CD. :D

    I do have it available for download from Vertrauen, but getting it to run on a modern Windows systems is pretty painful.
    --
    digital man (rob)

    Sling Blade quote #17:
    Charles Bushman: A shovel just makes too goddamned much racket.
    Norco, CA WX: 79.7°F, 37.0% humidity, 12 mph W wind, 0.00 inches rain/24hrs
  • From Skylar to Digital Man on Thu Apr 11 17:00:49 2024
    Re: Compile from source
    By: Digital Man to Skylar on Thu Apr 11 2024 04:48 pm

    but getting it to run on
    a modern Windows systems is pretty painful.

    I do love virtualization. Although I really was kidding. If I did *anything*, I'd be more likely to migrate them to C++ Builder 12.1. Which may be worthwhile if EMBD releases a Community Edition of 12.1.
  • From Skylar to Digital Man on Thu Apr 11 18:38:54 2024
    Re: Compile from source
    By: Digital Man to Skylar on Thu Apr 11 2024 04:48 pm

    but getting it to run on
    a modern Windows systems is pretty painful.

    I use Delphi 7 on Windows 10 nearly every workday. Fortunately, I don't spend much time in D7. But I'm thankful because I'm now used to a newer/better IDE experience. I rarely have stability issues with D7.