Basic Compilation Question

Hi All,

I've been looking all over at documents on how to compile a new custom
kernel and I'm mostly there, but I can't get it to compile. I've done
the following:

Download kernel source (http://code.google.com/p/beagleboard/wiki/
BeagleSourceCode)
Downloaded and installed ARM Linux GCC (http://www.codesourcery.com/
gnu_toolchains/arm/portal/release313)

Extracted the kernel to a directory on my Desktop, and in a terminal
tried to run:
      make CROSS_COMPILE=arm-none-linux-gnueabi- distclean
      make CROSS_COMPILE=arm-none-linux-gnueabi-
omap3_beagle_defconfig
      make CROSS_COMPILE=arm-none-linux-gnueabi- uImage

But I receive the following error:
make: arm-none-linux-gnueabi-gcc: Command not found
make[2]: arm-none-linux-gnueabi-gcc: Command not found

I know I must be missing something very basic, but can't find any
answers.

Also, what is the difference in compiling a uImage this way, versus
Bitbake (I guess I don't really understand BitBake, but I know it
makes my life much easier some how)?

Thanks!

...just because you downloaded and installed the compiler doesn't mean
that your command shell knows where it is.

You have to add the installation directory to your PATH environment variable.

I then use:

make ARCH=arm CROSS_COMPILE=/home/bagside/CodeSourcery/Sourcery_G++_Lite/bin/arm-none-linux-gnueabi-
omap3_beagle_android_defconfig

make ARCH=arm CROSS_COMPILE=/home/bagside/CodeSourcery/Sourcery_G++_Lite/bin/arm-none-linux-gnueabi-
menuconfig

make ARCH=arm CROSS_COMPILE=/home/bagside/CodeSourcery/Sourcery_G++_Lite/bin/arm-none-linux-gnueabi-
modules

make ARCH=arm CROSS_COMPILE=/home/bagside/CodeSourcery/Sourcery_G++_Lite/bin/arm-none-linux-gnueabi-
uImage

- dan

Ok. I'm stupid. I don't know how to set the install direction to PATH.
The installer said it was setting this.

I tried this, but still get the same error:
make ARCH=arm CROSS_COMPILE=/home/remotevs/CodeSourcery_G++_Lite/bin/
arm-none-linux-gnueabi- uImage
make: /home/remotevs/CodeSourcery_G++_Lite/bin/arm-none-linux-gnueabi-
gcc: Command not found

You should check to make sure that your PATH variable has the
codesourcery bin directory in it. The PATH variable is the search path
that the Linux shell you use (probably "bash") uses to find any
executable programs. Assuming your shell is bash, you can look at your
~/.bashrc file and see if there is a line something like this:
export PATH=$PATH:/opt/oe/tmp/cross/armv7a/bin:/opt/oe/tmp/staging/i686-linux/usr/bin

This line adds my two OpenEmbedded directories to the search path. You
will want to use your CodeSourcery directories instead.
Once you edit your .bashrc file, it will set the path for you
automatically when you log in. To make the PATH change take effect
without logging out and back in again, you can just type the same
"export PATH=..." line at your shell prompt.

Brett

It isn't so much bitbake by itself that makes things easier, it is the
whole OpenEmbedded infrastructure that does a lot of stuff for you,
which can be very helpful, but which takes some effort to understand.
As far as I can tell (and I'm probably missing things, as I am a
novice-level OpenEmbedded user), OpenEmbedded does the following:
1) You checkout a set of bitbake recipes (control files) using git
(version control app)
2) You then run a single bitbake command (like "bitbake console-image")
3) bitbake executes a bunch of recipes and sub-recipes that:
3a) download x86 tools (using wget to pull them from various repositories)
3b) download patches (ditto)
3c) applies patches
3d) compiles the tools for x86
3e) downloads omap kernel source, patches, omap-native tools, more
patches, omap-native applications, yet more patches
3f) compiles everything for the omap

So basically, from scratch, it builds the tools to build the tools to
build the system you want. Pretty cool, but kind of boggling to get a
handle on.

What you then need to figure out is:
1) Where all the results are put
2) What to do if you want to make modifications to the omap kernel or
omap-native tools/apps

For #2, you can either choose the hack way (which is what I'm doing
now) or the better way (which involves writing or modifying bitbake
recipes).

