pierreguillot / Camomile

An audio plugin with Pure Data embedded that allows to load and to control patches
GNU General Public License v3.0
909 stars 63 forks source link

Compiling Camomile with Else externals lib on OSx #214

Closed emviveros closed 3 years ago

emviveros commented 3 years ago

Hi! I'm trying to compile camomile with support to Else library by @porres.

I'm following the instructions in the video on: https://github.com/pierreguillot/Camomile/issues/138#issuecomment-628092966

After add all objects of Else lib and add manually the folder with some Else dependencies headers manually in Xcode project before start compile failed. And after (525 warnings), it return one fatal issue:

ld: library not found for -lpd-multi
clang: error: linker command failed with exit code 1 (use -v to see invocation)

Captura de Tela 2020-10-04 às 17 28 20

The system is a Macbook Pro 2011, OSx 10.13.6 High Sierra. Xcode 10.2.1. Projucer JUCE v6.0.1 Build date: 7 Jul 2020.

Now I will describe all steps I took (maybe can be used to create documentation in future):

  1. Cloned pdlib repository

    git clone --recurse-submodules https://github.com/libpd/libpd.git
  2. Cloned camomile repository

    git clone --recursive https://github.com/pierreguillot/Camomile.git
  3. Added the sources of Else library in the fresh created folder <projectFolder>/camomile/Source/Pd/Externals. I added 238 c sources and 1 folder named shared with some dependencies to build Else library. in the shared folder are 6 sources codes (.c files) and it's respective headers (.h files).

  4. Opened the files CamomileFx.jucer, CamomileLV2.jucer, Camomile.jucer in Projucer and manually add the the Externals folder in each project and save the project and build the Xcode workspace project file. (described at 40s of the video reference)

  5. After opened the Xcode workspace generated in file Camomile.xcworkspace I added each object in x_libpd_multi.c file. Like described in video reference at 3:10.

  6. Added <projectFolder>/camomile/Source/Pd/Externals/shared in Xcode Headers Path: 6.1 Clicking in the root tree of project: root_tree 6.2 Clicking in "Build Settings": build Settings 6.3 and in Search Path -> Header Search Path I added $SRCROOT/Source/Pd/Externals/shared in Debug and Releases fields (it solved issues relative to headers not found from else dependencies): Captura de Tela 2020-10-04 às 18 35 01

  7. Uncheck include_juce_audio_plugin_client_AU.r files option in Xcode project like described in video reference at 2:10.

  8. After that I tried to build Camomile (Cmmd+B) and have the error described above.

Any advance are welcomed and I'm at disposal for all tests needed.

pierreguillot commented 3 years ago

Did you look how to compile Camomile before trying to include externals?

emviveros commented 3 years ago

Thanks Pierre for your response..

I was able to compile Camomile on command line following the guide in the readme page of the repository and works fine!

pierreguillot commented 3 years ago

And you still have the using the XCode graphical interface or is it okay?

emviveros commented 3 years ago

I don't know if I understand you all.. But let's go...

If you ask for the relevance of using Xcode Graphical interface for me, I really prefer an automated solution without using Xcode GUI. The compilation with 3 lines are the best. (I think this is the wrong answer)

Maybe you need to know my experience with compilating things... My ability with C and C++ code is coding for Arduino stuff, and compiling pd stuff with lib-pd-builder and crosscompile lib-pd-builder stuff from linux to arm, win and linux archs. So very much the work of setting the compilation process is done. (maybe know these helps to help)

I tried to compile again Camomile and Camomile with Else in the following ways:

Camomile (vanilla)

Camomile with Else

pierreguillot commented 3 years ago

Sorry there was the word "problem" missing in my previous comment.

The first line with cmake prépare the libpd project, you should always do that otherwise it won't compile libpd. And generating/compiling the libpd project fixes the problem related to the missing libpd at link. The second line compiles libpd and Camomile but is equivalent to the compile action cmb+b on the Xcode app. Both use the Xcode build system. So even if you wants to use Xcode app directly (without the command line), you still have to generate the libpd project using cmake before.

The new problem with the duplicate symbol must be related to the else library. I guess you might have declared the method several times

emviveros commented 3 years ago

Cool... I'm trying to compile first in command line way... In Xcode GUI I'm stucked in the same error, even with cloned libpd from github. On the other hand using command line I solved some duplicated global variables in else code and now I have a new error:

