Windows dev compiling

I exclusively use Bill’s weekly builds and have always found them very stable. I really appreciate the effort he puts into these for people like me who wouldn’t know where to start compiling.

2 Likes

The instructions for windows are pretty good and easy to follow… I just did all the steps for method 1 some years back now skipping only the usb driver bit and after that it easy to build… and seems to have gotten a bit faster to do so over the years…

I can be patient or lazy and wait for the weekly build. Most times I see no obvious changes, but occasionally some exciting addition arrives.

I can’t find it any more, but I recall a rather significant (not 1-5%, but rather 20-40%) speed-up on the CPU-only path when I compared the Ubuntu-packaged version with the self-compiled one.

A quick comparison now, with the daily AppImage vs locally-compiled. Exporting a single image from my old Panasonic LX7 (10 MPx) with typical processing (filmic/sigmoid, local contrast, diffuse or sharpen), after clearing .cache/darktable and starting the application, waiting for all thumbnails to be built:

AppImage / local, without OpenCL: 17.5970 s / 10.9683 s (160% or 62%, depending on from which side you look at it)
AppImage / local, with    OpenCL:  3.5331 s /  3.3196 s (106% or 94%)

CPU: Ryzen 5 5600, GPU: NVidia 1060

Not to depreciate Bill’s work, I think he basically builds whatever is on master come Sunday:

What I mean is they are not ‘curated’ or ‘higher quality’ or ‘contain hand-picked changes’. I appreciate his work, and have long used his builds on the Windows laptop I sometimes use to answer Windows-related questions or to test Windows-related issues. Having a reliable source of builds in case the GitHub CI build breaks is valuable.
In this particular case, there was a bug fixed after the weekly build was published. You were affected by that bug: it was the cause why darktable -d opencl crashed without printing an error message to the console.

From [Native build using MSYS2]

(https://github.com/darktable-org/darktable/tree/master/packaging/windows#native-build-using-msys2)*NOTE:

“If you are using the Lua scripts, build the installer and install darktable.”

Is there any information on doing this specifically? I have already completed the steps regarding MSYS2 installation.

It’s been some time but if the question is about Lua it should be installed with the build installer I think…

Have you uploaded any of these… I could try…

https://docs.darktable.org/lua/stable/lua.scripts.manual/installation/

There is a noticeable performance increase when compiling the software. It’s a bit time consuming to do it though. Seems like DT needs to be run from the msys terminal. It would be great if there was a way to streamline the process of opening DT rather than using command line all the time. I have no idea on how to do that, unfortunately.

You need to say package instead of install as the target… this makes an exe install file and creates a shortcut when you run that to install… exe will be in build directory

@priort Aha! I will try that

1 Like

Yup! It all works perfectly. Problem is, I’m probably too lazy to be doing this routinely. I was an interesting experiment that taught me a few things. I think I will stay with Bill’s weekly builds for the time being.

Thanks everyone for the help!

1 Like

Using MSYS2 software on windows, Is there a command to do an incremental version update of the github repository into my msys64 folder?

Pacman -Syuu

will update all installed packages

1 Like

Git pull will sync with the repo. You then need to build again. Don’t forget to delete the build folder first.

2 Likes

If it helps, here is a short script that updates from master and (re-)build DT as Windows package. I usually run this script, test the MSYS2 build, then if no issue I un-install then install DT.

#!/bin/bash
lensfun-update-data
cd ~/darktable/
rm -rf build
git pull origin master
git submodule update
mkdir build
cd build
cmake -G Ninja -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/opt/darktable -DCUSTOM_CFLAGS=ON -DCMAKE_CXX_FLAGS="-O3" -DCMAKE_C_FLAGS="-O3" -DBINARY_PACKAGE_BUILD=OFF ../.
cmake --build . --target package

That a very handy script. Anything to ease the process is great.

Can you please explain the meaning of this syntax?

DCUSTOM_CFLAGS=ON -DCMAKE_CXX_FLAGS=“-O3” -DCMAKE_C_FLAGS=“-O3” -DBINARY_PACKAGE_BUILD=OFF …/.

Thanks

Lazy man’s answer… :slight_smile:

Searching for: DCUSTOM_CFLAGS=ON -DCMAKE_CXX_FLAGS=“-O3” -DCMAKE_C_FLAGS=“-O3” -DBINARY_PACKAGE_BUILD=OFF

Searching for: DCUSTOM_CFLAGS=ON -DCMAKE_CXX_FLAGS=“-O3” -DCMAKE_C_FLAGS=“-O3” -DBINARY_PACKAGE_BUILD=OFF

Generating answers for you…

Generating answers for you…

Certainly! The command you provided is a CMake command that sets some flags for the build process. Here is what each flag does:

  • DCUSTOM_CFLAGS=ON: This flag enables custom C flags for the build process.
  • -DCMAKE_CXX_FLAGS=“-O3”: This flag sets the optimization level for C++ code to O3.
  • -DCMAKE_C_FLAGS=“-O3”: This flag sets the optimization level for C code to O3.
  • -DBINARY_PACKAGE_BUILD=OFF: This flag disables binary package building.

I hope this helps! Let me know if you have any other questions.

Learn more:

1. flagsunlimited.com2. bestflag.com3. theflagstore.ca

1of30

Can you explain what -O3 means?

Searching for: what does -O3 mean in C++

Searching for: what does -O3 mean in C++

Generating answers for you…

Generating answers for you…

Certainly! In the context of C++, the -O3 flag is used to optimize code for speed. It enables all the optimizations that are included in the -O2 flag, and adds some more optimizations on top of that 1.

The -O3 flag is used to generate code that runs faster, but it may also increase the size of the executable file 1.

I hope this helps! Let me know if you have any other questions.

Learn more:

1. stackoverflow.com2. stackoverflow.com3. caiorss.github.io+1 more

2of30

Can you explain what -O2 means?

Searching for: what does -O2 mean in C++

Searching for: what does -O2 mean in C++

Generating answers for you…

Generating answers for you…

Certainly! In the context of C++, the -O2 flag is used to optimize code for speed. It enables nearly all the optimizations that are supported by the compiler, except for those that involve a space-speed tradeoff such as loop unrolling or function inlining 12.

The -O2 flag is used to generate code that runs faster than the default optimization level (-O0), but it may also increase the size of the executable file 1.

I hope this helps! Let me know if you have any other questions.

Learn more:

1. stackoverflow.com2. gcc.gnu.org3. stackoverflow.com

3of30

LikeDislikeCopyExport

Get more relevant responsesWhat are some other optimization flags?How do I know which flag to use for my project?Can you explain what -O3 means?

I don’t understand what this is @priort it is very incoherent.