February 06, 2007
Forgot to mention: Rebuild 0.2 has been updated to DMD frontend 1.005

 - Gregor Richards
February 06, 2007
Gregor Richards wrote:
> Gregor Richards wrote:
>> Rebuild is a recreation of build/bud. I'm not a politician, so I'm not going into why I wrote it.
>>
>> It's based on the original DMD frontend, so it's in C++. Binaries are available for GNU/Linux and Windows. It should work on nearly any system that has a D compiler.
>>
>> URL: http://www.dsource.org/projects/dsss/wiki/Rebuild
>>
>>  - Gregor Richards
> 
> Rebuild 0.2 released. http://www.dsource.org/projects/dsss/wiki/Rebuild
> 
> Rebuild 0.2 adds easier linking to libraries with the -ll flag. For example:
> 
> rebuild something.d -llncurses -llm
> 
> (-ll stands for "link library")
> 
>  - Gregor Richards

When I use -ll, I get and unrecognized switch error.

C:\gld>rebuild -llgld -llopengl32 -llglu32 -llwin32 -llgdi32 -llwinmm -version=WindowsXP -Isource -I..\gl\imports -I..\win32\imports -Iimports -oftriangle.exe -L-L/exet:nt/su:windows:4.0 source\examples\triangle.d
Error: unrecognized switch '-llgld'
Error: unrecognized switch '-llgld'

C:\gld>rebuild
ReBuild version 0.2 (based on DMD 1.005)
...

Thanks,
  Bradley
February 06, 2007
Gregor Richards wrote:
> Bradley Smith wrote:
>> Bradley Smith wrote:
>>
>>> Gregor Richards wrote:
>>>
>>>> Rebuild is a recreation of build/bud. I'm not a politician, so I'm not going into why I wrote it.
>>>>
>>>> It's based on the original DMD frontend, so it's in C++. Binaries are available for GNU/Linux and Windows. It should work on nearly any system that has a D compiler.
>>>>
>>>> URL: http://www.dsource.org/projects/dsss/wiki/Rebuild
>>>>
>>>>  - Gregor Richards
>>>
>>>
>>> How do I use rebuild to link in libraries?
>>>
>>> I've tried using -Spath with some.lib and the full path path\some.lib, but the library is never passed through to the link command.
>>>
>>> Thanks,
>>>   Bradley
>>>
>>
>> Is something missing from the rebuild-0.1.zip? In mars.c, the lib files appear to be put in global.params.libfiles, but I can't find anywhere that the information in global.params.libfiles is used.
>>
>> Thanks,
>>   Bradley
> 
> That's just leftover from DMD. Getting libs linked in just involves passing them into the linker. For every library, you need to add -L<library_name> .
> 
> I'm going to add a better flag for that.
> 
>  - Gregor Richards


How do you use -L to link in the library?


Here is the DMD command I'm trying to convert to rebuild.

dmd gld.lib ..\gl\opengl32.lib ..\gl\glu32.lib ..\win32\win32.lib ..\win32\gdi32.lib ..\win32\winmm.lib -version=WindowsXP -Isource -I..\gl\imports -I..\win32\imports -Iimports -oftriangle.exe -L-L/exet:nt/su:windows:4.0 source\examples\triangle.d


When I simply replace dmd with rebuild -v, it prints the link message below, which doesn't contain any of the libs.

rebuild -v gld.lib ..\gl\opengl32.lib ..\gl\glu32.lib ..\win32\win32.lib ..\win32\gdi32.lib ..\win32\winmm.lib -version=WindowsXP -Isource -I..\gl\imports -I..\win32\imports -Iimports -oftriangle.exe -L-L/exet:nt/su:windows:4.0 source\examples\triangle.d

link      dmd .\triangle.obj .\gld.obj .\gld_-internal.obj .\gld_-win32-platform.obj .\gld_-win32-window.obj .\gld_-enable.obj .\gld_-win32-fullscreen.obj .\gld_-win32-enable.obj .\gld_-win32-init.obj .\gld_-win32-time.obj .\gld_-win32-glext.obj .\gld_-win32-thread.obj .\gld_-win32-joystick.obj .\gld_-glext.obj .\gld_-image.obj .\gld_-stream.obj .\gld_-window.obj .\gld_-tga.obj .\gld_-thread.obj  -oftriangle.exe -L-L/exet:nt/su:windows:4.0


If I use -L on the first library "gld.lib", it produces an link error "OPTLINK : Warning 9: Unknown Option : NOIGLD.LIB"

rebuild -v -Lgld.lib ..\gl\opengl32.lib ..\gl\glu32.lib ..\win32\win32.lib ..\win32\gdi32.lib ..\win32\winmm.lib -version=WindowsXP -Isource -I..\gl\imports -I..\win32\imports -Iimports -oftriangle.exe -L-L/exet:nt/su:windows:4.0 source\examples\triangle.d