And one point I was confused on to start with- If you use
OpenEmbedded, you don't need to install the CodeSourcery tools, since
OE downloads and builds them from scratch. It does put them in
different directories and they have a different prefix:
arm-angstrom-linux-gnueabi-

For now, if you just need to rebuild the kernel, sticking with
CodeSourcery tools and a simple git kernel checkout is probably the
simplest. Once you start wanting to build more tools of your own and
make your own custom filesystem images, OpenEmbedded is worth a look
since it assembles a "best of" collection of tools and patches for
you.

Brett

Yeah I'm compiling my image now with the CodeSourcery tools and will
look into OE later.

I've only got about 2 weeks left before my Senior design project is
due and I'm trying to get the BB to boot as fast as possible:
Right now I'm recompiling an image without things such as Bluetooth,
Sound, etc.

Then I need to figure out how to boot the kernel from NAND and leave
the file system on the MMC card (if this is possible), to boot as fast
as possible.

Thanks!

So I've tried compiling with multiple configurations and mainly the
default configuration and I get this error:

make[3]: *** [drivers/i2c/chips/twl4030_power.o] Error 1
make[2]: *** [drivers/i2c/chips] Error 2
make[1]: *** [drivers/i2c] Error 2
make: *** [drivers] Error 2

I'm not sure what to do here....

Can you give the make command that you are using, and some more lines of context from the output?

Brett

I've extract the kernel source to a directory on my desktop and I'm in
the root directory of the kernel source and I ran the following
command:

remotevs@remotevs-desktop:~/Desktop/Kernel/2.6_kernel_nobt$ make
ARCH=arm CROSS_COMPILE=/home/remotevs/CodeSourcery/Sourcery_G++_Lite/
bin/arm-none-linux-gnueabi- uImage

Before this I ran menuconfig and just saved it without making and
changes to create .config

Here are all the lines when it starts to fail:

