Modificare CFLAGS negli SlackBuild con CMAKE

Postate qui se avete consigli per migliorare i pacchetti disponibili in questo sito o se avete problemi con installazione, funzionamento o altro.

Moderatore: Staff

Regole del forum
1) Citare in modo preciso il nome del pacchetto.
2) Specificare se discussione/suggerimento o richiesta d'aiuto.
3) Leggere attentamente le risposte ricevute
4) Scrivere i messaggi con il colore di default, evitare altri colori.
5) Scrivere in Italiano o in Inglese, se possibile grammaticalmente corretto, evitate stili di scrittura poco chiari, quindi nessuna abbreviazione tipo telegramma o scrittura stile SMS o CHAT.
6) Appena registrati è consigliato presentarsi nel forum dedicato.

La non osservanza delle regole porta a provvedimenti di vari tipo da parte dello staff, in particolare la non osservanza della regola 5 porta alla cancellazione del post e alla segnalazione dell'utente. In caso di recidività l'utente rischia il ban temporaneo.
Avatar utente
conraid
Staff
Staff
Messaggi: 12951
Iscritto il: gio lug 14, 2005 0:00
Nome Cognome: Corrado Franco
Slackware: current64
Località: Livorno
Contatta:

Modificare CFLAGS negli SlackBuild con CMAKE

Messaggioda conraid » mar set 15, 2015 17:59

Ho dei dubbi sull'uso delle CFLAGS negli SlackBuild con cmake

In pratica nel template di SBO e negli SlackBuild qui su Slacky c'è questo:

Codice: Seleziona tutto

    -DCMAKE_CXX_FLAGS:STRING="$SLKCFLAGS" \
    -DCMAKE_BUILD_TYPE=Release


così facendo però viene modificata la variabile CFLAGS ma poi viene detto di usare CFLAGS_RELEASE
quindi secondo me ci sono due strade, come del resto avviene in alcuni SlackBuilds

1) modifica di NONE

Codice: Seleziona tutto

    -DCMAKE_CXX_FLAGS:STRING="$SLKCFLAGS" \
    -DCMAKE_BUILD_TYPE=None

2) uso di RELEASE

Codice: Seleziona tutto

 .    -DCMAKE_CXX_FLAGS_RELEASE:STRING="$SLKCFLAGS" \
    -DCMAKE_BUILD_TYPE=Release



Ora, solitamente RELEASE di default ha "-O3 -DNDEBUG" mentre NONE è vuota.
Io pensavo che fosse per usare flags aggiungendole a RELEASE, ma ho fatto delle prove dei make generati e non lo fa. Magari era solo in quei 3 che ho provato, boh.

La differenza tra le due opzioni è che cambia l'ordine dell'aggiunta dei flags, tanto per farti capire questo è quello di Keepassx

Codice: Seleziona tutto

< utils/CMakeFiles/kdbx-extract.dir/flags.make:CXX_FLAGS = -fno-common -fstack-protector --param=ssp-buffer-size=4 -Wall -Wextra
-Wundef -Wpointer-arith -Wno-long-long -Wformat=2 -Wmissing-format-attribute -fvisibility=hidden -fvisibility-inlines-hidden -fno-exceptions -fno-rtti -Wnon-virtual-dtor -Wold-style-cast -Woverloaded-virtual -Werror=format-security -Wcast-align -std=c++0x -O2 -fPIC -isystem /usr/lib64/qt/include -isystem /usr/lib64/qt/include/QtGui -isystem /usr/lib64/qt/include/QtTest -isystem /usr/lib64/qt/include/QtCore -I/tmp/pkg/keepassx-2.0-beta2/utils/../src
---
> utils/CMakeFiles/kdbx-extract.dir/flags.make:CXX_FLAGS = -O2 -fPIC -fno-common -fstack-protector --param=ssp-buffer-size=4 -Wall -Wextra -Wundef -Wpointer-arith -Wno-long-long -Wformat=2 -Wmissing-format-attribute -fvisibility=hidden -fvisibility-inlines-hidden -fno-exceptions -fno-rtti -Wnon-virtual-dtor -Wold-style-cast -Woverloaded-virtual -Werror=format-security -Wcast-align -std=c++0x -isystem /usr/lib64/qt/include -isystem /usr/lib64/qt/include/QtGui -isystem /usr/lib64/qt/include/QtTest -isystem /usr/lib64/qt/include/QtCore -I/tmp/pkg/keepassx-2.0-beta2/utils/../src


quindi penso che sia ininfluente la prima o la seconda, mentre usando il template produce

Codice: Seleziona tutto

> utils/CMakeFiles/kdbx-extract.dir/flags.make:CXX_FLAGS = -O2 -fPIC -fno-common -fstack-protector --param=ssp-buffer-size=4 -Wall -Wextra -Wundef -Wpointer-arith -Wno-long-long -Wformat=2 -Wmissing-format-attribute -fvisibility=hidden -fvisibility-inlines-hidden -fno-exceptions -fno-rtti -Wnon-virtual-dtor -Wold-style-cast -Woverloaded-virtual -Werror=format-security -Wcast-align -std=c++0x -O3 -DNDEBUG -isystem /usr/lib64/qt/include -isystem /usr/lib64/qt/include/QtGui -isystem /usr/lib64/qt/include/QtTest -isystem /usr/lib64/qt/include/QtCore -I/tmp/pkg/keepassx-2.0-beta2/utils/../src


come si vede c'è -O3 -DNDEBUG in mezzo, cioè la variabile CFLAGS_RELEASE che verrà utilizzata

Per poter usare NDEBUG io ho fatto così

Codice: Seleziona tutto

  -DCMAKE_CXX_FLAGS:STRING="$SLKCFLAGS -DNDEBUG" \
  -DCMAKE_BUILD_TYPE=None \

ma sarebbe stato uguale

Codice: Seleziona tutto

  -DCMAKE_CXX_FLAGS:STRING="$SLKCFLAGS -DNDEBUG" \
  -DCMAKE_BUILD_TYPE=Release \



Nella documentazione
http://www.cmake.org/Wiki/CMake_Useful_ ... _and_Tools
dicono la stessa cosa, o almeno così mi sembra

Codice: Seleziona tutto

CMAKE_BUILD_TYPE :
None (CMAKE_C_FLAGS or CMAKE_CXX_FLAGS used)
Release (CMAKE_C_FLAGS_RELEASE or CMAKE_CXX_FLAGS_RELEASE)


nei template invece viene impostata CMAKE_CXX_FLAGS e poi usato CMAKE_BUILD_TYPE=Release.


Secondo voi com'è giusto?

spero di essermi spiegato :-)


P.S.
Pat modifica entrambe le variabili, per esempio da
ftp://ftp.slackware.com/pub/slackware/s ... e/kdeadmin

Codice: Seleziona tutto

  cmake \
    $KDE_OPT_ARGS \
    -DCMAKE_C_FLAGS:STRING="$SLKCFLAGS" \
    -DCMAKE_C_FLAGS_RELEASE:STRING="$SLKCFLAGS" \
    -DCMAKE_CXX_FLAGS:STRING="$SLKCFLAGS" \
    -DCMAKE_CXX_FLAGS_RELEASE:STRING="$SLKCFLAGS" \
    -DCMAKE_BUILD_TYPE=Release \