Kompilasi Ulang dengan ServBay
ServBay menyediakan lingkungan pengembangan web lokal yang lengkap dan kuat bagi pengguna macOS dan Windows, mencakup berbagai paket perangkat lunak dan alat bantu. Meski ServBay sudah hadir dengan berbagai versi paket yang siap pakai, kadang pengembang membutuhkan kompilasi ulang untuk kebutuhan khusus, misalnya:
- Mengaktifkan opsi kompilasi tertentu pada sebuah paket perangkat lunak.
- Menambahkan modul atau ekstensi yang tidak disertakan secara default oleh ServBay (seperti ekstensi PHP baru atau modul PostgreSQL).
- Mengkompilasi dengan pustaka berbeda dari versi default ServBay.
- Melakukan modifikasi kustom pada paket perangkat lunak yang disediakan ServBay.
ServBay menyediakan environment dan toolchain yang diperlukan sehingga pengguna dapat melakukan kompilasi ulang dengan mudah.
Agar kompilasi ulang berjalan lancar, Anda perlu memahami dasar proses kompilasi perangkat lunak sesuai sistem operasi:
- macOS/Linux: Rangkaian alat kompilasi Unix/Linux seperti
configure
,make
,make install
- Windows: Sistem build Visual Studio, MSBuild, cmake, dan lingkungan terkait
Syarat Awal
Sebelum memulai kompilasi ulang, pastikan Anda sudah memenuhi syarat berikut:
Pasang ServBay Development Library: Ini adalah dependensi inti untuk proses kompilasi ulang. Paket ini berisi semua file pustaka, header, dan resource developer lain yang diperlukan dalam lingkungan ServBay. Anda dapat menginstalnya melalui panel Paket Perangkat Lunak di antarmuka aplikasi ServBay.
Instal Toolset Pengembangan:
macOS
Pasang Xcode Command Line Tools: Ini adalah toolset pengembangan dasar dari macOS, berisi compiler (Clang), linker, dan alat penting lain. Buka Terminal, lalu jalankan perintah berikut:
bashxcode-select --install
1Jika sudah terpasang, akan muncul notifikasi dari sistem.
Pasang tool kompilasi tambahan: Agar bisa mengkompilasi sebagian besar perangkat lunak open source, Anda juga perlu alat seperti
autoconf
,automake
,libtool
. Umumnya dapat dipasang dengan Homebrew:bashbrew install autoconf automake libtool cmake
1Jika belum memasang Homebrew, silakan ikuti petunjuk di website resminya terlebih dahulu.
Windows
Pasang Visual Studio Build Tools atau Visual Studio Community: Pada Windows, Anda membutuhkan Microsoft Visual C++ Compiler dan build tools. Pilih salah satu cara berikut:
Opsi 1: Visual Studio Build Tools (direkomendasikan, ukuran kecil)
- Unduh dan instal Visual Studio Build Tools
- Saat instalasi, pilih workload "C++ build tools"
- Pastikan mencakup:
- MSVC v143 - VS 2022 C++ x64/x86 build tools
- Windows 11 SDK (versi terbaru)
- CMake alat
Opsi 2: Visual Studio Community
- Unduh dan instal Visual Studio Community
- Saat instalasi, pilih workload "Desktop development with C++"
- Pastikan mencakup alat CMake dan Windows SDK
Pasang alat tambahan: Untuk beberapa proyek open source, Anda juga mungkin memerlukan:
- Git for Windows: untuk mengunduh source code
- MSYS2 atau vcpkg: untuk manajemen dependensi pustaka C/C++
- Python: beberapa skrip build membutuhkan Python
powershell# Instal alat tambahan dengan chocolatey (opsional) choco install git cmake python msys2
1
2
Konfigurasi Lingkungan Kompilasi
Setelah ServBay Development Library dan alat wajib terpasang, Anda perlu menginisialisasi environment kompilasi. Langkah ini utamanya menyiapkan variabel environment agar compiler & build system tahu lokasi pustaka, header, serta file biner ServBay untuk proses kompile dan linking.
Konfigurasi environment berbeda tergantung platform dan arsitektur CPU:
macOS
Lingkungan ServBay dibedakan menurut arsitektur CPU: Intel (x86_64) dan Apple Silicon (Arm64). Pilih script inisialisasi environment sesuai arsitektur ServBay Runtime Anda.
Windows
Versi Windows ServBay mendukung arsitektur x64, dan terpasang di direktori C:\ServBay
.
Pemeriksaan Arsitektur CPU ServBay Runtime
macOS
Anda bisa mengecek arsitektur dengan memeriksa executable di direktori bin
ServBay, misalnya bison
:
bash
# Jalankan perintah berikut di Terminal untuk memeriksa
$ file /Applications/ServBay/bin/bison
/Applications/ServBay/bin/bison: Mach-O 64-bit executable arm64
1
2
3
2
3
bash
# Jalankan perintah berikut di Terminal untuk memeriksa
$ file /Applications/ServBay/bin/bison
/Applications/ServBay/bin/bison: Mach-O 64-bit executable x86_64
1
2
3
2
3
Windows
ServBay versi Windows saat ini mendukung x64. Gunakan PowerShell untuk memeriksa executable:
powershell
# Jalankan perintah berikut di PowerShell untuk memeriksa
PS> Get-Command "C:\ServBay\bin\bison.exe" | Select-Object -ExpandProperty FileVersionInfo | Select-Object ProductName, FileDescription
1
2
2
Atau cek secara langsung melalui properti file untuk mengetahui arsitektur.
Setelah mengetahui arsitektur, pilih script inisialisasi environment yang sesuai.
Inisialisasi Variabel Lingkungan Kompilasi
Tentukan script inisialisasi environment sesuai OS dan arsitektur CPU Anda:
macOS
Buka terminal baru, salin dan jalankan script sesuai dengan tipe CPU Anda untuk mengatur path dan flag kompilasi ServBay.
bash
# Jumlah core CPU, untuk kompilasi paralel
CPU_NUMBER=$(sysctl -n hw.ncpu)
# Path instalasi dasar ServBay
SERVBAY_BASE_FULL_PATH="/Applications/ServBay"
# Nama direktori paket
SERVBAY_PACKAGE_DIR_NAME="package"
# Path paket lengkap
SERVBAY_PACKAGE_FULL_PATH="${SERVBAY_BASE_FULL_PATH}/${SERVBAY_PACKAGE_DIR_NAME}"
# Path file biner ServBay
SERVBAY_BIN_PATH="${SERVBAY_PACKAGE_FULL_PATH}/bin"
SERVBAY_SBIN_PATH="${SERVBAY_PACKAGE_FULL_PATH}/sbin"
# Path file konfigurasi ServBay
SERVBAY_ETC_PATH="${SERVBAY_PACKAGE_FULL_PATH}/etc"
# Path data variabel ServBay
SERVBAY_VAR_PATH="${SERVBAY_PACKAGE_FULL_PATH}/var"
# Path instalasi ServBay Development Library
SERVBAY_COMMON_PATH="${SERVBAY_PACKAGE_FULL_PATH}/common"
# Path header file ServBay Development Library
SERVBAY_COMMON_INCLUDE_PATH="${SERVBAY_COMMON_PATH}/include"
# Path file pustaka ServBay Development Library
SERVBAY_COMMON_LIB_PATH="${SERVBAY_COMMON_PATH}/lib"
SERVBAY_COMMON_LIBEXEC_PATH="${SERVBAY_COMMON_PATH}/libexec"
SERVBAY_COMMON_SHARE_PATH="${SERVBAY_COMMON_PATH}/share"
SERVBAY_COMMON_MAN_PATH="${SERVBAY_COMMON_PATH}/man"
SERVBAY_COMMON_DOC_PATH="${SERVBAY_COMMON_PATH}/doc"
# Direktori build saat ini
SERVBAY_BUILD_DIR=$(pwd)
SERVBAY_BUILD_SRC_DIR=${SERVBAY_BUILD_DIR}/src
# Info versi OpenSSL
OPENSSL_SELECTED_VERSION="3.2"
OPENSSL_VERSION="3.2.1"
# Minimal versi OS target build
BUILD_OS_MIN_VERSION="12.00" # macOS Monterey atau lebih tinggi
# Flag arsitektur CPU build
BUILD_CPU_ARCH="-arch arm64"
BUILD_CPU_ARCH_CMAKE="arm64"
BUILD_MACOS_TARGET="" # Arm64 biasanya tak perlu flag -target
# Set flag compiler C: level optimasi, minimal versi macOS, arsitektur
export CFLAGS="-Qunused-arguments -O3 -mmacosx-version-min=${BUILD_OS_MIN_VERSION} ${BUILD_CPU_ARCH} ${BUILD_MACOS_TARGET}"
# Set flag linker: rpath, path pustaka, minimal versi macOS, arsitektur
export LDFLAGS="-Wl,-rpath -Wl,${SERVBAY_COMMON_LIB_PATH} -L${SERVBAY_COMMON_LIB_PATH} -L${SERVBAY_PACKAGE_FULL_PATH} -mmacosx-version-min=${BUILD_OS_MIN_VERSION} ${BUILD_CPU_ARCH} ${BUILD_MACOS_TARGET}"
# Set flag preprocessor dan CXX: path header (-I)
export CPPFLAGS="-I${SERVBAY_COMMON_INCLUDE_PATH}"
# Set flag compiler C++: seperti CFLAGS
export CXXFLAGS="-Qunused-arguments -O3 -mmacosx-version-min=${BUILD_OS_MIN_VERSION} ${BUILD_CPU_ARCH} ${BUILD_MACOS_TARGET}"
# Set path pencarian executable: utamakan bin/sbin ServBay
export PATH="${SERVBAY_BIN_PATH}:${SERVBAY_SBIN_PATH}:/usr/bin:/bin:/usr/sbin:/sbin:/Library/Apple/usr/bin"
# Set path pkg-config: info kompilasi pustaka
export PKG_CONFIG_PATH="${SERVBAY_COMMON_LIB_PATH}/pkgconfig"
export PKG_CONFIG="${SERVBAY_BIN_PATH}/pkg-config"
export PKG_CONFIG_LIBDIR="${SERVBAY_COMMON_LIB_PATH}/pkgconfig"
# Tambahkan path bin/sbin system & Homebrew ke PATH
export PATH=$PATH:"/usr/local/bin:/usr/local/sbin"
export PATH=$PATH:"/opt/homebrew/bin/" # path default Homebrew
# Tambahkan path pustaka & header OpenSSL ke LDFLAGS/CPPFLAGS
export LDFLAGS="-L${SERVBAY_COMMON_PATH}/openssl/${OPENSSL_SELECTED_VERSION}/lib ${LDFLAGS}"
export CPPFLAGS="-I${SERVBAY_COMMON_PATH}/openssl/${OPENSSL_SELECTED_VERSION}/include ${CPPFLAGS}"
# Tambahkan path pkgconfig OpenSSL
export PKG_CONFIG_PATH="${PKG_CONFIG_PATH}:${SERVBAY_COMMON_PATH}/openssl/${OPENSSL_SELECTED_VERSION}/lib/pkgconfig"
export PKG_CONFIG_LIBDIR="${PKG_CONFIG_LIBDIR}:${SERVBAY_COMMON_PATH}/openssl/${OPENSSL_SELECTED_VERSION}/lib/pkgconfig"
# Setelah environment ter-set, Anda bisa mulai proses kompilasi di terminal ini
echo "Lingkungan kompilasi ServBay Arm64 telah diatur."
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
bash
# Jumlah core CPU, untuk kompilasi paralel
CPU_NUMBER=$(sysctl -n hw.ncpu)
# Path instalasi dasar ServBay
SERVBAY_BASE_FULL_PATH="/Applications/ServBay"
# Nama direktori paket
SERVBAY_PACKAGE_DIR_NAME="package"
# Path paket lengkap
SERVBAY_PACKAGE_FULL_PATH="${SERVBAY_BASE_FULL_PATH}/${SERVBAY_PACKAGE_DIR_NAME}"
# Path file biner ServBay
SERVBAY_BIN_PATH="${SERVBAY_PACKAGE_FULL_PATH}/bin"
SERVBAY_SBIN_PATH="${SERVBAY_PACKAGE_FULL_PATH}/sbin"
# Path file konfigurasi ServBay
SERVBAY_ETC_PATH="${SERVBAY_PACKAGE_FULL_PATH}/etc"
# Path data variabel ServBay
SERVBAY_VAR_PATH="${SERVBAY_PACKAGE_FULL_PATH}/var"
# Path instalasi ServBay Development Library
SERVBAY_COMMON_PATH="${SERVBAY_PACKAGE_FULL_PATH}/common"
# Path header file ServBay Development Library
SERVBAY_COMMON_INCLUDE_PATH="${SERVBAY_COMMON_PATH}/include"
# Path file pustaka ServBay Development Library
SERVBAY_COMMON_LIB_PATH="${SERVBAY_COMMON_PATH}/lib"
SERVBAY_COMMON_LIBEXEC_PATH="${SERVBAY_COMMON_PATH}/libexec"
SERVBAY_COMMON_SHARE_PATH="${SERVBAY_COMMON_PATH}/share"
SERVBAY_COMMON_MAN_PATH="${SERVBAY_COMMON_PATH}/man"
SERVBAY_COMMON_DOC_PATH="${SERVBAY_COMMON_PATH}/doc"
# Direktori build saat ini
SERVBAY_BUILD_DIR=$(pwd)
SERVBAY_BUILD_SRC_DIR=${SERVBAY_BUILD_DIR}/src
# Info versi OpenSSL
OPENSSL_SELECTED_VERSION="1.1.1u"
OPENSSL_VERSION="1.1.1u"
# Minimal versi OS target build
BUILD_OS_MIN_VERSION="12.00" # macOS Monterey atau lebih tinggi
# Flag arsitektur CPU build
BUILD_CPU_ARCH="-arch x86_64"
BUILD_CPU_ARCH_CMAKE="x86_64"
# Flag target platform (Intel chip biasanya perlu -target)
BUILD_MACOS_TARGET="-target x86_64-apple-macos${BUILD_OS_MIN_VERSION}"
# Set flag compiler C: level optimasi, minimal versi macOS, arsitektur, target
export CFLAGS="-Qunused-arguments -O3 -mmacosx-version-min=${BUILD_OS_MIN_VERSION} ${BUILD_CPU_ARCH} ${BUILD_MACOS_TARGET}"
export LDFLAGS="-Wl,-rpath -Wl,${SERVBAY_COMMON_LIB_PATH} -L${SERVBAY_COMMON_LIB_PATH} -L${SERVBAY_PACKAGE_FULL_PATH} -mmacosx-version-min=${BUILD_OS_MIN_VERSION} ${BUILD_CPU_ARCH} ${BUILD_MACOS_TARGET}"
export CPPFLAGS="-I${SERVBAY_COMMON_INCLUDE_PATH}"
export CXXFLAGS="-Qunused-arguments -O3 -mmacosx-version-min=${BUILD_OS_MIN_VERSION} ${BUILD_CPU_ARCH} ${BUILD_MACOS_TARGET}"
export PATH="${SERVBAY_BIN_PATH}:${SERVBAY_SBIN_PATH}:/usr/bin:/bin:/usr/sbin:/sbin:/Library/Apple/usr/bin"
export PKG_CONFIG_PATH="${SERVBAY_COMMON_LIB_PATH}/pkgconfig"
export PKG_CONFIG="${SERVBAY_BIN_PATH}/pkg-config"
export PKG_CONFIG_LIBDIR="${SERVBAY_COMMON_LIB_PATH}/pkgconfig"
export PATH=$PATH:"/usr/local/bin:/usr/local/sbin"
export PATH=$PATH:"/opt/homebrew/bin/"
export LDFLAGS="-L${SERVBAY_COMMON_PATH}/openssl/${OPENSSL_SELECTED_VERSION}/lib ${LDFLAGS}"
export CPPFLAGS="-I${SERVBAY_COMMON_PATH}/openssl/${OPENSSL_SELECTED_VERSION}/include ${CPPFLAGS}"
export PKG_CONFIG_PATH="${PKG_CONFIG_PATH}:${SERVBAY_COMMON_PATH}/openssl/${OPENSSL_SELECTED_VERSION}/lib/pkgconfig"
export PKG_CONFIG_LIBDIR="${PKG_CONFIG_LIBDIR}:${SERVBAY_COMMON_PATH}/openssl/${OPENSSL_SELECTED_VERSION}/lib/pkgconfig"
echo "Lingkungan kompilasi ServBay x86_64 telah diatur."
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
Windows
Di Windows, variabel environment disiapkan lewat PowerShell atau Developer Command Prompt. Berikut contoh untuk arsitektur Windows x64:
powershell
# Jumlah core CPU, untuk kompilasi paralel
$CPU_NUMBER = (Get-WmiObject -Class Win32_Processor).NumberOfLogicalProcessors
# Path dasar instalasi ServBay (Windows)
$SERVBAY_BASE_FULL_PATH = "C:\ServBay"
# Nama direktori paket
$SERVBAY_PACKAGE_DIR_NAME = "package"
# Path lengkap paket
$SERVBAY_PACKAGE_FULL_PATH = "${SERVBAY_BASE_FULL_PATH}\${SERVBAY_PACKAGE_DIR_NAME}"
# Path file biner ServBay
$SERVBAY_BIN_PATH = "${SERVBAY_PACKAGE_FULL_PATH}\bin"
$SERVBAY_SBIN_PATH = "${SERVBAY_PACKAGE_FULL_PATH}\sbin"
# Path file konfigurasi
$SERVBAY_ETC_PATH = "${SERVBAY_PACKAGE_FULL_PATH}\etc"
# Path data variabel
$SERVBAY_VAR_PATH = "${SERVBAY_PACKAGE_FULL_PATH}\var"
# Path instalasi ServBay Development Library
$SERVBAY_COMMON_PATH = "${SERVBAY_PACKAGE_FULL_PATH}\common"
# Path header
$SERVBAY_COMMON_INCLUDE_PATH = "${SERVBAY_COMMON_PATH}\include"
# Path pustaka
$SERVBAY_COMMON_LIB_PATH = "${SERVBAY_COMMON_PATH}\lib"
$SERVBAY_COMMON_LIBEXEC_PATH = "${SERVBAY_COMMON_PATH}\libexec"
$SERVBAY_COMMON_SHARE_PATH = "${SERVBAY_COMMON_PATH}\share"
$SERVBAY_COMMON_DOC_PATH = "${SERVBAY_COMMON_PATH}\doc"
# Direktori build saat ini
$SERVBAY_BUILD_DIR = Get-Location
$SERVBAY_BUILD_SRC_DIR = "${SERVBAY_BUILD_DIR}\src"
# Info versi OpenSSL (Windows)
$OPENSSL_SELECTED_VERSION = "3.2"
$OPENSSL_VERSION = "3.2.1"
# Konfigurasi build Windows
$BUILD_PLATFORM = "x64"
$BUILD_CONFIG = "Release"
# Atur variabel environment
$env:SERVBAY_BASE_FULL_PATH = $SERVBAY_BASE_FULL_PATH
$env:SERVBAY_COMMON_PATH = $SERVBAY_COMMON_PATH
$env:SERVBAY_COMMON_INCLUDE_PATH = $SERVBAY_COMMON_INCLUDE_PATH
$env:SERVBAY_COMMON_LIB_PATH = $SERVBAY_COMMON_LIB_PATH
$env:PATH = "${SERVBAY_BIN_PATH};${SERVBAY_SBIN_PATH};$env:PATH"
$env:INCLUDE = "${SERVBAY_COMMON_INCLUDE_PATH};$env:INCLUDE"
$env:LIB = "${SERVBAY_COMMON_LIB_PATH};$env:LIB"
$env:LIBPATH = "${SERVBAY_COMMON_LIB_PATH};$env:LIBPATH"
$env:PKG_CONFIG_PATH = "${SERVBAY_COMMON_LIB_PATH}\pkgconfig"
$env:INCLUDE = "${SERVBAY_COMMON_PATH}\openssl\${OPENSSL_SELECTED_VERSION}\include;$env:INCLUDE"
$env:LIB = "${SERVBAY_COMMON_PATH}\openssl\${OPENSSL_SELECTED_VERSION}\lib;$env:LIB"
$env:CMAKE_PREFIX_PATH = $SERVBAY_COMMON_PATH
$env:CMAKE_INSTALL_PREFIX = $SERVBAY_COMMON_PATH
Write-Host "Lingkungan kompilasi ServBay Windows x64 telah diatur."
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
Jika menggunakan Developer Command Prompt, bisa juga dengan skrip batch:
batch
@echo off
REM Inisialisasi lingkungan kompilasi ServBay Windows
REM Path dasar instalasi ServBay
set SERVBAY_BASE_FULL_PATH=C:\ServBay
set SERVBAY_PACKAGE_FULL_PATH=%SERVBAY_BASE_FULL_PATH%\package
REM Pengaturan path ServBay
set SERVBAY_BIN_PATH=%SERVBAY_PACKAGE_FULL_PATH%\bin
set SERVBAY_COMMON_PATH=%SERVBAY_PACKAGE_FULL_PATH%\common
set SERVBAY_COMMON_INCLUDE_PATH=%SERVBAY_COMMON_PATH%\include
set SERVBAY_COMMON_LIB_PATH=%SERVBAY_COMMON_PATH%\lib
REM Versi OpenSSL
set OPENSSL_SELECTED_VERSION=3.2
REM Atur variabel environment
set PATH=%SERVBAY_BIN_PATH%;%PATH%
set INCLUDE=%SERVBAY_COMMON_INCLUDE_PATH%;%SERVBAY_COMMON_PATH%\openssl\%OPENSSL_SELECTED_VERSION%\include;%INCLUDE%
set LIB=%SERVBAY_COMMON_LIB_PATH%;%SERVBAY_COMMON_PATH%\openssl\%OPENSSL_SELECTED_VERSION%\lib;%LIB%
set CMAKE_PREFIX_PATH=%SERVBAY_COMMON_PATH%
echo Lingkungan kompilasi ServBay Windows telah diatur.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
Catatan Penting: Variabel environment ini hanya berlaku di sesi terminal sekarang. Jika Anda menutup terminal atau membuka jendela terminal baru, script konfigurasi environment harus dijalankan ulang.
Contoh Kompilasi
Dengan environment kompilasi sudah siap, Anda dapat mengunduh source code dan mulai kompilasi ulang. Berikut contoh kompilasi lintas platform yang banyak dijumpai.
Kompilasi ImageMagick
ImageMagick adalah pustaka pemrosesan gambar yang mendukung ekstensi PHP imagick
. ServBay sudah menyertakan ImageMagick dalam instalasi default, sehingga umumnya Anda tak perlu kompilasi manual. Contoh berikut hanya untuk demo alur kompilasi dalam environment ServBay.
macOS / Linux
Unduh dan ekstrak source code ImageMagick:
bash# Silakan ganti versi sesuai kebutuhan wget https://imagemagick.org/archive/releases/ImageMagick-7.1.1-33.tar.gz tar zxvf ImageMagick-7.1.1-33.tar.gz cd ImageMagick-7.1.1-33
1
2
3
4Jalankan skrip
./configure
: Gunakan environment variabel yang sudah diset sebelumnya. Opsi--prefix
,--libdir
,--includedir
dan lainnya menargetkan direktori ServBay Development Library agar file hasil build bisa diakses oleh ServBay dan software lain (seperti PHP ekstensiimagick
). Opsi lain disesuaikan dengan kebutuhan konfigurasi ImageMagick.bash./configure \ --prefix=${SERVBAY_COMMON_PATH} \ --libdir=${SERVBAY_COMMON_LIB_PATH} \ --includedir=${SERVBAY_COMMON_INCLUDE_PATH} \ --oldincludedir=${SERVBAY_COMMON_INCLUDE_PATH} \ --bindir=${SERVBAY_BIN_PATH} \ --sbindir=${SERVBAY_SBIN_PATH} \ --sysconfdir=${SERVBAY_ETC_PATH} \ --datarootdir=${SERVBAY_COMMON_SHARE_PATH} \ --enable-osx-universal-binary=no \ --disable-silent-rules \ --disable-opencl \ --enable-shared \ --enable-static \ --with-freetype=yes \ --with-gvc=no \ --with-modules \ --with-webp=yes \ --with-heic=no \ --without-gslib \ --with-fpx=no \ --without-openexexr \ --with-raw=yes \ --without-lqr \ --without-djvu \ --without-fftw \ --without-pango \ --without-wmf \ --without-x \ --with-gs-font-dir=${SERVBAY_COMMON_SHARE_PATH}/ghostscript/10.02.1/Resource/Font
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30Eksekusi
make
danmake install
: Gunakan option-j ${CPU_NUMBER}
untuk kompilasi paralel.make install
akan menginstal file hasil build ke directory ServBay Development Library.bashmake -j ${CPU_NUMBER} make install
1
2
Windows
Di Windows, ImageMagick umumnya dikompilasi dengan Visual Studio atau CMake. Karena proses build lebih rumit, disarankan pakai CMake:
Unduh source code ImageMagick:
powershell# Gunakan curl atau download via browser curl -O https://imagemagick.org/archive/releases/ImageMagick-7.1.1-33.tar.gz # Ekstrak (memerlukan 7zip atau sejenisnya) tar -xzf ImageMagick-7.1.1-33.tar.gz cd ImageMagick-7.1.1-33
1
2
3
4
5Konfigurasi dengan CMake (Developer Command Prompt / PowerShell):
powershell# Buat direktori build mkdir builddir cd builddir # Konfigurasi project dengan CMake cmake .. ` -DCMAKE_INSTALL_PREFIX="$env:SERVBAY_COMMON_PATH" ` -DCMAKE_BUILD_TYPE=Release ` -DBUILD_SHARED_LIBS=ON ` -DMAGICKCORE_QUANTUM_DEPTH=16 ` -DMAGICKCORE_HDRI_ENABLE=OFF ` -DWITH_BZLIB=ON ` -DWITH_ZLIB=ON ` -DWITH_PNG=ON ` -DWITH_JPEG=ON ` -DWITH_TIFF=ON ` -DWITH_FREETYPE=ON ` -DWITH_WEBP=ON
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18Build dan install:
powershell# Build cmake --build . --config Release --parallel $CPU_NUMBER # Installasi cmake --install . --config Release
1
2
3
4
Kompilasi Software dengan cmake
Untuk software yang memakai sistem build cmake
, alurnya cukup seragam di semua platform. Berikut contoh untuk protobuf
(Protocol Buffers):
- Download source protobuf dan masuk ke directori-nya.
macOS / Linux
Konfigurasi dengan
cmake
: Sumber code ada di direktori saat ini (-S .
), file build akan dibuat dibuilddir
(-B builddir
). Opsi seperti-DCMAKE_INSTALL_PREFIX
menargetkan path ServBay Development Library. Opsi lain terkait konfigurasi protobuf.-DCMAKE_MACOSX_RPATH=1
dan-DCMAKE_INSTALL_RPATH
memastikan library hasil build bisa menemukan pustaka lain yang ada di environment ServBay.bash# Asumsi sudah masuk direktori source protobuf cmake -S . -B builddir \ -DCMAKE_INSTALL_PREFIX=${SERVBAY_COMMON_PATH} \ -DCMAKE_INSTALL_LIBDIR=${SERVBAY_COMMON_LIB_PATH} \ -DCMAKE_INSTALL_INCLUDEDIR=${SERVBAY_COMMON_INCLUDE_PATH} \ -DCMAKE_INSTALL_BINDIR=${SERVBAY_BIN_PATH} \ -DCMAKE_INSTALL_SBINDIR=${SERVBAY_SBIN_PATH} \ -DCMAKE_INSTALL_SYSCONFDIR=${SERVBAY_ETC_PATH} \ -DCMAKE_INSTALL_DATAROOTDIR=${SERVBAY_COMMON_SHARE_PATH} \ -DCMAKE_MACOSX_RPATH=1 \ -DCMAKE_INSTALL_RPATH=${SERVBAY_COMMON_LIB_PATH} \ -DCMAKE_BUILD_WITH_INSTALL_RPATH=TRUE \ -DCMAKE_PREFIX_PATH=${SERVBAY_COMMON_PATH} \ -DBUILD_SHARED_LIBS=ON \ -Dprotobuf_BUILD_LIBPROTOC=ON \ -Dprotobuf_BUILD_SHARED_LIBS=ON \ -Dprotobuf_INSTALL_EXAMPLES=OFF \ -Dprotobuf_BUILD_TESTS=OFF \ -Dprotobuf_ABSL_PROVIDER=package \ -Dprotobuf_JSONCPP_PROVIDER=module \ -DCMAKE_CXX_STANDARD=17
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21Build dan install:
bashcmake --build builddir -j ${CPU_NUMBER} cmake --install builddir
1
2
Windows
Konfigurasi protobuf dengan
cmake
(PowerShell / Developer Command Prompt):powershell# Asumsi sudah berada di direktori source protobuf cmake -S . -B builddir ` -DCMAKE_INSTALL_PREFIX="$env:SERVBAY_COMMON_PATH" ` -DCMAKE_BUILD_TYPE=Release ` -DCMAKE_PREFIX_PATH="$env:SERVBAY_COMMON_PATH" ` -DBUILD_SHARED_LIBS=ON ` -Dprotobuf_BUILD_LIBPROTOC=ON ` -Dprotobuf_BUILD_SHARED_LIBS=ON ` -Dprotobuf_INSTALL_EXAMPLES=OFF ` -Dprotobuf_BUILD_TESTS=OFF ` -Dprotobuf_MSVC_STATIC_RUNTIME=OFF ` -DCMAKE_CXX_STANDARD=17
1
2
3
4
5
6
7
8
9
10
11
12Build dan install:
powershell# Build cmake --build builddir --config Release --parallel $CPU_NUMBER # Installasi cmake --install builddir --config Release
1
2
3
4
Kompilasi Modul PHP
Jika Anda ingin mengkompilasi modul ekstensi tambahan untuk versi PHP di ServBay (seperti swoole
, redis
, mongodb
), silakan lihat dokumentasi khusus berikut:
Bagaimana mengkompilasi modul PHP
Kompilasi Modul PostgreSQL
Untuk menambah modul pada PostgreSQL yang tersedia di ServBay, silakan lihat dokumentasi khusus berikut:
Bagaimana mengkompilasi modul PostgreSQL
Ringkasan
Dengan ServBay Development Library dan pengaturan environment yang tepat, developer dapat melakukan kompilasi ulang dan kustomisasi paket perangkat lunak dengan mudah di macOS dan Windows. Hal ini memberi fleksibilitas ekstra untuk memenuhi kebutuhan proyek khusus atau menggunakan versi pustaka terbaru.
Poin Penting
- Dukungan lintas platform: ServBay kini mendukung environment build di macOS dan Windows
- Perbedaan path: Perhatikan path instalasi berbeda tiap platform (macOS:
/Applications/ServBay
, Windows:C:\ServBay
) - Perbedaan toolchain: macOS menggunakan Xcode Command Line Tools, Windows menggunakan Visual Studio Build Tools
- Konfigurasi environment: Selalu sesuaikan skrip environment dengan platform Anda
Catatan
- Sebaiknya selalu baca panduan kompilasi resmi setiap paket sebelum proses kompilasi
- Sesuaikan konfigurasi dan langkah-langkah dengan keunikan platform target
- Disarankan menggunakan sistem build CMake di platform Windows
- Beberapa software open source mungkin punya persyaratan atau dependensi khusus di platform berbeda
Dengan mengikuti panduan ini, Anda dapat melakukan kompilasi paket di environment ServBay untuk kedua platform dengan sukses.