drivers/i2c/chips/twl4030_power.c:23:38: error: asm/arch/
power_companion.h: No such file or directory
drivers/i2c/chips/twl4030_power.c:24:28: error: asm/arch/clock.h: No
such file or directory
drivers/i2c/chips/twl4030_power.c:25:26: error: asm/arch/mux.h: No
such file or directory
drivers/i2c/chips/twl4030_power.c:26:27: error: asm/arch/prcm.h: No
such file or directory
drivers/i2c/chips/twl4030_power.c: In function
'twl4030_vaux1_ldo_use':
drivers/i2c/chips/twl4030_power.c:49: warning: implicit declaration of
function 't2_out'
drivers/i2c/chips/twl4030_power.c:49: error: 'PM_RECEIVER' undeclared
(first use in this function)
drivers/i2c/chips/twl4030_power.c:49: error: (Each undeclared
identifier is reported only once
drivers/i2c/chips/twl4030_power.c:49: error: for each function it
appears in.)
drivers/i2c/chips/twl4030_power.c:49: error: 'ENABLE_VAUX1_DEDICATED'
undeclared (first use in this function)
drivers/i2c/chips/twl4030_power.c:50: error: 'TWL4030_VAUX1_DEDICATED'
undeclared (first use in this function)
drivers/i2c/chips/twl4030_power.c:54: error: 'ENABLE_VAUX1_DEV_GRP'
undeclared (first use in this function)
drivers/i2c/chips/twl4030_power.c:55: error: 'TWL4030_VAUX1_DEV_GRP'
undeclared (first use in this function)
drivers/i2c/chips/twl4030_power.c: In function
'twl4030_vaux1_ldo_unuse':
drivers/i2c/chips/twl4030_power.c:76: error: 'PM_RECEIVER' undeclared
(first use in this function)
drivers/i2c/chips/twl4030_power.c:76: error: 'TWL4030_VAUX1_DEDICATED'
undeclared (first use in this function)
drivers/i2c/chips/twl4030_power.c:80: error: 'TWL4030_VAUX1_DEV_GRP'
undeclared (first use in this function)
drivers/i2c/chips/twl4030_power.c: In function
'twl4030_vaux2_ldo_use':
drivers/i2c/chips/twl4030_power.c:97: error: 'PM_RECEIVER' undeclared
(first use in this function)
drivers/i2c/chips/twl4030_power.c:97: error: 'ENABLE_VAUX2_DEDICATED'
undeclared (first use in this function)
drivers/i2c/chips/twl4030_power.c:98: error: 'TWL4030_VAUX2_DEDICATED'
undeclared (first use in this function)
drivers/i2c/chips/twl4030_power.c:102: error: 'ENABLE_VAUX2_DEV_GRP'
undeclared (first use in this function)
drivers/i2c/chips/twl4030_power.c:103: error: 'TWL4030_VAUX2_DEV_GRP'
undeclared (first use in this function)
drivers/i2c/chips/twl4030_power.c: In function
'twl4030_vaux2_ldo_unuse':
drivers/i2c/chips/twl4030_power.c:123: error: 'PM_RECEIVER' undeclared
(first use in this function)
drivers/i2c/chips/twl4030_power.c:123: error:
'TWL4030_VAUX2_DEDICATED' undeclared (first use in this function)
drivers/i2c/chips/twl4030_power.c:127: error: 'TWL4030_VAUX2_DEV_GRP'
undeclared (first use in this function)
drivers/i2c/chips/twl4030_power.c: In function
'twl4030_vaux3_ldo_use':
drivers/i2c/chips/twl4030_power.c:144: error: 'PM_RECEIVER' undeclared
(first use in this function)
drivers/i2c/chips/twl4030_power.c:144: error: 'ENABLE_VAUX3_DEDICATED'
undeclared (first use in this function)
drivers/i2c/chips/twl4030_power.c:145: error:
'TWL4030_VAUX3_DEDICATED' undeclared (first use in this function)
drivers/i2c/chips/twl4030_power.c:149: error: 'ENABLE_VAUX3_DEV_GRP'
undeclared (first use in this function)
drivers/i2c/chips/twl4030_power.c:150: error: 'TWL4030_VAUX3_DEV_GRP'
undeclared (first use in this function)
drivers/i2c/chips/twl4030_power.c: In function
'twl4030_vaux3_ldo_unuse':
drivers/i2c/chips/twl4030_power.c:169: error: 'PM_RECEIVER' undeclared
(first use in this function)
drivers/i2c/chips/twl4030_power.c:169: error:
'TWL4030_VAUX3_DEDICATED' undeclared (first use in this function)
drivers/i2c/chips/twl4030_power.c:174: error: 'TWL4030_VAUX3_DEV_GRP'
undeclared (first use in this function)
drivers/i2c/chips/twl4030_power.c: In function
'enable_vmode_companion_voltage_scaling':
drivers/i2c/chips/twl4030_power.c:241: error: 'PRCM_VDD1' undeclared
(first use in this function)
drivers/i2c/chips/twl4030_power.c:242: error: 'PM_RECEIVER' undeclared
(first use in this function)
drivers/i2c/chips/twl4030_power.c:242: error: 'R_VDD1_VFLOOR'
undeclared (first use in this function)
drivers/i2c/chips/twl4030_power.c:243: error: 'R_VDD1_VROOF'
undeclared (first use in this function)
drivers/i2c/chips/twl4030_power.c:244: error: 'R_VDD1_STEP' undeclared
(first use in this function)
drivers/i2c/chips/twl4030_power.c:245: error: 'EN_SCALE' undeclared
(first use in this function)
drivers/i2c/chips/twl4030_power.c:245: error: 'R_VDD1_VMODE_CFG'
undeclared (first use in this function)
drivers/i2c/chips/twl4030_power.c:247: error: 'PRCM_VDD2' undeclared
(first use in this function)
drivers/i2c/chips/twl4030_power.c:248: error: 'R_VDD2_VFLOOR'
undeclared (first use in this function)
drivers/i2c/chips/twl4030_power.c:249: error: 'R_VDD2_VROOF'
undeclared (first use in this function)
drivers/i2c/chips/twl4030_power.c:250: error: 'R_VDD2_STEP' undeclared
(first use in this function)
drivers/i2c/chips/twl4030_power.c:251: error: 'R_VDD2_VMODE_CFG'
undeclared (first use in this function)
drivers/i2c/chips/twl4030_power.c: In function
'disable_vmode_companion_voltage_scaling':
drivers/i2c/chips/twl4030_power.c:264: error: 'PM_RECEIVER' undeclared
(first use in this function)
drivers/i2c/chips/twl4030_power.c:264: error: 'DIS_SCALE' undeclared
(first use in this function)
drivers/i2c/chips/twl4030_power.c:264: error: 'R_VDD1_VMODE_CFG'
undeclared (first use in this function)
drivers/i2c/chips/twl4030_power.c: In function
'set_bits_companion_reg':
drivers/i2c/chips/twl4030_power.c:292: warning: implicit declaration
of function 't2_in'
drivers/i2c/chips/twl4030_power.c: In function 'protect_pm_master':
drivers/i2c/chips/twl4030_power.c:325: error: 'PM_MASTER' undeclared
(first use in this function)
drivers/i2c/chips/twl4030_power.c:325: error: 'KEY_LOCK' undeclared
(first use in this function)
drivers/i2c/chips/twl4030_power.c:325: error: 'R_PROTECTKEY'
undeclared (first use in this function)
drivers/i2c/chips/twl4030_power.c: In function 'unprotect_pm_master':
drivers/i2c/chips/twl4030_power.c:332: error: 'PM_MASTER' undeclared
(first use in this function)
drivers/i2c/chips/twl4030_power.c:332: error: 'KEY_UNLOCK1' undeclared
(first use in this function)
drivers/i2c/chips/twl4030_power.c:332: error: 'R_PROTECTKEY'
undeclared (first use in this function)
drivers/i2c/chips/twl4030_power.c:333: error: 'KEY_UNLOCK2' undeclared
(first use in this function)
drivers/i2c/chips/twl4030_power.c: In function 'init_pwr_intc':
drivers/i2c/chips/twl4030_power.c:344: error: 'PM_INT' undeclared
(first use in this function)
drivers/i2c/chips/twl4030_power.c:344: error: 'SIH_COR' undeclared
(first use in this function)
drivers/i2c/chips/twl4030_power.c:344: error: 'SIH_EXCLEN' undeclared
(first use in this function)
drivers/i2c/chips/twl4030_power.c:344: error: 'R_PWR_SIH_CTRL'
undeclared (first use in this function)
drivers/i2c/chips/twl4030_power.c:347: error: 'R_PWR_IMR1' undeclared
(first use in this function)
drivers/i2c/chips/twl4030_power.c:348: error: 'R_PWR_IMR2' undeclared
(first use in this function)
drivers/i2c/chips/twl4030_power.c:351: error: 'R_PWR_EDR1' undeclared
(first use in this function)
drivers/i2c/chips/twl4030_power.c:352: error: 'R_PWR_EDR2' undeclared
(first use in this function)
drivers/i2c/chips/twl4030_power.c:355: error: 'R_PWR_ISR1' undeclared
(first use in this function)
drivers/i2c/chips/twl4030_power.c:356: error: 'R_PWR_ISR2' undeclared
(first use in this function)
drivers/i2c/chips/twl4030_power.c: In function
'config_sleep_wake_sequence':
drivers/i2c/chips/twl4030_power.c:399: error: 'PM_RECEIVER' undeclared
(first use in this function)
drivers/i2c/chips/twl4030_power.c:399: error: 'R_HFCLKOUT_DEV_GRP'
undeclared (first use in this function)
drivers/i2c/chips/twl4030_power.c:402: error: 'PM_MASTER' undeclared
(first use in this function)
drivers/i2c/chips/twl4030_power.c:402: error: 'R_SEQ_ADD_A2S'
undeclared (first use in this function)
drivers/i2c/chips/twl4030_power.c:404: error: 'R_SEQ_ADD_SA12'
undeclared (first use in this function)
drivers/i2c/chips/twl4030_power.c:406: error: 'R_SEQ_ADD_S2A3'
undeclared (first use in this function)
drivers/i2c/chips/twl4030_power.c:412: error: 'R_MEMORY_ADDRESS'
undeclared (first use in this function)
drivers/i2c/chips/twl4030_power.c:414: error: 'R_MEMORY_DATA'
undeclared (first use in this function)
drivers/i2c/chips/twl4030_power.c:444: error: 'LVL_WAKEUP' undeclared
(first use in this function)
drivers/i2c/chips/twl4030_power.c:444: error: 'R_P1_SW_EVENTS'
undeclared (first use in this function)
drivers/i2c/chips/twl4030_power.c:445: error: 'R_P2_SW_EVENTS'
undeclared (first use in this function)
drivers/i2c/chips/twl4030_power.c:446: error: 'R_P3_SW_EVENTS'
undeclared (first use in this function)
drivers/i2c/chips/twl4030_power.c: In function 'power_companion_init':
drivers/i2c/chips/twl4030_power.c:544: error: 'HFCLK_FREQ_26_MHZ'
undeclared (first use in this function)
drivers/i2c/chips/twl4030_power.c:550: warning: implicit declaration
of function 'clk_get'
drivers/i2c/chips/twl4030_power.c:550: warning: assignment makes
pointer from integer without a cast
drivers/i2c/chips/twl4030_power.c:551: warning: implicit declaration
of function 'clk_get_rate'
drivers/i2c/chips/twl4030_power.c:552: warning: implicit declaration
of function 'clk_put'
drivers/i2c/chips/twl4030_power.c:555: error: 'HFCLK_FREQ_19p2_MHZ'
undeclared (first use in this function)
drivers/i2c/chips/twl4030_power.c:557: error: 'HFCLK_FREQ_38p4_MHZ'
undeclared (first use in this function)
drivers/i2c/chips/twl4030_power.c:559: error: 'HIGH_PERF_SQ'
undeclared (first use in this function)
drivers/i2c/chips/twl4030_power.c:565: error: 'PM_MASTER' undeclared
(first use in this function)
drivers/i2c/chips/twl4030_power.c:565: error: 'R_CFGBOOT' undeclared
(first use in this function)
make[3]: *** [drivers/i2c/chips/twl4030_power.o] Error 1
make[2]: *** [drivers/i2c/chips] Error 2
make[1]: *** [drivers/i2c] Error 2
make: *** [drivers] Error 2

