News:

Download Pelles C here: http://www.pellesc.se

Main Menu

Recent posts

#1
User contributions / Re: Has anyone built a crude ...
Last post by rweidner - Yesterday at 08:27:43 PM
Well, I looked closer at adding Crude to the tools section of PellesC IDE. While the IDE itself makes that task simple to do, Crude was designed as a per-project tool. Therefore, I stopped trying to integrate it into the PellesC IDE. For me, the juice wasn't worth the squeeze. A small setup process is required for Crude to work. The source directory and destination directory need to be configured. I put the setup in .batch files. I added two . bat files to the project as examples and pushed those to Github.

Example batch files:
1. crude.bat: Create a snapshot revision on demand.
2. compare.bat: Open WinMerge with the latest snapshot compared against the current project state.

#2
User contributions / Re: Has anyone built a crude ...
Last post by TimoVJL - Yesterday at 05:48:08 PM
File -> New -> Differences

Help
Integrated Environment ->Differences
#3
User contributions / Re: Has anyone built a crude ...
Last post by ddainelis1 - Yesterday at 05:31:19 PM
Hello TimoVJL,
Would you have a link on how to use the "internal visual diff using fdiff.dll" ?   

Best regards,

DJD
#4
User contributions / Re: Has anyone built a crude ...
Last post by TimoVJL - Yesterday at 11:53:12 AM
poide have internal visual diff using fdiff.dll
#5
User contributions / Re: Has anyone built a crude ...
Last post by rweidner - Yesterday at 04:00:48 AM
I ran out of steam today.  But tomorrow I think I'll have a "Crude" revision control system complete with visual diff via winMerge "integrated" into the PellesC IDE using the tools editor.

The tool fills a need for me and was a fun little project.  Thanks for the idea.
#6
User contributions / Re: Has anyone built a crude ...
Last post by ddainelis1 - Yesterday at 02:18:05 AM
Good Evening RWEIDNER,

Thank you for the link to your "CRUDE" application github site. It is a good App that meets your design requirements. Also, it does use a design approach that i had not considered.  Using a DB and i will look into the method for another app soon.

Best regards
#7
General discussion / Re: Compiling using pomake
Last post by John Z - Yesterday at 01:07:55 AM
Hi rweidner,

Nice - many levels of complexity added.  BBBBuilder.dll builds only for the selected mode, and execution method, you've got it all covered in one. Plus you have added much more error detection/escapes. 

Next 'soon' version of BBBBuilder has the option to output a PowerShell  script or the bat file.  PowerShell works well now so I'm integrating it into the code.  I stuck with the base PowerShell 5 since it comes with windows, even though no longer updated.  I believe it will also work with 7 but not everyone will download and install pwsh.exe.

John Z

Question:
Is main.c in a different directory? 
echo Building %PROJECT_NAME%...

call :compile_one "main.c" || goto build_fail

for %%F in (src\*.c) do (
    call :compile_one "%%F" || goto build_fail
)

Otherwise it looks like it will be compiled twice   It is included in the set of all *.c files is it not?  It must be unless a different is directory is used for main.c.

Just wondering - is there a reason for a different directory if that is the case?
#8
General discussion / Re: Compiling using pomake
Last post by rweidner - March 12, 2026, 10:54:27 PM
John Z,
Inspired by BBB Builder, I worked with ChatGPT for a couple hours and we built this .bat file. Thanks for the inspiration. I believe this script will help improve my workflow.

@echo off
REM File: project.bat
REM Purpose: FBI Pursuit build/workflow entry point

setlocal ENABLEEXTENSIONS ENABLEDELAYEDEXPANSION

set "PROJECT_DIR=%~dp0"
if "%PROJECT_DIR:~-1%"=="\" set "PROJECT_DIR=%PROJECT_DIR:~0,-1%"
set "PROJECT_NAME=FBIPursuit"
set "EXE_NAME=FBIPursuit.exe"
set "OUTPUT_DIR=output"
set "CRUDE_EXE=C:\CRUDE\crude.exe"
set "CRUDE_REPO=C:\CRUDE"
set "WINMERGE_EXE=C:\Program Files\WinMerge\WinMergeU.exe"

set "CCFLAGS_DEBUG=-Tx86-coff -std:C17 -Zi -Ob0 -fp:precise -W1 -Gd -Ze -Zc-"
set "CCFLAGS_RELEASE=-Tx86-coff -std:C17 -Ot -Ob1 -fp:precise -W1 -Gd -Zc- -Ze"
set "LINKFLAGS_DEBUG=-machine:x86 -subsystem:console -safeseh -debug -debugtype:po kernel32.lib advapi32.lib delayimp.lib raylibdll.lib opengl32.lib gdi32.lib winmm.lib user32.lib shell32.lib"
set "LINKFLAGS_RELEASE=-machine:x86 -subsystem:console -safeseh kernel32.lib advapi32.lib delayimp.lib raylibdll.lib opengl32.lib gdi32.lib winmm.lib user32.lib shell32.lib"

if "%~1"=="" goto build_debug
if /I "%~1"=="build_debug" goto build_debug
if /I "%~1"=="build_release" goto build_release
if /I "%~1"=="rebuild_debug" goto rebuild_debug
if /I "%~1"=="rebuild_release" goto rebuild_release
if /I "%~1"=="run" goto run
if /I "%~1"=="clean" goto clean
if /I "%~1"=="crude" goto crude
if /I "%~1"=="diff" goto diff
if /I "%~1"=="help" goto help

echo Unknown target: %~1
goto help

:prepare_env
call "%PROJECT_DIR%\env_pelles32.bat"
if errorlevel 1 exit /b 1

