From c7e02b4fd02f08872c9db81afc5fc97c03b6f25e Mon Sep 17 00:00:00 2001 From: John Lorentzson Date: Sat, 26 Apr 2025 15:47:49 +0200 Subject: [PATCH] Add Makefile for building on Solaris Previously Makefiles were made on the spot and just sorta thrown onto the target via FTP. A real canonical Makefile will make building from scratch not a nightmare. --- Makefile | 10 ++++++++ manual-build-maker.lisp | 56 ++++++++++++++++++++++------------------- 2 files changed, 40 insertions(+), 26 deletions(-) create mode 100644 Makefile diff --git a/Makefile b/Makefile new file mode 100644 index 00000000..e8a87f0d --- /dev/null +++ b/Makefile @@ -0,0 +1,10 @@ +objects = build/src/Backends/Rendering/Software.o build/src/Backends/Audio/SoftwareMixer.o build/src/Backends/Audio/SoftwareMixer/Mixer.o build/src/Backends/Platform/X11.o build/src/Backends/Controller/Null.o build/src/Backends/Rendering/Window/Software/X11.o build/src/Backends/Audio/SoftwareMixer/Solaris.o build/src/ArmsItem.o build/src/Back.o build/src/Bitmap.o build/src/Boss.o build/src/BossAlmo1.o build/src/BossAlmo2.o build/src/BossBallos.o build/src/BossFrog.o build/src/BossIronH.o build/src/BossLife.o build/src/BossOhm.o build/src/BossPress.o build/src/BossTwinD.o build/src/BossX.o build/src/BulHit.o build/src/Bullet.o build/src/Caret.o build/src/Config.o build/src/Draw.o build/src/Ending.o build/src/Escape.o build/src/Fade.o build/src/File.o build/src/Flags.o build/src/Flash.o build/src/Font.o build/src/Frame.o build/src/Game.o build/src/Generic.o build/src/GenericLoad.o build/src/Input.o build/src/KeyControl.o build/src/Main.o build/src/Map.o build/src/MapName.o build/src/MiniMap.o build/src/MyChar.o build/src/MycHit.o build/src/MycParam.o build/src/NpChar.o build/src/NpcAct000.o build/src/NpcAct020.o build/src/NpcAct040.o build/src/NpcAct060.o build/src/NpcAct080.o build/src/NpcAct100.o build/src/NpcAct120.o build/src/NpcAct140.o build/src/NpcAct160.o build/src/NpcAct180.o build/src/NpcAct200.o build/src/NpcAct220.o build/src/NpcAct240.o build/src/NpcAct260.o build/src/NpcAct280.o build/src/NpcAct300.o build/src/NpcAct320.o build/src/NpcAct340.o build/src/NpcHit.o build/src/NpcTbl.o build/src/Organya.o build/src/PixTone.o build/src/Profile.o build/src/Random.o build/src/Resource.o build/src/SelStage.o build/src/Shoot.o build/src/Sound.o build/src/Stage.o build/src/Star.o build/src/TextScr.o build/src/Triangle.o build/src/ValueView.o + +all: CSE2 +optlevel = -O2 + +%.o: %.cpp + g++ $(optlevel) -c $< -o $@ -I./fakes/ + +CSE2: $(objects) + g++ $(optlevel) -o $@ $^ -lX11 -lXext -lm diff --git a/manual-build-maker.lisp b/manual-build-maker.lisp index 963361c8..2ab16046 100644 --- a/manual-build-maker.lisp +++ b/manual-build-maker.lisp @@ -45,10 +45,15 @@ :type "cpp"))) (defun software-mixer () - (get-source-paths - (make-pathname :directory '(:relative "src" "Backends" "Audio") - :name "SoftwareMixer" - :type "cpp"))) + (append + (get-source-paths + (make-pathname :directory '(:relative "src" "Backends" "Audio") + :name "SoftwareMixer" + :type "cpp")) + (get-source-paths + (make-pathname :directory '(:relative "src" "Backends" "Audio" "SoftwareMixer") + :name "Mixer" + :type "cpp")))) (defun null-controller () (get-source-paths @@ -59,11 +64,11 @@ (defun get-sources () (append (software-renderer) - ;;(software-mixer) + (software-mixer) (x11-platform) (null-controller) (x11-window) - (null-audio) + (solaris-audio) (default-files))) (defun get-build-path (path) @@ -73,33 +78,32 @@ :type "o" :defaults path))) -(defun make-compile-command (file) +(defun make-objects-list (sources) + (format nil "objects =~{ ~A~}" (mapcar 'get-build-path sources))) + +(defun make-compile-command () (let ((str - (format nil "g++ -O2 -c $< -o $@" - ;(namestring (make-relative file)) - ;(get-build-path file) - ))) - (when (string-equal "Bitmap" (pathname-name file)) - (setf str (format nil "~A -I./fakes/" str))) - (format nil "~A: ~A~%~C~A~%~%" - (get-build-path file) - (namestring (make-relative file)) + (format nil "g++ $(optlevel) -c $< -o $@"))) + (setf str (format nil "~A -I./fakes/" str)) + (format nil "%.o: %.cpp~%~C~A~%~%" #\Tab str))) -(defun make-link-command (sources) - (format nil "CSE2: ~{~A ~}~%~Cg++ -O2 -o $@ $^ -lX11 -lXext -lm~%" - (mapcar 'get-build-path sources) +(defun make-boilerplate () + (format nil "all: CSE2~%optlevel = -O2~%")) + +(defun make-link-command () + (format nil "CSE2: $(objects)~%~Cg++ $(optlevel) -o $@ $^ -lX11 -lXext -lm~%" #\Tab)) (defun make-build-script (output-path) (with-open-file (stream output-path :direction :output :if-exists :supersede :if-does-not-exist :create) (setf *root-dir* (make-pathname :directory '(:relative))) - ;;(format stream "#!/bin/sh~%~%") (let ((sources (get-sources))) - (loop :for file :in sources - :for build-path := (get-build-path file) - ) - (dolist (file sources) - (write-string (make-compile-command file) stream)) - (write-string (make-link-command sources) stream)))) + (write-string (make-objects-list sources) stream) + (terpri stream) + (terpri stream) + (write-string (make-boilerplate) stream) + (terpri stream) + (write-string (make-compile-command) stream) + (write-string (make-link-command) stream))))