XProtoman
(usa Fedora)
Enviado em 06/04/2017 - 07:58h
Bom dia paulo1205,
Segue uma imagem para você entender o sistema:
http://imgur.com/a/9mJh6
A seguir escrevi os detalhes.
Demorei a responder o tópico porque passei muito tempo pensando. Não se preocupe que não tem GPL envolvido, apenas licenças no estilo BSD e no máximo LGPL.
Faz uns anos que vi o binário do jogo Quake Wars e me impressionei por ele não ter muitas bibliotecas ligadas se comparado a outro jogo do Linux, Neverwinter Nights, mais antigo, nem mesmo OpenGL estava presente em Quake Wars. Fazem alguns meses que vi o SDL 2.0 sem muitas bibliotecas ligadas também.
Um dia descobri o dlopen e dlsym e matei a charada do que pode ter sido usado por Quake Wars e o SDL e o motivo de ser utilizado.
Quero e estou usando "carga de biblioteca dinâmica"(acho que é esse o termo do que é feito com dlopen e dlsym) porque acho que se desenvolver algum software vou ter um pouco mais de tranquilidade em rodá-lo em diferentes distribuições, sendo necessário que apenas o sistema possua as bibliotecas que faço carga.
Não sei como o Quake e o SDL fazem carga, porque não analisei o código.
Pensando muito no problema encontrei um caminho que foi o de facilitar minha vida ao fazer um preprocessador que captura o nome das funções e gera um header e um fonte, porém o que alimenta ele precisa ser feito pelo usuário, você precisa pegar as funções/símbolos(do header original) que você quer e criar um outro header ajustado para alimentar o preprocessador.
O que é pego é declaração completa da função, exemplo:
void funcao(int argumento);
.
Nada além disso é pego do header(original). No código fonte gerado estará presente apenas o nome das funções:
funcao
Porém no header gerado vai conter algo similar isso:
void (*funcao)(int argumento);
.
Minha preocupação é que não quero outras licenças desnecessariamente adicionadas a licença original da minha biblioteca. Estou por exemplo fazendo carga do gnutls e libudev, ambos sob LGPL, mas minha biblioteca usa licença similar a BSD.
Acho que a licença original no máximo deve fazer parte dos headers gerados, porém não do código fonte gerado, porque eles contém apenas o nome das funções.
A justificativa do header gerado possivelmente precisar da licença é porque o resultado dele é próximo do header original. Porém acho que não justifica licenciar o fonte gerado.
O que acha?
O SDL com certeza faz carga de biblioteca e está licenciado apenas em zlib, quando deveria também estar licenciado em LGPL porque faz uso da libudev.
____________________
“Mas nós sabemos que a razão de a maioria estar aqui, é a nossa afinidade com a desobediência!” (Morpheus)