Ld /Users/esteban/src/camomileTests/Camomile/Plugins/Camomile.vst3/Contents/MacOS/Camomile normal x86_64
    cd /Users/esteban/src/camomileTests/Camomile/Instrument/Builds/MacOSX
    export MACOSX_DEPLOYMENT_TARGET=10.9
    /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang++ -arch x86_64 -bundle -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.14.sdk -L/Users/esteban/src/camomileTests/Camomile/Plugins -L../../../Dependencies/LibPdBuild -F/Users/esteban/src/camomileTests/Camomile/Plugins -filelist /Users/esteban/Library/Developer/Xcode/DerivedData/Camomile-ebvfxpubvslcoycrkocchrdssbpr/Build/Intermediates.noindex/Camomile.build/Release/Camomile\ -\ VST3.build/Objects-normal/x86_64/Camomile.LinkFileList -mmacosx-version-min=10.9 -dead_strip -stdlib=libc++ -bundle -lCamomile -lpd-multi -framework Accelerate -framework AudioToolbox -framework Carbon -framework Cocoa -framework CoreAudio -framework CoreMIDI -framework IOKit -framework QuartzCore -framework WebKit -Xlinker -dependency_info -Xlinker /Users/esteban/Library/Developer/Xcode/DerivedData/Camomile-ebvfxpubvslcoycrkocchrdssbpr/Build/Intermediates.noindex/Camomile.build/Release/Camomile\ -\ VST3.build/Objects-normal/x86_64/Camomile_dependency_info.dat -o /Users/esteban/src/camomileTests/Camomile/Plugins/Camomile.vst3/Contents/MacOS/Camomile
Undefined symbols for architecture x86_64:
  "_s__X", referenced from:
      _messbox_save in lto.o
  "_s_pointer", referenced from:
      _hot_pointer in lto.o
      _hot_list in lto.o
      _hot_proxy_pointer in lto.o
      _hot_proxy_list in lto.o
      _hot_proxy_set in lto.o
      _hot_proxy_doanything in lto.o
      _hot_arm in lto.o
      ...
  "_alloca", referenced from:
      _float2bits_split in lto.o
      _float2bits_bang in lto.o
  "_s_symbol", referenced from:
      _dir_new in lto.o
      _format_new in lto.o
      _hot_symbol in lto.o
      _hot_proxy_symbol in lto.o
      _hot_proxy_doanything in lto.o
      _hot_arm in lto.o
      _routetype_new in lto.o
      ...
  "_s_list", referenced from:
      _args_bang in lto.o
      _bicoeff_bang in lto.o
      _bicoeff_new in lto.o
      _bounds_proxy_any in lto.o
      _gop_bang in lto.o
      _gop_new in lto.o
      _pos_bang in lto.o
      ...
  "_s_float", referenced from:
      _adsr_new in lto.o
      _asr_new in lto.o
      _autofade_new in lto.o
      _autofade2_new in lto.o
      _bendin_new in lto.o
      _bendout_new in lto.o
      _bicoeff_new in lto.o
      ...
  "_s_anything", referenced from:
      _break_new in lto.o
      _button_new in lto.o
      _changed_new in lto.o
      _dir_new in lto.o
      _float2bits_new in lto.o
      _function_new in lto.o
      _hot_new in lto.o
      ...
  "_s_bang", referenced from:
      _changed_new in lto.o
      _click_new in lto.o
      _hot_arm in lto.o
      _lb_new in lto.o
      _loadbanger_new in lto.o
      _seq_new in lto.o
      _nbang_new in lto.o
      ...
  "_s_signal", referenced from:
      _above_new in lto.o
      _add_new in lto.o
      _adsr_new in lto.o
      _allpass_2nd_new in lto.o
      _allpass_rev_new in lto.o
      _asr_new in lto.o
      _autofade_new in lto.o
      ...
  "_s_", referenced from:
      _buffer_get in lto.o
      _buffer_redraw in lto.o
      _buffer_validate in lto.o
      _buffer_init in lto.o
      _hammerpanel_symbol in lto.o
      _hammerpanel_path in lto.o
      _canvas_mouse_new in lto.o
      ...
     (maybe you meant: _s_inter_freepdinstance, _s_inter_free , _s_inter_newpdinstance , _s_stuff_newpdinstance , _s_stuff_freepdinstance )
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)

