Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat: Modify makefile for macOS #182

Open
wants to merge 3 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
15 changes: 14 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,19 @@ Algunas de las consideraciones a tener a la hora de su uso:
* Ninguna de las implementaciones utiliza semáforos, por lo que el uso concurrente debe ser implementado por el usuario de estas.
* Ninguna de las funciones implementadas posee validaciones para manejo de errores.

## Para usuarios de MacOS
### Pre-requisitos
- gcc-14
- gcp

Recomendamos tener instalado [brew](https://brew.sh/) para poder instalar los pre requisitos de la siguiente forma:
```Bash
brew install gcc@14
brew install coreutils
```
Copy link
Contributor

@RaniAgus RaniAgus Jul 29, 2024

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Quizás también agregaría algún paso para hacer que gcc apunte a gcc-14 usando un alias o reemplazando el link: https://stackoverflow.com/a/75648898/14089741

ln -s /opt/homebrew/bin/gcc-14 /usr/local/bin/gcc

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

no quiero cambiarle el gcc a alguien en su computadora de uso personal/laboral. La afectacion puede ser minima pero lo dejaria así

a menos que pueda hacerlo temporal o solo para una terminal en particular

Copy link
Contributor

@RaniAgus RaniAgus Sep 4, 2024

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

¿En qué afectaría cambiar el gcc? Si para el trabajo usan clang, podrían compilar con clang. Veo muy poco probable que alguien quiera compilar explícitamente con clang usando el alias gcc que viene preinstalado.

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Lo que comentó no es tanto por el cambio en si mismo, sino porque el alumno va a tirar un comando que va a cambiar su config default sin siquiera entender que es gcc y clang.

No quiero que la catedra tenga nada que ver con un cambio de ese estilo, si podria agregar un alias o lo que sea, pero modificar uno default no me copa.

A nivel impacto supongo que salvo que sean unos megas hackers del re carajo no les cambia nada de nada


Al seguir la guia, antes de hacer los comandos make como se explican abajo deben hacer `cd src/`
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

¿Qué aparece al ejecutar make desde root?

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ahora lo pruebo de nuevo

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pero hago el CD y anda, lo que probe recien clonando de 0 es que hay que meterle magia al makefile de cspec o bien a mano o bien subir el cambio xd

image

sudo make install
cd src && /Library/Developer/CommandLineTools/usr/bin/make all
make[1]: Nothing to be done for `all'.
cd tests/unit-tests && /Library/Developer/CommandLineTools/usr/bin/make all
make[1]: Nothing to be done for `all'.
cd tests/unit-tests && /Library/Developer/CommandLineTools/usr/bin/make test
LD_LIBRARY_PATH="../../src/build:../../cspec/release" ./build/commons-unit-test
dyld[41646]: Library not loaded: build/libcommons.so
  Referenced from: <32B8E020-E64A-385C-B660-EB27289DD277> /Users/femedina/Fede/so-commons-library/tests/unit-tests/build/commons-unit-test
  Reason: tried: 'build/libcommons.so' (no such file), '/System/Volumes/Preboot/Cryptexes/OSbuild/libcommons.so' (no such file), 'build/libcommons.so' (no such file), '/usr/local/lib/libcommons.so' (no such file), '/usr/lib/libcommons.so' (no such file, not in dyld cache), '/Users/femedina/Fede/so-commons-library/tests/unit-tests/build/libcommons.so' (no such file), '/System/Volumes/Preboot/Cryptexes/OS/Users/femedina/Fede/so-commons-library/tests/unit-tests/build/libcommons.so' (no such file), '/Users/femedina/Fede/so-commons-library/tests/unit-tests/build/libcommons.so' (no such file), '/usr/local/lib/libcommons.so' (no such file), '/usr/lib/libcommons.so' (no such file, not in dyld cache)
make[1]: *** [test] Abort trap: 6
make: *** [test] Error 2


## Guía de Instalación

Esta biblioteca utiliza CSpec para testear todas las funcionalidades, más información en: https://github.com/mumuki/cspec
Expand All @@ -42,7 +55,7 @@ Instrucciones de instalación:

1. Linkear con `-lcommons`

2. Para usarla en un .c/.h deberá incluirse de la siguiente forma: `commons/<Nombre_TAD>`
2. Para usarla en un .c/.h deberá incluirse de la siguiente forma: `<commons/Nombre_TAD>`

Por ejemplo:

Expand Down
21 changes: 17 additions & 4 deletions src/makefile
Original file line number Diff line number Diff line change
@@ -1,5 +1,18 @@
RM=rm -rf
CC=gcc
DEST=/usr

ifeq ($(shell uname -s),Linux)
CC=gcc
CP=cp
DEST=/usr
else ifeq ($(shell uname -s),Darwin)
CC=gcc-14
CP=gcp
DEST=/usr/local
else
$(error 'OS not supported!')
endif

C_SRCS=$(shell find . -iname "*.c" | tr '\n' ' ')
H_SRCS=$(shell find . -iname "*.h" | tr '\n' ' ')
Expand Down Expand Up @@ -34,11 +47,11 @@ clean:
$(RM) build

install: all
$(SUDO) cp -u build/libcommons.so /usr/lib
$(SUDO) cp --parents -u $(H_SRCS) /usr/include
$(SUDO) $(CP) -u build/libcommons.so $(DEST)/lib
$(SUDO) $(CP) --parents -u $(H_SRCS) $(DEST)/include

uninstall:
$(SUDO) rm -f /usr/lib/libcommons.so
$(SUDO) rm -rf /usr/include/commons
$(SUDO) rm -f $(DEST)/lib/libcommons.so
$(SUDO) rm -rf $(DEST)/include/commons

.PHONY: all debug sources clean install uninstall
8 changes: 8 additions & 0 deletions tests/unit-tests/makefile
Original file line number Diff line number Diff line change
@@ -1,6 +1,14 @@
RM=rm -rf
CC=gcc

ifeq ($(shell uname -s),Linux)
CC=gcc
else ifeq ($(shell uname -s),Darwin)
CC=gcc-14
else
$(error 'OS not supported!')
endif

BASE_DIR=../..

C_SPEC=$(BASE_DIR)/cspec
Expand Down
Loading