Where did you get the kernel source, and how did you get it? Depending on the source, it may be that it is unstable and any given pull of the files might not compile properly.

         Brett

Just downloaded it from:
http://code.google.com/p/beagleboard/wiki/BeagleSourceCode

Saved this file from Firefox and extracted.
I'm a newbie, I'm assuming there is a much better/safer way to do
this. I'm trying to learn :slight_smile:

So I redownloaded everything using git and downloaded the latest
kernel and compiled it using:

make ARCH=arm CROSS_COMPILE=/home/remotevs/CodeSourcery/Sourcery_G+
+_Lite/bin/arm-none-linux-gnueabi- distclean
make ARCH=arm CROSS_COMPILE=/home/remotevs/CodeSourcery/Sourcery_G+
+_Lite/bin/arm-none-linux-gnueabi- menuconfig (saved default config)
make ARCH=arm CROSS_COMPILE=/home/remotevs/CodeSourcery/Sourcery_G+
+_Lite/bin/arm-none-linux-gnueabi- uImage

and I receive the following messages:
  OBJCOPY arch/arm/boot/Image
  Kernel: arch/arm/boot/Image is ready
  AS arch/arm/boot/compressed/head.o
  GZIP arch/arm/boot/compressed/piggy.gz
  AS arch/arm/boot/compressed/piggy.o
  CC arch/arm/boot/compressed/misc.o
  LD arch/arm/boot/compressed/vmlinux
  OBJCOPY arch/arm/boot/zImage
  Kernel: arch/arm/boot/zImage is ready
  UIMAGE arch/arm/boot/uImage