** BUILD FAILED **

The following build commands failed:
    Ld /Users/esteban/src/camomileTests/Camomile/Plugins/Camomile.vst3/Contents/MacOS/Camomile normal x86_64
(1 failure)

Any tip?

pierreguillot commented 3 years ago

In Xcode GUI I'm stucked in the same error, even with cloned libpd from github.

You should also generate the CMake project using:

cd Dependencies/LibPdBuild/MacOSX && cmake .. -GXcode && cd ../../..

and of course, you should use the same scheme Camomile-libpd

...now I have a new error:

The errors might be related to the missing compile definition "PDINSTANCE=1". You should add this to the projucer projects.

emviveros commented 3 years ago

The errors might be related to the missing compile definition "PDINSTANCE=1". You should add this to the projucer projects.

Now the "Header Search Paths" field in Configurations in Projucer project have the entries:

PD_INTERNAL=1
JUCE_VST3_CAN_REPLACE_VST2=0
PD=1
PDINSTANCE=1

And now I have an error but I can't understand what I need to do... Captura de Tela 2020-10-06 às 11 42 09

The codes with problems signaled:

Except float2bits, all depend of random.h

porres commented 3 years ago

I might have fixed float2bits

porres commented 3 years ago

as for brown~ I don't know...

"random_frand" is defined in random.h

pierreguillot commented 3 years ago

There are some missing include in float2bits.c (alloca.h for linux/macos or malloc for Windows I think) and I think you will fix random problems if you don't use inline methods or if you force the method to be always inline.

emviveros commented 3 years ago

I might have fixed float2bits

Passed... Now only lack random.h objects

Captura de Tela 2020-10-06 às 12 33 56

porres commented 3 years ago

I think you will fix random problems if you don't use inline methods or if you force the method to be always inline.

I don't really know what this means :) Matt Barber coded this for me.

please give me an example of the needed change

porres commented 3 years ago

please give me an example of the needed change

or if it isn't too much to ask, send me a PR?

pierreguillot commented 3 years ago

The simplest solution would be to declare the function random_frand and random_trand in the header random.h without inline and to write the function in the c file random.c (of course, you have to include random.c in the project but I guess you already do that).

porres commented 3 years ago

Well, I'm really a dummy when it comes to programming, so... I just included random_frand inside every object without "inline" and removed it from random.h

@emviveros - see if at least brown~ now will work

porres commented 3 years ago

wait, I have to do also the same for trand

porres commented 3 years ago

ok, now maybe it all works, hopefully...

porres commented 3 years ago

there's a bunch of other "inline" thingies still in random.h, so not sure that will still be a problem. I only took care of random_frand and random_trand

emviveros commented 3 years ago

I replaced from else github files:

And have this error now: Captura de Tela 2020-10-06 às 13 56 39

porres commented 3 years ago

let's do this via telegram?

emviveros commented 3 years ago

Why the functions in the separate codes need to have different names?

I need to modify rescale~.c, peak~.c and rms~.c because of error "symbol multiply defined!" (post #5 in this tread) to pass.

There is a another solution don't simple rename the fuctions repeated in different externals sources?

emviveros commented 3 years ago

let's do this via telegram?

Now!

pierreguillot commented 3 years ago

The functions should be declared as static if you declare them in all the c files that need it

static uint32_t random_trand(uint32_t* s1, uint32_t* s2, uint32_t* s3 ){
    // This function is provided for speed in inner loops where the
    // state variables are loaded into registers.
    // Thus updating the instance variables can
    // be postponed until the end of the loop.
    *s1 = ((*s1 &  (uint32_t)- 2) << 12) ^ (((*s1 << 13) ^  *s1) >> 19);
    *s2 = ((*s2 &  (uint32_t)- 8) <<  4) ^ (((*s2 <<  2) ^  *s2) >> 25);
    *s3 = ((*s3 &  (uint32_t)-16) << 17) ^ (((*s3 <<  3) ^  *s3) >> 11);
    return *s1 ^ *s2 ^ *s3;
}

static float random_frand(uint32_t* s1, uint32_t* s2, uint32_t* s3)
{
    // return a float from -1.0 to +0.999...
    union { uint32_t i; float f; } u;        // union for floating point conversion of result
    u.i = 0x40000000 | (random_trand(s1, s2, s3) >> 9);
    return u.f - 3.f;
}
porres commented 3 years ago

thanks :) I suspected so. We did it and it seems to be working now ;) thanks a lot!

