RE: QB64 Phoenix Edition v3.3.0 Released! - Fifi - 10-23-2022
Hello,
Unfortunately, the installation script of QB64-PE version 3.3.0 X64 for macOS doesn't work!
Code: (Select All) Last login: Sun Oct 23 17:25:05 on ttys001
i-Mac-27:~ Philippe$ /Users/Philippe/Desktop/qb64pe/setup_osx.command ; exit;
QB64-PE Setup
Building 'QB64-PE'
make: *** No rule to make target `clean'. Stop.
make: *** No targets specified and no makefile found. Stop.
Compilation of QB64-PE failed!
logout
Saving session...
...copying shared history...
...saving history...truncating history files...
...completed.
[Opération terminée]
Please help me to correct the make file, because this bother me a lot to be obliged to use QB64 2.1 (X64) that I just downloaded from the other so-called "official" branch to compile and create QB64-PE 3.3.0 on my iMac 27 under 10.13.6, a process which, BTW, works fine.
TIA for your help.
Cheers.
Fifi
RE: QB64 Phoenix Edition v3.3.0 Released! - Kernelpanic - 10-23-2022
OS X is similar to Linux, can't you install it by hand? Might be easier than possibly having to adjust the script with each new version of QB64.
RE: QB64 Phoenix Edition v3.3.0 Released! - DSMan195276 - 10-23-2022
(10-23-2022, 03:52 PM)Fifi Wrote: Unfortunately, the installation script of QB64-PE version 3.3.0 X64 for macOS doesn't work!
Can you check if there is a file called Makefile in the folder you're running the setup_osx.command from? And did you do anything else beyond extracting the release .tar.gz and running setup_osx.command ?
RE: QB64 Phoenix Edition v3.3.0 Released! - Fifi - 10-24-2022
(10-23-2022, 08:56 PM)DSMan195276 Wrote: (10-23-2022, 03:52 PM)Fifi Wrote: Unfortunately, the installation script of QB64-PE version 3.3.0 X64 for macOS doesn't work!
Can you check if there is a file called Makefile in the folder you're running the setup_osx.command from? And did you do anything else beyond extracting the release .tar.gz and running setup_osx.command ? Hi DSMan195276
Yes there is a file named Makefile in the folder I'm running the 'setup_osx.command', and no I didn't do anything but extracting the .tar.gz release (that's so easy under macOS by just doing a doble click on the file which automatically creates thr folder).
Unfortunately, I can't attach the Makefile to this post because its format isn't allowed.
Do you want a cut and past in text mode?
Looking forward.
Fifi
RE: QB64 Phoenix Edition v3.3.0 Released! - Fifi - 10-24-2022
(10-24-2022, 02:15 AM)Fifi Wrote: (10-23-2022, 08:56 PM)DSMan195276 Wrote: (10-23-2022, 03:52 PM)Fifi Wrote: Unfortunately, the installation script of QB64-PE version 3.3.0 X64 for macOS doesn't work!
Can you check if there is a file called Makefile in the folder you're running the setup_osx.command from? And did you do anything else beyond extracting the release .tar.gz and running setup_osx.command ? Hi DSMan195276
Yes there is a file named Makefile in the folder I'm running the 'setup_osx.command', and no I didn't do anything but extracting the .tar.gz release (that's so easy under macOS by just doing a doble click on the file which automatically creates thr folder).
Unfortunately, I can't attach the Makefile to this post because its format isn't allowed.
Do you want a cut and past in text mode?
Looking forward.
Fifi
Hi again,
Please find bellow the Copy/Past of the Makefile.
Code: (Select All) # Disable implicit rules
MAKEFLAGS += --no-builtin-rules
ifndef OS
$(error "OS must be set to 'lnx', 'win', or 'osx'")
endif
# The extra tag to put on ./internal/temp and qbx.o when multiple instances are involved
# This is blank for the 'normal' files
TEMP_ID ?=
# Extra flags go at the beginning of the library list
#
# This is important for libraries, since they could potentially be referencing
# things from our dependencies
CXXFLAGS += $(CXXFLAGS_EXTRA)
CXXLIBS += $(CXXLIBS_EXTRA)
# There are no C lib flags, those all go in CXXLIBS
CFLAGS += $(CFLAGS_EXTRA)
EXE_OBJS :=
EXE_LIBS :=
ifeq ($(OS),lnx)
lnx := y
PATH_INTERNAL := ./internal
PATH_INTERNAL_SRC := $(PATH_INTERNAL)/source
PATH_INTERNAL_TEMP := $(PATH_INTERNAL)/temp$(TEMP_ID)
PATH_INTERNAL_C := $(PATH_INTERNAL)/c
PATH_LIBQB := $(PATH_INTERNAL_C)/libqb
CP := cp -r
RM := rm -fr
MKDIR := mkdir -p
OBJCOPY := objcopy
FIXPATH = $1
PLATFORM := posix
EXTENSION :=
# Compiling with -no-pie lets some file explorers know we're an executable,
# not a shared object
CXXFLAGS += -no-pie
# Check bitness by getting length of `long
# 64 bits on x86_64, 32 bits on x86
BITS := $(shell getconf LONG_BIT)
ifeq ($(BITS),)
BITS := 64
endif
endif
ifeq ($(OS),win)
win := y
PATH_INTERNAL := internal
PATH_INTERNAL_SRC := $(PATH_INTERNAL)\source
PATH_INTERNAL_TEMP := $(PATH_INTERNAL)\temp$(TEMP_ID)
PATH_INTERNAL_C := $(PATH_INTERNAL)\c
PATH_LIBQB := $(PATH_INTERNAL_C)\libqb
SHELL := cmd
CP := xcopy /E /C /H /R /Y
AR := $(PATH_INTERNAL_C)\c_compiler\bin\ar.exe
CC := $(PATH_INTERNAL_C)\c_compiler\bin\gcc.exe
CXX := $(PATH_INTERNAL_C)\c_compiler\bin\c++.exe
OBJCOPY := $(PATH_INTERNAL_C)\c_compiler\bin\objcopy.exe
WINDRES := $(PATH_INTERNAL_C)\c_compiler\bin\windres.exe
ICON_OBJ := $(PATH_INTERNAL_TEMP)\icon.o
RM := del /Q
MKDIR := mkdir
FIXPATH = $(subst /,\,$1)
PLATFORM := windows
EXTENSION := .exe
# Check bitness by seeing which compiler we have
ifeq ($(wildcard $(PATH_INTERNAL_C)\c_compiler\i686-w64-mingw32),)
BITS := 64
else
BITS := 32
endif
endif
ifeq ($(OS),osx)
osx := y
PATH_INTERNAL := ./internal
PATH_INTERNAL_SRC := $(PATH_INTERNAL)/source
PATH_INTERNAL_TEMP := $(PATH_INTERNAL)/temp$(TEMP_ID)
PATH_INTERNAL_C := $(PATH_INTERNAL)/c
PATH_LIBQB := $(PATH_INTERNAL_C)/libqb
CP := cp -r
RM := rm -fr
MKDIR := mkdir -p
FIXPATH = $1
BITS := 64
PLATFORM := posix
EXTENSION :=
endif
ifeq ($(BITS),64)
OBJCOPY_FLAGS := -Oelf64-x86-64 -Bi386:x86-64
else
OBJCOPY_FLAGS := -Oelf32-i386 -Bi386
endif
ifdef BUILD_QB64
ifeq ($(OS),win)
EXE ?= qb64pe.exe
else
EXE ?= qb64pe
endif
endif
ifneq ($(filter clean build-tests,$(MAKECMDGOALS)),)
# We have to define this for the Makefile to work,
# but it doesn't actually matter what it is since clean and build-tests don't compile an executable
EXE := blah
endif
ifndef EXE
$(error Please provide executable name as 'EXE=executable')
endif
GENERATE_LICENSE ?= n
LICENSE ?= $(EXE).license.txt
LICENSE_IN_USE := qb64
all: $(EXE)
CLEAN_LIST :=
CLEAN_DEP_LIST :=
CXXFLAGS += -w -std=gnu++11
ifeq ($(OS),lnx)
CXXLIBS += -lGL -lGLU -lX11 -lpthread -ldl -lrt
CXXFLAGS += -DFREEGLUT_STATIC
endif
ifeq ($(OS),win)
CXXLIBS += -static-libgcc -static-libstdc++
CXXFLAGS += -DGLEW_STATIC -DFREEGLUT_STATIC
endif
ifeq ($(OS),osx)
CXXLIBS += -framework OpenGL -framework IOKit -framework GLUT -framework Cocoa
# OSX doesn't strip using objcopy, so we're using `-s` instead
ifneq ($(STRIP_SYMBOLS),n)
CXXLIBS += -s
endif
endif
QB_QBX_OBJ := $(PATH_INTERNAL_C)/qbx$(TEMP_ID).o
$(QB_QBX_OBJ): $(wildcard $(PATH_INTERNAL)/temp$(TEMP_ID)/*.txt)
EXE_OBJS += $(QB_QBX_OBJ)
CLEAN_LIST += $(QB_QBX_OBJ)
ifdef BUILD_QB64
# Copy the QB64-PE source code into temp before compiling
ifeq ($(OS),win)
_shell := $(shell $(CP) $(PATH_INTERNAL_SRC)\\* $(PATH_INTERNAL_TEMP)\\)
else
_shell := $(shell $(CP) $(PATH_INTERNAL_SRC)/* $(PATH_INTERNAL_TEMP)/)
endif
# Required dependencies of QB64-PE itself
DEP_FONT := y
DEP_ICON := y
DEP_ICON_RC := y
DEP_SOCKETS := y
endif
include $(PATH_INTERNAL_C)/libqb/build.mk
CXXFLAGS += -I$(PATH_LIBQB)/include
EXE_LIBS += $(libqb-objs-y)
include $(PATH_INTERNAL_C)/parts/audio/conversion/build.mk
include $(PATH_INTERNAL_C)/parts/audio/decode/mp3_mini/build.mk
include $(PATH_INTERNAL_C)/parts/audio/decode/ogg/build.mk
include $(PATH_INTERNAL_C)/parts/audio/out/build.mk
include $(PATH_INTERNAL_C)/parts/audio/extras/build.mk
include $(PATH_INTERNAL_C)/parts/audio/build.mk
include $(PATH_INTERNAL_C)/parts/core/build.mk
include $(PATH_INTERNAL_C)/parts/input/game_controller/build.mk
include $(PATH_INTERNAL_C)/parts/video/font/ttf/build.mk
include $(PATH_INTERNAL_C)/parts/video/image/build.mk
.PHONY: all clean
QBLIB_NAME := libqb_make_
CLEAN_LIST += $(wildcard $(PATH_INTERNAL_C)/$(QBLIB_NAME)*.o)
ifneq ($(filter y,$(DEP_GL)),)
CXXFLAGS += -DDEPENDENCY_GL
QBLIB_NAME := $(addsuffix 1,$(QBLIB_NAME))
else
QBLIB_NAME := $(addsuffix 0,$(QBLIB_NAME))
endif
ifneq ($(filter y,$(DEP_SCREENIMAGE) $(DEP_IMAGE_CODEC)),)
CXXFLAGS += -DDEPENDENCY_IMAGE_CODEC
QBLIB_NAME := $(addsuffix 1,$(QBLIB_NAME))
LICENSE_IN_USE += dr_pcx stb_image
else
QBLIB_NAME := $(addsuffix 0,$(QBLIB_NAME))
endif
ifneq ($(filter y,$(DEP_CONSOLE_ONLY)),)
CXXFLAGS += -DDEPENDENCY_CONSOLE_ONLY
QBLIB_NAME := $(addsuffix 1,$(QBLIB_NAME))
else
QBLIB_NAME := $(addsuffix 0,$(QBLIB_NAME))
endif
ifneq ($(filter y,$(DEP_SOCKETS)),)
CXXFLAGS += -DDEPENDENCY_SOCKETS
QBLIB_NAME := $(addsuffix 1,$(QBLIB_NAME))
else
CXXFLAGS += -DDEPENDENCY_NO_SOCKETS
QBLIB_NAME := $(addsuffix 0,$(QBLIB_NAME))
endif
ifneq ($(filter y,$(DEP_PRINTER)),)
CXXFLAGS += -DDEPENDENCY_PRINTER
QBLIB_NAME := $(addsuffix 1,$(QBLIB_NAME))
else
CXXFLAGS += -DDEPENDENCY_NO_PRINTER
QBLIB_NAME := $(addsuffix 0,$(QBLIB_NAME))
endif
ifneq ($(filter y,$(DEP_ICON_RC) $(DEP_ICON)),)
CXXFLAGS += -DDEPENDENCY_ICON
QBLIB_NAME := $(addsuffix 1,$(QBLIB_NAME))
else
CXXFLAGS += -DDEPENDENCY_NO_ICON
QBLIB_NAME := $(addsuffix 0,$(QBLIB_NAME))
endif
ifneq ($(filter y,$(DEP_ICON_RC)),)
ifeq ($(OS),win)
EXE_OBJS += $(ICON_OBJ)
endif
endif
ifneq ($(filter y,$(DEP_SCREENIMAGE)),)
CXXFLAGS += -DDEPENDENCY_SCREENIMAGE
QBLIB_NAME := $(addsuffix 1,$(QBLIB_NAME))
else
CXXFLAGS += -DDEPENDENCY_NO_SCREENIMAGE
QBLIB_NAME := $(addsuffix 0,$(QBLIB_NAME))
endif
ifneq ($(filter y,$(DEP_FONT)),)
EXE_LIBS += $(QB_FONT_LIB)
CXXFLAGS += -DDEPENDENCY_LOADFONT
QBLIB_NAME := $(addsuffix 1,$(QBLIB_NAME))
LICENSE_IN_USE += freetype_ftl
else
QBLIB_NAME := $(addsuffix 0,$(QBLIB_NAME))
endif
ifneq ($(filter y,$(DEP_DEVICEINPUT)),)
EXE_LIBS += $(QB_DEVICE_INPUT_LIB)
CXXFLAGS += -DDEPENDENCY_DEVICEINPUT
QBLIB_NAME := $(addsuffix 1,$(QBLIB_NAME))
else
QBLIB_NAME := $(addsuffix 0,$(QBLIB_NAME))
endif
ifneq ($(filter y,$(DEP_AUDIO_MINIAUDIO)),)
EXE_LIBS += $(MINIAUDIO_OBJS)
CXXFLAGS += -DDEPENDENCY_AUDIO_MINIAUDIO
QBLIB_NAME := $(addsuffix 1,$(QBLIB_NAME))
LICENSE_IN_USE += miniaudio libxmp-lite radv2 stbvorbis
ifdef DEP_AUDIO_DECODE_MIDI
LICENSE_IN_USE += tinysoundfont tinymidiloader
endif
else
QBLIB_NAME := $(addsuffix 0,$(QBLIB_NAME))
endif
ifneq ($(filter y,$(DEP_AUDIO_CONVERSION) $(DEP_AUDIO_DECODE)),)
EXE_LIBS += $(QB_AUDIO_CONVERSION_LIB)
CXXFLAGS += -DDEPENDENCY_AUDIO_CONVERSION
QBLIB_NAME := $(addsuffix 1,$(QBLIB_NAME))
LICENSE_IN_USE += opus
else
QBLIB_NAME := $(addsuffix 0,$(QBLIB_NAME))
endif
ifneq ($(filter y,$(DEP_AUDIO_DECODE)),)
EXE_LIBS += $(QB_AUDIO_DECODE_MP3_LIB) $(QB_AUDIO_DECODE_OGG_LIB)
CXXFLAGS += -DDEPENDENCY_AUDIO_DECODE
QBLIB_NAME := $(addsuffix 1,$(QBLIB_NAME))
LICENSE_IN_USE += mpg123 stbvorbis
else
QBLIB_NAME := $(addsuffix 0,$(QBLIB_NAME))
endif
ifneq ($(filter y,$(DEP_AUDIO_OUT) $(DEP_AUDIO_CONVERSION) $(DEP_AUDIO_DECODE)),)
EXE_LIBS += $(QB_AUDIO_OUT_LIB)
CXXFLAGS += -DDEPENDENCY_AUDIO_OUT
ifeq ($(OS),osx)
CXXLIBS += -framework AudioUnit -framework AudioToolbox
endif
QBLIB_NAME := $(addsuffix 1,$(QBLIB_NAME))
LICENSE_IN_USE += openal
else
QBLIB_NAME := $(addsuffix 0,$(QBLIB_NAME))
endif
ifneq ($(filter y,$(DEP_ZLIB)),)
CXXFLAGS += -DDEPENDENCY_ZLIB
ifeq ($(OS),osx)
CXXLIBS += "-lz"
else
CXXLIBS += "-l:libz.a"
endif
QBLIB_NAME := $(addsuffix 1,$(QBLIB_NAME))
LICENSE_IN_USE += zlib
else
QBLIB_NAME := $(addsuffix 0,$(QBLIB_NAME))
endif
ifneq ($(OS),osx)
EXE_LIBS += $(QB_CORE_LIB)
LICENSE_IN_USE += freeglut
endif
ifeq ($(OS),win)
LICENSE_IN_USE += mingw-base-runtime libstdc++
ifneq ($(filter y,$(DEP_CONSOLE_ONLY) $(DEP_CONSOLE)),)
CXXLIBS += -mconsole
endif
ifneq ($(filter y,$(DEP_CONSOLE_ONLY)),)
CXXFLAGS := $(filter-out -DFREEGLUT_STATIC,$(CXXFLAGS))
EXE_LIBS := $(filter-out $(QB_CORE_LIB),$(EXE_LIBS))
LICENSE_IN_USE := $(filter-out freeglut,$(LICENSE_IN_USE))
else
CXXLIBS += -mwindows -lopengl32 -lglu32 -lwinmm
endif
ifneq ($(filter y,$(DEP_SOCKETS)),)
CXXLIBS += -lws2_32
endif
ifneq ($(filter y,$(DEP_PRINTER)),)
CXXLIBS += -lwinspool
endif
ifneq ($(filter y,$(DEP_DEVICEINPUT)),)
CXXLIBS += -lwinmm
endif
ifneq ($(filter y,$(DEP_AUDIO_OUT) $(DEP_AUDIO_CONVERSION) $(DEP_AUDIO_DECODE) $(DEP_AUDIO_MINIAUDIO)),)
CXXLIBS += -lwinmm -lksguid -ldxguid -lole32
endif
ifneq ($(filter y,$(DEP_ICON) $(DEP_ICON_RC) $(DEP_SCREENIMAGE) $(DEP_PRINTER)),)
CXXLIBS += -lgdi32
endif
endif
ifneq ($(filter y,$(DEP_DATA)),)
EXE_OBJS += $(PATH_INTERNAL_TEMP)/data.o
endif
QBLIB := $(PATH_INTERNAL_C)/$(QBLIB_NAME).o
ifneq ($(OS),osx)
$(QBLIB): $(PATH_INTERNAL_C)/libqb.cpp
$(CXX) $(CXXFLAGS) $< -c -o $@
else
$(QBLIB): $(PATH_INTERNAL_C)/libqb.mm
$(CXX) $(CXXFLAGS) $< -c -o $@
endif
ifeq ($(OS),win)
CLEAN_LIST += $(ICON_OBJ)
$(ICON_OBJ): $(PATH_INTERNAL_TEMP)\icon.rc
$(WINDRES) -i $< -o $@
endif
# QBLIB has to go first to ensure correct linking
EXE_OBJS := $(QBLIB) $(EXE_OBJS)
%.o: %.cpp
$(CXX) $(CXXFLAGS) $< -c -o $@
$(PATH_INTERNAL_TEMP)/data.o: $(PATH_INTERNAL_TEMP)/data.bin
$(OBJCOPY) -Ibinary $(OBJCOPY_FLAGS) $< $@
# Clean all files out of ./internal/temp except for temp.bin
CLEAN_LIST += $(wildcard $(PATH_INTERNAL_TEMP)/*)
CLEAN_LIST := $(filter-out $(PATH_INTERNAL_TEMP)/temp.bin,$(CLEAN_LIST))
clean: $(CLEAN_DEP_LIST)
$(RM) $(call FIXPATH,$(CLEAN_LIST))
ifeq ($(GENERATE_LICENSE),y)
LICENSE_FILES := $(patsubst %,licenses/license_%.txt,$(LICENSE_IN_USE))
LICENSE_DEP := $(LICENSE)
endif
$(EXE): $(EXE_OBJS) $(EXE_LIBS) $(LICENSE_DEP)
$(CXX) $(CXXFLAGS) $(EXE_OBJS) -o "$@" $(EXE_LIBS) $(CXXLIBS)
ifneq ($(filter-out osx,$(OS)),)
ifneq ($(STRIP_SYMBOLS),n)
$(OBJCOPY) --only-keep-debug "$@" "$(PATH_INTERNAL_TEMP)/$(notdir $@).sym"
$(OBJCOPY) --strip-unneeded "$@"
endif
endif
$(LICENSE): $(LICENSE_FILES)
ifeq ($(GENERATE_LICENSE),y)
ifeq ($(OS),win)
type $(call FIXPATH,$^) > "$@"
else
cat $^ > "$@"
endif
endif
-include ./tests/build.mk
Hope this helps.
Looking forward.
Cheers.
Fifi
RE: QB64 Phoenix Edition v3.3.0 Released! - DSMan195276 - 10-24-2022
Oh, I see the problem now, you didn't run the script from the same directory it was in. Unfortunately it does seem that I unintentionally broke that a few releases ago.
I'll fix it in the next release, but for now you can work around it either by cd'ing to the qb64pe directory before running the script (preferred approach) or edit the script to have cd "$(dirname "$0")" at the top instead of the similar line that's currently there.
Working around the issue by compiling via a different QB64 version ('official v2.1' or another PE version) will probably be fine but there is some potential to hit weird problems. Personally I'd recommend just rebuilding it via the above suggestion but that's completely up to you.
RE: QB64 Phoenix Edition v3.3.0 Released! - Fifi - 10-24-2022
(10-24-2022, 02:44 AM)DSMan195276 Wrote: Oh, I see the problem now, you didn't run the script from the same directory it was in. Unfortunately it does seem that I unintentionally broke that a few releases ago. Hi again,
Not sure to understand or I have been not explicit enough.
So,may I be more precise.
I downloaded the file qb64pe_osx-3.3.0.tar.gz and put it on my desktop.
Then, I made a double click on that file, and the action was that a folder named qb64pe was automatically created on my desktop.
Then I made a double click on that folder and the result was to open this folder.
Then, I made a double click on the setup_osx.command file and the compilation failed.
That's it.
Is that what you think is "broken"?
So, should I do the installation via a terminal session and start the install process via the command line?
If so, that's totaly OK and fine with me but it's a serious regression of the use of the macOS GUI, isn't it?
Looking forward.
Cheers.
Fifi
RE: QB64 Phoenix Edition v3.3.0 Released! - DSMan195276 - 10-24-2022
To clarify, it is supposed to work the way you described, the current version is bugged and does not. The instructions I gave are how you could fix the existing v3.3.0 version to work, and in the next version this should be fixed.
RE: QB64 Phoenix Edition v3.3.0 Released! - Fifi - 10-24-2022
(10-24-2022, 03:58 AM)DSMan195276 Wrote: To clarify, it is supposed to work the way you described, the current version is bugged and does not. The instructions I gave are how you could fix the existing v3.3.0 version to work, and in the next version this should be fixed.
OK, both solutions (command line and GUI) are fine with me.
Thank you for your help, time and concern.
Cheers.
Fifi
RE: QB64 Phoenix Edition v3.3.0 Released! - Pete - 10-25-2022
Curious as to why the IDE file menu changed.
Older format:
NEW
OPEN
SAVE
SAVE AS
(6) Most recent files
Recent...
Our new version lists only (3) of the most recent, and Clear Recent has replaced the much desired Recent... selection.
Maybe this menu can be customized?
Love our new PE desktop icon, btw.
Pete
|