aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authoraindros <aindros@hotmail.com>2020-05-13 01:45:16 +0200
committeraindros <aindros@hotmail.com>2020-05-13 01:45:16 +0200
commit1f99e21c23f32fcc4bd2185af6cf1710c98f413a (patch)
tree4b349f2b21f0448a8526df25a6e06beb3b12b87e
parentc4f15aa3a95d61ebd333b64662164e27d232ec04 (diff)
downloadcherry-1f99e21c23f32fcc4bd2185af6cf1710c98f413a.tar.gz
cherry-1f99e21c23f32fcc4bd2185af6cf1710c98f413a.zip
Sources, samples and makefile (first alpha version)
-rw-r--r--samples/application1/Makefile33
-rw-r--r--samples/application1/application.c35
-rw-r--r--samples/application2/Makefile33
-rw-r--r--samples/application2/application.c47
-rw-r--r--src/cherry.c50
-rw-r--r--src/cherry.h44
-rw-r--r--win32/Makefile59
-rw-r--r--win32/main.c37
8 files changed, 338 insertions, 0 deletions
diff --git a/samples/application1/Makefile b/samples/application1/Makefile
new file mode 100644
index 0000000..7417484
--- /dev/null
+++ b/samples/application1/Makefile
@@ -0,0 +1,33 @@
+# ------------------------------------------------------------------------------
+# Sample Application makefile
+#
+# Author: Alessandro Iezzi info@alessandroiezzi.it
+# Date : 2020-05-06
+#
+# Changelog:
+# 2020-05-06 - first version
+# ------------------------------------------------------------------------------
+
+SRC=src
+OBJ=build
+BIN=bin
+
+RM=DEL /Q
+
+CC=cl
+CFLAGS=/c /I..\..\bin\include
+
+LINKER=link
+LFLAGS=/DLL
+
+application.exe: application.obj
+ $(LINKER) /out:application.exe application.obj /LIBPATH:"..\..\bin\lib" cherry.lib
+ copy ..\..\bin\lib\cherry.dll cherry.dll
+
+application.obj: application.c
+ $(CC) $(CFLAGS) application.c /Fo"application.obj"
+
+clean:
+ if exist application.obj $(RM) *.obj
+ if exist application.exe $(RM) *.exe
+ if exist cherry.dll $(RM) *.dll
diff --git a/samples/application1/application.c b/samples/application1/application.c
new file mode 100644
index 0000000..64133b6
--- /dev/null
+++ b/samples/application1/application.c
@@ -0,0 +1,35 @@
+/*-
+ * Copyright (c) 2020 Alessandro Iezzi
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ */
+
+#include <stdio.h>
+#include <cherry.h>
+
+int main(int argc, char** argv)
+{
+ CherryApplication* app = cherry_application_new("Sample Application");
+ printf("Application name is: %s\n", app->name);
+
+ return 0;
+}
diff --git a/samples/application2/Makefile b/samples/application2/Makefile
new file mode 100644
index 0000000..5d86efa
--- /dev/null
+++ b/samples/application2/Makefile
@@ -0,0 +1,33 @@
+# ------------------------------------------------------------------------------
+# Sample Application makefile
+#
+# Author: Alessandro Iezzi info@alessandroiezzi.it
+# Date : 2020-05-06
+#
+# Changelog:
+# 2020-05-06 - first version
+# ------------------------------------------------------------------------------
+
+SRC=src
+OBJ=build
+BIN=bin
+
+RM=DEL /Q
+
+CC=cl
+CFLAGS=/c /I..\..\bin\include
+
+LINKER=link
+LFLAGS=User32.lib /LIBPATH:"..\..\bin\lib" cherry.lib
+
+application.exe: application.obj
+ $(LINKER) /out:application.exe application.obj $(LFLAGS)
+ copy ..\..\bin\lib\cherry.dll cherry.dll
+
+application.obj: application.c
+ $(CC) $(CFLAGS) application.c /Fo"application.obj"
+
+clean:
+ if exist application.obj $(RM) *.obj
+ if exist application.exe $(RM) *.exe
+ if exist cherry.dll $(RM) *.dll
diff --git a/samples/application2/application.c b/samples/application2/application.c
new file mode 100644
index 0000000..6ad3fe7
--- /dev/null
+++ b/samples/application2/application.c
@@ -0,0 +1,47 @@
+/*-
+ * Copyright (c) 2020 Alessandro Iezzi
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ */
+
+#include <stdio.h>
+#include <cherry.h>
+
+int main(int argc, char** argv)
+{
+ CherryApplication* app;
+ int result;
+
+ printf("This sample show how application enter in main loop\n");
+
+ app = cherry_application_new("Sample Application");
+ printf("Application name is: %s\n", app->name);
+
+ printf("Trying to call PostQuitMessage()");
+ PostQuitMessage(0);
+ printf("Try to comment PostQuitMessage(), let's see what happens\n");
+
+ result = cherry_application_run();
+ printf("If you comment PostQuitMessage(), you won't read this line\n");
+
+ return result;
+}
diff --git a/src/cherry.c b/src/cherry.c
new file mode 100644
index 0000000..37b8291
--- /dev/null
+++ b/src/cherry.c
@@ -0,0 +1,50 @@
+/*-
+ * Copyright (c) 2020 Alessandro Iezzi
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ */
+
+#include "cherry.h"
+#include <stdlib.h>
+#include <string.h>
+
+CherryApplication *cherry_application_new(const char *name)
+{
+ CherryApplication *application =
+ (CherryApplication *) malloc(sizeof(CherryApplication));
+ application->name = strdup(name);
+
+ return application;
+}
+
+int cherry_application_run()
+{
+#if defined(WIN32) || defined(_WIN64)
+ MSG msg;
+ while (GetMessage(&msg, NULL, 0, 0)) {
+ TranslateMessage(&msg);
+ DispatchMessage(&msg);
+ }
+
+ return msg.wParam;
+#endif
+}
diff --git a/src/cherry.h b/src/cherry.h
new file mode 100644
index 0000000..1888bb1
--- /dev/null
+++ b/src/cherry.h
@@ -0,0 +1,44 @@
+/*-
+ * Copyright (c) 2020 Alessandro Iezzi
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ */
+
+#ifndef __CHERRY_H__
+#define __CHERRY_H__
+
+#include <stdio.h>
+
+#ifdef _WIN64
+#include <Windows.h>
+#define CHERRY_LIB __declspec(dllexport)
+#endif /* WIN32 */
+
+
+typedef struct CherryApplication {
+ char *name;
+} CherryApplication;
+
+CHERRY_LIB CherryApplication *cherry_application_new(const char *);
+CHERRY_LIB int cherry_application_run();
+
+#endif /* __CHERRY_H__ */
diff --git a/win32/Makefile b/win32/Makefile
new file mode 100644
index 0000000..a720e83
--- /dev/null
+++ b/win32/Makefile
@@ -0,0 +1,59 @@
+# ------------------------------------------------------------------------------
+# Generic makefile
+#
+# Author: Alessandro Iezzi info@alessandroiezzi.it
+# Date : 2020-05-06
+#
+# Changelog:
+# 2020-05-06 - first version
+# ------------------------------------------------------------------------------
+
+SRC = ..\src
+OBJ = ..\build
+BIN = ..\bin
+RM = DEL /Q
+CC = cl
+CFLAGS = /c /DUNICODE /D_UNICODE
+LINKER = link
+LFLAGS = /DLL User32.lib
+
+OBJECT_FILES = $(OBJ)/cherry.obj \
+ $(OBJ)/main.obj
+INCLUDE_FILES = $(BIN)/include/cherry.h
+
+$(BIN)/cherry.dll: $(BIN) $(INCLUDE_FILES) $(OBJECT_FILES)
+ lib /out:$(BIN)/lib/cherry.lib $(OBJECT_FILES)
+ @$(LINKER) $(LFLAGS) /out:$(BIN)/lib/cherry.dll $(OBJECT_FILES)
+
+$(BIN)/include/cherry.h: $(SRC)/cherry.h
+ copy $(SRC)\cherry.h $(BIN)\include\cherry.h
+
+$(OBJ)/cherry.obj: $(OBJ) $(SRC)/cherry.c $(SRC)/cherry.h
+ $(CC) $(CFLAGS) $(SRC)/cherry.c /Fo"$(OBJ)\cherry.obj"
+
+$(OBJ)/main.obj: $(OBJ) main.c
+ $(CC) $(CFLAGS) main.c /Fo"$(OBJ)\main.obj"
+
+all: $(OBJ) $(BIN)
+
+$(OBJ):
+ mkdir $(OBJ)
+
+$(BIN):
+ mkdir $(BIN)
+ mkdir $(BIN)\lib
+ mkdir $(BIN)\include
+
+clean:
+# Remove OBJ directory
+ if exist $(OBJ) $(RM) $(OBJ)
+ if exist $(OBJ) rmdir /Q $(OBJ)
+# Remove lib directory
+ if exist $(BIN)\lib $(RM) $(BIN)\lib
+ if exist $(BIN)\lib rmdir $(BIN)\lib
+# Remove include directory
+ if exist $(BIN)\include $(RM) $(BIN)\include
+ if exist $(BIN)\include rmdir $(BIN)\include
+# Remove BIN directory
+ if exist $(BIN) $(RM) $(BIN)
+ if exist $(BIN) rmdir /Q $(BIN)
diff --git a/win32/main.c b/win32/main.c
new file mode 100644
index 0000000..11ed005
--- /dev/null
+++ b/win32/main.c
@@ -0,0 +1,37 @@
+/*-
+ * Copyright (c) 2020 Alessandro Iezzi
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ */
+
+#include <windows.h>
+
+BOOL APIENTRY DllMain( HANDLE hinstDLL, DWORD fdwReason, LPVOID lpvReserved )
+{
+ switch ( fdwReason ) {
+ case DLL_PROCESS_ATTACH:
+ // Here goes the default register class
+ break;
+ }
+
+ return TRUE;
+}