# 🔧 Comanda ./configure - UnderChat IRCd

**Data**: 13 februarie 2026  
**Versiune**: v1.0.1

---

## 📋 Comanda Completă de Bază

```bash
./configure --prefix=$HOME/ircd --with-maxcon=4096
```

### Parametri Impliciți:
- **--prefix**: `$HOME/ircd` (ex: `/home/ircd/ircd`)
- **--with-maxcon**: `4096` (număr maxim de conexiuni simultane)

---

## 🎯 Comanda Completă cu Toate Opțiunile

### Pentru sisteme normale (x86_64, i386, etc.):
```bash
./configure \
    --prefix=$HOME/ircd \
    --with-maxcon=4096
```

### Pentru sisteme ARM 64-bit (aarch64):
```bash
./configure \
    --prefix=$HOME/ircd \
    --with-maxcon=4096 \
    --build=aarch64-unknown-linux-gnu
```

### Cu SSL activat (implicit):
```bash
./configure \
    --prefix=$HOME/ircd \
    --with-maxcon=4096
```

### Cu SSL dezactivat:
```bash
./configure \
    --prefix=$HOME/ircd \
    --with-maxcon=4096 \
    --disable-ssl
```

### Cu modul Debug activat:
```bash
./configure \
    --prefix=$HOME/ircd \
    --with-maxcon=4096 \
    --enable-debug
```

---

## 🚀 Comanda Completă din install.sh

Scriptul `install.sh` construiește dinamic comanda `./configure` astfel:

```bash
# Linia 226-250 din install.sh
local config_args="--prefix=$PREFIX"
config_args="$config_args --with-maxcon=$MAXCON"

# Dacă debug este activat
if [ $ENABLE_DEBUG -eq 1 ]; then
    config_args="$config_args --enable-debug"
fi

# Dacă SSL este dezactivat
if [ $ENABLE_SSL -eq 0 ]; then
    config_args="$config_args --disable-ssl"
fi

# Pentru sisteme aarch64
if [ "$(uname -m)" = "aarch64" ]; then
    config_args="$config_args --build=aarch64-unknown-linux-gnu"
fi

# Executare finală
./configure $config_args
```

---

## 📝 Variante de Instalare

### 1. Instalare Standard (Recomandată)
```bash
./install.sh
# Rulează: ./configure --prefix=$HOME/ircd --with-maxcon=4096
```

### 2. Instalare Custom cu Parametri
```bash
./install.sh --prefix /opt/ircd --maxcon 8192
# Rulează: ./configure --prefix=/opt/ircd --with-maxcon=8192
```

### 3. Instalare cu Debug
```bash
./install.sh --debug
# Rulează: ./configure --prefix=$HOME/ircd --with-maxcon=4096 --enable-debug
```

### 4. Instalare fără SSL
```bash
./install.sh --no-ssl
# Rulează: ./configure --prefix=$HOME/ircd --with-maxcon=4096 --disable-ssl
```

### 5. Instalare Completă Custom
```bash
./install.sh --prefix /opt/ircd --maxcon 10000 --debug
# Rulează: ./configure --prefix=/opt/ircd --with-maxcon=10000 --enable-debug
```

---

## 🔍 Parametri Detaliat

### --prefix=PATH
**Descriere**: Directorul de instalare al serverului IRC  
**Implicit**: `$HOME/ircd` (ex: `/home/ircd/ircd`)  
**Exemple**:
```bash
--prefix=/opt/ircd
--prefix=/usr/local/ircd
--prefix=$HOME/underchat
```

**Structură directoare create**:
```
$PREFIX/
├── bin/          # Executabilul ircd și utilitare
├── etc/          # Fișierul ircd.conf
├── lib/          # Biblioteci și example.conf
├── log/          # Log-uri server
└── var/          # PID și fișiere temporare
```

### --with-maxcon=NUM
**Descriere**: Numărul maxim de conexiuni simultane  
**Implicit**: `4096`  
**Valori recomandate**:
- **Server mic**: 1024 - 2048
- **Server mediu**: 4096 - 8192
- **Server mare**: 10000 - 20000
- **Hub principal**: 30000+

**Exemplu**:
```bash
--with-maxcon=8192
--with-maxcon=15000
```

### --enable-debug
**Descriere**: Activează simboluri de debug și mesaje verbose  
**Folosire**: Pentru dezvoltare și troubleshooting  
**Impact**: 
- ✅ Mesaje detaliate în log-uri
- ✅ Stack traces la crash-uri
- ❌ Performanță redusă
- ❌ Executabil mai mare

**Recomandat**: NU pentru producție

### --disable-ssl
**Descriere**: Dezactivează suportul SSL/TLS  
**Implicit**: SSL este ACTIVAT  
**Folosire**: Când nu ai OpenSSL instalat sau nu ai nevoie de SSL  
**Impact**:
- ❌ Nu poți folosi portul 6697 (SSL)
- ❌ Conexiuni necriptate
- ✅ Compilare mai rapidă
- ✅ Fără dependență de OpenSSL

