aboutsummaryrefslogtreecommitdiff
path: root/include/target.mk
Commit message (Collapse)AuthorAge
* build: use --no-print-directory for dumping subtargetsSven Wegener2025-07-30
| | | | | | | | Or else we end up with "Entering directory" and "Leaving directory" from make in tmp/.targetinfo Signed-off-by: Sven Wegener <sven.wegener@stealer.net> Link: https://github.com/openwrt/openwrt/pull/19326 Signed-off-by: Robert Marko <robimarko@gmail.com>
* targets: add USES_PM auto-featureDaniel Golle2025-07-20
| | | | | | | | | Not all targets support power management, some older or more simple targets don't have CONFIG_PM set. Allow kernel module packages to depend on USES_PM to only be available on targets which got CONFIG_PM=y in their kernel config. Signed-off-by: Daniel Golle <daniel@makrotopia.org>
* targets: add PINCTRL_SUPPORT auto-featureDaniel Golle2025-07-19
| | | | | | | | | | Not all targets have CONFIG_PINCTRL=y set in their kernel config. Let's introduce a feature for that so kernel module packages which select or depend on CONFIG_PINCTRL=y may depend on that, so we can try to prevent leaking CONFIG_PINCTRL=y also into targets which do not require it. Signed-off-by: Daniel Golle <daniel@makrotopia.org>
* kernel: Fix patch folders setting for test kernelMieczyslaw Nalewaj2025-04-23
| | | | | | | Move kernel-version.mk include to proper place to properly set patch folders for test kernel. Fixes: 8865dadea7b94e7859b416d3b1931b897ea43c48 Signed-off-by: Mieczyslaw Nalewaj <namiltd@yahoo.com>
* kernel: move kernel version files to linux/generic directoryChristian Marangi2025-04-22
| | | | | | | | | | | | | | | | | | | | | | | | | | | | To further improve cleanup and maintenance usage, move the kernel version files to target/linux/generic directory. This permits to self contain any change to the specific generic directory instead of having to bload the include directory of periodic changes. In kernel-version.mk we now use GENERIC_PLATFORM_DIR provided by target.mk. To make this work, we need to move the inclusion of kernel-version.mk in target.mk right after GENERIC_PLATFORM_DIR is defined. This also comes to permit downstream project to provide a custom generic directory and specify the kernel version complete of the hash and the minor version without having to affect other feeds. In such case both generic and the target directory are provided as feeds and OpenWrt reference these specific one instead of the generic one. For downstream it's still suggested and preferable to all match the shipped generic kernel minor version but this change permits to at least enforce good practice instead of having to bloat OpenWrt include file of all kind of downstream changes (making porting to OpenWrt mainline even more difficult) Link: https://github.com/openwrt/openwrt/pull/18537 Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
* include: move generic riscv64 ISA to rv64gcZoltan HERPAI2025-04-13
| | | | | | | | | | | | | | | | | | | | | | The current CFLAGS (rv64imafdc) for the riscv64 targets do not contain the full generic compute extension (g), as that also includes the zicsr and zifencei extensions/instructions. Rename the default ISA to 'generic' to add distinction to the current binaries (although it's very minimal), and use rv64gc for CFLAGS. This is also a prep step for the upcoming gcv (vector-extension supporting) targets like the Spacemit K1, and the thead-cores like the TH1520. Compile-tested: all riscv64 targets Runtime-tested: - SiFive Unleashed (FU540) - SiFive Unmatched (FU740) - Nezha D1 (D1) - VisionFive2 (JH7110) Link: https://github.com/openwrt/openwrt/pull/18094 Tested-by: Chuanhong Guo <gch981213@gmail.com> # siflower target Signed-off-by: Zoltan HERPAI <wigyori@uid0.hu>
* target.mk: Fix features detection for PWMWeikai Kong2025-03-28
| | | | | | | | | kmod-leds-pwm depends on @PWM_SUPPORT, instead of adding pwm to the features env for specific targets, use the existing detection method. Signed-off-by: Weikai Kong <priv@pppig236.com> Link: https://github.com/openwrt/openwrt/pull/18185 Signed-off-by: Robert Marko <robimarko@gmail.com>
* target/metadata: set OpenWrt One as the default menuconfig target/profileJohn Crispin2024-12-02
| | | | Signed-off-by: John Crispin <john@phrozen.org>
* Revert "target,base-files: unify handling of procd-ujail"Petr Štetiar2024-11-26
| | | | | | | | | | | This reverts commit ac640718aa0ceae55969bb9e7e45d00bb7bc228a as it removes base-files package when KERNEL_NAMESPACES is deselected, as base-files depends on procd-ujail which needs KERNEL_NAMESPACES. Fixes: #17075 Link: https://github.com/openwrt/openwrt/pull/17081 Link: https://github.com/openwrt/openwrt/pull/17081 Signed-off-by: Petr Štetiar <ynezz@true.cz>
* target,base-files: unify handling of procd-ujailPetr Štetiar2024-11-17
| | | | | | | | | | | Remove the remaining special handling of procd-ujail in a same way as the rest of the packages was handled in the commit 4c65359af49b ("build: fix including busybox, procd and apk/opkg in imagebuilder"). Fixes: 44598c233dd9 ("build: remove broken dependency of metadata on toplevel .config variables") Signed-off-by: Petr Štetiar <ynezz@true.cz> Link: https://github.com/openwrt/openwrt/pull/16986 Signed-off-by: Robert Marko <robimarko@gmail.com>
* build: add comments to makefilesSergey Matsievskiy2024-11-12
| | | | | | | | | | | | | | Add comments to build system makefile functions and variables to help developers in understanding build system internals and ease the development process. This patch adds some documentation examples with proposed doxygen-like syntax. Hopefully, this would start the discussion and result in generation of the makefile documentation guidelines. Signed-off-by: Sergey Matsievskiy <matsievskiysv@gmail.com> Link: https://github.com/openwrt/openwrt/pull/16888 Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
* build: remove broken dependency of metadata on toplevel .config variablesFelix Fietkau2024-11-11
| | | | | | | Instead of relying on .config symbols for metadata, alter the DEFAULT variable of affected packages. Fixes enabling opkg vs apk among others. Signed-off-by: Felix Fietkau <nbd@nbd.name>
* target.mk: init default configs if they are missing in the .configMartin Schiller2024-07-18
| | | | | | | | | | | | The config options that are enabled by default and where other default packages depends on should not only be set if there is no .config file, but also if the .config exists but the config option (e.g. CONFIG_SECCOMP) is missing in the file. This is relevant, for example, if you are working with .config templates and then want to complete the configuration using make defconfig. Signed-off-by: Martin Schiller <ms@dev.tdt.de>
* target.mk: further improve handling of default enabled SECCOMPMartin Schiller2024-07-18
| | | | | | | | | | | | The fix in commit 847fad476f3d ("target.mk: improve handling of default enabled SECCOMP") unfortunately does not work for targets where the ARCH variable is set in ./$(SUBTARGET)/target.mk. To get this working, the ./$(SUBTARGET)/target.mk must be included before the check. Fixes: 847fad476f3d ("target.mk: improve handling of default enabled SECCOMP") Signed-off-by: Martin Schiller <ms@dev.tdt.de>
* target.mk: fix arm architecture level detectionLu jicong2024-07-03
| | | | | | | | | | Now kernel configs of armv6k CPUs don't include CONFIG_CPU_V6. So armv6k CPUs cannot be detected as arm_v6. Fix this by adding detection for CONFIG_CPU_V6K. Signed-off-by: Lu jicong <jiconglu58@gmail.com> Link: https://github.com/openwrt/openwrt/pull/15855 Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
* target.mk: improve handling of default enabled SECCOMPChristian Marangi2024-06-19
| | | | | | | | | | | | | | | | | | Handling default packages selection is really problematic and error prone. In all the changes, the SECCOMP config is enabled by default if supported by the target. This is problematic for the scenario of the first .config creation where this option will be enabled by default but the package default are already being parsed. This cause the reparsing of the default package on the next command and the "outdated config" error. To better handle this special case, add additiona logic to match the dependency in the config and check if CONFIG_SECCOMP should be enabled by default in the scenario where a .config needs to be init and doesn't exist. Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
* toplevel.mk: implement logic to invalidate targetinfo with some configChristian Marangi2024-06-11
| | | | | | | | | | | | | | | | | | | | | Implement some logic to invalidate targetinfo files in tmp with the changing of some config. Some config might affect DEFAULT_PACKAGES list but DEFAULT_PACKAGES is only evaluated once. This cause the interesting scenario where someone install feeds packages, targetinfo is evaluated in tmp and then add some config like CONFIG_USE_APK. Using make defconfig will still select OPKG as default package as DEFAULT_PACKAGES in targetinfo has been already evaluated in the feeds install and is never updated. To handle this add some logic in toplevel.mk to cache the current state of these special config and wipe targetinfo when these change. This cause the targetinfo to be reevaluated and handle this REALLY corner case. Link: https://github.com/openwrt/openwrt/pull/15543 Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
* target.mk: add support to early scan of default package configurationChristian Marangi2024-06-11
| | | | | | | | | | | | | | | | | | | | | | | | There is currently a problem with how some option that modify default package configuration are parsed. When the DEFAULT_PACKAGES list is composed, DUMP is used. Using DUMP disable the loading of .config to remove and modification done by the user to prevent any kind of conflict or strange thing one creating all the info for each target. Because of this, .config is never parsed and any check to CONFIG doesn't work (for the first creation of .config). Later image build will check what is set in .config and the default package list won't be parsed anymore. This is problematic for some config that are OK to parse, for example SELINUX or USE_APK. To better handle them add some logic when DUMP is used to selectively parse these option if present in a to-be-init .config so that option are correctly parsed and DEFAULT_PACKAGES is correctly set. Link: https://github.com/openwrt/openwrt/pull/15543 Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
* target: install apk-mbedtls by defaultPaul Spooren2024-06-11
| | | | | | | | | | since the split of APK in mbedtls and openssl version, installing `apk` as default package doesn't do the trick anymore. Instead specify `apk-mbedtls` directly. Signed-off-by: Paul Spooren <mail@aparcar.org> Link: https://github.com/openwrt/openwrt/pull/15543 Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
* build: add APK package build capabilitiesPaul Spooren2024-05-17
| | | | | | | | | A new option called `USE_APK` is added which generated APK packages (.apk) instead of OPKG packages (.ipk). Some features like fstools `snapshot` command are not yet ported Signed-off-by: Paul Spooren <mail@aparcar.org>
* loongarch64: new targetWeijie Gao2024-05-04
| | | | | | | | | | | | | | | | | | | | | | | | Add target for Loongson LoongArch64-based boards. LoongArch is a new RISC ISA developed by Loongson. It's a bit like MIPS or RISC-V. LoongArch includes both 32-bit and 64-bit versions (LoongArch32/LoongArch64). Loongson 3A5000 and 3A6000 are the two existing CPUs of LoongArch64 and is used for PC products. It's BIOS supports ACPI and UEFI-only boot. These CPUs supports SMP and SMT. At present only LoongArch64 is supported by linux kernel. Toolchain requirement: binutils >= 2.40 gcc >= 13.1 For details, please check the following links: https://lwn.net/Articles/861951/ https://loongson.github.io/LoongArch-Documentation/README-EN.html Signed-off-by: Weijie Gao <hackpascal@gmail.com>
* generic: groundwork for RISC-VZoltan HERPAI2023-05-28
| | | | | | Add build infrastructure for RISC-V. Signed-off-by: Zoltan HERPAI <wigyori@uid0.hu>
* treewide: replace libustream-wolfssl with -mbedtlsRosen Penev2023-02-04
| | | | | | | Previous commit does the same for wpad-basic. Also matches DEFAULT_VARIANT in ustream-ssl Makefile. Signed-off-by: Rosen Penev <rosenp@gmail.com>
* mpc85xx: add support for cpu type 8548Šimon Bořek2022-12-29
| | | | | | | | | | | | 8540 cpu type corresponds to e500v1 core while 8548 cpu type corresponds to e500v2 core See https://www.nxp.com/products/processors-and-microcontrollers/legacy-mpu-mcus/powerquicc-processors:POWERQUICC_HOME#powerquicc-iii-mpc85xx and https://www.nxp.com/docs/en/application-note/AN2807.pdf . Co-authored-by: Josef Schlehofer <josef.schlehofer@nic.cz> Co-authored-by: Pali Rohár <pali@kernel.org> Signed-off-by: Šimon Bořek <simon.borek@nic.cz>
* build: fix issues with targets installed via feedsFelix Fietkau2022-09-27
| | | | | | | - fix including modules.mk when a target is being replaced - fix calling make targets from target/linux Signed-off-by: Felix Fietkau <nbd@nbd.name>
* build: target: improve UX of CONFIG_TARGET handlingPetr Štetiar2022-04-15
| | | | | | | | | | | | | | | | | | | | Make it clear, that for `make kernel_{menu,old}config` it's possible to use only following values for CONFIG_TARGET variable: * env * target * subtarget * subtarget_target This should prevent misuse like `make kernel_menuconfig CONFIG_TARGET=bcm2710` etc. Keep support for obsolete `platform` and `subtarget_platform` targets with deprecation notice so this compat stuff could be removed in the future. Signed-off-by: Petr Štetiar <ynezz@true.cz> Acked-by: Piotr Dymacz <pepe2k@gmail.com>
* build: switch to firewall4 by defaultPaul Spooren2022-01-19
| | | | | | | This commit replaces firewall aka firewall3 with its nftables based successor firewall4. Signed-off-by: Paul Spooren <mail@aparcar.org>
* build: add e5500 CPU_TYPEStijn Tintel2021-12-21
| | | | | | | | This CPU type is compatible with NXP's PPC based QorIQ processors, and will be used by the upcoming new qoriq target. Signed-off-by: Stijn Tintel <stijn@linux-ipv6.be> Reviewed-by: Rui Salvaterra <rsalvaterra@gmail.com>
* buildsystem: add CONFIG_SECCOMPFlorian Eckert2021-10-16
| | | | | | | | | | | | | | | | | | | | | Until now, this feature was switched on via the kernel configuration option KERNEL_SECCOMP. The follwing change a7f794cd2aa104fdbd4c6e38f9b76373bf9b96e1 now requires that the package procd-seccomp must also enabled for buildinmg. However, this is not the case we have no dependency and the imagebuilder cannot build the image, because of the implicit package selection. This change adds a new configuration option CONFIG_SECCOMP. The new option has the same behaviour as the configuration option CONFIG_SELINUX. If the CONFIG_SECCOMP is selected then the package procd-seccomp and KERNEL_SECCOMP is enabled for this build. Signed-off-by: Florian Eckert <fe@dev.tdt.de> Signed-off-by: Daniel Golle <daniel@makrotopia.org>
* build: select procd-seccomp if kernel support is presentDaniel Golle2021-10-07
| | | | | | | Install ld-preload hooks allowing to add seccomp filters for arbitrary services if kernel support for seccomp is present. Signed-off-by: Daniel Golle <daniel@makrotopia.org>
* build: select procd-ujail if !SMALL_FLASHDaniel Golle2021-10-07
| | | | | | | Add procd-ujail to DEFAULT_PACKAGES if not building for space-constraint (FEATURES:=small_flash) targets. Signed-off-by: Daniel Golle <daniel@makrotopia.org>
* build: use SPDX license tagsPaul Spooren2021-02-05
| | | | | | | | | The license folder is a core part of OpenWrt and all GPL-2.0 licensed. Use SPDX license tags to allow machines to check licenses. Signed-off-by: Paul Spooren <mail@aparcar.org> [rebase, keep some Copyright lines, sharpen commit message] Signed-off-by: Adrian Schmutzler <freifunk@adrianschmutzler.de>
* build: filter out more autogenerated kernel config optionsFelix Fietkau2020-11-13
| | | | | | | Define wildcard patterns for filtering in target/linux/generic/config-filter Preparation for supporting newer kernels Signed-off-by: Felix Fietkau <nbd@nbd.name>
* Revert "target: select procd-{ujail,seccomp} if !SMALL_FLASH"Petr Štetiar2020-10-22
| | | | | | | | | This reverts commit 6a56a6eb30799fcec9eecc3ee860dc4d8a5d952a as several users have reported unbootable systems. Ref: https://lists.openwrt.org/pipermail/openwrt-devel/2020-October/031838.html Suggested-by: Roman Kuzmitskii <damex.pp@icloud.com> Signed-off-by: Petr Štetiar <ynezz@true.cz>
* target: select procd-{ujail,seccomp} if !SMALL_FLASHDaniel Golle2020-10-21
| | | | | | | Add procd-ujail and procd-seccomp to DEFAULT_PACKAGES if not building for space-constraint (FEATURES:=small_flash) targets. Signed-off-by: Daniel Golle <daniel@makrotopia.org>
* target: include selinux-variants if CONFIG_SELINUX is setDaniel Golle2020-10-21
| | | | | | | | Rather than unconditionally adding busybox and procd to the set of default packages, add busybox-selinux and procd-selinux in case CONFIG_SELINUX is set. Signed-off-by: Daniel Golle <daniel@makrotopia.org>
* rtl838x: various fixesJohn Crispin2020-10-19
| | | | | | | | | * add d-link_dgs-1210-10p support * make sure mips16 is disabled * add a generic sub target * add proper cflags Signed-off-by: John Crispin <john@phrozen.org>
* malta: update MIPS64 ISA to R2Tony Ambardar2020-10-11
| | | | | | | | | | | | | | | | | | | | Usage of current R1 ISA is inconsistent with the MIPS32 subtarget, little used and has limited utility for testing. Many distros target a minimum R2 ISA. Debian MIPS 32-bit/64-bit ports all use MIPS R2 ISA since Stretch, for example. Fedora's MIPS arch also targets the R2 ISA for 32-bit/64-bit. Widely used MIPS64 platforms like Octeon are based on the MIPS R2 ISA or later, and benefit from having a compatible test platform in OpenWRT. While Linux does support MIPS64 R1 targets, its usefulness for development and testing is limited. As an example, the modern Linux eBPF JIT requires a MIPS R2 ISA or later. Signed-off-by: Tony Ambardar <itugrok@yahoo.com> [Refresh config and fix README] Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
* target.mk: enable iwinfo by default with any wpad variantPiotr Dymacz2020-09-28
| | | | | | | | | There are currently several variants of 'wpad' package but the 'iwinfo' is included by default only if 'wpad', 'wpad-{basic*,mini}' or 'nas' packages are included in {DEVICE,DEFAULT}_PACKAGES. Use 'wpad-*' pattern to include 'iwinfo' with any 'wpad' variant. Signed-off-by: Piotr Dymacz <pepe2k@gmail.com>
* build: sort default packages and split by newlinesPaul Spooren2020-08-31
| | | | | | | | The line of default packages became very long and it is easier to read one package per line, therefore split it by newlines and sort it alphabetically. Signed-off-by: Paul Spooren <mail@aparcar.org>
* build: add libustream and certs to default pkgsPaul Spooren2020-08-31
| | | | | | | | | | | | | To allow HTTPS usage on a router it requires both certificates (ca-bundle) and a fitting libustream library (libustream-wolfssl) By adding both, uclient-fetch and wget can connect to encrypted HTTP. This allows opkg to update package lists in a more secure fashion. Suggested-by: Petr Štetiar <ynezz@true.cz> Suggested-by: Baptiste Jonglez <baptiste@bitsofnetworks.org> Signed-off-by: Paul Spooren <mail@aparcar.org>
* hostapd: add wpad-basic-wolfssl variantPetr Štetiar2020-08-07
| | | | | | | | | Add package which provides size optimized wpad with support for just WPA-PSK, SAE (WPA3-Personal), 802.11r and 802.11w. Signed-off-by: Petr Štetiar <ynezz@true.cz> [adapt to recent changes, add dependency for WPA_WOLFSSL config] Signed-off-by: Adrian Schmutzler <freifunk@adrianschmutzler.de>
* target.mk: change i386 CPU type to pentium-mmxRosen Penev2020-07-08
| | | | | | | | | | | | f4f8f4a180366ee90fd8e153213db2cb746ca361 broke ffmpeg compilation with x86 The reason is that ffmpeg's x86 assembly requires at least MMX, which the pentium CPU_TYPE was preventing. Fixes ffmpeg compilation on x86_legacy and x86_geode. Ref: https://github.com/openwrt/openwrt/pull/3061 Signed-off-by: Rosen Penev <rosenp@gmail.com>
* build: conditionally enable testing-kernel featureDavid Bauer2020-07-07
| | | | | | | | | | | Only enable the testing-kernel feature for the target when the testing kernel version does not match the stable kernel version. This way, the option for building the testing kernel in the build config menu is only exposed when there's a testing kernel available. Signed-off-by: David Bauer <mail@david-bauer.net> Acked-by: Adrian Schmutzler <freifunk@adrianschmutzler.de>
* treewide: provide consistent basic DEVICE_TYPEAdrian Schmutzler2020-06-03
| | | | | | | | | | | | | | | | | | | | | While the effective "default" based on frequent use is "router", the DEVICE_TYPE variable actually provides a "basic" configuration without selecting any additional packages. This is currently set up with the identifier "bootloader", which seems to be not used at all. However, the only targets not using "router" or "nas" are actually archs38 and arc770, which use their own value "developerboard" for DEVICE_TYPE which seems to have been invented when these targets where added. The latter is not implemented in target.mk, though, and will fall back to the "basic" set of packages then. So, to clean this up and make it more readable, let's just define a DEVICE_TYPE "basic" and use it for the aforementioned cases. Cc: Christian Lamparter <chunkeey@gmail.com> Cc: Sungbo Eo <mans0n@gorani.run> Cc: Linus Walleij <linus.walleij@linaro.org> Signed-off-by: Adrian Schmutzler <freifunk@adrianschmutzler.de>
* kernel: remove further obsolete kernel version switchesSungbo Eo2020-01-18
| | | | | | | | Most of the kernel version switches below 4.14 were removed in commit 97940f876616 ("kernel: remove obsolete kernel version switches"), but some of them still remained. Remove them now. Signed-off-by: Sungbo Eo <mans0n@gorani.run>
* build: add urandom-seed and urngd to default packages setPetr Štetiar2019-06-11
| | | | | | | | | | | | | urandom-seed content was split from base-files into separate package so in order to preserve the current functionality and to provide some fallback mechanism in case jent-rng initialization fails in urngd we need to add it back. urngd is OpenWrt's micro non-physical true random number generator based on timing jitter. Tested-by: Lucian Cristian <lucian.cristian@gmail.com> Signed-off-by: Petr Štetiar <ynezz@true.cz>
* build: add a config option for enabling a testing version of the target kernelFelix Fietkau2019-05-11
| | | | | | | If the target supports a newer kernel version that is not used by default yet, it can be enabled with this option Signed-off-by: Felix Fietkau <nbd@nbd.name>
* kernel: Remove support for kernel 3.18Hauke Mehrtens2019-05-03
| | | | | | | | | | No target is using kernel 3.18 anymore, remove all the generic support for kernel 3.18. The removed packages are depending on kernel 3.18 only and are not used on any recent kernel. Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
* toolchain: ARM: Fix toolchain compilation for gcc 8.xBoris Krasnovskiy2019-03-25
| | | | | | | | | | | | | | | | | | | | | | | | Set the toolchain's ARM CPU and FPU architectures by utilizing' gcc's --with-cpu / --with-fpu configure options that: "Specify which cpu variant the compiler should generate code for by default. cpu will be used as the default value of the -mcpu= switch." This will resolve the following kernel compilation failures under gcc 8.x on ARM because the kernel wants to set (possibly conflicting) optimization flags. .../ccyVnmrs.s:204: Error: selected processor does not support `dmb ish' in ARM mode .../ccyVnmrs.s:215: Error: architectural extension `mp' is not allowed for the current base architecture .../ccyVnmrs.s:216: Error: selected processor does not support `pldw [r4]' in ARM mode Because this is a big change, the .config and toolchain need to be refreshed (as in removed and regenerated). Reported-by: Ansuel Smith <ansuelsmth@gmail.com> Reported-by: Daniel Engberg <daniel.engberg.lists@pyret.net> [#1203] Signed-off-by: Boris Krasnovskiy <borkra@gmail.com> Signed-off-by: Christian Lamparter <chunkeey@gmail.com> [extended commit message, removed now-deprecated CPU_CFLAGS, changed author to gmail address]