emviveros commented 3 years ago

Yes.. Compilation end successfully! Now I'm going to test and if all's ok, I post here the steps needed to compile Camomile_Else in OSx.

Thanks a lot Pierre and Porres!! :)

alfonso73 commented 3 years ago

Thanks for the effort guys. I'll try to translate to Win10 and post here after Esteban will post his steps. Thanks (btw Camomile + Else...wooooowwww!)

www.elgallorojorecords.bandcamp.com/ https://elgallorojorecords.bandcamp.com/ soundcloud.com/alfonsosantimone www.facebook.com/alfonsosantimone

On Tue, Oct 6, 2020 at 8:02 PM Esteban Viveros notifications@github.com wrote:

Yes.. Compilation end successfully! Now I'm going to test and if all's ok, I post here the steps needed to compile Camomile_Else in OSx.

Thanks a lot Pierre and Porres!! :)

— You are receiving this because you are subscribed to this thread. Reply to this email directly, view it on GitHub https://github.com/pierreguillot/Camomile/issues/214#issuecomment-704450303, or unsubscribe https://github.com/notifications/unsubscribe-auth/AAYUVYVCIJPOQ7VAOU4TBULSJNLVFANCNFSM4SD633UQ .

emviveros commented 3 years ago

Well.. I tried to open the patch All_objects.pd from else and some objects failed to open. In Camomile terminal I have these messages:

Camomile 1.0.7 for Pd 0.51.1
pd.stalFx - no graph-on-parent: symbol /Users/esteban/Desktop/else_example_camomile.pd
 else/table~
... couldn't create
 else/nbang
... couldn't create
 else/hann~
... couldn't create
 else/bin.shift~
... couldn't create
 else/args
... couldn't create
 else/blocksize~
... couldn't create
 else/click
... couldn't create
 else/properties
... couldn't create
 else/loadbanger
... couldn't create
 else/lb
... couldn't create
 else/initmess
... couldn't create
 else/break
... couldn't create
 else/any2symbol
... couldn't create
 else/changed
... couldn't create
 else/order
... couldn't create
 else/hot
... couldn't create
 else/setmess
... couldn't create
 else/pack2
... couldn't create
 else/routeall
... couldn't create
 else/routetype
... couldn't create
 else/sig2float~
... couldn't create
 else/s2f~
... couldn't create
 else/float2sig~
... couldn't create
 else/f2s~
... couldn't create
 else/dir
... couldn't create
 else/sysrt.in
... couldn't create
 else/sysrt.out
... couldn't create
 else/ctl.in
... couldn't create
 else/ctl.out
... couldn't create
 else/touch.in
... couldn't create
 else/touch.out
... couldn't create
 else/pgm.in
... couldn't create
 else/pgm.out
... couldn't create
 else/bend.in
... couldn't create
 else/bend.out
... couldn't create
 else/note.in
... couldn't create
 else/note.out

Here the complete log message provided by camomile terminal. camomile_else_terminal_error01.txt

Although there are these errors I was able to run simple patches in PdStal and PdStalFx always when there are no abstractions involved.

But are some work to do for provide support for all Else library.

testes video camomile else.zip pdPatches_testing Camomile-Else.zip

porres commented 3 years ago

let's take one at a time... first, some of these are abstractions. One of them is sysrt.in, which is very simple and I can't see why it could go wrong as it's just a vanilla abstraction using basically just "selecct", here it is

Screen Shot 2020-10-06 at 17 20 42
pierreguillot commented 3 years ago

I didn't try but did you check if it is not just prefix "else/" that causes the problem ? because the else objects are now like vanilla objects

porres commented 3 years ago

yeah, we figure it's something to do with that. But many objects in the else library are abstractions that use the "else/object" format, so maybe that's the issue.

Also, it's unclear to me how to use abstractions that rely on externals in camomile, can you help us?

alfonso73 commented 3 years ago

I guess that all the externals compiled with Camomile behave as plain vanilla objects so as long as the abstractions calling the externals are in the same path of the main Camomile pd patch everything should work fine. But let's see what @pierreguillot thinks about it.

porres commented 3 years ago

Ok, so I tested loading a patch (named All_compiled_objects.pd) only containing compiled objects, and it was almost a complete success! The object it had a problem with was "symbol2any". Here's the relevant issues.