"mkimage" command not found - U-Boot images will not be built
  Image arch/arm/boot/uImage is ready
remotevs@remotevs-desktop:~/Desktop/Kernel/newkernel/linux-omap-2.6$

However, in arch/arm/boot there is a file Image and zImage, but no
uImage. I tried booting Image, after renaming it to uImage.bin but it
says:
Booting from
mmc ...
Wrong Image Format for bootm
command
ERROR: can't get kernel image!

What am I doing wrong that I don't see a uImage file being created
after it is compiled?

Thanks!

So I redownloaded everything using git and downloaded the latest
kernel and compiled it using:

make ARCH=arm CROSS_COMPILE=/home/remotevs/CodeSourcery/Sourcery_G+
+_Lite/bin/arm-none-linux-gnueabi- distclean
make ARCH=arm CROSS_COMPILE=/home/remotevs/CodeSourcery/Sourcery_G+
+_Lite/bin/arm-none-linux-gnueabi- menuconfig (saved default config)
make ARCH=arm CROSS_COMPILE=/home/remotevs/CodeSourcery/Sourcery_G+
+_Lite/bin/arm-none-linux-gnueabi- uImage

and I receive the following messages:
OBJCOPY arch/arm/boot/Image
Kernel: arch/arm/boot/Image is ready
AS arch/arm/boot/compressed/head.o
GZIP arch/arm/boot/compressed/piggy.gz
AS arch/arm/boot/compressed/piggy.o
CC arch/arm/boot/compressed/misc.o
LD arch/arm/boot/compressed/vmlinux
OBJCOPY arch/arm/boot/zImage
Kernel: arch/arm/boot/zImage is ready
UIMAGE arch/arm/boot/uImage
"mkimage" command not found - U-Boot images will not be built
Image arch/arm/boot/uImage is ready
remotevs@remotevs-desktop:~/Desktop/Kernel/newkernel/linux-omap-2.6$