pushd "%PROJECT_DIR%"
if errorlevel 1 exit /b 1

set "INCLUDE=%INCLUDE%;%PROJECT_DIR%\deps\include;%PROJECT_DIR%\src\include"
set "LIB=%LIB%;%PROJECT_DIR%\deps\lib"

if not exist "%OUTPUT_DIR%" mkdir "%OUTPUT_DIR%"
if errorlevel 1 (
    echo ERROR: Failed to create output directory.
    popd
    exit /b 1
)

exit /b 0

:build_debug
call :clean_internal || exit /b 1
set "ACTIVE_CCFLAGS=%CCFLAGS_DEBUG%"
set "ACTIVE_LINKFLAGS=%LINKFLAGS_DEBUG%"
call :do_build || exit /b 1
exit /b 0

:build_release
call :clean_internal || exit /b 1
set "ACTIVE_CCFLAGS=%CCFLAGS_RELEASE%"
set "ACTIVE_LINKFLAGS=%LINKFLAGS_RELEASE%"
call :do_build || exit /b 1
exit /b 0

:rebuild_debug
call :build_debug
exit /b %errorlevel%

:rebuild_release
call :build_release
exit /b %errorlevel%

:do_build
call :prepare_env || exit /b 1

echo Building %PROJECT_NAME%...

call :compile_one "main.c" || goto build_fail

for %%F in (src\*.c) do (
    call :compile_one "%%F" || goto build_fail
)

set "OBJLIST="
for /f "delims=" %%F in ('dir /b "%OUTPUT_DIR%\*.obj" 2^>nul') do (
    set "OBJLIST=!OBJLIST! "%OUTPUT_DIR%\%%F""
)

if not defined OBJLIST (
    echo ERROR: No object files were produced.
    goto build_fail
)

echo Linking %EXE_NAME%...
polink %ACTIVE_LINKFLAGS% -out:"%EXE_NAME%" !OBJLIST!
if errorlevel 1 goto build_fail

echo Build complete: %EXE_NAME%
popd
exit /b 0

:build_fail
echo Build failed.
popd
exit /b 1

:compile_one
echo Compiling %~1 ...
pocc %ACTIVE_CCFLAGS% "%~1" /Fo"%OUTPUT_DIR%\%~n1.obj"
if errorlevel 1 exit /b 1
exit /b 0

:run
pushd "%PROJECT_DIR%"
if not exist "%EXE_NAME%" (
    echo ERROR: %EXE_NAME% not found. Run build_debug or build_release first.
    popd
    exit /b 1
)
start "" "%PROJECT_DIR%\%EXE_NAME%"
popd
exit /b 0

:clean
call :clean_internal
exit /b %errorlevel%

:clean_internal
pushd "%PROJECT_DIR%"
if errorlevel 1 exit /b 1

echo Cleaning...
del /q "%OUTPUT_DIR%\*.obj" 2>nul
del /q "%EXE_NAME%" 2>nul

popd
exit /b 0

:crude
call :clean_internal || exit /b 1
if not exist "%CRUDE_EXE%" (
    echo ERROR: CRUDE not found:
    echo %CRUDE_EXE%
    exit /b 1
)
"%CRUDE_EXE%" "%PROJECT_DIR%" "%CRUDE_REPO%"
exit /b %errorlevel%

:diff
call :clean_internal || exit /b 1

if not exist "%WINMERGE_EXE%" (
    echo ERROR: WinMerge not found:
    echo %WINMERGE_EXE%
    exit /b 1
)

set "REVISIONS_DIR=%CRUDE_REPO%\%PROJECT_NAME%\revisions"
if not exist "%REVISIONS_DIR%" (
    echo ERROR: Revisions folder not found:
    echo %REVISIONS_DIR%
    exit /b 1
)

set "LATEST_REV="
for /f "delims=" %%D in ('dir "%REVISIONS_DIR%" /b /ad /o:-n 2^>nul') do (
    set "LATEST_REV=%%D"
    goto found_latest
)

:found_latest
if not defined LATEST_REV (
    echo ERROR: No revisions found in:
    echo %REVISIONS_DIR%
    exit /b 1
)

set "LATEST_DIR=%REVISIONS_DIR%\%LATEST_REV%"

echo Comparing:
echo  CURRENT: %PROJECT_DIR%
echo  REVISION: %LATEST_DIR%
start "" "%WINMERGE_EXE%" "%PROJECT_DIR%" "%LATEST_DIR%"
exit /b 0

:help
echo.
echo Usage:
echo    %~n0 build_debug
echo    %~n0 build_release
echo    %~n0 rebuild_debug
echo    %~n0 rebuild_release
echo    %~n0 run
echo    %~n0 clean
echo    %~n0 crude
echo    %~n0 diff
echo    %~n0 help
echo.
exit /b 1
#9
Graphics programming / Re: raylib 5.5 + PellesC v13.0...
Last post by rweidner - March 12, 2026, 03:44:18 PM
Cool addition to the thread, Vortex. I learned of raygui AFTER I already implemented a menu system for a project I'm working on.
#10
User contributions / Re: Has anyone built a crude ...
Last post by rweidner - March 12, 2026, 03:35:03 AM
This is what I came up with. I run it from a .bat file.

crude.bat
C:\dev\crude\crude.exe "C:\dev\XecronixEngine\FBIPursuit" "C:\CRUDE"
C:\dev\crude\crude.exe: this is where I built crude
C:\dev\XecronixEngine\FBIPursuit: this is the source for a project I wanted to put in a repo.
C:\CRUDE: This is where my repos go. I could have many.

Here is the code and project file if you'd like to see it:
https://github.com/xecronix/crude