**Recomandat**: NU pentru producție (lasă SSL activat)

### --build=ARCH
**Descriere**: Specifică arhitectura pentru cross-compilation  
**Folosire**: Automat detectat pentru aarch64  
**Valori**:
```bash
--build=aarch64-unknown-linux-gnu    # ARM 64-bit
--build=x86_64-unknown-linux-gnu     # Intel/AMD 64-bit
--build=i386-unknown-linux-gnu       # Intel 32-bit
```

**Când se folosește**: 
- Automat pentru sisteme aarch64
- Pentru cross-compilation
- Când `./config.guess` nu detectează corect

---

## 🎯 Exemple Practice

### Server Personal (Desktop/VPS Mic)
```bash
./configure \
    --prefix=$HOME/ircd \
    --with-maxcon=2048
```

### Server Comunitate (VPS Mediu)
```bash
./configure \
    --prefix=/opt/ircd \
    --with-maxcon=8192
```

### Hub Principal (Dedicated Server)
```bash
./configure \
    --prefix=/opt/ircd \
    --with-maxcon=20000
```

### Testing/Development
```bash
./configure \
    --prefix=$HOME/ircd-dev \
    --with-maxcon=1024 \
    --enable-debug
```

### ARM Server (Raspberry Pi, Oracle ARM)
```bash
./configure \
    --prefix=$HOME/ircd \
    --with-maxcon=4096 \
    --build=aarch64-unknown-linux-gnu
```

---

## 🔧 Troubleshooting

### Eroare: "cannot guess build type"
**Soluție 1**: Adaugă `--build` explicit
```bash
./configure --prefix=$HOME/ircd --with-maxcon=4096 --build=$(uname -m)-unknown-linux-gnu
```

**Soluție 2**: Rulează `fix-aarch64.sh`
```bash
./fix-aarch64.sh
./configure --prefix=$HOME/ircd --with-maxcon=4096
```

### Eroare: "OpenSSL not found"
**Soluție 1**: Instalează OpenSSL
```bash
# Ubuntu/Debian
sudo apt-get install libssl-dev

# CentOS/RHEL
sudo yum install openssl-devel
```

**Soluție 2**: Dezactivează SSL
```bash
./configure --prefix=$HOME/ircd --with-maxcon=4096 --disable-ssl
```

### Eroare: "Permission denied"
**Soluție**: Dă permisiuni de execuție
```bash
chmod +x configure
./configure --prefix=$HOME/ircd --with-maxcon=4096
```

---

## 📚 Verificare Configurare

După rularea `./configure`, verifică:

### 1. Mesajul de succes
```
configure: creating ./config.status
config.status: creating Makefile
config.status: creating ircd/Makefile
config.status: creating config.h
```

### 2. Fișierele generate
```bash
ls -la config.h Makefile ircd/Makefile
```

### 3. Setările din config.h
```bash
grep -E "(MAXCON|PREFIX|SSL)" config.h
```

---

## 🚀 Pași După Configure

```bash
# 1. Configure (FACUT)
./configure --prefix=$HOME/ircd --with-maxcon=4096

# 2. Compilare
make

# 3. Instalare
make install

# 4. Configurare ircd.conf
nano $HOME/ircd/etc/ircd.conf

# 5. Pornire server
$HOME/ircd/bin/ircd -f $HOME/ircd/etc/ircd.conf
```

---

## 📖 Ajutor Configure

Pentru a vedea toate opțiunile disponibile:
```bash
./configure --help
```

Output (extras):
```
Installation directories:
  --prefix=PREFIX         install architecture-independent files in PREFIX
                          [/usr/local]

Optional Features:
  --enable-debug          enable debug mode
  --disable-ssl           disable SSL support
  --with-maxcon=NUM       set maximum connections [4096]
  --build=BUILD           configure for building on BUILD [guessed]
```

---

## ✅ Checklist Înainte de Configure

- [ ] Verficat gcc instalat: `gcc --version`
- [ ] Verificat make instalat: `make --version`
- [ ] Verificat OpenSSL instalat: `openssl version`
- [ ] Verificat permisiuni: `ls -la configure`
- [ ] Backup config vechi: `cp -r $PREFIX $PREFIX.bak`
- [ ] Citit documentația: `./configure --help`

---

## 🎉 TL;DR - Quick Reference

**Comandă standard (RECOMANDATĂ)**:
```bash
./configure --prefix=$HOME/ircd --with-maxcon=4096
```

**SAU folosește install.sh**:
```bash
./install.sh
# Gestionează automat toate parametrii
```

---

**Repository**: https://gitlab.back.ro/underchat/ircu2.git  
**Versiune**: v1.0.1  
**Data**: 13 februarie 2026

