# ──────────────────────────────────────────────────────────── # LaserBoy‑FLTK v0.1‑win64 (MSYS2 / mingw‑w64 g++) # James Lehman – laserboy.org # ──────────────────────────────────────────────────────────── # # wget https://github.com/fltk/fltk/releases/download/release-1.4.2/fltk-1.4.2-source.tar.gz # # fltk must be compiled from source: # ./configure --enable-static --disable-shared --prefix=/mingw64 --enable-localjpeg --enable-localpng # # ──────────────────────────────────────────────────────────── # tools CPP = g++ STRIP = strip -s -v # folders SRC_DIR = ./ BUILD_DIR = ../build/ BIN = ../LaserBoy_fltk.exe BOOST_DIR = /mingw64/include/boost FLTK_DIR = /mingw64/include LIB_DIR = /mingw64/lib INC = -I$(BOOST_DIR) -I$(FLTK_DIR) # ─── compiler flags ───────────────────────────────────────── CPPFLAGS = -D__MINGW_LASERBOY__ \ -D__BOOST_PROCESS_V1__ \ -DWINVER=0x0601 \ -D_WIN32_WINNT=0x0601 \ -std=c++17 \ -O3 \ -Wall \ -Wextra \ -frounding-math \ -fsignaling-nans \ -Wno-psabi \ -Wno-unused-parameter \ -Wno-implicit-fallthrough \ -Wno-missing-field-initializers \ -Wno-misleading-indentation \ -Wno-unused-but-set-variable \ -Wno-mismatched-new-delete \ -fexpensive-optimizations \ $(INC) # ─── libraries ────────────────────────────────────────────── # Everything up to the first -Wl,-Bdynamic is linked **statically** BOOST_LIBS = -lboost_system \ -lboost_filesystem-mt \ -lboost_thread-mt \ -lboost_chrono-mt \ -lpthread FLTK_LIBS = -lfltk \ -lfltk_images \ -lfltk_jpeg \ -lfltk_png STATIC_LIBS = -Wl,-Bstatic $(BOOST_LIBS) $(FLTK_LIBS) \ -static-libgcc \ -static-libstdc++ SYSTEM_LIBS = -Wl,-Bdynamic \ -lgdi32 \ -luser32 \ -lcomdlg32 \ -lcomctl32 \ -lwinspool \ -lws2_32 \ -lwininet \ -lole32 \ -luuid \ -lgdiplus \ -lz LDFLAGS = $(STATIC_LIBS) $(SYSTEM_LIBS) # ─── sources / objects ───────────────────────────────────── SRC := $(wildcard $(SRC_DIR)/LaserBoy*.cpp) OBJ := $(patsubst $(SRC_DIR)/%.cpp,$(BUILD_DIR)/%.o64,$(SRC)) # ─── targets ─────────────────────────────────────────────── all: $(BIN) strip $(BIN): $(OBJ) $(CPP) $^ -o $@ -L$(LIB_DIR) $(LDFLAGS) # pattern rule – builds ../build/LaserBoy*.o64 from LaserBoy*.cpp $(BUILD_DIR)/%.o64: $(SRC_DIR)/%.cpp @mkdir -p $(BUILD_DIR) $(CPP) $(CPPFLAGS) -c $< -o $@ strip: $(STRIP) $(BIN) clean: rm ../build/*.o64 $(BIN) .PHONY: all clean strip