tried /Users/porres/Documents/Pd/externals/else/All_compiled_objects.pd and succeeded warning: old method 'click' for class 'canvas' renamed 'click_aliased'

tried /Users/porres/Documents/Pd/externals/else/symbol2any.pd_darwin and succeeded

/Users/porres/Documents/Pd/externals/else/symbol2any.pd_darwin: dlopen(/Users/porres/Documents/Pd/externals/else/symbol2any.pd_darwin, 10): Symbol not found: _s_list Referenced from: /Users/porres/Documents/Pd/externals/else/symbol2any.pd_darwin Expected in: flat namespace in /Users/porres/Documents/Pd/externals/else/symbol2any.pd_darwin

symbol2any ... couldn't create ... you might be able to track this down from the Find menu.


So, the issue seems to be not being able to find "_s_list ". This must refer to this line of code https://github.com/porres/pd-else/blob/master/Classes/Source/symbol2any.c#L88

The problem is that this doesn't give me any issue with the external itself and I'm also doing the same thing for several other compiled externals. So... I don't know, pretty weird, not sure how to fix this.

porres commented 3 years ago

I guess that all the externals compiled with Camomile behave as plain vanilla objects so as long as the abstractions calling the externals are in the same path of the main Camomile pd patch everything should work fine.

yeah, I guess so. My problem is with how to call objects inside abstractions then. Cause it seems we can't use something like "else/hann~". So I wonder what is the best practice instead.

porres commented 3 years ago

I use the "else/object" format in my abstractions because it's a way that guarantees the right objects are called. Like, if you have another library with an object with the same name, there can be some issues that [declare] won't be able to deal with.

The only way [declare] works is if you don't have anything else called on preferences path or startup. Because if you have a library called as such, it gets priority in the search path.

One other way would be to use "./" instead of "else/"... but I suspect that might not work in camomile as well!

If I have to just include the object name in the abstractions called in camomile, then maybe the best would be to ship a set of abstractions specially for camomile

porres commented 3 years ago

as for the warning "old method 'click' for class 'canvas' renamed 'click_aliased", that must be something related to my "click" object. I made some changes, but I don't know if it will make a difference => https://github.com/porres/pd-else/blob/master/Classes/Source/click.c

porres commented 3 years ago

ok, so the symbol2any issue is that it wasn't compiled so it seems, trying again ;)

emviveros commented 3 years ago