However, in arch/arm/boot there is a file Image and zImage, but no
uImage. I tried booting Image, after renaming it to uImage.bin but it
says:
Booting from
mmc ...
Wrong Image Format for bootm
command
ERROR: can't get kernel image!

What am I doing wrong that I don't see a uImage file being created
after it is compiled?

Thanks!

Hi,

"mkimage" command not found

ubuntu/debian: "sudo apt-get install uboot-mkimage" should fix that for you.

Regards,

It is telling you (somewhat cryptically) what the problem is: “mkimage command not found”. You need to install mkimage for your Linux system and make sure it is in your path. Are you using Ubuntu? If so, this command may do it:
sudo apt-get install uboot-mkimage

apt-get is a really cool tool, because it will download and install commands and all of their dependencies. The trick is knowing what package name to ask for, but a google search can often turn that up.

Brett

I got it now.

Thanks guys!

I'm just a rookie trying to learn the ropes as fast as I can.

So I got the image to compile and I put it on my MMC and it partials
loads but sits at:

Loading Image Kernel...

The kernel is only 1.6MB and the old one was 2.5MB. I compiled it
using the default config, so I would assume it should be near the same
size.

Do I need to change anything with MLO, u-boot, etc to get my custom
kernel to load? I'm not sure where to go from here.

Thanks!

Nope, you shouldn't need any changes...

It's smaller, since the default Angstrom kernel has a number of
modules built in.

I'm guessing you built from the top of the git tree, not the best
place for your first build.

For quick build up, that'll boot:

dl, these patches

wget http://rcn-ee.homeip.net:81/dl/omap/beagle/v2.6.29-58cf2f1-oer31/defconfig
wget http://rcn-ee.homeip.net:81/dl/omap/beagle/v2.6.29-58cf2f1-oer31/v2.6.29-58cf2f1-oer31.diff

git clone git://git.kernel.org/pub/scm/linux/kernel/git/tmlind/linux-omap-2.6.git

git checkout 58cf2f1 -b v2.6.29-oer31
patch -p1 < ../v2.6.29-58cf2f1-oer31.diff
cp ../defconfig .config
make ARCH=arm CROSS_COMPILE=/home/remotevs/CodeSourcery/Sourcery_G++_Lite/bin/arm-none-linux-gnueabi-
uImage

PS: patches are based off Koen's latest devel commit in kernel in
Angstrom's Tree here:
http://cgit.openembedded.net/cgit.cgi?url=openembedded/commit/&id=2747c78c7c545a1188cfb255603f20e8ebf67475

Regards,

So I got the image to compile and I put it on my MMC and it partials
loads but sits at:

Loading Image Kernel...

The kernel is only 1.6MB and the old one was 2.5MB. I compiled it
using the default config, so I would assume it should be near the same
size.

Do I need to change anything with MLO, u-boot, etc to get my custom
kernel to load? I'm not sure where to go from here.

Thanks!

Sounds good. I'll try that.

Other people have suggested using OE to all of this, but I'm not
really sure where to even start there. I've invested a lot of time
into this so I want to get it to work this way.

What do you suggest in the future?

You could... But OE doesn't work for building ubuntu/debian/fedora*
kernels.. *okay fedora isn't even close at this point...

I'm not sure on you end application/project, but pulling the latest
git isn't the best idea when it's at 2.6.30-rc's, best to use the
tested git commit and Angstrom's patches, then use "make menuconfig"
to enable anything not enabled you need for your project.

Regards,