link      dmd .\triangle.obj .\gld.obj .\gld_-internal.obj .\gld_-win32-platform.obj .\gld_-win32-window.obj .\gld_-enable.obj .\gld_-win32-fullscreen.obj .\gld_-win32-enable.obj .\gld_-win32-init.obj .\gld_-win32-time.obj .\gld_-win32-glext.obj .\gld_-win32-thread.obj .\gld_-win32-joystick.obj .\gld_-glext.obj .\gld_-image.obj .\gld_-stream.obj .\gld_-window.obj .\gld_-tga.obj .\gld_-thread.obj  -oftriangle.exe -Lgld.lib -L-L/exet:nt/su:windows:4.0


I would recommend making it work as similar as DMD as possible. With DMD, I just list the libraries along with the source and object files.

Thanks,
  Bradley
February 06, 2007
Bradley Smith wrote:
> I would recommend making it work as similar as DMD as possible. With DMD, I just list the libraries along with the source and object files.
> 

The idea was to make it as close to DMD as possible. I didn't realize people were linking libraries like this.

 - Gregor Richards

PS: Rebuild 0.3 will allow this. It still unsettles me though.
February 06, 2007
Bradley Smith wrote:
> When I use -ll, I get and unrecognized switch error.
> 
> C:\gld>rebuild -llgld -llopengl32 -llglu32 -llwin32 -llgdi32 -llwinmm -version=WindowsXP -Isource -I..\gl\imports -I..\win32\imports -Iimports -oftriangle.exe -L-L/exet:nt/su:windows:4.0 source\examples\triangle.d
> Error: unrecognized switch '-llgld'
> Error: unrecognized switch '-llgld'
> 
> C:\gld>rebuild
> ReBuild version 0.2 (based on DMD 1.005)
> ...
> 
> Thanks,
>   Bradley

Argh, really stupid bug - I'll fix that later today.

 - Gregor Richards

February 06, 2007
Gregor Richards wrote:

> Rebuild 0.2 released. http://www.dsource.org/projects/dsss/wiki/Rebuild
> 
> Rebuild 0.2 adds easier linking to libraries with the -ll flag. For example:
> 
> rebuild something.d -llncurses -llm
> 
> (-ll stands for "link library")
> 
>   - Gregor Richards

It seems rebuild doesn't respect/parse versions.

From derelictGL:
    version(Windows)
        import derelict.opengl.wgl;
    else version(linux)
        version = UsingGLX;

    version(UsingGLX)
        import derelict.opengl.glx;

Rebuild doesn't compile derelict.opengl.glx, which it should on my machine. If I comment version(UsingGLX) out, rebuild compiles the import just fine.

- Brix

February 06, 2007
Fixed some bugs introduced in rebuild 0.2, and also fixed support for 'version=' statements.

http://www.dsource.org/projects/dsss/wiki/Rebuild

 - Gregor Richards
February 06, 2007
Gregor Richards wrote:
> Bradley Smith wrote:
>> I would recommend making it work as similar as DMD as possible. With DMD, I just list the libraries along with the source and object files.
>>
> 
> The idea was to make it as close to DMD as possible. I didn't realize people were linking libraries like this.
> 
>  - Gregor Richards
> 
> PS: Rebuild 0.3 will allow this. It still unsettles me though.

Why is it unsettling?

I'm just curious. I don't have a significant preference either way. I'll use whatever works.

Thanks,
  Bradley
February 06, 2007
Bradley Smith wrote:
> Gregor Richards wrote:
> 
>> Bradley Smith wrote:
>>
>>> I would recommend making it work as similar as DMD as possible. With DMD, I just list the libraries along with the source and object files.
>>>
>>
>> The idea was to make it as close to DMD as possible. I didn't realize people were linking libraries like this.
>>
>>  - Gregor Richards
>>
>> PS: Rebuild 0.3 will allow this. It still unsettles me though.
> 
> 
> Why is it unsettling?
> 
> I'm just curious. I don't have a significant preference either way. I'll use whatever works.
> 
> Thanks,
>   Bradley

It's just unportable is all *shrugs*

I suppose it doesn't really matter :)

 - Gregor Richards
February 06, 2007
Gregor Richards wrote:
> Fixed some bugs introduced in rebuild 0.2, and also fixed support for 'version=' statements.
> 
> http://www.dsource.org/projects/dsss/wiki/Rebuild
> 
>  - Gregor Richards

Two questions:

Does rebuild support environment variables in a build file?  Like
   -I$(DMDDIR)/dmd/import

Is there some way to read commands from build files other than the '@file' syntax?  Like '-f filename' for example.

--bb