Steps to Compile Camomile with ELSE in OSx

  1. Clone Else Repository

    cd ~/
    git clone https://github.com/porres/pd-else.git
  2. Clone Camomile Repository

    git clone --recursive https://github.com/pierreguillot/Camomile.git
  3. Create in Camomile directory the folder ~/Camomile/Source/Pd/External and Copy the source codes of Else in this folder. Copy Else “shared” folder into ~/Camomile/Source/Pd/External to.

    mkdir ~/Camomile/Source/Pd/Externals
    cp ~/pd-else/Classes/Source/*.* ~/Camomile/Source/Pd/Externals
    cp ~/pd-else/Classes/Aliases/*.* ~/Camomile/Source/Pd/Externals
    cp -R ~/pd-else/shared ~/Camomile/Source/Pd/Externals
  4. Replace ~/Camomile/Source/Pd/x_libpd_multi.c for this x_libpd_multi.c

  5. Open file by file and set External Folder, set Configuration Settings "Header Search Paths” and export to Xcode.

    cd Camomile
    open .
    • CamomileFx.jucer in “~/Camomile/Effect” folder;
    • CamomileLV2.jucer in “~/Camomile/LV2” folder;
    • Camomile.jucer in “~/Camomile/Instrument” folder

For each file, in Projucer manually:

For each file:

For each file:

../../../Source/Pd/Externals/
../../../Source/Pd/Externals/shared

Clip-setJucerProject_CamomileEffect

  1. Open Camomile.xcworkspace in Xcode

  2. Uncheck “Camomile - AU” label in Target Membership of the autogenerated file “include_juce_audio_plugin_client_AU.r" in "JUCE Library Code” folder Clip-Sem Título

  3. Go back to terminal and in Camomile folder run:

    cd Dependencies/LibPdBuild/MacOSX && cmake .. -GXcode && cd ../../..
  4. Build in Xcode (Command+B) or in Terminal running:

    xcodebuild -workspace Camomile.xcworkspace -scheme Camomile-libpd -configuration Release
  5. After Successful compilation, binaries are in "~/Camomile/Plugins" folder.


CHANGELOG

2020-10-08 Added CAMOMILE=1 preprocessor flag in step 5

emviveros commented 3 years ago

@pierreguillot, What's the better way to include ELSE externals abstractions in Camomile-ELSE compilation?

porres commented 3 years ago

So, I guess one needs to have a folder with all abstractions and call them. The abstractions can be on the same folder of the patch or maybe in some subfolder ("else_abs" for instance).

The thing is that the abstractions themselves cannot call objects (either compiled or abstractions) from the else library using prefixes, like "else/sine~" or even "./sine~", right???

So, because of this, I created a separate folder with abstractions that will properly run in Camomile, where all objects are just called by their names without prefixes. And I have this separately because I want to keep using "else/sine~" in my regular external folder distribution.

porres commented 3 years ago

but anyway, all is fine compiling the else library now! We just need to figure out a way to deal with my "click" object overwritting some internal Pd Vanilla class, and I hope to have fixed that by renaming the object to "canvas.click", let's see!

porres commented 3 years ago

it seems that if I use [declare -path else] in my abstractions I can guarantee they'll load even if you have other libraries with objects with the same name pre installed! I guess I'll use that instead.

pierreguillot commented 3 years ago

I recommend you to use relative path but you can use the declare object also. It is exactly like Pd app except that your library is included as part of Vanilla objects. If necessary check the console and you'll see where Pd looks for objects, abstractions, etc.

If you want to do a Camomile-Else project, I recommend you to do fork of Camomile and to include the Else project as a submodule. This way all the Else specific parts will be done on it and you'll be able to setup a CI system or whatever. And I think most of the questions are now more related to the structure of the Else library.

porres commented 3 years ago

I recommend you to use relative path

How exactly? Like having a subfolder in the same folder of the patch with the abstractions and do "folder/object"?

emviveros commented 3 years ago

@porres

So, I guess one needs to have a folder with all abstractions and call them. The abstractions can be on the same folder of the patch or maybe in some subfolder ("else_abs" for instance).

Yes we can deal with this workflow.. But I thinking in a design for the Else public: patching yes, but not programming a lot.. at least that's what I imagine when I think of the facilities that ELSE brings.

@pierreguillot

If you want to do a Camomile-Else project, I recommend you to do fork of Camomile and to include the Else project as a submodule.

Thanks again and again... I believe that this is the best solution. I have the energy to take this forward, but still not much knowledge. I hope to count on everyone's help to make it happen.

@pierreguillot

This way all the Else specific parts will be done on it and you'll be able to setup a CI system or whatever. And I think most of the questions are now more related to the structure of the Else library.

Ok! Time to close the issue once the task of compile Camomile with Else externals on OSx is completed.

At this time without a "Camomile-ELSE" like fork, the workflow to use Camomile with ELSE library in OSx is:

porres commented 3 years ago

@pierreguillot , could you help us with something please? Sorry to bug you, but I'm just too dummy...

So, my click object interferes with an internal function in Vanilla and my idea is to provide a compilation flag to basically disable the object (which doesn't have any use in camomile anyway). But how can we do this? :)

I've made a first draft at https://github.com/porres/pd-else/blob/master/Classes/Source/click.c

I have an "#ifdef PD" in the "click_new" section so the object compiles fine

https://github.com/porres/pd-else/blob/master/Classes/Source/click.c#L145

and I have an #undef PD is we have a "#ifdef CAMOMILE", so when we compile for camomile it should disable the object.

I hope that's half way through it and on the right track, but how would one tell the object we are compiling for camomile? I supposed that at some point in the make file I had to include "#define CAMOMILE 1" but that didn't work.

porres commented 3 years ago

I supposed that at some point in the make file I had to include "#define CAMOMILE 1" but that didn't work.

yeah, of course, cause "#" in the makefile just comments the code out :) hahahah, but "define" without "#" doesn't work either...

Lucarda commented 3 years ago

Not knowing if this is already defined elsewhere in the makefiles but what you want to add is:

CPPFLAGS="-DCAMOMILE"

i think

porres commented 3 years ago

i think

it's working :) thanks!

emviveros commented 3 years ago

Where can I put this flag???

maybe here?? Captura de Tela 2020-10-07 às 19 56 36